请帮忙看看,实现是实现了,但效率好像不是很高,请帮忙修改一下,让它效率提高。感谢了!数据库结构: ID号(id) 父ID(FID) 结点文字(name)
0 -1 全部文档
1 0 文档1
2 0 文档2
3 2 文档2-1111
4 2 文档2-2222
5 1 文档1-1111
6 5 文档1-1111-1111
7 1 文档1-2222
8 6 1231231231
9 8 546564
10 3 yyyyyyy
11 7 pppppppp
代码:
implementation{$R *.dfm}procedure addnod(fnod:ttreenode;data:tdataset);
var
i:integer;
tmpnod:ttreenode;
wz:integer;//记录位置
begin
data.First;
for i:=1 to data.RecordCount do
begin
if(data.FieldByName('fid').AsInteger=fnod.StateIndex) then
begin
tmpnod:=form1.TreeView1.Items.AddChild(fnod,trim(data.fieldbyname('name').asstring));
tmpnod.StateIndex:=data.fieldbyname('id').AsInteger;//把当前的ID号保存下来。
wz:=data.RecNo; //保存当前记录位置
addnod(tmpnod,data);
data.RecNo:=wz;//还原记录位置
end;
data.Next;
end;
tmpnod:=nil;
data:=nil;
end;procedure TForm1.Button1Click(Sender: TObject);
var
tmpnod:ttreenode;
begin
query1.Active:=true;
tmpnod:=treeview1.Items.AddChildFirst(nil,trim(query1.fieldbyname('name').AsString));
tmpnod.StateIndex:=query1.fieldbyname('id').AsInteger;
addnod(tmpnod,datasource1.DataSet);
tmpnod:=nil;
treeview1.Items[0].Expand(false);
end;
0 -1 全部文档
1 0 文档1
2 0 文档2
3 2 文档2-1111
4 2 文档2-2222
5 1 文档1-1111
6 5 文档1-1111-1111
7 1 文档1-2222
8 6 1231231231
9 8 546564
10 3 yyyyyyy
11 7 pppppppp
代码:
implementation{$R *.dfm}procedure addnod(fnod:ttreenode;data:tdataset);
var
i:integer;
tmpnod:ttreenode;
wz:integer;//记录位置
begin
data.First;
for i:=1 to data.RecordCount do
begin
if(data.FieldByName('fid').AsInteger=fnod.StateIndex) then
begin
tmpnod:=form1.TreeView1.Items.AddChild(fnod,trim(data.fieldbyname('name').asstring));
tmpnod.StateIndex:=data.fieldbyname('id').AsInteger;//把当前的ID号保存下来。
wz:=data.RecNo; //保存当前记录位置
addnod(tmpnod,data);
data.RecNo:=wz;//还原记录位置
end;
data.Next;
end;
tmpnod:=nil;
data:=nil;
end;procedure TForm1.Button1Click(Sender: TObject);
var
tmpnod:ttreenode;
begin
query1.Active:=true;
tmpnod:=treeview1.Items.AddChildFirst(nil,trim(query1.fieldbyname('name').AsString));
tmpnod.StateIndex:=query1.fieldbyname('id').AsInteger;
addnod(tmpnod,datasource1.DataSet);
tmpnod:=nil;
treeview1.Items[0].Expand(false);
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货