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