gpt4 book ai didi

Delphi,框架与表单。多文档界面怎么样?

转载 作者:行者123 更新时间:2023-12-03 14:49:54 25 4
gpt4 key购买 nike

昨天我开始讨论“MDI 与选项卡式界面”。我问过是否应该继续开发基于 MDI 的应用程序,或者是否应该将子表单嵌入到选项卡中。有人指出我应该使用 TFrames...我的问题是:为什么?

在 TFrame 上嵌入表单时使用 TFrame 有何优点?目前我还不知道,切换只需要我重写部分代码...

(无论如何,我不会在设计时使用嵌入!)

提前致谢

最佳答案

回答评论以提供使用框架的原因:

我认为框架是 GUI 的构建 block ,在设计时将现有组件组合到更高级的组件。在 Delphi 5 之前,人们会使用带有子控件的 TCustomPanel 后代,并将其注册为新组件,准备将其拖放到表单上。框架可以以更少的麻烦实现同样的事情。

它们让您能够专注于开发您所需要的功能,仅此而已。如果做得好,您可以将它们嵌入到选项卡控制表、模态或非模态对话框、MDI 子框架和标准框架中。您甚至可以将其中的几个添加到一个表单中 - 这对于嵌入式表单来说可能不会这样做。要点是,为了获得最大的可重用性,分层方法通常是必要的,而框架可以帮助实现这一点。

框架适合随时随地嵌入。表单必须调整为不显示标题栏和边框,通常会覆盖 CreateParams() 并相应地调整窗口样式。检查器中还有更多表单属性,这些属性对于嵌入表单来说没有意义。恕我直言,应该使用最基本、最通用的实体就足够了。表单不仅仅是一个用于嵌入的控件容器。

OTOH,我不知道嵌入框架有什么嵌入表单没有的缺点。

编辑:

有一条关于诸如 OnCreateOnShow 之类的框架没有的事件的评论。实际上,我认为框架的另一个优点是,因为事件处理程序没有参数,所以很多东西必然会在表单中进行硬编码。

考虑每用户设置的情况:在OnCreate中没有太多可用信息,因此最终总是使用常量或 INI 文件部分的表单名称,这使得它非常很难甚至不可能重用该表单或创建它的多个实例。另一方面,对于框架,方法 LoadSettings 是执行此操作的明显方法,并且它可以携带必要的参数。这样,控制权就会返回到它所属的位置,即嵌入框架/表单的容器。只有可以从外部调整行为,才可能实现可重用性。

对于非组件且需要生命周期管理的包含对象,例如 AfterConstructionBeforeDestruction

关于Delphi,框架与表单。多文档界面怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1464778/

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