Zaškrtnite políčko. Začiarknuté bez udalosti OnClick

click fraud protection

TCheckBox Delphi Ovládací prvok zobrazuje začiarkavacie políčko, ktoré môže byť zapnuté (začiarknuté) alebo vypnuté (nezačiarknuté). Zaistený majetok Určuje, či je začiarkavacie políčko začiarknuté alebo nie.

Keď používateľ klikne na začiarkavacie políčko a zmení sa jeho stav začiarknutia, spustí sa udalosť OnClick pre začiarkavacie políčko.

Zmena začiarknutého políčka Zaškrtnutá vlastnosť

Pretože neexistuje OnCheckedChanged udalosti, pravdepodobne zvládnete logiku programu v závislosti od skontrolovaného stavu začiarkavacieho políčka v jeho udalosti OnClick.

Avšak, ak ste Ak programovo zmeníte začiarknuté vlastníctvo, spustí sa udalosť OnClick - aj keď nedošlo k žiadnej interakcii používateľa.

Existujú (najmenej) dva spôsoby programovej zmeny začiarknutej vlastnosti začiarkavacieho políčka pri „deaktivácii“ udalosti OnClick.

Odstráňte obslužný program OnClick, začiarknite políčko Zmeniť a vráťte pôvodný obslužný program OnClick

V Delphi pre Win32 môže mať udalosť pripojenú iba jednu obsluhu udalosti (procedúru) (aj keď v Delphi for Win32 existuje spôsob, ako napodobniť vícesmerové udalosti). Podpis udalosti ovládacieho prvku TCheckBox udalosti OnClick je „typ TNotifyEvent = procedure (Sender: TObject) objektu;“

instagram viewer

Ak priradíte NIL udalosti OnClick pred zmenou stavu začiarkavacieho políčka, potom sa vráťte k pôvodnému postupu spracovania udalosti OnClick - udalosť OnClick nebude spustená.

procedúra SetCheckedState (const checkBox: TCheckBox; const kontrola: boolean);

var

 onClickHandler: TNotifyEvent;

začať

s checkbox robiť

začať

 onClickHandler: = OnClick;

 OnClick: = nula;

Začiarknuté: = skontrolovať;
OnClick: = onClickHandler;
koniec;

koniec; 

Použitie tohto postupu je jednoduché:

// prepnúť skontrolovaný stavzačať

 SetCheckedState (CheckBox1, NOT CheckBox1.Checked);

koniec;

SetCheckedState vyššie prepína začiarknuté políčko začiarkavacieho políčka CheckBox1.

Chránený hack: ClicksDisabled: = true

Ďalším spôsobom, ako zabrániť tomu, aby sa služba OnClick spustila, keď programovo zmeníte začiarknuté políčko začiarkavacieho políčka, je využiť výhodu „skrytého“ (chráneného) ClicksDisabled nehnuteľnosť.

Pohľadom na procedúru SetState TCheckBoxu, ktorá sa vykoná, keď sa zmení vlastnosť Checked, sa spustí OnClick, ak ClicksDisabled nie je pravda.

Pretože služba ClicksDisabled je chránená, nemôžete k nej pristupovať zo svojho kód.

Našťastie vám technika chráneného hacku umožňuje prístup k týmto skrytým / chráneným vlastnostiam ovládacieho prvku Delphi.

Pristupujúci chránení členovia komponenty poskytujú ďalšie informácie o téme.

Musíte urobiť vyhlásenie o jednoduchej fiktívnej triede rozširujúcej TCheckBox v tej istej jednotke, kde budete používať vlastnosť ClicksDisabled.

Akonáhle dostanete ruky na ClicksDisabled, jednoducho nastavte na true, zmeňte vlastnosť Checked, potom nastavte ClicksDisabled späť na false (predvolená hodnota):

typ


 TCheckBoxEx = class (TCheckBox);


 ...


s TCheckBoxEx (CheckBox1) dobegin

 ClicksDisabled: = true;

 Začiarknuté: = NIE zaškrtnuté;

 ClicksDisabled: = false;

koniec;

Poznámka: vyššie uvedený kód prepína začiarknuté políčko začiarkavacieho políčka s názvom „CheckBox1“ pomocou chránenej vlastnosti ClicksDisabled.

Vytváranie aplikácií pomocou Delphi

  • Príručka pre začiatočníkov k programovaniu databázy Delphi
  • Integrácia základných grafov do aplikácií Delphi
  • Ako presunúť a zmeniť veľkosť ovládacích prvkov v čase vykonávania
  • Viacvláknové dotazy Delphi databázy
instagram story viewer