Einzelnen Beitrag anzeigen

Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#1

Komponenten zut Laufzeit erzeugen/darauf zugreifen

  Alt 12. Mär 2006, 22:22
Hallo,

Ich hab gleich zwei Fragen.

1. Wieso funktionert
Delphi-Quellcode:
procedure AddPanel;
var NewPanel: TPanel;
begin
   NewPanel := TPanel.Create(Form1);
end;
?

2. Wie kann ich auf das neu erzeucgte Panel zugreifen, wenn ich einen Zeiger habe? So nach der Art:
Delphi-Quellcode:
var
  Pointers: array[Byte] of Pointer;
  PanelCount: Integer;

  .
  .
  .

procedure AddPanel;
var NewPanel: TPanel;
begin
  NewPanel := TPanel.Create(Form1);
  Pointers[PanelCount] := @NewPanel;
  Inc(PanelCount);
end;
(Den 2. Code hab ich jetzt nicht getestet)

Den Zeiger kann ich nicht mit (Pointers[x]^ as TPanel) oder TPanel(Pointers[x]^) in TPanel casten, da krieg ich ne Fehlermeldung. Müsste ich mir da nen Typ PPanel = ^TPanel definieren und den dann für das Array nehmen?

Außerdem gibts die Variable NewPanel ja nur in der Zeit, in der AddPanel ausgeführt wird. Trotzdem bleiben die ganzen Panels da.

Ich hab sowas bisher mit einem globalen array[Byte] of TPanel gemacht und das statt der lokalen Variable verwendet, aber elegant wäre anders...

Greetz
Snuffi
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat