Nastavite CheckBox. Preverjeno brez dogodka OnClick

TCheckBox Delphi control prikaže potrditveno polje, ki je lahko vklopljeno (potrjeno) ali izklopljeno (nepreverjeno). The Preverjeno premoženje določa, ali je potrditveno polje potrjeno ali ne.

Ko uporabnik klikne potrditveno polje, da spremeni stanje Preverjeno, se dogodek OnClick za potrditveno polje sproži.

Spreminjanje potrditvene znamke Označena lastnost

Ker ni OnCheckedChanged V primeru dogodka, boste verjetno ravnali s programsko logiko, ki je odvisna od preverjenega stanja v potrditvenem polju v njegovem dogodku OnClick.

Vendar, če ste programsko spremenite lastnost Preverjeno, se bo dogodek OnClick sprožil - čeprav ni prišlo do interakcije z uporabniki.

Obstajata (vsaj) dva načina za programsko spreminjanje označene lastnosti potrditvenega polja in "onemogočanje" dogodka OnClick.

Odstranite OnClick Handler, Spremenite preverjeno, Vrnite originalni onClick Handler

V programu Delphi za Win32 ima lahko dogodek priložen le en obdelovalec dogodkov (postopek) (čeprav obstaja način, kako posnemati večdružne dogodke v Delphiju za Win32). Podpis dogodka OnClick nadzora TCheckBox je "tip predmeta TNotifyEvent = postopek (pošiljatelj: TObject);"

instagram viewer

Če NIL-u dodelite dogodek OnClick, preden spremenite stanje potrditvenega polja, se nato vrnete na prvotni postopek ravnanja z dogodki OnClick - dogodek OnClick ne bo odprt.

postopek SetCheckedState (konst checkBox: TCheckBox; konst preverite: boolean);

var

 onClickHandler: TNotifyEvent;

začeti

s checkBox stori

začeti

 onClickHandler: = OnClick;

 OnClick: = nič;

Preverjeno: = ček;
OnClick: = onClickHandler;
konec;

konec; 

Uporaba tega postopka je preprosta:

// preklopi Preverjeno stanjezačeti

 SetCheckedState (CheckBox1, NOT CheckBox1.Checked);

konec;

Zgoraj SetCheckedState preklopi potrditveno lastnost CheckBox1.

Zaščiten kramp: ClicksDisabled: = true

Drug način, da preprečite izvajanje OnClick, ko programsko spremenite potrditveno lastnost potrditvenega polja, je izkoristiti "skrito" (zaščiteno) Kliki onemogočeni premoženje.

Če pogledamo postopek SetState TCheckBox, ki se izvrši vsakič, ko se spremeni preverjena lastnost, se OnClick sproži, če ClicksDisabled ni resničen.

Ker je program ClicksDisabled zaščiten, do njega ne morete dostopati Koda.

Na srečo zaščitena tehnika kramp omogoča dostop do tistih skritih / zaščitenih lastnosti nadzora Delphi.

Dostop do zaščitenih članov komponente zagotavlja več informacij o tej temi.

Kar morate storiti, je, da v isti enoti, kjer boste uporabljali lastnost ClicksDisabled, razglasite preprost kladivo, ki razširja TCheckBox.

Ko dobite ClicksDisabled, ga preprosto nastavite na true, spremenite lastnost Checked in nato nastavite ClicksDisabled nazaj na false (privzeta vrednost):

tip


 TCheckBoxEx = razred (TCheckBox);


 ...


s TCheckBoxEx (CheckBox1) dobegin

 ClicksDisabled: = res;

 Preverjeno: = NE preverjeno;

 ClicksDisabled: = false;

konec;

Opomba: zgornja koda preklopi označeno lastnost potrditvenega polja z imenom "CheckBox1" z zaščiteno lastnostjo ClicksDisabled.

Gradnja aplikacij z Delphi

  • Vodnik za začetnike za programiranje podatkovnih baz Delphi
  • Vključevanje osnovnih grafikonov v Delphi aplikacije
  • Kako premikati in spreminjati velikost kontrol v času izvajanja
  • Poizvedbe po zbirki podatkov o Delphi
instagram story viewer