在Delphi表单中,我想将一个可视组件替换为另一个。示例:我想用第三方软件包中的ElPanel替换Panel组件。

我希望第一个组件的所有相同属性和事件都转移到新组件,并且属于第一个组件的所有组件(例如工具栏,备忘录,状态栏等)最终放在新组件正好在第一个组件上。

除了将新组件添加到表单并精心地将每个属性,事件和组件逐个转移到它之外,是否有最佳/最简单的方法来执行此操作?

有帮助吗?

解决方案

我这样做:

  1. 右键单击表单并选择(以文本形式查看)。
  2. 按Ctrl + F搜索组件类名称,如TPanel,并将其替换为TElPanel
  3. 切换回表格(以表格形式查看)
  4. 在界面部分用TPlPanel替换TPanel。
  5. 如果你有很多使用GExperts的组件将是更可行的解决方案。

其他提示

您可以使用 GExperts ,也可以手动完成。

要手动完成,请在记事本中打开.dfm并替换所有类名。 (例如,将TPanel替换为TElPanel)。当您完成所有更改后,使用记事本打开.pas文件,并执行相同的操作。

确保在使用条款中添加所需的单位。

然后在IDE中打开表单并清除任何不匹配的事件或未知的属性问题。

如果我记得优秀的免费GExperts插件可以做到这一点。右键单击表单,然后选择“替换组件”。 http://www.gexperts.org

恕我直言,替换组件GExpert的一大缺点是它改变了源代码中组件的顺序。这不是很VCS友好。 : - )

如果容器内部有其他组件,那么使用GExperts替换它将导致一些丑陋的异常,并可能在IDE中出现意外行为。
因此,最佳解决方案是在您想要的位置(IDE内部或外部)编辑.dfm文件,并手动替换要更改的组件类型。也许它会导致一些例外,但IDE会管理它们。
如果您在IDE中执行此操作,在切换到设计视图后如果您立即保存.dfm,IDE将要求您更改与您触摸的组件相关的变量类型,从而使您能够执行此操作。

  

要在文本和二进制dfm格式之间进行转换,请使用Delphi bin \目录中的convert.exe工具。 – Tim Knipe(10月28日4:15)

您还可以使用表单设计器的上下文菜单 - 至少使用BDS 2006.这是最后一个菜单项(德语IDE中的“Text-DFM”)。

在我的项目中,我不得不将一些组件从一组组件转换为另一组组件。 我已经创建了小的perl脚本来转换组件及其属性并执行所有必要的映射。 该脚本是快速和肮脏的解决方案,但它是高度可配置的。它扫描项目目录中的所有dfm和pas文件,并根据您应在ObjectBeginFound,PropertyFound,ObjectEndFound过程/事件中提供的规则转换dfm组件定义。

DFM文件应该处于文本模式。测试Delphi 5文件。我不知道它是否与新版本兼容。如果您发现,请发送帖子。

USAGE: perl.exe cxdfm.pl> LOGFILE.TXT

下载链接 http://dl.dropbox.com/u/15887789/cxdfm.pl

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top