Nastavte zaškrtávací políčko. Zaškrtnuto bez události OnClick

TCheckBox Delphi ovládací prvek zobrazí zaškrtávací políčko, které může být zapnuto (zaškrtnuto) nebo vypnuto (nezaškrtnuto). Zkontrolována nemovitost Určuje, zda je zaškrtávací políčko zaškrtnuto nebo ne.

Když uživatel klepne na zaškrtávací políčko a změní se jeho stav zaškrtnutí, aktivuje se událost OnClick pro zaškrtávací políčko.

Změna zaškrtnuté vlastnosti zaškrtávacího políčka

Protože není OnCheckedChanged událost, pravděpodobně zvládnete logiku programu v závislosti na zaškrtnutém stavu zaškrtávacího políčka v jeho události OnClick.

Pokud však programově změnit vlastnost Zaškrtnuto, bude spuštěna událost OnClick - i když nedošlo k žádné interakci s uživatelem.

Existují (alespoň) dva způsoby, jak programově změnit zaškrtnutou vlastnost zaškrtávacího políčka při „deaktivaci“ události OnClick.

Odstraňte obslužný program OnClick, změňte zaškrtnutí a vraťte původní obslužný program OnClick

V Delphi pro Win32 může být k události připojena pouze jedna obsluha události (procedura) (i když existuje způsob, jak napodobit vícesměrové události v Delphi pro Win32). Podpis události ovládacího prvku TCheckBox události OnClick je "type TNotifyEvent = procedure (Sender: TObject) objektu;"

instagram viewer

Pokud k události OnClick přiřadíte NIL před změnou stavu zaškrtávacího políčka, vrátíte se k původnímu postupu zpracování události OnClick - událost OnClick nebude spuštěna.

postup SetCheckedState (konst checkBox: TCheckBox; konst check: boolean);

var

 onClickHandler: TNotifyEvent;

začít

s checkBox dělat

začít

 onClickHandler: = OnClick;

 OnClick: = nula;

Zkontrolováno: = zkontrolovat;
OnClick: = onClickHandler;
konec;

konec; 

Použití tohoto postupu je jednoduché:

// přepíná kontrolovaný stavzačít

 SetCheckedState (CheckBox1, NOT CheckBox1.Checked);

konec;

Výše uvedený SetCheckedState přepíná zaškrtávací políčko CheckBox1.

Chráněný hack: ClicksDisabled: = true

Dalším způsobem, jak zastavit spouštění programu OnClick, když programově změníte zaškrtnutou vlastnost zaškrtávacího políčka, je využít výhodu „skryté“ (chráněné) ClicksDisabled vlastnictví.

Při pohledu na proceduru SetState v TCheckBoxu, která se spustí, kdykoli se změní vlastnost Zkontrolována, se spustí OnClick, pokud ClicksDisabled není pravda.

Protože je ClicksDisabled chráněn, nemůžete k němu přistupovat z vašeho kód.

Naštěstí technika chráněných hacků umožňuje přístup k těmto skrytým / chráněným vlastnostem ovládacího prvku Delphi.

Přístup chráněných členů komponenty poskytuje další informace o daném tématu.

Musíte deklarovat jednoduchou fiktivní třídu rozšiřující TCheckBox ve stejné jednotce, kde budete používat vlastnost ClicksDisabled.

Jakmile dostanete ruce na ClicksDisabled, jednoduše nastavte na true, změňte vlastnost Checked a poté ClicksDisabled zpět na false (výchozí hodnota):

typ


 TCheckBoxEx = třída (TCheckBox);


 ...


s TCheckBoxEx (CheckBox1) dobegin

 ClicksDisabled: = true;

 Kontrolováno: = NENÍ Kontrolované;

 ClicksDisabled: = false;

konec;

Poznámka: výše uvedený kód přepíná zaškrtnutou vlastnost zaškrtávacího políčka s názvem „CheckBox1“ pomocí chráněné vlastnosti ClicksDisabled.

Vytváření aplikací pomocí Delphi

  • Průvodce pro začátečníky k programování databáze Delphi
  • Integrace základních grafů do aplikací Delphi
  • Jak přesunout a změnit velikost ovládacích prvků za běhu
  • Vícevláknové dotazy na databázi Delphi
instagram story viewer