Aseta valintaruutu. Tarkastettu ilman OnClick-tapahtumaa

click fraud protection

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

instagram viewer

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
instagram story viewer