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吗? 的相关文章

  • Delphi错误数据集未处于插入或编辑模式

    客观的 单击 TRxDBCombo 上的按钮调用搜索框 从搜索框中选择记录时 结果将设置为 TComboEditBox 的字段值 并发布在 TRxMemoryData 数据集中 错误 第二次调用此函数时出现数据集未处于插入或编辑模式 TDB
  • 如何更新Delphi对象检查器?

    继我最近发布的这个问题之后 组件编辑器可以在多个组件上执行吗 https stackoverflow com questions 14802371 can a component editor be executed on multiple
  • Delphi (Indy) TIdTCPClient 在线程中

    在互联网上 我看到通常将 TIdTCPClient 放置在自定义 TThread 后代中 为什么要这样做 有时我也在这样的线程中看到服务器 为什么 干杯 阿德里安 Indy 使用阻塞 I O 最好在线程中处理 这是 Indy 整体设计的核心
  • 如何将我的图标添加到组件选项板页面中的组件? [复制]

    这个问题在这里已经有答案了 可能的重复 Delphi非可视化组件图像 https stackoverflow com questions 3319276 delphi non visual component image 如何将我的图标添加
  • 我可以在“Delphi 2007 for Win32”中使用.NET DLL吗?

    是否可以在 Delphi 2007 for Win32 中使用 NET DLL 我尝试以与 ActiveX 组件相同的方式导入 DLL 但它似乎不起作用 组件菜单 gt 导入组件 gt 导入 NET 程序集 是否可能 如果可以 步骤是什么
  • VCL.位图到 FMX.位图

    我在网上找到了这段代码 但 FMX Bitmap 没有扫描线 是否可以以某种方式将 VCL TBitmap 复制或绘制到 FMX Bitmap IFDEF MSWINDOWS type TBitmap FMX Types TBitmap T
  • 如何在 Vista 上安装 Delphi 7

    我多次尝试在 Vista 上安装 Delphi 7 但 Vista 告诉我此应用程序 Delphi 7 存在已知问题 从而阻止了我这样做 我公司的其他几个人在 Vista 上安装 D7 时遇到了问题 由此得出的结论是 我们的 D7 应用程序
  • 如何确保 FormClose 程序运行,无论程序如何退出?

    在 Delphi 7 中 我有一个 TMainForm FormClose 过程 旨在在程序退出时写出一些状态 这在手动关闭程序时效果很好 但是 我发现如果程序被 Windows 强制 退出 例如在 Windows 更新后需要重新启动 则不
  • delphi 变量值在循环中的线程中发生变化

    我的代码正在运行一个 for 循环来处理一些数据 如下所示 procedure printValue Value Integer begin TThread Synchronize TThread Current procedure beg
  • 开源 Delphi 包可使用哪些项目选项?

    我写了一些 Delphi 代码 想在 GitHub 上分享 所有代码都根据需要包含在运行时和设计时包中 每个项目有许多项目选项需要设置 输出目录 搜索路径 编译选项等 我设法找到了一些适合我的情况的默认选项 但阅读此处的其他问答很明显有多个
  • 如何根据输入的内容过滤组合框的内容?

    我们有一个包含 100 多个项目的组合框 当我们在组合框中输入字符时 我们想要过滤掉项目 例如 如果我们输入 ac 并单击下拉选项 那么我们希望它仅显示以 ac 开头的项目 我怎样才能做到这一点 也许您会更喜欢使用操作系统内置的自动完成功能
  • 如何遍历任意给定集合中的枚举?

    我有很多枚举类型 它们与相应的集合相结合 例如 type TMyEnum meOne meTwo meThree TMyEnums set of TMyEnum 我正在尝试提出一组可以运行的函数any枚举集 而不是为每个枚举编写单独的函数
  • 如何在Delphi中下载一个非常简单的HTTPS页面?

    我尝试了在这里看到的代码 但它不适用于 HTTPS 我需要将此页面作为字符串下载 并在其上添加一些换行符 以便将信息按顺序放入 TMemo 中 怎么做 我尝试使用 Indy 但由于 SSL 问题而失败 我尝试了此页面的解决方案 如何将网页下
  • 处理 TShellListView 后代中的文件放置

    我正在尝试创建 TShellListView 的后代 它接受从 Windows 资源管理器中删除的文件 我想在组件定义中处理拖 放操作 而不必在任何使用该组件的应用程序中实现它 我找到了接受从 Windows 资源管理器中拖放的文件的示例
  • 不断断点?如何去除它们?

    我下载了一个用Delphi 2009制作的项目 这也是我使用的 但是有一个断点我无法删除 如果我尝试删除它 它会在程序执行后再次执行 我在其他调试器中遇到了这样的事情 称为硬件断点 但这并不重要 如何删除断点 EDIT Article ht
  • Word 2010 自动化:“转到书签”

    我有一个用 Delphi 7 编写的程序 它打开一个基于模板的新 Word 文档 文档打开后 系统会自动跳转到书签 在模板中预定义 并在其中添加一些文本 以下代码在 Word 2003 中工作正常 但会导致invalid variant o
  • 为什么未初始化的指针会导致内存访问冲突接近 0?

    据说often 但并非总是如此 当你在接近于零的内存位置 比如 89 美元 获得 AV 时 你就有了一个未初始化的指针 但我也在 Delphi 书籍中看到了这一点 嗯 或者它们都是由同一作者写的 Update 引自 Bob Swart 等人
  • 将数据从一个数据集结构移动到另一个数据集结构的更快方法(在 TDatasetProvider 中)

    我有一个自定义的 TDatasetProvider 它允许为其提供的任何数据创建新字段 因此 假设您在原始数据集上获得了以下字段 客户ID Name Age 您需要使用显示位图在 DBGrid 上选择它 好吧 你可以 因为我的 DSP 可以
  • 如何更改 TPageControl 上标签的方向?

    我是 Delphi 的新手 再次强调 我在 1994 年就使用过 Delphi 我现在有 Delphi 2009 Pro 来自Java 我发现对象继承非常晦涩 我的用户想要选项卡位于左侧的选项卡式页面 但是 TPageControl 不允许
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移

随机推荐

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

    我有以下情况 我想相互排除对对象的访问 到目前为止我通常会使用锁对象 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 是 不兼容且不能在同一项目中使用或 应用 也就是说 一个应用程序必须是唯一的一个或