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 Eintrag

    CheckBox1->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 aus

    CheckBox1->OnClick = 0;
    

    und danach wieder ein

    CheckBox1->OnClick = CheckBox1Click; // als Beispiel
    

    2. 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 sowas

    void __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.


Anmelden zum Antworten