树状图的问题(100)

  • 主题发起人 主题发起人 lijucheng8
  • 开始时间 开始时间
L

lijucheng8

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是我用delphi 写的显示树状图的代码,只能显示一个部门,不知那里错了: qryexec(qry1,'select * from bumen order by bmm'); TreeView1.Items.Clear ; //TreeView1是中文,TreeView2是ID,隐藏的 TreeView2.Items.Clear ; inittree(qry1,TreeView1,TreeView2,0,true);procedure inittree(qry:tadoquery;treeview:ttreeview;treeview1:ttreeview;parentid:integer;isExpanded:boolean);var i:integer; MyTreeNode,MyTreeNode1: TTreeNode; tmpqry:tadoquery; abc:string;begin if parentid=0 then begin MyTreeNode:=treeview.Items.Add(nil,'所有部门'); MyTreeNode.SelectedIndex :=1; MyTreeNode1:=treeview1.Items.Add(nil,'id部门'); MyTreeNode1.SelectedIndex :=1; end; tmpqry:=tadoquery.Create(nil); tmpqry:=qry; tmpqry.Filter:='dirid='''+inttostr(parentid)+''''; tmpqry.Filtered:=true; while not tmpqry.Eof do begin MyTreeNode:=treeview.Items.AddChild(MyTreeNode,tmpqry.fieldbyname('bm').asstring); MyTreeNode1:=treeview1.Items.AddChild(MyTreeNode1,tmpqry.fieldbyname('id').asstring); MyTreeNode.SelectedIndex:=1; MyTreeNode1.SelectedIndex:=1; inittree(tmpqry,treeview,treeview1,tmpqry.fieldbyname('id').AsInteger ,true); tmpqry.Next; end;end;
 
为什么把ID 和 Name分开存在2个TreeView的节点里?TreeView的Node的属性不是可以存放Name和ID 的吗?MyTreeNode:=treeview.Items.AddChild(MyTreeNode,tmpqry.fieldbyname('bm').asstring);这句相当于:MyTreeNode:=treeview.Items.AddChild(nill,tmpqry.fieldbyname('bm').asstring);因为此时 MyTreeNode==null
 
MyTreeNode:=treeview.Items.AddChild(MyTreeNode,tmpqry.fieldbyname('bm').asstring);=====> MyTreeNode:=treeview.Items.AddChild(treeview.topitem,tmpqry.fieldbyname('bm').asstring);
 
猪,你的用意是做棵同步镜像树!treeview每个节点都有一个 .data指针,你把id压缩到data就可以了!MyTreeNode:=treeview.Items.AddChildObject(parentNode,tmpqry.fieldbyname('bm').asstring,tmpqry.fieldbyname('id').asstring);
 
树形表读入TreeView 最快最简单的方法http://blog.sina.com.cn/s/blog_426dbc190100l4vj.html
 
后退
顶部