不知道为什么第三层不可以在第二层上展开?我所要展开的层跑到第一层去了?请高手帮我看一下语句,谢谢~~~///////////////// 以下第三层procedure TForm2.AddWorker1(var Node1:TTreeNode);
var
List:TADOQuery;
begin
List:=TAdoQuery.Create(nil);
List.Connection:=dm.ado;
with List do
begin
Close;
Sql.Clear;
Sql.Add('select * from malatamobille.dbo.ICBom where fbomnumber=:par');
parameters.ParamByName('par').Value:=Node1.text;
Prepared;
open;
While not Eof do
begin
TreeView1.Items.AddChild(node1,FieldbyName('fbomnumber').AsString);
next;
end;
end;
List.Free;
end; ///////////////// 以下第二层
procedure TForm2.AddWorker(var Node:TTreeNode);
var
List:TADOQuery;
//////
node1:TTreeNode;
begin
List:=TAdoQuery.Create(nil);
List.Connection:=dm.ado;
with List do
begin
Close;
Sql.Clear;
Sql.Add('exec gbom :par');
parameters.ParamByName('par').Value:=Node.text;
Prepared;
open;
While not Eof do
begin
TreeView1.Items.AddChild(node,FieldbyName('fname').AsString);
node1:=TreeView1.Items.Add(nil,Fieldbyname('fname').AsString);//dept_id
AddWorker1(node1);
next;
end;
end;end;
///////////////// 以下第一层
Procedure TForm2.addDepartment;
var
node:TTreeNode;
begin
With AQlist do
begin
Close;
sql.Clear;
Sql.Add('select * from malatamobille.dbo.ICBomGroup where fparentid=0 order by fname');
Prepared;
open;
While not Eof do
begin
node:=TTreeNode.Create(nil);
node:=TreeView1.Items.Add(nil,Fieldbyname('fnumber').AsString);//dept_id
AddWorker(node);
next;
end;
end;
end;
var
List:TADOQuery;
begin
List:=TAdoQuery.Create(nil);
List.Connection:=dm.ado;
with List do
begin
Close;
Sql.Clear;
Sql.Add('select * from malatamobille.dbo.ICBom where fbomnumber=:par');
parameters.ParamByName('par').Value:=Node1.text;
Prepared;
open;
While not Eof do
begin
TreeView1.Items.AddChild(node1,FieldbyName('fbomnumber').AsString);
next;
end;
end;
List.Free;
end; ///////////////// 以下第二层
procedure TForm2.AddWorker(var Node:TTreeNode);
var
List:TADOQuery;
//////
node1:TTreeNode;
begin
List:=TAdoQuery.Create(nil);
List.Connection:=dm.ado;
with List do
begin
Close;
Sql.Clear;
Sql.Add('exec gbom :par');
parameters.ParamByName('par').Value:=Node.text;
Prepared;
open;
While not Eof do
begin
TreeView1.Items.AddChild(node,FieldbyName('fname').AsString);
node1:=TreeView1.Items.Add(nil,Fieldbyname('fname').AsString);//dept_id
AddWorker1(node1);
next;
end;
end;end;
///////////////// 以下第一层
Procedure TForm2.addDepartment;
var
node:TTreeNode;
begin
With AQlist do
begin
Close;
sql.Clear;
Sql.Add('select * from malatamobille.dbo.ICBomGroup where fparentid=0 order by fname');
Prepared;
open;
While not Eof do
begin
node:=TTreeNode.Create(nil);
node:=TreeView1.Items.Add(nil,Fieldbyname('fnumber').AsString);//dept_id
AddWorker(node);
next;
end;
end;
end;
这里有问题
在一个函数中用循环就可以了,没必要写在三个,而且好像你的可以用递归直接实现了
var
List:TADOQuery;
begin
List:=TAdoQuery.Create(nil);
List.Connection:=dm.ado;
with List do
begin
Close;
Sql.Clear;
Sql.Add('select * from malatamobille.dbo.ICBom where fbomnumber=:par');
parameters.ParamByName('par').Value:=Node1.text;
Prepared;
open;
While not Eof do
begin
TreeView1.Items.AddChild(node1,FieldbyName('fbomnumber').AsString);
next;
end;
end;
List.Free;
end; ///////////////// 以下第二层
procedure TForm2.AddWorker(var Node:TTreeNode);
var
List:TADOQuery;
//////
node1:TTreeNode;
begin
List:=TAdoQuery.Create(nil);
List.Connection:=dm.ado;
with List do
begin
Close;
Sql.Clear;
Sql.Add('exec gbom :par');
parameters.ParamByName('par').Value:=Node.text;
Prepared;
open;
While not Eof do
begin
TreeView1.Items.AddChild(node,FieldbyName('fname').AsString);
node1:=TreeView1.Items.Add(nil,Fieldbyname('fname').AsString);//dept_id
AddWorker1(node1);
next;
end;
end; end;
///////////////// 以下第一层
Procedure TForm2.addDepartment;
var
node:TTreeNode;
begin
With AQlist do
begin
Close;
sql.Clear;
Sql.Add('select * from malatamobille.dbo.ICBomGroup where fparentid=0 order by fname');
Prepared;
open;
While not Eof do
begin
node:=TTreeNode.Create(nil);
node:=TreeView1.Items.Add(nil,Fieldbyname('fnumber').AsString);//dept_id
AddWorker(node);
next;
end;
end;
end;
注意红色部分:第二层中的node1是局部变量,第三层根本访问不到怎么能够显示正确啊,设置为全局变量。
var
List:TADOQuery;
//////
node1:TTreeNode;
begin
List:=TAdoQuery.Create(nil);
List.Connection:=dm.ado;
with List do
begin
Close;
Sql.Clear;
Sql.Add('exec gbom :par');
parameters.ParamByName('par').Value:=Node.text;
Prepared;
open;
While not Eof do
begin
TreeView1.Items.AddChild(node,FieldbyName('fname').AsString);
node1:=TreeView1.Items.Add(nil,Fieldbyname('fname').AsString);//dept_id
AddWorker1(node1);
next;
end;
end; end; 红色部分已经将node1置为第一层了
var
List:TADOQuery;
//////
node1:TTreeNode;
begin
List:=TAdoQuery.Create(nil);
List.Connection:=dm.ado;
with List do
begin
Close;
Sql.Clear;
Sql.Add('exec gbom :par');
parameters.ParamByName('par').Value:=Node.text;
Prepared;
open;
While not Eof do
begin
node1:=TreeView1.Items.AddChild(node,FieldbyName('fname').AsString);
//node1:=TreeView1.Items.Add(nil,Fieldbyname('fname').AsString);//dept_id
AddWorker1(node1);
next;
end;
end; end;