1用Access建一個數據庫 數據庫名book 表名bk 字段如下
id caption parentid
1 書籍列表 0
2 文學 1
3 計算機技術 1
4 三重門 2
5 編程 3
6 Java 5
7 C 5
2窗體上放置一個ADOConnection控件,設置connectionstring和LoginPrompt屬性。
3編寫代碼如下
var
Form2: TForm2;
root:TTreeNode;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
if root=nil then
root:=TTreeNode.Create(treeview1.Items);
end;
procedure TForm2.InitGroup(parentid: integer; root: TTreeNode);
var
node:TTreeNode;
ADOQuery:TADOQuery;
begin
ADOQuery:=TADOQuery.Create(nil);
ADOQuery.Connection:= ADOConnection1;
try
with ADOQuery do
begin
close;
sql.Clear;
sql.Text:='select * from bk where parentid='+IntToStr(parentid);
Open;
First;
while not eof do
begin
node:=Treeview1.Items.AddChild(root,Fields[1].AsString);
node.Data:=Pointer(Fields[0].AsInteger);
InitGroup(Fields[0].AsInteger,node);
next;
end;
end;
finally
ADOQuery.Free;
end;
end;
procedure TForm2.FormActivate(Sender: TObject);
var
node1:TTreeNode;
begin
with treeview1 do
begin
Items.Clear;
Items.BeginUpdate;
node1:=Treeview1.Items.AddChild(root,'我的圖書館');
node1.Data:=Pointer(0);
node1.Expanded:=True;
InitGroup(0,node1);
Items.EndUpdate;
end;
end;
end.
4總結query必須在函數內部創建,否則會關閉原來已打開的記集的。我剛開始沒這樣做直接丟一個ADOQuery控件上去,結果總是隻顯示第一條記錄,不能達到想要的效果,弄了一下午,經過qq羣了的人的指教,原來問題就出在這,望大家也少走彎路。