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