1

Windows 平台上的 Delphi RAD Studio 2010:

请原谅我的无知,如果我在吠叫错误的树,请随时告诉我。

我只需要知道我的想法在原则上是否可行?

我想在我的项目中创建框架“A”。帧“A”在初始化时填充 VirtualTree。我也有许多表格可以使用框架'A'。

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

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

我希望我说得通。对于以前可能尝试过类似事情的人,我们将不胜感激......

科恩拉德

4

1 回答 1

0

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

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

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

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

于 2013-04-16T16:02:04.533 回答