我想交换主表单上容器中显示的子表单。
我找到了一种方法,将一个表单作为另一个here的子表单分配,方法是将其作为主表单上的容器。
procedure TParentForm.EmbeddForm(AParent:TControl; AForm:TCustomForm);
begin
while AForm.ChildrenCount>0 do
AForm.Children[0].Parent:=AParent;
end;
这与我预期的添加子表单非常相似;但是,一旦它已经成为子表单,我似乎无法替换它。
nil
子窗体的父级似乎没有做到这一点,也没有自己设置它的父级。
有没有办法从容器中取消嵌入此子窗体?
我宁愿不破坏重新创建这些子表单,只需将它们交换出来。
答案 0 :(得分:1)
在Firemonkey中,要嵌入表单,首先应将所有控件封装在某种TLayout
上。然后,您可以将该布局的父级分配给您需要的任何容器。
MyLayout.Parent := MyContainerInAnotherForm;
这样,你只有一个(布局的)变量来引用整个"形式"。请记住,FMX广泛地基于布局。
如果您想重新分配原始表单,只需将该布局的父级分配回其原始容器。
MyLayout.Parent := MyOriginalContainerForm;