type PMyRecord = ^MyRecord; MyRecord = record ID : integer; name:string; ParentID : integer; end;//end of recordprocedure TForm1.newtreeview(Node:TTreeNode;ParentID:integer); var tmpNode : TTreeNode; ADOquery1 : TADOQuery; p : PMyRecord; begin ADOQuery1 := TADOQuery.Create(self); ADOQuery1.Connection := ADOConnection1; ADOQuery1.close; ADOQuery1.SQL.clear; ADOQuery1.SQL.Text := 'select * from 部门表 where 上级部门ID='+inttostr(ParentID); ADOQuery1.open; if ADOQuery1.recordcount > 0 then begin ADOQuery1.First; while not ADOQuery1.Eof do begin new(p); p.ID := ADOQuery1.FieldByName('ID').AsInteger; p.name := ADOQuery1.FieldByName('部门名称').AsString; p.ParentID := ADOQuery1.FieldByName('上级部门ID').AsInteger; tmpNode := TreeView1.Items.AddChildObject(Node,p.name,p); Newtreeview(tmpNode,ADOQuery1.FieldByName('ID').AsInteger); ADOQuery1.next; //dispose(p);//一定要去掉这条语句,不然的话,Treeview中的Data也被dispose掉了。 end; end; ADOQuery1.Free; end;procedure TForm1.Button1Click(Sender: TObject); begin if Treeview1.Items<>nil then Treeview1.Items.Clear; newtreeview(nil,ADOTable1.FieldByName('上级部门ID').AsInteger); end;
PMyRecord = ^MyRecord;
MyRecord = record
ID : integer;
name:string;
ParentID : integer;
end;//end of recordprocedure TForm1.newtreeview(Node:TTreeNode;ParentID:integer);
var
tmpNode : TTreeNode;
ADOquery1 : TADOQuery;
p : PMyRecord;
begin
ADOQuery1 := TADOQuery.Create(self);
ADOQuery1.Connection := ADOConnection1;
ADOQuery1.close;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.Text := 'select * from 部门表 where 上级部门ID='+inttostr(ParentID);
ADOQuery1.open;
if ADOQuery1.recordcount > 0 then
begin
ADOQuery1.First;
while not ADOQuery1.Eof do
begin
new(p);
p.ID := ADOQuery1.FieldByName('ID').AsInteger;
p.name := ADOQuery1.FieldByName('部门名称').AsString;
p.ParentID := ADOQuery1.FieldByName('上级部门ID').AsInteger;
tmpNode := TreeView1.Items.AddChildObject(Node,p.name,p);
Newtreeview(tmpNode,ADOQuery1.FieldByName('ID').AsInteger);
ADOQuery1.next;
//dispose(p);//一定要去掉这条语句,不然的话,Treeview中的Data也被dispose掉了。
end;
end;
ADOQuery1.Free;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
if Treeview1.Items<>nil then
Treeview1.Items.Clear;
newtreeview(nil,ADOTable1.FieldByName('上级部门ID').AsInteger);
end;