给你一个我调试用的例子 unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, DB, ADODB, Menus, StdCtrls, ExtCtrls;type TForm1 = class(TForm) TreeView1: TTreeView; ADOConnection1: TADOConnection; ADOTable1: TADOTable; ADOConnection2: TADOConnection; ADOTable2: TADOTable; PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; ADOConnection3: TADOConnection; ADOTable3: TADOTable; ADOConnection4: TADOConnection; ADOQuery1: TADOQuery; Splitter1: TSplitter; Memo1: TMemo; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; procedure FormCreate(Sender: TObject); procedure TreeView1Click(Sender: TObject); procedure N1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject); var ClassTreeNode: TTreeNode; TypeTreeNode: TTreeNode; CommodityTreeNode: TTreeNode; begin TreeView1.Items.Clear; adotable1.First; adotable2.First; adotable3.First; while not adotable1.Eof do begin ClassTreeNode:= TreeView1.Items.Add(nil,adotable1.fieldbyname('省份').AsString); while not adotable2.Eof do begin if adotable1.FieldByName('省份').AsString=adotable2.FieldByName('省份').AsString then begin TypeTreeNode:= TreeView1.Items.AddChild(ClassTreeNode,adotable2.fieldbyname('城市').AsString); while not adotable3.Eof do begin if adotable2.FieldByName('城市').AsString=adotable3.FieldByName('城市').AsString then begin CommodityTreeNode:= TreeView1.Items.AddChild(TypeTreeNode,adotable3.fieldbyname('酒店名称').AsString); end; adotable3.Next; end; end; adotable2.Next; adotable3.First; end; adotable1.Next; adotable2.First; end;end;procedure TForm1.TreeView1Click(Sender: TObject); begin if treeview1.Selected.HasChildren=false then begin with adoquery1 do begin active:=false; SQL.Clear; SQL.Add('select 字段4 from qrhotel where 酒店名称='''+treeview1.Selected.Text+''''); active:=true; memo1.Text:=adoquery1.fieldbyname('字段4').AsString; end; end; end;procedure TForm1.N1Click(Sender: TObject); var emptynode: TTreeNode; begin if treeview1.Selected.Parent=nil then begin emptynode:=treeview1.Items.Add(nil,'省分'); emptynode:=treeview1.Items.AddChild(emptynode,'城市'); treeview1.Items.AddChild(emptynode,'新酒店名称') end else if treeview1.Selected.HasChildren=false then begin treeview1.Items.AddChild(treeview1.Selected.Parent,'新酒店名称'); end else begin emptynode:=treeview1.Items.AddChild(treeview1.Selected.Parent,'城市'); treeview1.Items.AddChild(emptynode,'新酒店名称') end; end;end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, DB, ADODB, Menus, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
TreeView1: TTreeView;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
ADOConnection2: TADOConnection;
ADOTable2: TADOTable;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
ADOConnection3: TADOConnection;
ADOTable3: TADOTable;
ADOConnection4: TADOConnection;
ADOQuery1: TADOQuery;
Splitter1: TSplitter;
Memo1: TMemo;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
ClassTreeNode: TTreeNode;
TypeTreeNode: TTreeNode;
CommodityTreeNode: TTreeNode;
begin
TreeView1.Items.Clear;
adotable1.First;
adotable2.First;
adotable3.First;
while not adotable1.Eof do
begin
ClassTreeNode:= TreeView1.Items.Add(nil,adotable1.fieldbyname('省份').AsString);
while not adotable2.Eof do
begin
if adotable1.FieldByName('省份').AsString=adotable2.FieldByName('省份').AsString then
begin
TypeTreeNode:= TreeView1.Items.AddChild(ClassTreeNode,adotable2.fieldbyname('城市').AsString);
while not adotable3.Eof do
begin
if adotable2.FieldByName('城市').AsString=adotable3.FieldByName('城市').AsString then
begin
CommodityTreeNode:= TreeView1.Items.AddChild(TypeTreeNode,adotable3.fieldbyname('酒店名称').AsString);
end;
adotable3.Next;
end;
end;
adotable2.Next;
adotable3.First;
end; adotable1.Next;
adotable2.First;
end;end;procedure TForm1.TreeView1Click(Sender: TObject);
begin
if treeview1.Selected.HasChildren=false then
begin
with adoquery1 do
begin
active:=false;
SQL.Clear;
SQL.Add('select 字段4 from qrhotel where 酒店名称='''+treeview1.Selected.Text+'''');
active:=true;
memo1.Text:=adoquery1.fieldbyname('字段4').AsString;
end;
end;
end;procedure TForm1.N1Click(Sender: TObject);
var
emptynode: TTreeNode;
begin
if treeview1.Selected.Parent=nil then
begin
emptynode:=treeview1.Items.Add(nil,'省分');
emptynode:=treeview1.Items.AddChild(emptynode,'城市');
treeview1.Items.AddChild(emptynode,'新酒店名称')
end
else if treeview1.Selected.HasChildren=false then
begin
treeview1.Items.AddChild(treeview1.Selected.Parent,'新酒店名称');
end
else
begin
emptynode:=treeview1.Items.AddChild(treeview1.Selected.Parent,'城市');
treeview1.Items.AddChild(emptynode,'新酒店名称')
end;
end;end.