我的Treeview格式是这样的
+aa
-aa1
-aa2
+bb
-bb1
-bb2
+cc
-cc1
-cc2
我自己写了一个可以得到数值的
i:=0;
while Treeview1.Items.Count>0 do
Try
if Treeview1.Items[i].Level=0 then //这里是判断他是不是父节点
memo1.Lines.Add(Treeview1.Items[i].Text);
i:=i+1;
except
break; //如果有异常就自动退出
end;
但是这样写的话的是非常麻烦,我想问的是能不能直接用他自带的参数来获取
Treeview1.items.count 像这样取得他所有的行
而Treeview1.selected.Count 这是判断当选中后的在父节点后的每一个子节点数
那么也应该有直接取得TReeview1中的最顶的父节点数呀......
+aa
-aa1
-aa2
+bb
-bb1
-bb2
+cc
-cc1
-cc2
我自己写了一个可以得到数值的
i:=0;
while Treeview1.Items.Count>0 do
Try
if Treeview1.Items[i].Level=0 then //这里是判断他是不是父节点
memo1.Lines.Add(Treeview1.Items[i].Text);
i:=i+1;
except
break; //如果有异常就自动退出
end;
但是这样写的话的是非常麻烦,我想问的是能不能直接用他自带的参数来获取
Treeview1.items.count 像这样取得他所有的行
而Treeview1.selected.Count 这是判断当选中后的在父节点后的每一个子节点数
那么也应该有直接取得TReeview1中的最顶的父节点数呀......
Node: TTreeNode;
begin
Node := TreeView1.Items.GetFirstNode;
while Node <> Nil do
begin
//在这里数或处理
Node := Node.getNextSibling;
end;
end;
Node: TTreeNode;
i: Integer;
begin
Node := TreeView1.Items.GetFirstNode;//获得根节点
while Node <> Nil do
begin
//在这里数或处理
inc( i );
Node := Node.getNextSibling;//获得同级下一结点
end;
end;已经是最简单的了
如此庞大的工程,不够技术呀.想写一个过程让他每一次循环的时候都调用当前所选中的父节点
Treeview.items[1].text
这时就选中了第一个父节点
Treeview.items[2].text
这时就选中了第二个父节点procedure TForm1.Button8Click(Sender: TObject); //这里是整条直接取父项的原码
var
f:Ttreenode;
i:integer;
begin
memo1.Clear;
i:=0;
f:=treeview1.Items[0];
while f<>nil do
begin
memo1.Lines.Add(f.Text);
f:=f.getNextSibling;
i:=i+1;
end;
memo1.Lines.Add('一共有'+inttostr(i)+'个父节点')
end;
但是我想问的是如何在将他写成一个函数然后放进循环里面每循环一次然后将他的值取一条相应的父项值出来呢?请给一些现实的代码。
Treeview1.Items[i].Parent //取父节点
var
i: integer;
begin
for i:=0 to treeview1.Items.count-1 do
begin
if treeview1.Items[i].Level=0 then
begin
//取得根节点的name
end;
end;已经很简单的了。