Autor Beitrag
tartare
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89

Win XP SP2, WIN Vista Home Professional
Delphi 7/2009, C#, C++(VS 2005 Express)
BeitragVerfasst: Sa 25.03.06 14:27 
Hallo,

Ich mache gerade ein kartenspiel mit delphi 6. Dort werden zufällig zahlen auf karten übertragen, die dem spieler gezeigt werden sollen. Als karten benutze ich Tpanels. Ich will aber nicht jeden einzelnen panel zuweisen: Panel1.caption:=zahl[i], panel2.caption:=zahl[i]... sondern das ganze ungefähr so machen: for i:= 1 to 20 do
panel[i]:=zahl[i]. Würd mich über jeden tip freuen...
Mfg Tartare.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Sa 25.03.06 14:36 
das ganze könntest du mit findcomponent machen.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var i: byte;
begin
 for i := 1 to 20 do
  TPanel(Form1.FindComponent('Panel' + IntToStr(i))).Caption := zahl[i]; 
end;
Ferrari
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 30

Win XP
Delphi 6 Personal
BeitragVerfasst: Sa 25.03.06 14:40 
Du kannst die Panels während der Laufzeit als Array erzeugen. Dann würde bei den Variablen stehen:

ausblenden Delphi-Quelltext
1:
Panel: Array[1..20of TPanel;					


dann kannst du die Panels in dem OnCreate-Ereignis erzeugen. das würde dann so aussehen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
for i := 1 to 20 do
begin
 Panel[i] := TPanel.Create;
 Panel[i].Parent := Self; 
end;


Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt

_________________
Mehr als ein Hesse kann der Mensch kaum werden.
tartare Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 89

Win XP SP2, WIN Vista Home Professional
Delphi 7/2009, C#, C++(VS 2005 Express)
BeitragVerfasst: Sa 25.03.06 14:52 
Danke für die Hilfe, funzt wunderbar...

_________________
Ich leb in meiner eigenen Welt, aber das is ok, da kennt man mich.
fidionael
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 232

Win XP SP2, Ubuntu 6.06
Delphi 7 PE, Delphi 3 Prof
BeitragVerfasst: Sa 25.03.06 14:53 
Folgende Korrekturen:

Die erste Lösung funktioniert, aber man muss natürlich wenn es eine Zahl ist diese zunächst in einen String umwandeln, bevor man es als Caption angeben kann, also
ausblenden Delphi-Quelltext
1:
TPanel(Form1.FindComponent('Panel' + IntToStr(i))).Caption :=IntToStr(zahl[i]);					


Bei der zweiten Lösung wird der constructor nicht richtig aufgerufen, es müsste eigentlich lauten:
ausblenden Delphi-Quelltext
1:
Panel[i] := TPanel.Create(Self);					


Ich weiß, dass es nur winzige Fehler sind und vermutlich jeder selber drauf kommt beim Kompilieren, doch wegen der Vollständigkeit... *gg*