Määrake ruut Checkbox. Kontrollitud ilma OnClicki sündmuseta

TCheckBox Delphi juhtelemendi abil kuvatakse märkeruut, mis võib olla sisse lülitatud (märgitud) või välja lülitatud (märkimata). Kontrollitud vara määrab, kas ruut on märgitud või mitte.

Kui kasutaja klõpsab märkeruudul, et muuta selle kontrollitud olekut, vallandatakse märkeruudu OnClicki sündmus.

Märkeruudu kontrollitud atribuudi muutmine

Kuna pole OnCheckedChanged sündmuse korral käsitlete programmi loogikat tõenäoliselt sõltuvalt selle ruudu OnClicki ruudust valitud olekust.

Kui aga programmeeritud viisil muutma kontrollitud atribuuti, vallandatakse OnClicki sündmus - isegi kui kasutajatega suhtlemist ei toimunud.

OnClicki sündmuse keelamise ajal on (vähemalt) kahel viisil ruutu kontrollitud omaduse programmiliseks muutmiseks.

Eemaldage OnClicki käitleja, vahetage kontrollitud ja pange tagasi algne OnClicki käitleja

Delphis Win32 jaoks saab sündmusel olla ainult üks sündmuste käitleja (protseduur) (isegi kui Delphis Win32 jaoks on võimalus jäljendada multisaadete sündmusi). OnClicki sündmuse TCheckBoxi juhtsignatuur on "objekti tüüp TNotifyEvent = protseduur (saatja: TObject)";

instagram viewer

Kui määrasite OnClicki sündmusele NIL-i enne ruutu oleku muutmist, pöörduge tagasi algse OnClicki sündmuste käsitlemise protseduuri juurde - OnClicki sündmust ei vallandata.

protseduur SetCheckedState (const checkBox: TCheckBox; const kontroll: loogiline);

var

 onClickHandler: TNotifyEvent;

alustada

koos checkBox teha

alustada

 onClickHandler: = OnClick;

 OnClick: = null;

Kontrollitud: = kontrollida;
OnClick: = onClickHandler;
lõpp;

lõpp; 

Selle protseduuri kasutamine on lihtne:

// lülita kontrollitud olekalustada

 SetCheckedState (CheckBox1, EI CheckBox1.Checked);

lõpp;

Ülaltoodud SetCheckedState lülitab sisse ruutu CheckBox1 atribuudi Kontrollitud.

Kaitstud häkk: ClicksDisabled: = tõene

Teine viis OnClicki täitmise peatamiseks, kui muudate programmilisel viisil ruutu Kontrollitud atribuuti, on kasutada ära peidetud (kaitstud) ClicksDisabled vara.

Vaadates TCheckBoxi protseduuri SetState, mis käivitatakse iga kord, kui kontrollitud atribuut muutub, vallandatakse OnClick, kui ClicksDisabled pole tõene.

Kuna ClicksDisabled on kaitstud, ei saa te seda oma saidilt juurde pääseda kood.

Õnneks võimaldab kaitstud häkkimise tehnika juurdepääsu Delphi-juhtelemendi varjatud / kaitstud omadustele.

Juurdepääs komponendi kaitstud liikmetele pakub selle teema kohta lisateavet.

Mida peate tegema, on kuulutada lihtne mannekeeniklass, mis laiendab TCheckBoxi samas seadmes, kus kasutate atribuuti ClicksDisabled.

Kui olete oma käe ClicksDisabled'i kallale asunud, seadke see lihtsalt tõeseks, muutke atribuuti Kontrollitud ja määrake seejärel ClicksDisabled tagasi valele (vaikimisi väärtus):

tüüp


 TCheckBoxEx = klass (TCheckBox);


 ...


koos TCheckBoxEx (CheckBox1) dobegin

 ClicksDisabled: = tõene;

 Kontrollitud: = EI kontrollitud;

 ClicksDisabled: = vale;

lõpp;

Märkus: ülaltoodud kood lülitab sisse märkeruudu CheckBox1 kontrollitud atribuudi, kasutades kaitstud omadust ClicksDisabled.

Rakenduste ehitamine Delphiga

  • Delphi andmebaaside programmeerimise algajate juhend
  • Põhitabelite integreerimine Delphi rakendustesse
  • Juhtnuppude teisaldamine ja nende suuruse muutmine töö ajal
  • Mitme keermega Delphi andmebaasi päringud