2014-09-20 81 views
1

我试图在FMX表单中嵌入一个VCL表单,其中FMX表单包含设置为alClient的TScalingLayout,以便在表单上调整整个内容的大小。在FMX ScalingLayout中嵌入VCL表单

我发现嵌入VCL形式FMX形式摆在首位的唯一办法是,像这样:

VCLForm.ParentWindow := WindowHandleToPlatform(FMXForm.Handle).Wnd; 
    VCLForm.Show; 

不幸的是这个VCLForm让我无法家长我TScalingLayout直接,所以当我调整我的FMX表格自然不会缩放嵌入的VCL表格。

我认为,如果我只能将VCL表单直接放到表单上,我可以使用另一个FMX表单作为容器并将此容器表单嵌入到我的ScalingLayout中,但由于我只能将FMX表单嵌入另一个通过移动所有的孩子我的VCL表格将不会被移动。

有没有一种方法可以嵌入我的VCL表单,这样就可以按照同样的方式缩放其内容:ScalingLayout上的所有FMX控件都可以缩放?

+0

您可以通过OnResize事件手动调整vcl表单的大小吗? – 2014-09-21 07:24:51

+0

是的,我已经尝试过,它工作正常,问题是ScalingLayout缩小所有FMX内容(而不是当窗口变小时显示滚动条)。除了调整大小之外,我还必须使用VCL表单上的内容。 – DNR 2014-09-21 08:13:40

回答

1

不,这是不可能的。 Firemonkey可以扩展其组件的原因是因为Firemonkey从头开始创建和绘制它们。

大多数VCL控件都是由程序调用的内置Windows操作系统组件构成的。而那些没有任何规模的能力。它们不是由VCL绘制的,VCL告诉Windows绘制它们。所以如果FMX没有绘制它们,它不能缩放它们。

+0

这是不正确的。我可以使用VCL中的Align和Anchors属性来创建一个适应窗体大小的布局。 – 2014-09-21 07:24:00

+0

我想他是在谈论缩放按钮和文本的实际大小,这正是TScaleLayout所做的。锚不会使实际的文本缩小和扩大。 – 2014-09-27 08:36:52