Das übergeordnete Element ist das Steuerelement, das das Steuerelement enthält.
Wenn Sie ein Steuerelement in einem Panel löschen, wird das übergeordnete Element das Panel sein.
Der Besitzer eines Steuerelements wird normalerweise die Form sein, die es enthält, aber das ist nicht immer der Fall. Wenn Sie mit Frames arbeiten, besitzt der Frame die Steuerelemente darin.
Der Weg zum Formular, das Ihre Kontrolle besitzt, ist, den Baum hinauf zu gehen, bis Sie ein echtes Formular finden.
Sie können VCL.Forms.GetParentForm
nennen, die wie folgt aussieht:
function GetParentForm(Control: TControl; TopForm: Boolean = True): TCustomForm;
begin
while (TopForm or not (Control is TCustomForm)) and (Control.Parent <> nil) do
Control := Control.Parent;
if Control is TCustomForm then
Result := TCustomForm(Control) else
Result := nil;
end;
Oder wenn Sie durch den Eigentümer wollen bekommen dort können Sie tun:
function GetOwningForm(Control: TComponent): TForm;
var
LOwner: TComponent;
begin
LOwner:= Control.Owner;
while Assigned(LOwner) and not(LOwner is TCustomForm) do begin
LOwner:= LOwner.Owner;
end; {while}
Result:= LOwner;
end;
Es ist wichtig, den Unterschied zwischen der grok Eltern und der Besitzer, siehe:
http://delphi.about.com/od/objectpascalide/a/owner_parent.htm
Natürlich können Sie den gleichen Trick verwenden mit der parent
Eigenschaft. Wenn Sie den Baum lange genug (fast) hochgehen, wird jedes Steuerelement das Formular als sein Eltern haben.
) Einige Steuerelemente haben kein Parent.
Eltern Kontrolle ist nicht unbedingt eine Form, es kann zum Beispiel 'TPanel' sein. Machen Sie klar, was Sie brauchen - ein Elternsteuerelement oder ein Eigentümerformular. – kludg
@ user246408 Ich brauche Besitzer Formular. –
Dann brauchen Sie Eigentümereigenschaft Ihrer Komponente; IDE setzt es, wenn Sie eine Komponente in einem Formular löschen; und ich denke, Sie müssen den Unterschied zwischen "Besitzer" und "Eltern" in Delphi lernen. – kludg