Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Checkboxen Haken an/aus
hansg - So 19.01.03 15:37
Titel: Checkboxen Haken an/aus
Hallo,
kann man mehrere Checkboxen mit einer Schleife auf einmal den Haken
setzen bzw. wegnehmen oder muß ich alle mit checkbox1.checked:=true; bzw. mit checkbox1.checked:=false; alle zu Fuß setzten?
Gruß Hans
hansg - So 19.01.03 16:18
Hallo,
irgendwie klappt das nicht:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Button1Click(Sender: TObject); var checkbox: array[1..20] of TCheckbox; i: integer; begin for i:=1 to 20 do begin checkbox[i].checked:=true; end; end; |
wo liegt der Fehler, Delphi stürzt dann ab?
Gruß Hans
Wolff68 - So 19.01.03 17:03
TCeckbox ist ein Objekt ! (Und noch dazu ein visuelles)
Mit
var checkbox : Array [1..20] of TCheckbox weist Du nur der Variablen eine TCheckbox zu. Du musst sie aber noch erzeugen!
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| For i := 1 to 20 do begin CheckBox[i] := TCheckBox.Create(self); With CheckBox[i] do begin Parent := Form1; // bzw das Object, auf dem die Checkbox erscheinen soll Top := i*24; Left := 8; { eventuell noch weitere Eingenschaften einstellen... } end; end; |
(Steht übrigends auch so im 2. Beitrag des Topics, das Dir Klabautermann empfohlen hat)
derDoc - So 19.01.03 17:25
Sicher kann man das auch so lösen, aber wenn er nicht jeder CheckBox erst zur Laufzeit erstellen will musst du wie folgt vorgehen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Button1Click(Sender: TObject); var i: Integer; current: TCheckBox; begin for i := 1 to 10 do begin case i of 1: current := CheckBox1; 2: current := CheckBox2; 3: current := CheckBox3; 4: current := CheckBox4; 5: current := CheckBox5; 6: current := CheckBox6; 7: current := CheckBox7; 8: current := CheckBox8; 9: current := CheckBox9; 10: current := CheckBox10; end; current.State := cbChecked; end; end; |
Allerdings bin ich mir nicht sicher, ob es dann noch eine Vereinfachung ist.
Christian S. - So 19.01.03 17:30
@derDoc: Da wäre FindComponent geeigneter, oder?
derDoc - So 19.01.03 18:04
Also ich gebe mich geschlagen, wenn man es wie Peter sagt macht geht es einfacher. Ich poste deshalb hier den einfachen Code:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); var i: Integer; current: TCheckBox; begin for i := 1 to 10 do begin current := TCheckBox(FindComponent('CheckBox'+IntToStr(i))); current.State := cbChecked; end; end; |
Wenn jemand noch Vorschläge hat, ich bin für weitere Vereinfachungen offen.
@hansg:
Ich glaube deine Frage ist nun beantwortet.
hansg - So 19.01.03 20:25
Hallo an alle,
jetzt komme ich weiter :D :) :P
Vielen Dank
Hans
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!