Delphi中 RzCheckTree從ACCESS中取值

procedure TForm1.FormCreate(Sender: TObject);
var
I,Y,L:Integer;
Bstr,Sustr:string;
RootNode,SubNode,SutNode:TTreeNode;
begin
try
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";Data Source='+ GetCurrentDir + '\db\mydb.mdb;Persist Security Info=True';
ADOConnection1.LoginPrompt:=False;
ADOConnection1.Connected:=True;
ADOQuery1.Connection:=ADOConnection1;
ADOQuery2.Connection:=ADOConnection1;
ADOQuery3.Connection:=ADOConnection1;
except
Application.MessageBox('數據庫連接錯誤','錯誤',16);
Application.Terminate;
end;
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select distinct Rep_name from Rep_all');
Open;
First;
for I := 0 to ADOQuery1.RecordCount - 1 do     //根節點循環
begin
Bstr:=ADOQuery1.FieldByName('Rep_name').AsString;   //獲得根節點名稱
RootNode:=RzCheckTree1.Items.Add(nil,Bstr);        //創建根節點
with ADOQuery2 do
begin
Close;
SQL.Clear;
SQL.Add('select * from Rep_all where Rep_name='''+ Bstr +'''');   //通過根節點查詢子節點
Open;
First;
for Y := 0 to ADOQuery2.RecordCount - 1 do    //子節點循環
begin
Sustr:=FieldByName('Rep_subname').AsString;
SubNode:=RzCheckTree1.Items.AddChild(RootNode,FieldByName('Rep_subname').AsString);    //創建子節點
with ADOQuery3 do
begin
Close;
SQL.Clear;
SQL.Add('select * from Rep_opt where opt_name=''' + Sustr +'''');
Open;
First;
for L := 0 to ADOQuery3.RecordCount - 1 do      //第2個子節點
begin
SutNode:=RzCheckTree1.Items.AddChild(SubNode,FieldByName('Rep_opt').AsString);
Next;  //第2個子節點
end;
end;
Next;   //子節點
end;
end;
Next;   //根節點
end;
end;
end;

 

二、獲取用戶選擇的值

1.uses commctrl;
2.按鈕代碼
procedure TForm1.quzhiClick(Sender: TObject);
var
Qnode:TTreeNode;
Qtvi:TTVItem;
begin
Memo1.Lines.Clear; //先清除Memo1中的數據
for Qnode in RzCheckTree1.Items do
begin
Qtvi.mask:= TVIF_STATE; //or code 8
Qtvi.hItem:=Qnode.ItemId;
TreeView_GetItem(RzCheckTree1.Handle,Qtvi);
if Qtvi.state and $2000=$2000 then
begin
Memo1.Lines.Add(Qnode.Text);  //獲得用戶選擇值寫入到Memo1中
end;
end;
end;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章