Einzelnen Beitrag anzeigen

peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Panele dynamisch erzeugen

  Alt 13. Jan 2022, 11:37
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
Das ist ziemlich schrecklich .
Füge in der Methode eine lokale Variable hinzu:

Delphi-Quellcode:
  LPanel: TPanel;

...
  LPanel := TPanel.Create(Self);
  LPanel.Name := n_pnl;
  LPanel.Parent := paintbox1.Parent;
  LPanel.Left := ....
  etc.
  LPanel.BringToFront;

Eine TPaintbox (VCL) ist kein TWinControl und kann daher nicht als Container für andere Controls dienen.

Verwende auf keinen Fall ein With-Statement, das ist pures Gift in Code mit tief gestaffelten Scopes. With ist ein altes Erbe aus Turbo-Pascal Zeiten, wo es nur auf Records angewendet werden konnte und ein Hinweis für eine Optimierung für den Compiler lieferte. Heute schadet es weit mehr als das es nutzt, vergiss es einfach.
Peter Below
  Mit Zitat antworten Zitat