求助 关于TreeView

求助 关于TreeView
一个TreeView样式如下
全部
|----部门1
| |--小组1
| |--小组2
|-----部门2
|--小组3
|--小组4
当点击‘小组1’时,怎么取得选中各级项目(全部\部门1\小组2 )
谢谢
[195 byte] By [oolong-oolong] at [2007-12-16]
# 1
使用TTreeNode的NodeGetNextSibling方法!!
Delphi_Li-DelphiLi at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 2
小组:Treeview1.selected;
部门1:Treeview1.selected.parent;
全部(根节点):Treeview1.Items.Item[0];
goodhazel-小猪 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 3
一个表中有
班级名称 系名
管理971 管理系
管理981 管理系
电力971 电力系
电力972 电力系
动力971 动力系
abs 动力971

现在要把他加到树型控件里
|_管理系
| |_管理971
| |_管理981
|_电力系
| |_电力971
| |_电力972
|_动力系
|_动力971
|_abs

程序如下
procedure TForm1.Button3Click(Sender: TObject);
function getnode(str: string): TTreeNode;
var
a: array of TTreeNode;
node: TTreeNode;
i, j, count: integer;
begin
i := 0;
j := 0;
if j = -60000 then
showmessage('error');
Count := TreeView1.Items.Count;
setlength(a, Count);
node := TreeView1.TopItem;
while node <> nil do
begin
a[i] := node;
node := node.getNextSibling;
i := i + 1;
end;
j := i - 1;
i := 0;
while i < Count do
begin
node := a[i].getfirstchild;
while node <> nil do
begin
j := j + 1;
a[j] := node;
node := node.getNextSibling;
end;
i := i + 1;
end;
for i := 0 to Count - 1 do
if a[i].text = str then
begin
result := a[i];
exit;
end;
result := nil;
end;

var
node: TTreeNode;
begin
if not table1.active then
Table1.Open;
table1.first;
while (not table1.eof) do
begin
node := getNode(table1.FieldByName('系名').AsString);
if node = nil then
TreeView1.Items.AddChild(nil, table1.FieldByName('系名').AsString)
else
begin
TreeView1.Items.AddChild(Node, table1.FieldByName('班级名称').AsString);
end;
if node <> nil then
Table1.Next;
end;
table1.Close;
end;
建议你建表的时候使用
parentid content childid
0 aa 1
0 bb 2
0 cc 3
1 ab 4
2 bc 5
3 cd 6
如果看懂这个表,那你大概了解这个程序了

注:此程序转自Codefund帖!作者忘记了!
# 4
同意 goodhazel(小猪)
不过好像还要加text属性,你试试看吧
小组:Treeview1.selected.text;
部门1:Treeview1.selected.parent.text;
全部(根节点):Treeview1.Items.Item[0];

9igogo-就爱狗狗 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 5
假设选中的是“全部”-“部门1”-“小组1”
Treeview1.selected.parent.text是'部门1'
Treeview1.selected.parent.parent.text是'全部'
Treeview1.selected.level是2,表明上面有两级parent

var myNode:TTreeNode;
myNode:=Treeview1.selected.getNextSibling;
myNode.text是'小组2'