不知这个行不行,
TreeView1.Items.BeginUpdate;
TreeView1.Items.Clear;
TreeView1.Items.EndUpdate;

解决方案 »

  1.   

    你用的是Delphi5吧,Delphi4就不存在这个问题,
    我以前编的一个程序从Delphi4升级到Delphi5时就碰到了这种问题,
    原来Delphi4的程序建树很快,一眨眼就搞掂,升级到Delphi5之后就奇慢无比,
    后来只好用了Windows的API函数来建这个树,速度很快,
    但是TTreeView中的很多属性如Node,Level等都没法存取了,也只能用API来取。
      

  2.   

    解决了!
    我发现如果删除根节点,非常慢!即使用Commctrl里的Windows API的TreeView_DeleteItem之类的东西也是!但是如果删除子节点就快多了,不信的话,大家可以比较,建立10000个根节点的树,然后Clear,以及建立一个根节点和10000个子节点的树,然后Clear,两者的时间差别是几十倍甚至上百倍的!!!不知道这是为什么?我看VCL的源码,Clear调用了TreeView_DeleteAllItems,而删除子节点调用了TreeView_Collapse,可能是Windows API本身的效率问题吧。不知大家还有什么高见?
      

  3.   

    to GOHKI(豪鬼): 感谢你的提示,但是问题不在这里,我所有对TreeView的操作都套了Update的。如果有人能解决根节点的问题一样给分呀!
      

  4.   

    如果只是想清空的话,可以考虑放另外一个空的treeview控件,
    然后
     treeview1.items.assign(treeview2.items)
    你试一下效果(我没这么多数据量测试 :) )