Delphi XE2:可以在VCL应用程序中实例化FireMonkey Form吗?

2023-12-21

在 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(使用前将#替换为@)

Delphi XE2:可以在VCL应用程序中实例化FireMonkey Form吗? 的相关文章

随机推荐

  • 锁和监视器可以安全地用于同一个对象吗?

    我有以下情况 我想相互排除对对象的访问 到目前为止我通常会使用锁对象 object lockObject new object method1 lock lockObject CODE1 现在我还有一个可以从另一个线程调用的方法 它不应该被
  • 设备中的sign_in_and_redirect如何工作?

    if user persisted sign in and redirect user event gt authentication this will throw if user is not activated set flash m
  • 如何为一组目标创建 Maven 别名?

    我正在配置一个 Maven 项目并希望能够使用别名 例如 mvn server 执行mvn clean package tomcat run Grunt 任务运行器做得很好 但我还没有找到在 Maven 中做同样事情的方法 是否可以 您可以
  • 如何阅读 C 声明?

    我听说过一些方法 但没有一个能坚持下来 就我个人而言 我尝试避免 C 中的复杂类型 并尝试将它们分解为组件 typedef 我现在面临着维护一些来自所谓的 三星级程序员 的遗留代码 并且我很难阅读一些 代码 如何阅读复杂的 C 声明 本文解
  • Autohotkey 多个热键映射到同一功能

    我有几个热键 它们都做同样的事情 我有多个热键 所以我可以在我的手当时在的任何地方调用它们 并且可以在多个键盘上使用 例如 Send Media Next XButton2 RButton Send Media Next SC15D Sen
  • 如何在搅拌机中导出带有纹理的.obj格式文件? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 First of all i am new in blender i have attached texture from tree ob
  • 爪哇 |整数运算符;

    我用 Java 编程大约一年了 但仍然发现了一些我不知道的东西 如何 new Font FontFamily TIMES ROMAN 12 1 4 如何 可以处理整数吗 谢谢 附 我用谷歌搜索了很多 The 运算符计算 按位或 http d
  • Windows 中崩溃进程的可预测退出代码

    对于Windows中正常退出的进程来说 进程的退出码一般是以下的返回值 main 或传递给的退出代码std exit ERRORLEVEL 然后可以用于查询退出代码 并且可以用于确定程序是否正确执行 或者是否存在一些指示特定问题 特定于应用
  • 使用 astype 在 H5py 中创建对 HDF 数据集的引用

    来自h5py 文档 http docs h5py org en latest high dataset html Dataset astype 我发现我可以使用以下命令将 HDF 数据集转换为另一种类型astype数据集的方法 这会返回一个
  • 通过 REST 将消息发送到 Azure 服务总线队列

    Azure 队列向 REST API 公开 为了使 REST 调用正常工作 我在 POSTMAN 上进行了示例测试 POST 调用 https yournamespace servicebus windows net yourentity
  • 仅在持久函数中扇出(并忘记)

    我有一个现有的函数应用程序 带有 2 个函数和一个存储队列 F1 由服务总线主题中的消息触发 对于收到的每个消息 F1 计算一些必须以不同的延迟量执行的子任务 T1 T2 例如 T1 在 3 分钟后触发 T2 在 5 分钟后触发 等等 F1
  • SQL Server Management Studio:图标含义

    我只是想知道这个图标在 SQL Server 2008 Management Studio 中意味着什么 在减号和带有绿色箭头的数据库图标之间 数据库引擎正在按预期工作 SQL Server 代理也正在运行 有人能帮我吗 截屏 https
  • 如何通过 javascript 将图像/ HTML 画布切成两半?

    我正在使用 html2canvas 将具有自定义功能的谷歌地图 javascript API 转换为画布 然后转换为图像 在所有浏览器上都可以正常工作 但在 IE 11 上它会生成一个图像 图像右侧有额外的空白区域 等于 浏览器窗口的宽度
  • 传递到字典中的模型项的类型为“mvc.Models.ModelA”,但该字典需要类型为“mvc.Models.ModelB”的模型项

    我在一些构建中遇到了这个恼人的错误 项目中没有错误 因为如果我再次构建 问题就会消失 仅当站点部署到 Windows 2008 Server 时才会出现该消息 我首先认为这可能是临时文件的问题 但事实并非如此 我将构建部署到不同的网络 但错
  • F# 异步中的结果与提升?

    似乎有两种方法可以返回错误async工作流程 raise and Result let willFailRaise async return raise lt new Exception oh no let willFailResult a
  • 单击后将 ActiveX 命令按钮颜色更改回之前的颜色

    我有一个包含超过 65 个 ActiveX 命令按钮的电子表格 当我左键单击一个命令按钮时 它会变成绿色并在单元格中添加一个 1 当我右键单击同一个命令按钮时 它会变成红色并在单元格中添加 1 当我单击另一个命令按钮时 我想将上一个命令按钮
  • 是否可以在 PostgreSQL 中将枚举转换为文本

    是否可以将 postgresql 模式中声明的枚举转换为文本 以便我可以对枚举列使用 like 子句 您可以将枚举投射到text轻松地并在其上使用任何文本运算符 SELECT FROM table WHERE enumfield TEXT
  • 如何将视频从 USB 网络摄像头流式传输到远程 HTML 页面

    我想创建一个程序 将视频从我的 USB 网络摄像头通过互联网传输到网页 目前 我使用一个网络服务 当触发时 会调用fswebcam捕获图像 保存到数据存储 转换为 base64 二进制并将该数据发送到 HTML 页面 在该页面中将其呈现到
  • python time.time() 和“夏令时”

    当运行python的计算机的时钟 Windows或Linux 时会发生什么 自动更改并调用time time 我读过的价值time time 当手动将时钟更改为过去的某个值时 该值会更小 time time docs https docs
  • Delphi XE2:可以在VCL应用程序中实例化FireMonkey Form吗?

    在 Delphi XE2 之前 我们只有 VCL 来创建 GUI 应用程序 德尔福 XE2 指出 注意 FireMonkey FMX 和可视化组件库 VCL 是 不兼容且不能在同一项目中使用或 应用 也就是说 一个应用程序必须是唯一的一个或