在TreeView中怎样得到当前层的结点?

技术的天空 2003-07-16 10:16:03
我要在每一层(level)的结点中插入一些新结点,怎样才能遍历这一层的结点呢?
谢谢!!!
...全文
38 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
elilor 2003-07-16
  • 打赏
  • 举报
回复
if CurrentNode.Parent=nil then tempNode=TreeView1.Items[0] else
tempNode:=CurrentNode.Parent.GetFirstChild;
repeat
do something here;
tempNode:=tempNode.GetNextSlibling
until tempNode=nil;
lucybear 2003-07-16
  • 打赏
  • 举报
回复
用 TreeNode 的 GetNext 和 GetNextSibling 方法。
GetNext:取得下一个节点(包括同层和孩子节点);
GetNextSibling:取得同层的下一个节点(同父节点);

var
i:integer;
tempNode,levelNode:TTreeNode;
begin
tempNode:= treeView1.items[0];
while tempNode<>nil do
begin
if tempNode.Level = ? then
begin
//使用循环读取所有的 GetNextSibling
levelNode:= tempNode.GetNextSibling;
......
end else
begin
tempNode:= tempNode.GetNext;
end;
end;
end;
artwind 2003-07-16
  • 打赏
  • 举报
回复
你倒着循环,不会有问题的(我已经试过),因为创建的节点的序号要大于当前节点
技术的天空 2003-07-16
  • 打赏
  • 举报
回复
to: artwind(菲菲)

这种方法我有想过,但是我的items的个数在这个循环里还会不断的创建,如果创建得多了,那么就会有部会‘当前层’的结点遍历不到。
artwind 2003-07-16
  • 打赏
  • 举报
回复
var
i:integer;
begin
for i:=treeview1.Items.Count-1 downto 0 do begin
if treeview1.Items[i].Level=? then ...
end;
end;
如果要插入节点的话,得倒着来
artwind 2003-07-16
  • 打赏
  • 举报
回复
var
i:integer;
begin
for i:=0 to treeview1.Items.Count-1 do begin
if treeview1.Items[i].Level=? then ...
end;
end;
上海老李 2003-07-16
  • 打赏
  • 举报
回复
items[i].selected

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧