如何用treeview显示出层次结构,数据在数据库中
表:部门结构
部门ID 部门名 上级部门
1 A
2 B A
3 C A
4 D B
5 E B
......A为顶层部门,B和C是A的下属部门,D和E是B的下属部门......
将这个关系用treeview表示,要怎么写?
表:部门结构
部门ID 部门名 上级部门
1 A
2 B A
3 C A
4 D B
5 E B
......A为顶层部门,B和C是A的下属部门,D和E是B的下属部门......
将这个关系用treeview表示,要怎么写?
2)遍历“上级部门”是该部门的记录,建立Node的子节点
我刚接触delphi不久,对许多控件不是很熟悉
var
Node1:TTreeNode;
s:PString;
begin
Node1:=TreeView.Items.AddChild(Node,ADOQ.FieldByName('flmc').Text);
New(s);
s^:=ADOQ.FieldByName('id').Text;
Node1.Data:=s;
Result:=Node1;
end;Function TFrm_qcsp.SearchNode(TreeView:TTreeView;Txts:String):TTreeNode;
var
i:integer;
s:PString;
begin
Result:=nil;
For i:=0 To TreeView.Items.Count-1 Do
begin
s:=TreeView.Items[i].Data;
If s^=Txts Then
begin
Result:=TreeView.Items[i];
Exit;
end;
end;
end;
procedure TFrm_qcsp.formshow(Sender: TObject);
var
i,Rec_Num:integer;
Node1,Node2:TTreeNode;
var s_sql1,s_sql2:string;
begin
TreeView1.Items.Clear;
TreeView1.Items.BeginUpdate;
Node1:=TreeView1.Items.GetFirstNode;
with adoquery4 do
begin
close;
sql.Clear;
sql.Add('select * from tba_flbm order by id');
open;
end;
If ADOquery4.RecordCount>0 Then
Begin
Rec_Num:= ADOQuery4.RecordCount;
For i:=0 To Rec_Num-1 Do
begin
If ADOQuery4.FieldByName('parent').Text='0' Then
Node2:=AddNode(TreeView1,Node1,ADOQuery4)
Else
begin
Node2:=SearchNode(TreeView1,ADOQuery4.FieldByName('parent').Text);
If Node2<>nil Then
AddNode(TreeView1,Node2,ADOQuery4);
end;
ADOQuery4.Next;
end;
End;
TreeView1.Items.EndUpdate;
If ADOquery4.RecordCount>0 Then
self.TreeView1.Items[0].Expanded:=true;
---------