创建一个全局框架?

时间:2013-04-16 15:12:12

标签: delphi delphi-2010

Windows平台上的Delphi RAD Studio 2010:

请原谅我的无知,并随时告诉我,如果我正在咆哮错误的树。

我只需要知道我的想法原则上是否有效?

我想在我的项目中创建Frame'A'。无论何时初始化,框架'A'都会填充VirtualTree。我也有很多形式可以使用Frame'A'。

我希望能够在项目加载时创建Frame'A'并在内存中初始化它。 然后当调用任何使用Frame'A'的表单时,我希望能够通过指针(或其他一些方法?)将Frame'A'传递给该表单并“替换”现有的Frame形式与框架'A'完全一致。 (不担心安置等)。

我的理由是Frame'A'在初始化时总会做同样的事情。由于这个初始化可能需要很长时间,比如'x',因此使用此框架的每个表单都需要花费'x'倍的时间才能加载。 如果框架是预先填充的,那么这将节省大量时间,特别是如果框架init创建了一个大小相当的VirtualTree。

我希望我有意义。对于可能在此之前尝试过类似内容的人,我们会感激任何意见......

Coenraad

1 个答案:

答案 0 :(得分:0)

我有类似的东西,但使用普通的TTreeView而不是虚拟树。如果您的问题是加载数据而不是树本身的时间,那么只需获取该数据的副本。在我的例子中,我在CachedData类中加载了一个树视图,它完成了我的所有初始化。然后,当创建一个新表单时,我只需像这样分配.Items(TTreeNodes):

CurrentTree.Items.Assign(CachedData.TreeView.Items);

使用虚拟树时,您的数据和树节点之间存在明显差异,因此有许多不同的方式来共享基础数据。根据您的数据格式,您可以直接使用它或复制它以传递到新表单。

通常,您描述的方法类型是可行且有用的。如果您描述了初始化代码正在执行的操作以及要加载的数据结构类型(数据集,字符串列表,数组,自定义对象等),您可能会得到更具体的答案。