请帮忙看看,实现是实现了,但效率好像不是很高,请帮忙修改一下,让它效率提高。感谢了!数据库结构:     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;