这样可以了吧,呵呵 table 的内容如下: id pid name ... 1 0 aa 2 0 bb 3 1 cc 4 1 dd 5 3 ee 6 2 ff欲显示树的图形如下: aa |--cc | |--ee |--dd bb |--ffprocedure CreateTree(var ANode : TTreeNode; var pid : integer); var id : integer; sname : string; bmk : TBookMark; begin with form1,Query1 do begin filter := 'pid=' + inttostr(pid); while not Eof do begin sname := FieldByName('name').AsString; Anode := Treeview.Items.AddChild(Anode, sname); id := FieldByName('ID').AsInteger; bmk := GetBook; CreateTree(ANode,id ); Anode := Anode.Parent; filter := 'pid=' + inttostr(pid); if Query1.BookValid( bmk ) then begin GotoBook(bmk); FreeBook(bmk); end; next; end; end; end;procedure TForm1.Button2Click(Sender: TObject); var t : TTreeNode; Id : integer; begin treeview.Items.clear; t := nil; id := 0; createtree(t,id); end;
table 的内容如下:
id pid name ...
1 0 aa
2 0 bb
3 1 cc
4 1 dd
5 3 ee
6 2 ff欲显示树的图形如下:
aa
|--cc
| |--ee
|--dd
bb
|--ffprocedure CreateTree(var ANode : TTreeNode; var pid : integer);
var
id : integer; sname : string;
bmk : TBookMark;
begin
with form1,Query1 do
begin
filter := 'pid=' + inttostr(pid);
while not Eof do
begin
sname := FieldByName('name').AsString;
Anode := Treeview.Items.AddChild(Anode, sname);
id := FieldByName('ID').AsInteger;
bmk := GetBook;
CreateTree(ANode,id );
Anode := Anode.Parent;
filter := 'pid=' + inttostr(pid);
if Query1.BookValid( bmk ) then
begin
GotoBook(bmk); FreeBook(bmk);
end;
next;
end;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
t : TTreeNode;
Id : integer;
begin
treeview.Items.clear;
t := nil; id := 0; createtree(t,id);
end;