Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Panels in for i schleife "erhöhen"?
tartare - Sa 25.03.06 14:27
Titel: Panels in for i schleife "erhöhen"?
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. - Sa 25.03.06 14:36
das ganze könntest du mit findcomponent machen.
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 - Sa 25.03.06 14:40
Du kannst die Panels während der Laufzeit als Array erzeugen. Dann würde bei den Variablen stehen:
Delphi-Quelltext
1:
| Panel: Array[1..20] of TPanel; |
dann kannst du die Panels in dem OnCreate-Ereignis erzeugen. das würde dann so aussehen:
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
Christian S.: Delphi-Tags hinzugefügt
tartare - Sa 25.03.06 14:52
Danke für die Hilfe, funzt wunderbar...
fidionael - 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
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:
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*
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!