如何从另一个表单中取消嵌入子表单?
How can un-embed a subform from another form?
我想交换出现在主窗体容器中的子窗体。
我找到了一种方法,可以将一个表单指定为另一个 here 的子表单,方法是将其父表单设为主表单上的容器。
procedure TParentForm.EmbeddForm(AParent:TControl; AForm:TCustomForm);
begin
while AForm.ChildrenCount>0 do
AForm.Children[0].Parent:=AParent;
end;
添加子表单的效果与我预期的差不多;但是,一旦它已经成为子表单,我似乎无法替换它。
nil
设置子窗体的父级似乎并不能解决问题,也不能自行设置其父级。
有没有办法从容器中取消嵌入此子表单?
我宁愿不销毁并一直重新创建这些子表单,只是将它们换掉。
在 Firemonkey 中,要嵌入表单,您应该首先将所有控件封装在某种 TLayout
上。然后,您可以将该布局的父级分配给您需要的任何容器。
MyLayout.Parent := MyContainerInAnotherForm;
这样一来,您只有一个(布局的)变量来引用整个 "form"。请记住,FMX 广泛基于布局。
当您想重新分配原始表单时,只需将该布局的父级分配回其原始容器即可。
MyLayout.Parent := MyOriginalContainerForm;
我想交换出现在主窗体容器中的子窗体。
我找到了一种方法,可以将一个表单指定为另一个 here 的子表单,方法是将其父表单设为主表单上的容器。
procedure TParentForm.EmbeddForm(AParent:TControl; AForm:TCustomForm);
begin
while AForm.ChildrenCount>0 do
AForm.Children[0].Parent:=AParent;
end;
添加子表单的效果与我预期的差不多;但是,一旦它已经成为子表单,我似乎无法替换它。
nil
设置子窗体的父级似乎并不能解决问题,也不能自行设置其父级。
有没有办法从容器中取消嵌入此子表单?
我宁愿不销毁并一直重新创建这些子表单,只是将它们换掉。
在 Firemonkey 中,要嵌入表单,您应该首先将所有控件封装在某种 TLayout
上。然后,您可以将该布局的父级分配给您需要的任何容器。
MyLayout.Parent := MyContainerInAnotherForm;
这样一来,您只有一个(布局的)变量来引用整个 "form"。请记住,FMX 广泛基于布局。
当您想重新分配原始表单时,只需将该布局的父级分配回其原始容器即可。
MyLayout.Parent := MyOriginalContainerForm;