在 Delphi 表单中,我想将一个可视组件替换为另一个。示例:我想用来自 3rd 方包的 ElPanel 替换 Panel 组件。
我希望将第一个组件的所有相同属性和事件转移到新组件,并将属于第一个组件的所有组件(例如工具栏、备忘录、状态栏等)最终放置在新组件上正是他们在第一个上的位置。
除了将新组件添加到表单并精心地将每个属性、事件和组件一个接一个地传递给它之外,是否有最好/最简单的方法来做到这一点?
在 Delphi 表单中,我想将一个可视组件替换为另一个。示例:我想用来自 3rd 方包的 ElPanel 替换 Panel 组件。
我希望将第一个组件的所有相同属性和事件转移到新组件,并将属于第一个组件的所有组件(例如工具栏、备忘录、状态栏等)最终放置在新组件上正是他们在第一个上的位置。
除了将新组件添加到表单并精心地将每个属性、事件和组件一个接一个地传递给它之外,是否有最好/最简单的方法来做到这一点?
我这样做如下:
如果您有许多组件使用 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 文件上测试。我不知道它是否会与新版本兼容。发现后请发帖。
用法:perl.exe cxdfm.pl > logfile.txt