procedure TForm1.Button1Click(Sender: TObject); var Tn:TTreeNode; begin Tn := TreeView1.Items.AddChild(nil,'1'); TreeView1.Items.AddChild(Tn,'11'); TreeView1.Items.AddChild(Tn,'12'); Tn := TreeView1.Items.AddChild(nil,'2'); TreeView1.Items.AddChild(Tn,'21'); TreeView1.Items.AddChild(Tn,'22'); end;
var a:ttreenode; begin a:=form1.TreeView1.Items.Add(nil,'adsf'); form1.TreeView1.Items.AddChild(a,'ad'); end; 用到这两个方法,然后从数据表中读出所有的根(1,2),然后添加一个根的名字,再添加这个根下的所有的项目就可以了,如此循环,
ADOQueryMaster: SQL.Text := 'Select Destinct SubString(id, 1, 1) as ID, fields From TableName';打开之后,ADOQueryDetail: SQL.Text := Format('Select Destinct SubString(id, 2, 1) as ID, fields From TableName where SubString(id, 2, 1) = %d', [ADOQueryMaster.FieldValues['ID']])这样,可以用一个循环把数据都读出来, var Node: TTreeNode;ADOQueryMaster.First; while not ADOQueryMaster.Eof do begin Node := TreeView.Items.Add(nil, ADOQueryMaster.FieldValues['fields']); ADOQueryDetail.SQL.Text := Format('Select Destinct SubString(id, 2, 1) as ID, fields From TableName where SubString(id, 1, 1) = %d', [ADOQueryMaster.FieldValues['ID']]); ADOQueryDetail.Open; while not ADOQueryDetail.Eof do begin TreeView.Items.AddChild(Node, ADOQueryDetail.FieldValues['fields']); ADOQueryDetail.Next; end; ADOQueryMaster.Next; end;
treeview1.Items.AddChild()
var
Tn:TTreeNode;
begin
Tn := TreeView1.Items.AddChild(nil,'1');
TreeView1.Items.AddChild(Tn,'11');
TreeView1.Items.AddChild(Tn,'12');
Tn := TreeView1.Items.AddChild(nil,'2');
TreeView1.Items.AddChild(Tn,'21');
TreeView1.Items.AddChild(Tn,'22');
end;
a:ttreenode;
begin
a:=form1.TreeView1.Items.Add(nil,'adsf');
form1.TreeView1.Items.AddChild(a,'ad');
end;
用到这两个方法,然后从数据表中读出所有的根(1,2),然后添加一个根的名字,再添加这个根下的所有的项目就可以了,如此循环,
1 aaa
11 bbb
12 ccc
2 ddd
21 eee
22 fff
数据表就是这个格式的
self.treeview1.loadfromfile('yourfilename');
0 000
1 aaa
11 bbb
12 ccc
2 ddd
21 eee
22 fff
是这样吗?
1
11
12
2
21
22id parentid
0
1
11 1
12 1
2
21 2
22 2
id fields
0 000
1 aaa
11 bbb
12 ccc
2 ddd
21 eee
22 fff读入treeview效果
0
-1
-11
-12
-2
-21
-22
SQL.Text := 'Select Destinct SubString(id, 1, 1) as ID, fields From TableName';打开之后,ADOQueryDetail:
SQL.Text := Format('Select Destinct SubString(id, 2, 1) as ID, fields From TableName where SubString(id, 2, 1) = %d', [ADOQueryMaster.FieldValues['ID']])这样,可以用一个循环把数据都读出来,
var Node: TTreeNode;ADOQueryMaster.First;
while not ADOQueryMaster.Eof do
begin
Node := TreeView.Items.Add(nil, ADOQueryMaster.FieldValues['fields']);
ADOQueryDetail.SQL.Text := Format('Select Destinct SubString(id, 2, 1) as ID, fields From TableName where SubString(id, 1, 1) = %d', [ADOQueryMaster.FieldValues['ID']]);
ADOQueryDetail.Open;
while not ADOQueryDetail.Eof do
begin
TreeView.Items.AddChild(Node, ADOQueryDetail.FieldValues['fields']);
ADOQueryDetail.Next;
end;
ADOQueryMaster.Next;
end;