Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - For schleife - Checkboxen
anno2007 - Di 07.04.09 21:42
Titel: For schleife - Checkboxen
Hi,
wie durchläuft man Checkboxen mit ner For-Schleife?
z.B. wenn ich 10 Checkboxen checken will und dabei einen Counter hochzählen will, falls die Checkbox gecheckt ist.
Thx
anno2007
Yogu - Di 07.04.09 22:26
Du hast mehrere Möglichkeiten.
- Abfragen der CheckBoxen per FindComponent: Rufe diese Funktion auf und gib als Parameter den Namen der Komponente an. Den kannst du ja aus einem konstanten Text und einer Zahl (der Schleifenvariable) zusammensetzen, wenn die Komponenten CheckBox1 .. CheckBox10 heißen.
- Du packst alle CheckBoxen in ein Panel o.ä. und rufst dessen Eigenschaften ControlCount und Controls[Index] auf. In der for-Schleife kannst du alle Controls des Panels abklappern und mit Controls[i] auf das Control zugreifen.
In beiden Fällen ist ein anschließendes
CASTING notwendig. (
TCheckBox(...))
Lannes - Di 07.04.09 23:10
Hallo,
oder c.:
alle Checkboxen bekommen einen gemeinsamen Event-Handler in dem ein Counter gepflegt wird:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.MyCheckBoxClick(Sender: TObject); begin if TCheckBox(Sender).Checked then inc(CheckBoxCounter) else dec(CheckBoxCounter); end; |
ffgorcky - Di 07.04.09 23:22
Also ich würde ja ein Array dafür anlegen - vor allem, wenn Du nachher eine Schleife zur möglichst schnellen Auswertung nutzen möchtest - also das wäre dann in etwa so:
Delphi-Quelltext
1:
| var Checkboxen:array[0..9] of TCheckbox |
Dann ist nur die Frage, ob Du die dann alle einzeln in dieses Array einfügst mit:
Delphi-Quelltext
1: 2: 3: 4:
| arrayCheckbox[0]:=Checkbox1; arrayCheckbox[1]:=Checkbox2; arrayCheckbox[2]:=Checkbox3; ... |
Oder ob Du die Checkboxen mit dieser Möglichkeit hizufügst:
Delphi-Quelltext
1: 2: 3:
| for i:=0 to Form1.ControlCount-1 do if Controls[i] is TCheckbox then arrayCheckbox.add(Controls[i]) |
Schneller ist ja auf jeden Fall die erste Variante, aber die zweite ist universeller einsetzbar - also brauchst Du dann da nicht mehr so unbedingt dran denken, die neue Checkbox auch noch mit da rein zu schreiben, wenn Du noch eine mehr haben möchtest.
anno2007 - Mi 08.04.09 01:02
Hat alles perfekt geklappt :).
Ich danke euch.
THX
anno2007
Hidden - Mi 08.04.09 08:37
Hi :)
Es gibt auch eine Komponente namens TCheckListbox, die das ganze etwas einfacher machen könnte.
mfG,
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!