Autor Beitrag
kabizolis
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 86



BeitragVerfasst: Mi 15.06.05 15:51 
ich lege in meiner form 2 arrays fest:

ausblenden Delphi-Quelltext
1:
2:
3:
var
  Labell: array of TLabel;
  Editl: array of TEdit;


dann lege ich in formcreate die länge der arrays fest:

ausblenden Delphi-Quelltext
1:
2:
3:
 {Länge der Arrays festlegen}
 setlength(Editl, 10);
 setlength(Labell, 10);


ich weise dann bestehende buttons resp. labels den arrayeinträgen zu:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
 {Editfelder in Array übernehmen}
 Editl[0] := Form2.Edit32;
 Editl[1] := Form2.Edit33;
 Editl[2] := Form2.Edit34;
 Editl[3] := Form2.Edit35;
 Editl[4] := Form2.Edit36;
 Editl[5] := Form2.Edit37;
 Editl[6] := Form2.Edit38;
 Editl[7] := Form2.Edit39;
 Editl[8] := Form2.Edit40;
 Editl[9] := Form2.Edit41;

{Labels in Array übernehmen}
 Labell[0] := Form2.Label17;
 Labell[1] := Form2.Label44;
 Labell[2] := Form2.Label45;
 Labell[3] := Form2.Label46;
 Labell[4] := Form2.Label47;
 Labell[5] := Form2.Label48;
 Labell[6] := Form2.Label49;
 Labell[7] := Form2.Label50;
 Labell[8] := Form2.Label51;
 Labell[9] := Form2.Label52;


die labels und buttons sind standardmässig aus "visible := false" gesetzt

wenn ich sie anzeigen will:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
 for n := 0 to 9
  do begin
   Labell[n].Visible := true;
   Editl[n].Visible := true;
  end;


werden nur die labels angezeigt....

wo liegt mein fehler? ich hab' schon etliche methoden versucht...
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 15.06.05 15:57 
Das kannst du aber viel einfacher machen!
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
for i := 0 to Self.ComponentCount - 1 do
  if Self.Components[i] is TEdit then
    (Self.Components[i] as TEdit).Visible := True
  else if Self.Components[i] is TLabel then
    (Self.Components[i] as TLabel).Visible := True;

Falls nur bestimmte Edits oder Labels angesprochen werden sollen, kannst du bei denen im Objektinspektor Tag auf einen bestimmten Wert setzen und nur, wenn der stimmt, Visible ändern...

//edit:
Vielleicht noch ne kurze Erklärung dazu...

In der for-Schleife geht man durch alle Komponenten auf dem aktuellen Formular (Self) und wenn es ein TEdit ist macht man was, wobei man mit as sagt, dass die Komponente als TEdit behandelt werden soll. (Sonst weiss Delphi nicht, welche Eigenschaften usw. die Komponente hat...)
kabizolis Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 86



BeitragVerfasst: Mi 15.06.05 16:28 
ehm...
das hab' ich mit meinen beschränkten kentnisse wohl noch nicht ganz verstanden...

aber danke!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 15.06.05 16:35 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
for i := 0 to Self.ComponentCount - 1 do
  //ComponentCount gibt an wieviele Komponenten auf dem Fomular liegen
  //Self ist einfach nur das aktuelle Formular, also praktisch dasselbe wie Form1
  //Du gehst damit also durch alle Komponenten durch
  if Self.Components[i] is TEdit then  
    //Self.Components[i] ist die i-te Komponente
    //Du fragst an dieser Stelle, ob es sich dabei um ein Edit-Feld handelt
    (Self.Components[i] as TEdit).Visible := True  
      //Wenn es ein Edit-Feld ist, dann soll es als solches behandelt werden (as)
      //In deutsch also "Die Eigenschaft Visible, wenn man die 
      //i-te Komponente als TEdit betrachtet"
  else if Self.Components[i] is TLabel then  
    (Self.Components[i] as TLabel).Visible := True;
  //Und nochmal daselbe fuer die Labels

Und wenn du das nicht verstehst dann frag weiter nach, denn es geht hier ja vor allem darum, etwas zu lernen! :dance2:

Wenn du etwas nicht sofort verstehst :nixweiss: , ist das auch normal, aber gib dann nicht einfach auf sondern frag nach den Dingen die du nicht verstehst :wink: .