TSzerkesztés, hogyan lehet megkülönböztetni a felhasználói input egy szöveget egy új érték hozzárendelésével
TSzerkesztés, hogyan lehet megkülönböztetni a felhasználói input egy új érték hozzárendelésével szöveg?
Aztán valami kiváltja a OnChange. Hogyan megkülönböztetni?
A kihívás ez: van két a tSzerkesztés, felhasználói egyik Edit1 értékét megváltoztatja egy másik Edit2, de csak addig, amíg a felhasználó nem változtathatja meg az értéket a Edit2. Ezt követően, a szerkesztést Edit1 nem érinti a Edit2. Hogyan lehet megkülönböztetni a felhasználói bemenetet Edit2 Edit2.Text = „valami”? Tehát azt jelölje flagEdit2UserChanged további, változó Edit1 néz, ha jelölve van, nem fogja megváltoztatni a Edit2. Válaszoljon billentyűbeviteleit Edit2? azaz használja Edit2.OnKeyPress? Eddig és én, a szűrés a # 13. Van más megoldás? Ez alapja lehet a Win Api?
Ó igen, a probléma az, hogy a show egy formája előirányzat nachalnyh értékek, így a Edit1, amely befolyásolja a Edit2. Természetesen ez nem probléma, akkor csak meg kell, hogy kövesse, amikor Edit1 lehet vliyat a Edit2, de még mindig szeretné tudni a módját, hogy módosítsa a Text tulajdonság anélkül, hogy OnChange?
A szöveg és oncheyndzh - az ingatlan.
azzal az eltéréssel, hogy van egy halom tulajdonságok, mint aktív formái az ellenőrzés
> SANX # XA0; (26.08.09 22:43) # XA0;
> Edit1 értékét megváltoztatja egy másik Edit2, de csak a
> Amíg a felhasználó nem változtathatja meg az értéket a Edit2.
Edit2.Modified?
Bear Malacka, nem egészen értem, hogyan lehet segíteni?
Leonid Troyanovsky ATP valóban változást Edit2.Text, Edit2.Modified tulajdonság nem változik. Megváltoztatja csak akkor, ha megváltoztatja a szöveg a felhasználó által.
De hagyta, hogy megtanulják, hogy módosítsa a szöveget tSzerkesztés anélkül, hogy TEdit.OnChange, lehetséges ez?
> SANX # XA0; (26.08.09 23:46) [4]
Ön már válaszolt a saját kérdésére (segítségével Leonid). A kezdeti érték Edit2.Modified = False, akkor meg fog változni, amikor csak yuzersky bemenet. Ez ugyanaz a zászló, amit akar:
eljárás Edit1Change:
kezdődik
# XA0;.
# XA0, ha nem, akkor Edit2.Modified
# XA0; kezdődik
# XA0; # XA0;. // A felhasználó nem változott szövege Edit2, így változnak meg a programozott
# XA0; end;
# XA0;.
végén;
Yuri Zotov, igen, de megyek inicializálni értékeket Edit1 amikor megnyitja az ablakot, és ebben a pillanatban (edit1.text = „eredeti szöveg”) működik edit1.onChange, amelyben van egy csekket, ha nem, akkor edit2.modified. És ezen a ponton nem kell.
Igen voosche megoldani ezt a problémát ott van természetesen lehetséges, hogy a zászló típusú flagThisInit, csak kíváncsi, hogyan kell változtatni szöveges / caption tulajdonságok bármely komponens, hanem # XA0, nem volt OnChange. Ahogy értem a probléma az, hogy a Windows VCL reagál az eseményekre, és Windu kérte, hogy ne küldje az esemény nem fog működni. ) Ez csak kíváncsi :)
> Csak kíváncsi, hogyan kell változtatni szöveges / caption ingatlan
> Bármely komponens, de a # XA0, nem volt OnChange
Azok számára, akik „csak kíváncsi”, van egy nyilvánvaló módon -, hogy távolítsa el a OnChange felvezető idején feladat.
var
# XA0; Temp: TNotifyEvent;
kezdődik
# XA0; Hőm: = Edit1.OnChange;
# XA0, próbálja
# XA0; # XA0; Edit1.OnChange: = nil;
# XA0; # XA0; Edit1.Text: = "néhány új szöveg";
# XA0, végül
# XA0; # XA0; Edit1.OnChange: = Temp;
# XA0; end;
> SANX # XA0; (27/08/09 2:53) [6]
> Én inicializálása értékeket Edit1 amikor megnyitja az ablakot,
> És ebben a pillanatban (edit1.text = „eredeti szöveg”) váltja
> Edit1.onChange, amelyben van egy csekket
> Ha nem edit2.modified majd.
> És ebben a pillanatban nem kell rá.
Rendeljen felvezető edit1.onChange események nem a design-time, és a kód után az inicializálás edit1.text = „eredetileg szöveg”.
Memória: 0,74 MB
Idő: 0.094 c