Ustaw CheckBox. Sprawdzone bez zdarzenia OnClick

TCheckBox Delfy formant wyświetla pole wyboru, które można włączyć (zaznaczone) lub wyłączyć (niezaznaczone). The Sprawdzona nieruchomość określa, czy pole wyboru jest zaznaczone, czy nie.

Gdy użytkownik kliknie pole wyboru, aby zmienić stan Sprawdzone, zdarzenie OnClick dla pola wyboru zostanie uruchomione.

Zmiana zaznaczonej właściwości pola wyboru

Ponieważ nie ma OnCheckedChanged zdarzenie, prawdopodobnie będziesz obsługiwać logikę programu w zależności od zaznaczonego stanu pola wyboru w jego zdarzeniu OnClick.

Jednak jeśli ty programowo zmień właściwość Checked, zdarzenie OnClick zostanie uruchomione - mimo że nie doszło do interakcji użytkownika.

Istnieją (co najmniej) dwa sposoby na programową zmianę właściwości zaznaczenia pola wyboru podczas „wyłączania” zdarzenia OnClick.

Usuń program obsługi OnClick, zmień zaznaczone, odłóż oryginalny program obsługi OnClick

W Delphi dla Win32 zdarzenie może mieć tylko jedną procedurę obsługi (procedurę) dołączoną do niego (nawet jeśli istnieje sposób naśladowania zdarzeń multiemisji w Delphi dla Win32). Sygnatura zdarzenia OnClick kontrolki TCheckBox to „typ TNotifyEvent = procedura (Sender: TObject) obiektu;”

instagram viewer

Jeśli przypiszesz NIL do zdarzenia OnClick przed zmianą stanu pola wyboru, powróć do oryginalnej procedury obsługi zdarzeń OnClick - zdarzenie OnClick nie zostanie uruchomione.

procedura SetCheckedState (const checkBox: TCheckBox; const check: boolean);

var

 onClickHandler: TNotifyEvent;

zaczynać

z checkBox robić

zaczynać

 onClickHandler: = OnClick;

 OnClick: = zero;

Sprawdzone: = sprawdź;
OnClick: = onClickHandler;
koniec;

koniec; 

Zastosowanie tej procedury jest proste:

// przełącz Stan zaznaczonyzaczynać

 SetCheckedState (CheckBox1, NOT CheckBox1.Checked);

koniec;

Powyższy element SetCheckedState przełącza właściwość Checked pola wyboru CheckBox1.

Protected Hack: ClicksDisabled: = true

Innym sposobem, aby zatrzymać działanie OnClick, gdy programowo zmienisz właściwość Checked pola wyboru, jest skorzystanie z „ukrytego” (chronionego) ClicksDisabled własność.

Patrząc na procedurę SetState TCheckBox, która jest wykonywana przy każdej zmianie właściwości Checked, OnClick jest uruchamiany, jeśli ClicksDisabled nie jest prawdą.

Ponieważ ClicksDisabled jest chroniony, nie możesz uzyskać do niego dostępu ze swojego kod.

Na szczęście technika chronionego włamania umożliwia dostęp do tych ukrytych / chronionych właściwości kontrolki Delphi.

Dostęp do chronionych członków komponentu zapewnia więcej informacji na ten temat.

Musisz zadeklarować prostą klasę zastępczą rozszerzającą TCheckBox w tej samej jednostce, w której będziesz używać właściwości ClicksDisabled.

Po uzyskaniu dostępu do ClicksDisabled, po prostu ustaw na true, zmień właściwość Checked, a następnie ustaw ClicksDisabled z powrotem na false (wartość domyślna):

rodzaj


 TCheckBoxEx = klasa (TCheckBox);


 ...


z TCheckBoxEx (CheckBox1) dobegin

 ClicksDisabled: = true;

 Sprawdzone: = NIE sprawdzone;

 ClicksDisabled: = false;

koniec;

Uwaga: powyższy kod przełącza właściwość Checked pola wyboru o nazwie „CheckBox1” za pomocą chronionej właściwości ClicksDisabled.

Budowanie aplikacji z Delphi

  • Przewodnik dla początkujących dotyczący programowania baz danych Delphi
  • Integracja podstawowych wykresów w aplikacjach Delphi
  • Jak przenosić i zmieniać rozmiar kontrolek w czasie wykonywania
  • Wielowątkowe zapytania do bazy danych Delphi
instagram story viewer