我正在开发一个 Delphi 框架,需要在开始时将业务对象列表加载到网格控件中。Delphi 框架没有 OnCreate 事件,那么复制它的最佳方法是什么?我应该像About建议的那样覆盖构造函数吗?我是否应该创建一个公共loadData()
程序并让父容器在准备好创建时调用它?
在用数据填充它们之前,我想确保所有子控件都已加载并准备就绪,并且我不熟悉 Delphi 组件创建层次结构。
我正在开发一个 Delphi 框架,需要在开始时将业务对象列表加载到网格控件中。Delphi 框架没有 OnCreate 事件,那么复制它的最佳方法是什么?我应该像About建议的那样覆盖构造函数吗?我是否应该创建一个公共loadData()
程序并让父容器在准备好创建时调用它?
在用数据填充它们之前,我想确保所有子控件都已加载并准备就绪,并且我不熟悉 Delphi 组件创建层次结构。
我不会将数据填充与创建联系起来。您可以合理地创建一个框架并保留它,但稍后更改它显示的内容。如果您填充,onCreate
那么您必须释放并重新创建才能获得新数据。所以有LoadData()
一个更好的方法。
根据应用程序的复杂性以及您拥有的表单和框架的数量,让您的所有框架都从一个通用的基本框架继承可能会很方便。然后,您可以在基类中引入一个虚拟LoadData
方法并在框架子类中覆盖。
或者,您也可以设计一个接口并让框架实现它。如果处理得当,您可以统一处理表格、框架甚至面板等。
很难给你一个更具体的建议,因为它取决于 gui 和应用程序的复杂性。一般来说,表单/框架中的逻辑/代码越少越好。因此,引入某种处理表单/框架的注册和显示的 FormManager 类可以帮助将这种行为隔离在一个位置。但是,如果它是一个小而简单的应用程序,您只需在表单中执行它即可。
我通常会选择两种不同的方法之一:
这样,如何获取对象的逻辑可以隐藏在其他地方。
(现在,这可能是您已经在做的事情,但是“LoadData”这个名字让我相信您的名声实际上是从某种存储库中加载数据,而不是仅仅显示其他人之前获取的数据...)