Ala*_*ark 3 delphi treeview vcl virtualtreeview
我们有一个TTreeView有很多节点 - 通常有20,000个节点甚至更多.这TTreeView用于停靠接口(DevExpress Docking Library).当应用程序中的任何表单停靠或取消停靠时,可停靠表单的句柄将被更改.这在转弯结果DestroyWnd和CreateWnd过程的所有窗体和控件被调用.
在a的情况下TTreeView,DestroyWnd将节点保存到流并CreateWnd重新加载它们.在我们的具有非常大的树视图的应用程序中,这导致节点在流出和返回时的长延迟.
我的问题:如何防止这种延迟?我听说很多人都高度评价Virtual TreeView,我认为它不是后代TTreeView,它是否避免了这个问题?我们尝试过Developer Express TcxTreeView,但它来自TTreeview,所以它遇到了同样的问题.
Rem*_*eau 12
20,000个节点太多而无法放入标准TTreeView.使用TVirtualTreeView肯定是显示大量节点的方法.主要优点是您的节点数据不存储在TreeView本身中.它仅用于显示和用户交互.您将数据存储在内存中的其他位置,以便它不受窗口重新创建的影响,然后TVirtualTreeView在任何给定时间只询问您需要的数据.重塑TVirtualTreeView窗口仅仅是一个与当前数据重新绘制的窗口显示的问题.
与标准不同,标准TTreeView将数据存储在TreeView本身中.这就是为什么TTreeView.DestroyWnd(),并TTreeView.CreateWnd()要保存和每次重新创建的窗口时间恢复所有的节点数据的副本.节点越多,管理该数据的开销就越大.
| 归档时间: | 
 | 
| 查看次数: | 514 次 | 
| 最近记录: |