TreeView递归增加

上面是数据表。


painfo=^Tainfo;
Tainfo=record
bh,cname,lastbh:string[100];
end;

procedure TForm1.SetTreeView(atreenode: TTreeNode; aIndex: string); //递归函数
var
adoquery: TAdoquery;
temp: TTreeNode;
pif: PAInfo;
begin
adoquery := TAdoquery.Create(nil);
try
    with adoquery do
    begin
      Connection := self.ADOConnection1;
      close;
      sql.Clear;
      sql.Add('select * from list1 where lastbh = '''+aIndex+''' ');
      open;
      while not eof do
      begin
        new(pif);
        pif^.bh := adoquery.FieldByName('bh').AsString;
        pif^.cname := adoquery.FieldByName('cname').AsString;
        pif^.lastbh := adoquery.FieldByName('lastbh').AsString;
        temp := treeview1.Items.AddChildObject(atreenode, pif^.cname, pif);
        SetTreeView(temp, adoquery.FieldByName('bh').AsString);
        next;
      end;
    end;
finally
    adoquery.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);   //显示按钮,可以考虑放在开始事件
begin
ClearTreeView;
SetTreeView(nil,'0');
treeview1.FullExpand;
end;

procedure TForm1.TreeView1Click(Sender: TObject); //点击到哪个字段,内容就显示在相应EDIT上
begin
if assigned(treeview1.Selected.Data) then
begin
    edit1.Text := PAInfo(treeview1.Selected.Data)^.bh;
    edit2.Text := PAInfo(treeview1.Selected.Data)^.cname;
    edit3.Text := PAInfo(treeview1.Selected.Data)^.lastbh;
end;
end;

procedure tform1.cleartreeview;
var
i:integer;
pif:painfo;
begin
for i:=0 to treeview1.Items.Count-1 do
begin
      if assigned(treeview1.Items.Item[i]) then
      begin
        pif:=treeview1.Items.Item[i].Data;
        dispose(pif);
      end;
end;
treeview1.Items.Clear;
end;

procedure tform1.cleartreeview;
var
i:integer;
pif:painfo;
begin
for i:=0 to treeview1.Items.Count-1 do
begin
      if assigned(treeview1.Items.Item[i]) then
      begin
        pif:=treeview1.Items.Item[i].Data;
        dispose(pif);
      end;
end;
treeview1.Items.Clear;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

adoconnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
                               ExtractFilePath(Application.ExeName)+'test.mdb;Persist Security Info=False';
end;

链接:http://hi.baidu.com/sleeper312/blog/item/fd8e97d28d2935083af3cf3f.html

原文地址:https://www.cnblogs.com/mingdep/p/2217903.html