Hi Delphianer,
auf einer Form habe ich eine Paintbox als Container platziert. Auf dieser Paintbox möchte ich nun dynamisch insgesamt 81 Panele erzeugen und benutze folgenden Code:
Delphi-Quellcode:
...
j:=1;i:=1;
// while j= 1 do
begin
// while i= 1 do
begin
n_pnl:='Feld'+IntToStr(i)+IntToStr(j)+'_pnl';
TPanel.Create(Self).Name := n_pnl;
with TPanel(FindComponent(n_pnl)) do
begin
Left := left_M+(i-1)*sw+1;
Top := top_m+(j-1)*sw+1;
height:=sw-2;
width:=sw-2;
Parent := self;
color:=clSilver;
visible:=true;
Caption:=n_pnl;
end;
// Inc(i);
end;
// Inc(j);
end;
end;
end;
Mein Problem: Left, top, height und with sind nicht die Position des erzeugten Panels, sondern die Position/Größe des Formulars. Die Panele sollen Child-Kompnenten der Paintbox werden. Was schreibe ich bei Parent ein? Paintbox1 geht nicht, das self funktioniert auch nicht.
Die Schleifen sind im obigen Beispiel als Test für 1 Panel eingestellt. Sowohl j als auch i müßten eigentlich von 1 bis 9 laufen, also (while j<=9). Egal, ob ich for, while oder repeat benutze, das Programm arbeitet die Schleifen unendlich mal ab. Ich bekomme dann die Fehlermeldung: Feld11_pnl existiert bereits.
Im Debug-Modus springt der Ausführungs-Punkt beim Erreichen des Parent-Befehls, unabhängig ob ich self oder Form1 wähle, zum Haltepunkt (= erster Befehl des dargestellten Snippets) zurück und will ab da den Code wiederholen. Der Color-Befehl wird nicht erreicht.
Wo liegt mein Denkfehler?
Kurt Wallander