Eventbehandlung unterdrücken
-
Hallo,
ich habe eine Frage bzgl. der Eventbehandlung vom Objekt TCheckBox.
Ich möchte dass ein Eventhändling unter einer ganz bestimmten vorraussetzung unterdrückt wird, was kann ich tun?
Problem ist, dass wenn ich eine Checkbox bei mir aktiviere, sollen sich dabei diverse andere Chekboxen auch aktivieren. Leider werden durch den EintragCheckBox1->Checked = true;gleichzeitig auch das dazugehörige Event ausgelöst.
Kann ich dieses Eventhändling für diesen augenblick unterdrücken?
Bitte um Hilfe.
-
Hallo,
Da gibt es mehrere Möglichkeiten.
1. Event aushängen:
Du hängst die Events aller relevanten Checkboxen vor dem Aufruf ausCheckBox1->OnClick = 0;und danach wieder ein
CheckBox1->OnClick = CheckBox1Click; // als Beispiel2. boolsche Änderungsvariable
Du erzeugst eine bool-Membervariable in deiner Form (AllowChange oder so).
Diese Variable setzt du im Konstruktor auf true. In jedem Event kommt dann sowasvoid __fastcall TForm1::CheckBox1Click(TObject *Sender) { if( AllowChange) { // jetzt dein Code } }Jetzt kannst du die Eventbehandlung mit Setzen von
AllowChange = false;einfach abschalten und nach deiner Zuweisung wieder anschalten.
-
Danke dir,
ich habe es nun mit einer private (in der Klasse sichtbar) Flagvariabeln gelöst.
Ein Event demnach nur bei einem True ausgeführt.