treeview显示大量数据问题
时间:2011-09-14
来源:互联网
现在的问题是当我加载完第一层节点,treeview显示时,前面默认是-号,不是+号,很容易给用户误导没有子节点,如何让它有没有节点都显示+号,当用户点击时我再判断是否展开,不知我说清楚没有,举例:
root
-node1
-node2
-node3
....
要实现默认显示+号,也就是所有的节点默认显示有子节点
root
+node1
+node2
+node3
...
作者: richardi 发布时间: 2011-09-14
作者: babydog01 发布时间: 2011-09-14
作者: bdmh 发布时间: 2011-09-14
procedure TForm1.SpeedButton1Click(Sender: TObject); var vNode: TTreeNode; begin vNode := treeview1.Items.Add(nil, 'xxxx'); vNode.HasChildren := True; end;
作者: SmallHand 发布时间: 2011-09-14
作者: jet_piolet 发布时间: 2011-09-15
作者: yangjing41 发布时间: 2011-09-15
Delphi(Pascal) code
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
vNode: TTreeNode;
begin
vNode := treeview1.Items.Add(nil, 'xxxx');
vNode.HasChildren := True;
end;
此方法是可以实现,但它的缺点是如果没有子节点,那个+号是点不开的,需要另加代码处理
作者: zhnglicho 发布时间: 2011-09-15
tv1.Items.BeginUpdate;
//添加树节点
tv1.Items.EndUpdate;
作者: youthon 发布时间: 2011-09-15
应该是读取数据库的速度慢吧
作者: youthon 发布时间: 2011-09-15
应该预先组织为 行首层次缩进的文本,再loadfromstream
作者: sz_haitao 发布时间: 2011-09-15
在加载节点时,给Node.Data赋值,并且从数据库中读取A节点的子节点时要将所有子节点的子节点的个数也获取。
如果子节点的个数大于0,则在子节点下加一个节点,但将Node.Data设置为空.
在展开节点时,检查第一个子节点的Node.data 确定是否已经加载。
-----------------------------
这只是最基本的方法。更好的办法就是创建一个
TMyNode=class
Data:Tobject;
ID:Integer;
Text:Integer;
isLoad:Boolean;
end;
将每个业务读取后,ID=业务对象的唯一标识,Text =要显示的内容。IsLoad=是否加载。
不管你要显示的内容是什么业务,读取后都转换成 TMyNode 。
------------------------------------------------------
在更好的选择就是用:最好是使用 TVirtualStringTree 。
作者: ZyxIp 发布时间: 2011-09-15
要想快的话,至少要预加载下一层节点吧
作者: youthon 发布时间: 2011-09-15
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28