不知这个行不行,
TreeView1.Items.BeginUpdate;
TreeView1.Items.Clear;
TreeView1.Items.EndUpdate;
TreeView1.Items.BeginUpdate;
TreeView1.Items.Clear;
TreeView1.Items.EndUpdate;
解决方案 »
- 请问大家,delphi有没有单独的dbradiobutton?
- 有4个checkbox,要求根据它们的选中状态来执行不同的数据库字段操作
- 我想做一个小的应用程序:打开某固定的excel表格,然后向某固定的sheet里边 的 最后一行添加数据
- 关于配置信息保存的问题,有没有更好的办法?
- 如何打印固定格式的报表
- 怎样把字符串“hh:nn:ss”转化成“hh-nn-ss”
- 如何把应用程序作为一项服务在系统中启动?
- 假设在多层系统中用到了一个SQL数据库‘info.sql',那么在服务器端和客户端各应该怎么分发?又怎么使客户端和服务端的数据库联系起来?(
- 关于Inno Setup
- 菜鸟提问:如何把.ocx文件添加到ActiveX面板上?对不起,只有10分了。
- 关于Delphi开发OCX的问题(保证立马给分)
- sqlserver怎么实现这样纪录集提取?
我以前编的一个程序从Delphi4升级到Delphi5时就碰到了这种问题,
原来Delphi4的程序建树很快,一眨眼就搞掂,升级到Delphi5之后就奇慢无比,
后来只好用了Windows的API函数来建这个树,速度很快,
但是TTreeView中的很多属性如Node,Level等都没法存取了,也只能用API来取。
我发现如果删除根节点,非常慢!即使用Commctrl里的Windows API的TreeView_DeleteItem之类的东西也是!但是如果删除子节点就快多了,不信的话,大家可以比较,建立10000个根节点的树,然后Clear,以及建立一个根节点和10000个子节点的树,然后Clear,两者的时间差别是几十倍甚至上百倍的!!!不知道这是为什么?我看VCL的源码,Clear调用了TreeView_DeleteAllItems,而删除子节点调用了TreeView_Collapse,可能是Windows API本身的效率问题吧。不知大家还有什么高见?
然后
treeview1.items.assign(treeview2.items)
你试一下效果(我没这么多数据量测试 :) )