要做一个左边是树显示各部门信息,右边是根据部门编号显示的部门人员,因为部门信息可能会有重复,如何记下树中每个部门对应的id,我想在创建树时用数组记录,调试出错,代码如下:急盼高手帮忙!!!
procedure Tsjwh_csh.FormCreate(Sender: TObject);
var
Node1:TTreeNode;
Node2:TTreeNode;
Node3:TTreeNode;
NodeText1:string;
NodeText2:string;
NodeText3:string;
NodeText4:string;
i:integer;begin
TreeView1.Items.Clear;
ADOQuery1.Active:=true;
ADOQuery1.First;
if ADOQuery1.eof then
begin
ShowMessage('请进行机构代码维护');
ADOQuery1.Close;
ADOQuery2.Close;
ADOQuery3.Close;
ADOQuery4.Close;
exit;
end
else
begin
NodeText1:=ADOQuery1.fieldValues['bm_002'];
Node1 := TreeView1.Items.AddFirst(nil,NodeText1);
i:=TreeView1.selected.AbsoluteIndex;
intr1[i] := ADOQuery1.FieldValues['bm_001'];
NodeText1:= ADOQuery1.FieldValues['bm_001'];
with TreeView1.Items do
begin
with ADOQuery2 do
begin
Active:=false;
Parameters.ParamByName('bl2').Value:=NodeText1;
Active:=true;
first;
While not eof do
begin
NodeText2:= FieldValues['bm_002'];
Node2:=AddChild(Node1,NodeText2);
i:=TreeView1.selected.AbsoluteIndex;
intr1[i] := FieldValues['bm_001'];
NodeText2:= FieldValues['bm_001'];
with ADOQuery3 do
begin
Active:=false;
Parameters.ParamByName('bl3').Value:=NodeText2;
Active:=true;
first;
While not eof do
begin
NodeText3:=FieldValues['bm_002'];
Node3:=AddChild(Node2,NodeText3);
i:=TreeView1.selected.AbsoluteIndex;
intr1[i] := FieldValues['bm_001'];
NodeText3:= FieldValues['bm_001'];
with ADOQuery4 do
begin
Active:=false;
Parameters.ParamByName('bl4').Value:=NodeText3;
Active:=true;
first;
While not eof do
begin
NodeText4:=FieldValues['bm_002'];
AddChild(Node3,NodeText4);
i:=TreeView1.selected.AbsoluteIndex;
intr1[i] := FieldValues['bm_001'];
Next;
end;
end;//ADOQuery4
Next;
end;//not eof
end; //ADOQuery3
Next;
end;
end; //ADOQuery2
end;
ADOQuery1.Close;
ADOQuery2.Close;
ADOQuery3.Close;
ADOQuery4.Close;
ADOQuery5.Active:=true;
ADOQuery6.Active:=true;
ADOQuery7.Active:=true;
// ADOQuery8.Active:=true;
end;
end;
procedure Tsjwh_csh.FormCreate(Sender: TObject);
var
Node1:TTreeNode;
Node2:TTreeNode;
Node3:TTreeNode;
NodeText1:string;
NodeText2:string;
NodeText3:string;
NodeText4:string;
i:integer;begin
TreeView1.Items.Clear;
ADOQuery1.Active:=true;
ADOQuery1.First;
if ADOQuery1.eof then
begin
ShowMessage('请进行机构代码维护');
ADOQuery1.Close;
ADOQuery2.Close;
ADOQuery3.Close;
ADOQuery4.Close;
exit;
end
else
begin
NodeText1:=ADOQuery1.fieldValues['bm_002'];
Node1 := TreeView1.Items.AddFirst(nil,NodeText1);
i:=TreeView1.selected.AbsoluteIndex;
intr1[i] := ADOQuery1.FieldValues['bm_001'];
NodeText1:= ADOQuery1.FieldValues['bm_001'];
with TreeView1.Items do
begin
with ADOQuery2 do
begin
Active:=false;
Parameters.ParamByName('bl2').Value:=NodeText1;
Active:=true;
first;
While not eof do
begin
NodeText2:= FieldValues['bm_002'];
Node2:=AddChild(Node1,NodeText2);
i:=TreeView1.selected.AbsoluteIndex;
intr1[i] := FieldValues['bm_001'];
NodeText2:= FieldValues['bm_001'];
with ADOQuery3 do
begin
Active:=false;
Parameters.ParamByName('bl3').Value:=NodeText2;
Active:=true;
first;
While not eof do
begin
NodeText3:=FieldValues['bm_002'];
Node3:=AddChild(Node2,NodeText3);
i:=TreeView1.selected.AbsoluteIndex;
intr1[i] := FieldValues['bm_001'];
NodeText3:= FieldValues['bm_001'];
with ADOQuery4 do
begin
Active:=false;
Parameters.ParamByName('bl4').Value:=NodeText3;
Active:=true;
first;
While not eof do
begin
NodeText4:=FieldValues['bm_002'];
AddChild(Node3,NodeText4);
i:=TreeView1.selected.AbsoluteIndex;
intr1[i] := FieldValues['bm_001'];
Next;
end;
end;//ADOQuery4
Next;
end;//not eof
end; //ADOQuery3
Next;
end;
end; //ADOQuery2
end;
ADOQuery1.Close;
ADOQuery2.Close;
ADOQuery3.Close;
ADOQuery4.Close;
ADOQuery5.Active:=true;
ADOQuery6.Active:=true;
ADOQuery7.Active:=true;
// ADOQuery8.Active:=true;
end;
end;
const
ID_DEPT = 2;
var
nLevel: Integer;
pNodes: array[0..1023] of TTreeNode;
lpID, lpName: string;
begin
ADODataSet1.Close;
ADODataSet1.CommandText := "SELECT * FROM department ORDER BY id ";
ADODataSet1.Open;
pNodes[0] := nil;
TreeView1.Items.Clear;
with ADODataSet1.Recordset do
while not Eof do
begin
lpID := Fields[ "id "].Value;
lpName := Fields[ "department "].Value;
edit1.text:=lpid;
nLevel := Length(trim(edit1.text)) div ID_DEPT;
pNodes[nLevel] := TreeView1.Items.AddChild(pNodes[nLevel - 1], lpName);
MoveNext;
end;
end;