Autor Beitrag
achi 3.0
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 63



BeitragVerfasst: Do 18.09.08 12:07 
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
ausblenden 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 user profile iconNarses: Delphi-Tags hinzugefügt
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: 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()

_________________
PROGRAMMER: A device for converting coffee into software.
tif
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 46
Erhaltene Danke: 1

Winxxx
TP, BP, Delphi 1 - 2009
BeitragVerfasst: Do 18.09.08 13:43 
Hallo, ich habe mal sowas gemacht :

ausblenden 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.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Do 18.09.08 13:50 
HI,

ich denke der einfachste weg is über FindComponent, wie Xentar schon gesagt hat.

ausblenden Delphi-Quelltext
1:
2:
for i := 0 to 10 do
  if TCheckBox(FindComponent('CheckBox'+IntToStr(i))).Checked then [...]


so funzt das dann...

MfG Bergmann.

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^