在 Delphi XE2 之前,我们只有 VCL 来创建 GUI 应用程序。德尔福 XE2 指出:
注意:FireMonkey (FMX) 和可视化组件库 (VCL) 是
不兼容且不能在同一项目中使用或
应用。也就是说,一个应用程序必须是唯一的一个或
其他,FireMonkey 或 VCL。不兼容的原因是
FireMonkey (FMX) 和 VCL 之间的框架差异。
我的应用程序是一个使用运行时包构建的纯 VCL 应用程序。所有 VCL 表单都存储在运行时包中。如果我要创建一个 FireMonkey 表单并将其存储在包中,我是否有机会在运行时在我的 VCL 应用程序中实例化此 FireMonkey 表单?所以我可能会喜欢FireMonkey的3D或高清效果。
这是完全可能的,因为 FMX 表单可以分配给面板。
See 这篇博客文章 http://delphisorcery.blogspot.com/2011/09/delphi-xe2-heating-up-hype-playing.html详情:
只需创建一个新的 FireMonkey 表单(2D 或 3D,无所谓)保存它
然后将其添加到您的 VCL 应用程序中(只需接受警告)。你
可以在某处创建 FMX 表单实例并显示它 - 不
问题。但是如果你想创建一些不错的控件怎么办
动画或其他东西并将其嵌入到您现有的 VCL 表单中?
好吧,在您的 VCL 表单上放置一个 TPanel 并包含全新的单元DSharp.Windows.FMXAdapter.pas https://code.google.com/p/delphisorcery/source/browse/trunk/Source/Windows/DSharp.Windows.FMXAdapter.pas在 Vcl.ExtCtrls 之后。然后只需创建
您的 FMX 表单某处并将其分配给您的新 Form 属性
面板 - 繁荣,就这样。
事实上,FMXAdapter.pas代码很短:
procedure TPanel.Resize;
begin
inherited;
ResizeForm();
end;
procedure TPanel.ResizeForm;
begin
if Assigned(FForm) then
Platform.SetWindowRect(FForm, RectF(BorderWidth, BorderWidth,
ClientWidth + BorderWidth, ClientHeight + BorderWidth));
end;
procedure TPanel.SetForm(const AForm: TCommonCustomForm);
begin
FForm := AForm;
FForm.BorderIcons := [];
FForm.BorderStyle := TFmxFormBorderStyle.bsNone;
ResizeForm();
FForm.Visible := True;
Winapi.Windows.SetParent(FmxHandleToHWND(FForm.Handle), Handle);
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)