Zitat von
s-off:
Für einige Klassen ist dieses bereits implmentiert worden. Beispielsweise für TForm und ihr Feld FComponents, wie bereits in #2 erläutert.
Das Eine hat doch nichts mit dem Anderen zu tun. Wincontrols können als Container fungieren und stelln deshalb logischerweise Funktionalitäten bereit, die es ermöglichen, durch den Container zu iterieren. Das betrifft jedoch andere Objekte, die auf ihr drauf liegen, aber nicht die Form selbst...
Die TForms-Klasse weiss aber auch nicht, wie viele Forms denn so rumfleuchen. Das geht auch gar nicht, weil eine Klasse keine Felder besitzen kann, die aber irgendwie für die Implementierung dieser Funktionalität von Nöten wäre.
Erstelle Dir also einen Container für deine Objekte. Im Construktor fügst Du die Instanz in die Liste ein und im Destruktor wieder raus.
Delphi-Quellcode:
TPanelContainer = Class (TList) ...
...
End;
Var
MyPanelContainer : TPanelContainer;
TMyPanel = Class (TPanel)
Constructor Create (aOwner : TComponent); Override;
Destructor Destroy;
...
End;
Constructor TMyPanel.Create (aOwner : TComponent);
Begin
inherited;
MyPanelContainer.Add (Self);
...
end;
Destructor TMyPanel.Destroy;
Begin
MyPanelContainer.Remove (Self);
...
inherited
End;