读书人

关于动态生成 treeview 有关问题 (最高

发布时间: 2012-04-11 17:42:33 作者: rapoo

关于动态生成 treeview 问题 (最高分100)
我通过指定每个结点的父结点来动态生成一颗自顶向下的树,当结点的编号是从0 开始然后按添加顺序递增时,可以通过运行,可删除某一结点,使原来的递增序列出现断点,从而出现错误,老是提示 Invalid index ,希望各位高手们帮帮忙!

我的代码:
procedure TForm1.PopulateTreeView;
var
parentnode,sonnode,treenode:TTreenode;
i:Integer;
begin
tvwFolders.Items.Add(self.tvwFolders.TopItem, '人员权限总栏: ');
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add( 'Select * from T_树结点表 ');
ADOQuery1.Prepared:=True;
ADOQuery1.Open;
ADOQuery1.First;

while not ADOQuery1.Eof do //如果未到达最后一项,执行循环
begin
i := ADOQuery1.FieldByName( '父结点编号 ').AsInteger;

tvwFolders.Items[i].Selected:=True; -------> 提示这行有问题!!!

tvwFolders.Items.AddChild(tvwFolders.Selected, ADOQuery1.fieldbyname( '基本权限 ').AsString) ;

ADOQuery1.Next;
end;

end;

谢谢了! 希望得到你的可行的方法,先行谢过! 在线等.....


[解决办法]
i := ADOQuery1.FieldByName( '父结点编号 ').AsInteger;

tvwFolders.Items[i].Selected:=True; -------> 提示这行有问题!!!

你拿父节点的编号来做索引值,不对吧!
[解决办法]
最好用递归吧!

读书人网 >.NET

热点推荐