35 Stimmen

Delphi: RadioButton.Checked oder CheckBox.Checked ändern ohne OnClick-Event auszulosen

Tipp von Delphianer | 21.03.2013 um 19:46

Ändert man per Programmcode den Status eines RadioButtons oder einer CheckBox - zum Beispiel wenn man Checked auf True oder False setzt - wird auch automatisch das OnClick-Event des Options-Schalters ausgelöst. Heute möchte ich euch zeigen, wie ihr es verhindern könnt, dass das OnClick Event ausgeführt wird.

OnClick-Event wird ausgeführt

RadioButton1.Checked := True;

// oder

CheckBox1.Checked := True;

OnClick-Event wird verhindert

procedure ChangeState(NewState: boolean);
var
  OldEvent: TNotifyEvent;
begin
  // Altes Event merken
  OldEvent := RadioButton1.OnClick;
  RadioButton1.OnClick := nil;

  // Änderungen durchführen, zum Beispiel:
  RadioButton1.Checked := NewState;

  // Event zurücksetzen
  RadioButton1.OnClick := OldEvent;
end;

Der Trick dabei: Wir merken uns die für das OnClick zugewiesene Prozedur in der Variable OldEvent. Danach setzen wir das OnClick auf nil. Dadurch ist keine Prozedur mehr zugewiesen, die ausgeführt werden könnte und wir können problemlos Änderungen am Status durchführen. Da alles natürlich hinterher genauso funktionieren soll, wie vorher, dürfen wir nicht vergessen, zuletzt die Prozedur wieder zurückzusetzen. Im Beispiel haben wir einen RadioButton benutzt, dasselbe funktioniert natürlich auch für die CheckBox in gleicher Weise.

AntwortenPositivNegativ

Über den Autor

AvatarDer Autor hat keine Kurzbeschreibung seines Profils angegeben.
Profil anzeigen

 

Ähnliche Themen

HTML-Formular mit Daten vorbelegen

Tutorial | 0 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.