Das TCheckBox Delphi-Steuerelement zeigt ein Kontrollkästchen an, das aktiviert (aktiviert) oder deaktiviert (deaktiviert) sein kann. Das Checked Eigenschaft Gibt an, ob das Kontrollkästchen aktiviert ist oder nicht.
Wenn der Benutzer auf das Kontrollkästchen klickt, um den Status "Aktiviert" zu ändern, wird das OnClick-Ereignis für das Kontrollkästchen ausgelöst.
Da gibt es keine OnCheckedChanged Event werden Sie wahrscheinlich die Programmlogik abhängig vom aktivierten Status des Kontrollkästchens in seinem OnClick-Event behandeln.
Wenn Sie jedoch Wenn Sie die Checked-Eigenschaft programmgesteuert ändern, wird das OnClick-Ereignis ausgelöst -- obwohl keine Benutzerinteraktion stattgefunden hat.
Es gibt (mindestens) zwei Möglichkeiten, die Eigenschaft checked des Kontrollkästchens programmgesteuert zu ändern, während das Ereignis OnClick "deaktiviert" wird.
In Delphi für Win32 kann an ein Ereignis nur ein Ereignishandler (eine Prozedur) angehängt werden (obwohl es eine Möglichkeit gibt, Multicast-Ereignisse in Delphi für Win32 nachzuahmen). Die Signatur eines TCheckBox-Steuerelements im OnClick-Ereignis lautet "type TNotifyEvent = procedure (Sender: TObject) of object;"
Wenn Sie dem OnClick-Ereignis NIL zuweisen, bevor Sie den Status des Kontrollkästchens ändern, kehren Sie zur ursprünglichen OnClick-Ereignisbehandlungsprozedur zurück. Das OnClick-Ereignis wird nicht ausgelöst.
Verfahren SetCheckedState (const checkBox: TCheckBox; const check: boolean);
var
onClickHandler: TNotifyEvent;
Start
mit checkBox tun
Start
onClickHandler: = OnClick;
OnClick: = Null;
Ende;
Ende;
Die Verwendung dieses Verfahrens ist einfach:
// Überprüften Zustand umschaltenStart
SetCheckedState (CheckBox1, NICHT CheckBox1.Checked);
Ende;
Der obige SetCheckedState schaltet die Checked-Eigenschaft des CheckBox1-Kontrollkästchens um.
Eine andere Möglichkeit, die Ausführung von OnClick zu stoppen, wenn Sie die Checked-Eigenschaft eines Kontrollkästchens programmgesteuert ändern, besteht darin, die "versteckte" (geschützte) Funktion zu nutzen. ClicksDisabled Eigentum.
Wenn Sie sich die SetState-Prozedur der TCheckBox ansehen, die ausgeführt wird, wenn sich die Checked-Eigenschaft ändert, wird OnClick ausgelöst, wenn ClicksDisabled nicht wahr ist.
Da ClicksDisabled geschützt ist, können Sie über Ihren Code nicht darauf zugreifen.
Glücklicherweise können Sie mit der geschützten Hack-Technik auf die versteckten / geschützten Eigenschaften eines Delphi-Steuerelements zugreifen.