gpt4 book ai didi

c++ - 一个 dfm 中的多个对话框

转载 作者:行者123 更新时间:2023-11-30 03:52:20 29 4
gpt4 key购买 nike

我正在开发一个包含许多小型自定义对话框的应用程序。

这些对话框例如提供选择、显示图表或提供额外的界面。大多数情况下,它们只需要很少的标记代码并且只有很少的子元素。

目前我正在使用 embarcadero'c XE2 RAD Studio 的 C++ Builder,它与 VCL 一起工作并为每个表单生成一个 .dfm 文件、一个 .h 文件和一个 .cpp 文件。现在我想概述生成和合并的文件,例如多个小对话框的 .dfm 文件。 (甚至可能还有 .cpp 和 .h)。但是,我也想使用 C++-Builder 的 VCL 设计器。

有没有办法在合并 .dfm 文件的同时让 IDE 的设计器照常工作?

或者我应该在运行时动态生成这些对话框吗?

最佳答案

Now I would like to keep an overview over the files produced and merge e.g. the .dfm files of multiple small dialogs. (maybe even the .cpp and .h, too). However, I also want to use C++-Builder's VCL designer.

Is there a way to merge .dfm files and still have the IDE's designer working as usual?

可以(但不推荐)将设计时生成的事件处理程序实现从一个 .cpp 文件移动到另一个 .cpp 文件(但不要移动它们在 .h 文件中的声明)。因此,可以想象拥有 1 个包含所有事件处理程序实现的 .cpp 文件,应用程序将正常运行。我在我的一个项目中做了相反的事情——我有一个 TForm 上面有很多事件处理程序,所以我将它们移动到按功能分组的单独的 .cpp 文件中(是​​的,我应该使用 TFrame 来管理它,但在这个开发阶段我无权更改它。

但是有一个副作用 - 如果您尝试在对象检查器中双击分配的事件,如果您移动它,它将无法找到处理程序的实现代码。

但是,对于 DFM,在设计时创建的每个 TFormTFrameTDataModule必须 有自己独立的 DFM。 IDE 和 DFM 流系统都希望如此。最终可执行文件中的 DFM 资源由类名标识,当将 DFM 加载到单个根对象实例中时,DFM 流系统从头到尾读取整个 DFM 资源。此外,DFM数据格式不支持单个资源流中的多个DFM。

所以不可以,您不能将多个 DFM 合并在一起。

Or should I just dynamically generate those dialogs during runtime?

是的。或者只是让对话框使用单独的 DFM 资源。如果您的对话框确实像您所说的那样在内容上很小,那么您的可执行文件的开销应该是最小的。

关于c++ - 一个 dfm 中的多个对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30742734/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com