如何从其他表单中取消嵌入子表单?

时间:2015-11-16 21:49:11

标签: delphi firemonkey delphi-xe8

我想交换主表单上容器中显示的子表单。

我找到了一种方法,将一个表单作为另一个here的子表单分配,方法是将其作为主表单上的容器。

procedure TParentForm.EmbeddForm(AParent:TControl; AForm:TCustomForm);
begin
    while AForm.ChildrenCount>0 do
        AForm.Children[0].Parent:=AParent;
end;

这与我预期的添加子表单非常相似;但是,一旦它已经成为子表单,我似乎无法替换它。

nil子窗体的父级似乎没有做到这一点,也没有自己设置它的父级。

有没有办法从容器中取消嵌入此子窗体?

我宁愿不破坏重新创建这些子表单,只需将它们交换出来。

1 个答案:

答案 0 :(得分:1)

在Firemonkey中,要嵌入表单,首先应将所有控件封装在某种TLayout上。然后,您可以将该布局的父级分配给您需要的任何容器。

MyLayout.Parent := MyContainerInAnotherForm;

这样,你只有一个(布局的)变量来引用整个"形式"。请记住,FMX广泛地基于布局。

如果您想重新分配原始表单,只需将该布局的父级分配回其原始容器。

MyLayout.Parent := MyOriginalContainerForm;