Delphi中 RzCheckTree从ACCESS中取值

2016-08-22 10:23:09来源:http://im9527.blog.51cto.com/1159492/1261628作者:hack9527人点击


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;

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台