A TCheckBox Delphi A vezérlő egy jelölőnégyzetet jelenít meg, amely lehet bekapcsolva (bejelölve) vagy ki (ki nem jelölve). Az Ellenőrzött ingatlan meghatározza, hogy a jelölőnégyzet be van-e jelölve.
Amikor a felhasználó rákattint a jelölőnégyzetre, hogy megváltoztassa az Ellenőrzött állapotot, a jelölőnégyzet OnClick eseménye elindul.
A jelölőnégyzet ellenőrzött tulajdonságainak megváltoztatása
Mivel nincs OnCheckedChanged esemény esetén valószínűleg a program logikáját kezeli az OnClick esemény jelölőnégyzetének ellenőrzött állapotától függően.
Ha azonban Ha programozottan módosítja az Ellenőrzött tulajdonságot, akkor az OnClick eseményt elbocsátják - annak ellenére, hogy nem történt felhasználói interakció.
Két lehetőség van arra, hogy programozottan megváltoztassuk a jelölőnégyzet ellenőrzött tulajdonságát, miközben "letiltjuk" az OnClick eseményt.
Távolítsa el az OnClick kezelőt, módosítsa a jelölést, helyezze vissza az eredeti OnClick kezelőt
A Delphi for Win32 esetén egy eseményhez csak egy eseménykezelő (eljárás) kapcsolódhat (annak ellenére, hogy van mód a multicast események utánozására a Win32 Delphi programjában). Az OnClick esemény TCheckBox vezérlő aláírása "az objektum TNotifyEvent = eljárás (küldő: TObject) típusa";
Ha NIL-t rendel hozzá az OnClick eseményhez, mielőtt megváltoztatja a jelölőnégyzetet, akkor térjen vissza az eredeti OnClick eseménykezelési eljáráshoz - az OnClick esemény nem indul el.
eljárás SetCheckedState (const checkBox: TCheckBox; const ellenőrzés: logikai);
var
onClickHandler: TNotifyEvent;
kezdődik
val vel CheckBox csinál
kezdődik
onClickHandler: = OnClick;
OnClick: = nulla;
Ellenőrizve: = ellenőrizze;
OnClick: = onClickHandler;
vég;
vég;
Ennek az eljárásnak a használata egyszerű:
// toggle Ellenőrzött állapotkezdődik
SetCheckedState (CheckBox1, NEM CheckBox1.Checked);
vég;
A fenti SetCheckedState bekapcsolja a CheckBox1 jelölőnégyzet ellenőrzött tulajdonságát.
Védett hack: ClicksDisabled: = igaz
Az OnClick végrehajtásának megakadályozásának másik módja, ha programozottan megváltoztatja a Jelölőnégyzet ellenőrzött tulajdonságát, a "rejtett" (védett) előnyeinek kihasználása. ClicksDisabled ingatlan.
Ha megvizsgálja a TCheckBox SetState eljárását, amely akkor kerül végrehajtásra, amikor az Ellenőrzött tulajdonság megváltozik, akkor az OnClick akkor kerül alkalmazásra, ha a ClicksDisabled nem igaz.
Mivel a ClicksDisabled védett, nem férhet hozzá a saját oldalához kód.
Szerencsére a védett hack technika lehetővé teszi a Delphi vezérlő rejtett / védett tulajdonságainak elérését.
Az összetevő hozzáféréssel rendelkező védett tagjai további információt nyújtanak a témáról.
Csak annyit kell tennie, hogy deklarál egy egyszerű dummy osztályt, amely kiterjeszti a TCheckBox-ot ugyanabban az egységben, ahol a ClicksDisabled tulajdonságot fogja használni.
Miután megkapta a kezét a ClicksDisabledon, egyszerűen állítsa igazra, változtassa meg az Ellenőrzött tulajdonságot, majd állítsa vissza a ClicksDisabled tévesre (alapértelmezett érték):
típus
TCheckBoxEx = osztály (TCheckBox);
...
val vel TCheckBoxEx (CheckBox1) dobegin
ClicksDisabled: = igaz;
Ellenőrizve: = NEM ellenőrizve;
ClicksDisabled: = hamis;
vég;
Megjegyzés: a fenti kód váltja a "CheckBox1" jelölőnégyzet ellenőrzött tulajdonságát a védett ClicksDisabled tulajdonság használatával.
Építési alkalmazások a Delphivel
- Kezdő útmutató a Delphi adatbázis-programozáshoz
- Alapvető diagramok integrálása a Delphi alkalmazásokba
- Hogyan lehet mozgatni és átméretezni a kezelőszerveket futási időben
- Többszálú Delphi adatbázis-lekérdezések