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.