Iestatiet izvēles rūtiņu. Atzīmēts bez OnClick notikuma

Notiek ClicksDisabled aizsargātā īpašuma slēpšana

Kursoru virs

Getty Images / Deivids Goulds





TCheckBox Delfos vadīkla parāda izvēles rūtiņu, kas var būt ieslēgta (atzīmēta) vai izslēgta (neatzīmēta). The Pārbaudīts īpašums norāda, vai izvēles rūtiņa ir atzīmēta vai nav.

Kad lietotājs noklikšķina uz izvēles rūtiņas, lai mainītu tā statusu Atzīmēts, tiek aktivizēts izvēles rūtiņas OnClick notikums.



Izvēles rūtiņas atzīmētā īpašuma maiņa

Tā kā nav OnCheckedChanged notikumu, jūs, iespējams, apstrādāsit programmas loģiku atkarībā no tā OnClick notikumā atzīmētās izvēles rūtiņas stāvokļa.

Tomēr, ja jūs programmatiski mainot rekvizītu Checked, tiks aktivizēts OnClick notikums -- lai gan lietotāja mijiedarbība nenotika.



Ir (vismaz) divi veidi, kā programmatiski mainīt izvēles rūtiņas atzīmēto rekvizītu, vienlaikus 'atspējojot' OnClick notikumu.

Noņemiet OnClick apdarinātāju, izmainiet atzīmi, ievietojiet atpakaļ sākotnējo OnClick apdarinātāju

Programmā Delphi for Win32 notikumam var būt pievienots tikai viens notikumu apstrādātājs (procedūra), lai gan Delphi for Win32 ir veids, kā atdarināt multiraides notikumus. OnClick notikuma TCheckBox vadīklas paraksts ir 'tips TNotifyEvent = objekta procedūra (Sūtītājs: TObject);'

Ja piešķirat NIL OnClick notikumam pirms izvēles rūtiņas stāvokļa maiņas, pēc tam atgriezieties pie sākotnējās OnClick notikumu apstrādes procedūras — OnClick notikums netiks aktivizēts.

|_+_||_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
Pārbaudīts := pārbaudīt;
OnClick := onClickHandler;
|_+_|
|_+_|

Šīs procedūras izmantošana ir vienkārša:



|_+_||_+_|
|_+_|
|_+_|

Iepriekš redzamais SetCheckedState pārslēdz izvēles rūtiņas CheckBox1 rekvizītu Checked.

Aizsargāta uzlaušana: ClicksDisabled: = patiess

Vēl viens veids, kā apturēt OnClick izpildi, programmatiski mainot izvēles rūtiņas rekvizītu Atzīmēts, ir izmantot 'slēpto' (aizsargāto) priekšrocības. KlikšķiAtspējoti īpašums.



Aplūkojot TCheckBox procedūru SetState, kas tiek izpildīta ikreiz, kad mainās rekvizīts Checked, OnClick tiek aktivizēts, ja ClicksDisabled nav patiess.

Tā kā ClicksDisabled ir aizsargāts, jūs tam nevarat piekļūt no sava kodu .



Par laimi, aizsargātā uzlaušanas tehnika ļauj piekļūt šīm Delphi vadīklas slēptajām/aizsargātajām īpašībām.

Piekļūstošie komponenta aizsargātie dalībnieki sniedz plašāku informāciju par šo tēmu.



Tas, kas jums jādara, ir deklarēt vienkāršu fiktīvu klasi, kas paplašina TCheckBox tajā pašā vienībā, kurā izmantosit rekvizītu ClicksDisabled.

Kad esat ieguvis ClicksDisabled, vienkārši iestatiet to uz True, mainiet rekvizītu Checked un pēc tam iestatiet ClicksDisabled atpakaļ uz false (noklusējuma vērtība):

|_+_||_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|

Piezīme: iepriekš minētais kods pārslēdz izvēles rūtiņas ar nosaukumu CheckBox1 rekvizītu Atzīmēts, izmantojot aizsargāto rekvizītu ClicksDisabled.

Lietojumprogrammu veidošana ar Delphi