Delphi 框架的模型 OnCreate 事件

Posted

技术标签:

【中文标题】Delphi 框架的模型 OnCreate 事件【英文标题】:Model OnCreate Event for Delphi Frame 【发布时间】:2011-03-30 10:44:45 【问题描述】:

我正在开发一个 Delphi 框架,需要在开始时将业务对象列表加载到网格控件中。 Delphi 框架没有 OnCreate 事件,那么复制它的最佳方法是什么?我应该像About 建议的那样覆盖构造函数吗?我应该只公开一个loadData() 过程并让父容器在准备好创建时调用它吗?

我想确保所有子控件都已加载并准备就绪,然后再用数据填充它们,而且我不熟悉 Delphi 组件创建层次结构。

【问题讨论】:

是的,重写继承的构造函数就可以了 【参考方案1】:

我不会将数据填充与创建联系起来。您可以合理地创建一个框架并保留它,但稍后更改它显示的内容。如果您填充onCreate,那么您必须释放并重新创建才能获得新数据。所以拥有LoadData() 是更好的方法。

根据应用程序的复杂性以及您拥有的表单和框架的数量,让您的所有框架都继承自一个通用的基本框架可能会很方便。然后,您可以在基类中引入一个虚拟的 LoadData 方法并在框架子类中覆盖。

或者,您也可以设计一个界面并让框架实现它。如果处理得当,您可以统一处理表单、框架甚至面板等。

很难为您提供更具体的建议,因为这取决于 gui 和应用程序的复杂性。一般来说,表单/框架中的逻辑/代码越少越好。因此,引入某种处理表单/框架的注册和显示的 FormManager 类可以帮助将这种行为隔离在一个位置。但是,如果它是一个小而简单的应用程序,您可以在表单中完成它。

【讨论】:

【参考方案2】:

我通常会选择两种不同的方法之一:

    一个被覆盖的构造函数采用某种对象,该对象要么包含所有项,要么知道如何获取它们(例如枚举器) 具有相同类型对象的设置器的属性

这样,如何获取对象的逻辑可以隐藏在其他地方。

(现在,这可能是您已经在做的事情,但是“LoadData”这个名字让我相信您的名声实际上是从某种存储库中加载数据,而不是仅仅显示其他人的数据以前提取过...)

【讨论】:

以上是关于Delphi 框架的模型 OnCreate 事件的主要内容,如果未能解决你的问题,请参考以下文章

Delphi 常用属性说明(超长)

delphi - 使用新事件创建自定义框架

delphi拦截错误提示

Delphi 7 - 为表单中的嵌入式框架处理 MouseWheel 事件?

Linux高性能服务器程序框架

Linux高性能服务器程序框架