现在我想对生成和合并的文件进行概述,例如多个小对话框的 .dfm 文件。(甚至可能是 .cpp 和 .h)。但是,我也想使用 C++-Builder 的 VCL 设计器。
有没有办法合并 .dfm 文件并且仍然让 IDE 的设计器像往常一样工作?
可以(但不推荐)将设计时生成的事件处理程序实现从一个 .cpp 文件移动到另一个 .cpp 文件(但不要将它们的声明移动到 .h 文件中)。因此,可以想象拥有 1 个包含所有事件处理程序实现的 .cpp 文件,并且该应用程序可以正常工作。我在我的一个项目中做相反的事情 - 我有TForm
很多事件处理程序,所以我将它们移动到按功能分组的单独 .cpp 文件中(是的,我应该用它TFrame
来管理它,但我不能随意在这个发展阶段改变这一点)。
但是有一个副作用 - 如果您尝试在对象检查器中双击分配的事件,如果您移动它,它将无法找到处理程序的实现代码。
但是,对于 DFM,在设计时创建的每个TForm
、TFrame
和TDataModule
类都必须有自己的单独的 DFM。IDE 和 DFM 流媒体系统都期望这一点。最终可执行文件中的 DFM 资源由类名标识,当将 DFM 加载到单个根对象实例中时,DFM 流系统会从头到尾读取整个 DFM 资源。此外,DFM 数据格式不支持单个资源流中的多个 DFM。
所以不,您不能将多个 DFM 合并在一起。
还是我应该在运行时动态生成这些对话框?
是的。或者只是让对话使用单独的 DFM 资源。如果您的对话框的内容确实像您所说的那样小,那么您的可执行文件的开销应该是最小的。