上面是数据表。
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