Állítsa be a jelölőnégyzetet. Ellenőrizve onClick esemény nélkül

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";

instagram viewer

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
instagram story viewer