我用treeview 显示4万条数据,不能一下子全部加载,那样会非常慢,想当用户单击某个节点时,加载该节点的下级子节点。
现在的问题是当我加载完第一层节点,treeview显示时,前面默认是-号,不是+号,很容易给用户误导没有子节点,如何让它有没有节点都显示+号,当用户点击时我再判断是否展开,不知我说清楚没有,举例:root
-node1
-node2
-node3
....要实现默认显示+号,也就是所有的节点默认显示有子节点
root
+node1
+node2
+node3
...
现在的问题是当我加载完第一层节点,treeview显示时,前面默认是-号,不是+号,很容易给用户误导没有子节点,如何让它有没有节点都显示+号,当用户点击时我再判断是否展开,不知我说清楚没有,举例:root
-node1
-node2
-node3
....要实现默认显示+号,也就是所有的节点默认显示有子节点
root
+node1
+node2
+node3
...
var
vNode: TTreeNode;
begin
vNode := treeview1.Items.Add(nil, 'xxxx');
vNode.HasChildren := True;
end;
tv1.Items.BeginUpdate;
//添加树节点
tv1.Items.EndUpdate;
应该预先组织为 行首层次缩进的文本,再loadfromstream
这只是最基本的方法。更好的办法就是创建一个
TMyNode=class
Data:Tobject;
ID:Integer;
Text:Integer;
isLoad:Boolean;
end;将每个业务读取后,ID=业务对象的唯一标识,Text =要显示的内容。IsLoad=是否加载。
不管你要显示的内容是什么业务,读取后都转换成 TMyNode 。------------------------------------------------------
在更好的选择就是用:最好是使用 TVirtualStringTree 。