Einzelnen Beitrag anzeigen

Kurt Wallander

Registriert seit: 11. Mai 2020
Ort: Freiberg
35 Beiträge
 
Delphi 10.4 Sydney
 
#1

Panele dynamisch erzeugen

  Alt 13. Jan 2022, 12:10
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

Geändert von Kurt Wallander (13. Jan 2022 um 12:14 Uhr)
  Mit Zitat antworten Zitat