Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - mittels Schleife alle checkboxes durchlaufen
achi 3.0 - Do 18.09.08 12:07
Titel: mittels Schleife alle checkboxes durchlaufen
hallo habe eine form in der man mittels einigen checkboxes einstellungen macht.
ich wollte eine schleife machen in der automatisch alle checkboxes durchlaufen werden hier die syntax
leider klappt das nicht delphi mekert wegen des index checkbox1 ist ok aber checkbox[x] nicht obwohl x=1 ist.
gibts da eine methode mit der das geht
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| begin for x:=1 to 15 do for i:=0 to 15 do begin if (checkbox[x].checked) and (checkbox[x+1].checked) and not (checkbox[x+2].checked) then Nadelplan[i]:=75 else if checkbox[x].checked and checkbox[x+2].checkedand then Nadelplan[i]:=150 else if checkbox[x+1].checked and checkbox[x+2].checked and not checkbox[x].checked then Nadelplan[i]:=75 else Nadelplan[i]:=0; end; |
danke
Moderiert von
Narses: Delphi-Tags hinzugefügt
Xentar - Do 18.09.08 12:09
Entweder du legst dir ein Array of TCheckBox an, und weist diesem z.B. im OnCreate des Formulars alle Checkboxen einzeln zu,
oder evtl. mit FindComponent()
tif - Do 18.09.08 13:43
Hallo, ich habe mal sowas gemacht :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Function Tf_Rechte.FindSwitch(number:Integer):TCheckBox; Var i:Integer; Begin for i:=0 to Panel_daten.controlcount-1 do if (Panel_daten.controls[i] IS TcheckBox) And (Panel_daten.controls[i].Name = 'CheckBox'+IntToStr(Number)) Then begin result:=TcheckBox(Panel_daten.controls[i]); exit; end; result:=NIL; end; |
und dann z.B.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Procedure Tf_Rechte.SetValues(Value:ShortString); var help : TcheckBox; i : Integer; Begin for i:=1 to 20 Do Begin help:=FindSwitch(i); if help <> NIL Then help.checked:=Value[i]='1'; end; end; |
Wenn die checkboxen auf mehreren Panels, Groupboxen etc liegen, muss man FindSwitch() rekursiv gestalten.
Grüße
Tino
Bergmann89 - Do 18.09.08 13:50
HI,
ich denke der einfachste weg is über FindComponent, wie Xentar schon gesagt hat.
Delphi-Quelltext
1: 2:
| for i := 0 to 10 do if TCheckBox(FindComponent('CheckBox'+IntToStr(i))).Checked then [...] |
so funzt das dann...
MfG Bergmann.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!