回复人: yxw1314(mosquito) ( ) 信誉:100 2003-08-22 09:05:00 得分:0 var j,i,k:integer; str:string; begin str:=''; for i:=0 to treeview1.Items.Count do begin if treeview1.Items.Item[i].Text=treeview1.Selected.Text then begin k:=i; break; end; end; for i:=0 to k-1 do str:=str+ #13#10+treeview1.Items.Item[i].Text ; showmessage(str); end; 如果要同层节点,在if 条件处加上treeview1.items.item[i].parent=treeview1.selected.parent,就可以了。 你试验一下吧!
parent.getfirstchild
然后循环
getnextsibling
就得了
回复人: yxw1314(mosquito) ( ) 信誉:100 2003-08-22 09:05:00 得分:0
var
j,i,k:integer;
str:string;
begin
str:='';
for i:=0 to treeview1.Items.Count do begin
if treeview1.Items.Item[i].Text=treeview1.Selected.Text then begin
k:=i;
break;
end;
end;
for i:=0 to k-1 do
str:=str+ #13#10+treeview1.Items.Item[i].Text ;
showmessage(str);
end;
如果要同层节点,在if 条件处加上treeview1.items.item[i].parent=treeview1.selected.parent,就可以了。
你试验一下吧!
使用上面的方面,虽然能显示,但却显示了当前数据项以上的所有父节点和子节点,
我需要在同层节点下面的数据项上单击后,显示当前数据项的上面的几个父节点。
请教高手
1
2
5
6
3
当我点几5的时候,得到的是1,2,3如果是这样的话,代码如下:
var
thisnode ,tnode: TTreeNode;
str : string;
begin
str :='';
thisnode := TreeView1.Selected.Parent;
tnode := thisnode;
while thisnode <> nil do
begin
str := str+thisnode.Text;
thisnode := thisnode.getNextSibling;//向下找 end;
thisnode := tnode;
while thisnode <> nil do
begin thisnode := thisnode.getPrevSibling;//向上找
if thisnode<> nil then
str := str+thisnode.Text;
end;
showmessage(str);
end;