![]() |
Re: Checkboxen machen mich wahnsinnig!
Moin :-)
Auch wenn das Problem gelöst scheint, so darf ich dennoch eine kleine Anmerkung machen !? Wie bereits gesagt, löst das Setzen von Checked immer das Ereignis OnClick aus...soweit, so dumm *gg* Es gibt aber eine einfache Lösung (sogar mit Delphi-Boardmitteln ;-) ). Hierzu ein kleines Beispielmit 3 Checkboxen:
Delphi-Quellcode:
Interessant ist hier Checkboxe.State, dessen Eigenschaft man durchaus zur Laufzeit setzen kann...entweder im MouseUp- oder wie hier 'weitergeleitet' an die Prozedure CheckBoxStatus. Somit umgeht man das Auslösen des OnClick-Ereignisses..
procedure TForm.CheckBox1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin CheckBoxStatus(Sender as TCheckBox); end; {zum 'Abfangen' der Leertaste, welche auch den Status setzen kann } procedure TForm1.CheckBox1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = ORD(#32) then CheckBoxStatus(Sender as TCheckBox); end; { allg. Proc für die Checkboxen} procedure TForm1.CheckBoxStatus(Sender: TcheckBox); begin if Sender.Name = 'CheckBox1' then begin Checkbox2.State := cbUnchecked; //--setzen des Status auf unchecked Checkbox3.State := cbUnchecked; end; if Sender.Name = 'CheckBox2' then begin Checkbox1.State := cbUnchecked; Checkbox3.State := cbUnchecked; end; if Sender.Name = 'CheckBox3' then begin Checkbox1.State := cbUnchecked; Checkbox2.State := cbUnchecked; end; end; Eine Checkbos erhält automatisch den Status cbChecked, sobald sie angeklickt oder (sofern per Tab focusiert wurde) die Leertaste gedrückt wurde. Sollen andere Checkboxen in Abhängigkeit einer bestimmten Checkbox den Status cbChecked erhalten, so löst man das elegant wiederum über
Code:
;-)
Checkbox.State := cbChecked
Ob eine Checkbox markiert ist, lässt sich zum einen ja über
Code:
oder über
if CheckBox.Checked then..
Code:
ermitteln; für den häkchenfreien Zustand dann entsprechend so:
if Checkbox.State=cbChecked
Code:
bzw
if not CheckBox.Checked then..
Code:
..
if Checkbox.State=cbUnChecked
Zu diesem Problem gibt es hier ![]() ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz