TCheckBox Delfoi ohjaus näyttää valintaruudun, joka voi olla päällä (valittu) tai pois päältä (ei valittu). Tarkastettu omaisuus määrittää, onko valintaruutu valittu vai ei.
Kun käyttäjä napsauttaa valintaruutua muuttaaksesi sen tarkistettua tilaa, OnClick-tapahtuma valitaan -valintaruudusta.
Valintaruudun valitun omaisuuden muuttaminen
Koska ei ole OnCheckedChanged -tapahtumassa, käsittelet todennäköisesti ohjelman logiikkaa sen OnClick-tapahtuman valintaruudun valitun tilan mukaan.
Kuitenkin, jos sinä muuttaa ohjelmoidusti Tarkistettua ominaisuutta, OnClick-tapahtuma potkaistaan - vaikka käyttäjän vuorovaikutusta ei tapahtunut.
On (ainakin) kaksi tapaa muuttaa ohjelmallisesti valintaruudun tarkistettua ominaisuutta "poistamalla käytöstä" OnClick-tapahtuma.
Poista OnClick-käsittelijä, Muuta tarkistettu, laita alkuperäinen OnClick-käsittelijä takaisin
Delphi for Win32 -tapahtumassa voi olla vain yksi tapahtumakäsittelijä (menettely) liitettynä (vaikka Delphissä Win32: lle on tapa matkia monilähetystapahtumia). OnClick-tapahtuman allekirjoitus TCheckBox-ohjaimesta on "tyypin TNotifyEvent = toimenpide (lähettäjä: TObject);"
Jos määrität NIL OnClick-tapahtumaan ennen kuin muutat valintaruudun tilaa, palaa sitten alkuperäiseen OnClick-tapahtuman käsittelymenettelyyn - OnClick-tapahtumaa ei potkaista.
menettely SetCheckedState (const tarkistuslaatikko: TCheckBox; const tarkista: boolean);
var
onClickHandler: TNotifyEvent;
alkaa
kanssa valintaruutu tehdä
alkaa
onClickHandler: = OnClick;
OnClick: = nolla;
Tarkistettu: = tarkista;
OnClick: = onClickHandler;
pää;
pää;
Tämän menettelyn käyttö on yksinkertaista:
// vaihtaa tarkastettu tilaalkaa
SetCheckedState (CheckBox1, EI CheckBox1.Checked);
pää;
Yllä oleva SetCheckedState vaihtaa CheckBox1-valintaruudun Tarkistetut ominaisuudet.
Suojattu hakkerointi: ClicksDisabled: = totta
Toinen tapa estää OnClickin suorittamista, kun muutat ohjelmallisesti valintaruudun Tarkistetut ominaisuudet, on käyttää "piilotettua" (suojattua) ClicksDisabled omaisuutta.
Tarkastelemalla TCheckBoxin SetState-menettelyä, joka suoritetaan, kun tarkastettu ominaisuus muuttuu, OnClick vapautetaan, jos ClicksDisabled ei ole totta.
Koska ClicksDisabled on suojattu, et pääse siihen koodi.
Onneksi suojatun hakkerointitekniikan avulla pääset käsiksi Delphi-ohjaimen piilotettuihin / suojattuihin ominaisuuksiin.
Komponentin suojattujen jäsenten käyttö antaa lisätietoja aiheesta.
Sinun on julistettava yksinkertainen nuken luokka, joka laajentaa TCheckBoxia samassa yksikössä, jossa käytät ClicksDisabled -ominaisuutta.
Kun olet saanut kädet ClicksDisabled-sovelluksesta, aseta se vain totta, vaihda Tarkistettu-ominaisuus ja aseta sitten ClicksDisabled takaisin väärään (oletusarvo):
tyyppi
TCheckBoxEx = luokka (TCheckBox);
...
kanssa TCheckBoxEx (CheckBox1) dobegin
ClicksDisabled: = totta;
Tarkistettu: = EI tarkistettu;
ClicksDisabled: = false;
pää;
Huomaa: yllä oleva koodi vaihtaa valintaruudun Tarkistettu ominaisuus nimeltä CheckBox1 käyttämällä suojattua ClicksDisabled-ominaisuutta.
Rakennussovellukset Delphin kanssa
- Aloittelijan opas Delphi-tietokantaohjelmointiin
- Peruskaavioiden integrointi Delphi-sovelluksiin
- Ohjauslaitteiden siirtäminen ja koon muuttaminen ajon aikana
- Monisäikeiset Delphi-tietokantakyselyt