在XE7的VCL应用程序中使用FMX表单?

时间:2015-03-03 15:38:44

标签: delphi firemonkey vcl delphi-xe7

即使Embarcadero没有正式支持,也有很多例子表明您可以在VCL应用程序中包含FMX表格,例如MonkeyMixerthis SO question。 但是,当我创建一个只有一个空VCL表单和一个空FMX表单的测试应用程序时,我遇到两个问题:

  1. 任务栏中有两个应用程序图标(显然是一个用于 每个TApplication实例,即VCL和FMX)
  2. 当我关闭应用程序时(当它在FMX.Forms.FinalizeForms中调用TStyleManager.UnInitialize时)崩溃。
  3. 我该如何做到这一点?

    我需要这种组合,因为我们希望我们的应用程序在Windows,Mac OS和iOS上是原生的。因此,在Windows上,它是VCL应用程序,而其他操作系统是使用TMS本机组件的FMX。我们有一些为FMX制作的大型自定义图形组件,它们也必须在Windows上运行。

    修改

    我只看到两种替代解决方案,我不喜欢它们:

    1. 在Windows上也使用FMX。我不喜欢样式组件而不是原生组件的想法。有经验的用户可以很容易地区分出来。
    2. 维护我们的自定义组件:VCL和FMX版本。这需要一些工作,而且FMX的图形功能也比VCL好得多。

1 个答案:

答案 0 :(得分:2)

我需要在VCL应用中托管FMX应用以进行展示和培训。 FMX应用程序实际上是一个Android目标,VCL是一个Windows'演示者'。 FMX托管是使用托管FMX主表单的TFireMonkeyContainer完成的。是的它有轻微的皱纹,但它工作正常,我确信我们会找到改善方法的方法。

我的FMX主表单是在运行时创建的,只能看到FMX.Forms。然后将其传递给TFireMonkeyContainer,并在VCL应用程序关闭时被其销毁。