嵌入FMX表格

时间:2014-02-20 07:03:09

标签: delphi firemonkey

有一些关于将FMX表格嵌入面板的代码......

http://docwiki.embarcadero.com/CodeExamples/XE5/en/FMXEmbeddedForm_(Delphi)

....我想在同一个面板中嵌入多个表单,关闭先前的表单 一个当然。我有一个问题,关闭./free那些 使用该方法从该docwiki中嵌入它们时形成。

从测试中我发现表单实际上并没有嵌入,而是将表单上的对象移动到模拟嵌入表单效果的新父级上。

在vcl中这很容易做,但在dmx中这是一个不同的球赛。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

当您嵌入表单时,正如您所述,将嵌入表单中的某些组件重新包含在包含表单中。

如果您想删除这些组件,您可以:

  • 将它们重新表达为包含形式以外的其他内容(例如,返回其原始形式)。如果您有多个表单可以进行交换而不必一直销毁和重新创建,请执行此操作。
  • 释放嵌入的表格(在ARC下使用DisposeOf)。这将破坏表单及其控件并将其从包含表单中删除。 (请注意,当包含的表单成为Parent时,原始的嵌入表单将保留为所有者。当嵌入的表单被销毁时,控件将被销毁。

然后,您可以在其中创建并重新显示另一个表单。

另请注意,您可以安全地将多个表单嵌入到一个容器表单中,但是您需要使用不同的对象作为每个表单的容器。您还可以将多个组件或组件集放在可嵌入的表单上,并将它们嵌入到容器表单的不同位置,甚至嵌入到多个表单中。

但是,您一次只能将每个控件嵌入一个表单中。

答案 1 :(得分:0)

最简单的方法是将每个表单上的透明布局作为顶级组件。

当您需要在面板中嵌入表单时,只需创建表单实例并将其父级布局更改为面板即可。 当您不需要嵌入表单时,可以将布局重新显示为其表单并释放它。