//这是一端从数据库中读出数据显示成树的程序 l_Node := Tv_lb.Items.Add(Nil,'根); l_Node.ImageIndex := 0; l_Node.SelectedIndex := 4; l_vZfx := TStrings.Create; with Q_Aid do //1级 begin with sql do begin Clear; add('Select Distinct lb From T_xcskb'); end; Prepared := True; Open; While not Eof do begin l_sLb := FieldByName('lb').AsString; l_Node1 := Tv_lb.Items.AddChild(l_Node,l_sLb); l_Node1.ImageIndex := 1; l_Node1.SelectedIndex := 4; with Q_Aid1 do //2级 begin with sql do begin clear; add('Select Distinct xcskbmc From T_xcskb'); add('Where Lb=''' + l_sLb + ''''); end; Prepared := True; Open; While not Eof do begin l_sMc := FieldByName('xcskbmc').AsString; l_Node2 := Tv_lb.Items.AddChild(l_Node1,l_sMc); l_Node2.ImageIndex := 2; l_Node2.SelectedIndex := 4; with Q_Aid2 do //3级 begin with sql do begin clear; add('Select Distinct zfx From T_xcskb'); add('where Lb='''+l_sLb + ''' and xcskbmc='''+l_sMc+''''); end; Prepared := True; Open; While not Eof do begin l_sZfx := FieldBYName('Zfx').AsString; l_Node3 := Tv_Lb.Items.AddChild(l_Node2,l_sZfx); l_Node3.ImageIndex := 3; l_Node3.SelectedIndex := 4; with Q_Aid3 do begin with sql do begin clear; add('select * from T_Xcskb'); add('where Lb='''+l_sLb + ''' and xcskbmc='''+l_sMc+''' and Zfx=''' + l_sZfx + ''''); end; Prepared := True; Open; while not Eof do begin l_sBz := FieldByName('bz').AsString; l_Node4 := Tv_lb.Items.AddChild(l_Node3,l_sBz); l_pData := New(PNodeData); l_pData^.m_iID := FieldByName('bzh').AsInteger; l_pData^.m_sLb := l_sLb; l_pData^.m_sZfx := FieldByName('Zfx').AsString; l_pData^.m_sBz := l_sBz; l_pData^.m_iZdsh := FieldByName('Zdsh').AsInteger; l_pData^.m_iZqsh := FieldByName('Zqsh').AsInteger; l_Node4.Data := l_pData; l_Node4.ImageIndex := 4; l_Node4.SelectedIndex := 4; next; end; Close; end; next; end; Close; end; next; end; Close; end; next; end; Close; end;
l_Node := Tv_lb.Items.Add(Nil,'根);
l_Node.ImageIndex := 0;
l_Node.SelectedIndex := 4; l_vZfx := TStrings.Create;
with Q_Aid do //1级
begin
with sql do
begin
Clear;
add('Select Distinct lb From T_xcskb');
end;
Prepared := True;
Open;
While not Eof do
begin
l_sLb := FieldByName('lb').AsString;
l_Node1 := Tv_lb.Items.AddChild(l_Node,l_sLb);
l_Node1.ImageIndex := 1;
l_Node1.SelectedIndex := 4;
with Q_Aid1 do //2级
begin
with sql do
begin
clear;
add('Select Distinct xcskbmc From T_xcskb');
add('Where Lb=''' + l_sLb + '''');
end;
Prepared := True;
Open;
While not Eof do
begin
l_sMc := FieldByName('xcskbmc').AsString;
l_Node2 := Tv_lb.Items.AddChild(l_Node1,l_sMc);
l_Node2.ImageIndex := 2;
l_Node2.SelectedIndex := 4;
with Q_Aid2 do //3级
begin
with sql do
begin
clear;
add('Select Distinct zfx From T_xcskb');
add('where Lb='''+l_sLb + ''' and xcskbmc='''+l_sMc+'''');
end;
Prepared := True;
Open;
While not Eof do
begin
l_sZfx := FieldBYName('Zfx').AsString;
l_Node3 := Tv_Lb.Items.AddChild(l_Node2,l_sZfx);
l_Node3.ImageIndex := 3;
l_Node3.SelectedIndex := 4;
with Q_Aid3 do
begin
with sql do
begin
clear;
add('select * from T_Xcskb');
add('where Lb='''+l_sLb + ''' and xcskbmc='''+l_sMc+''' and Zfx=''' + l_sZfx + '''');
end;
Prepared := True;
Open;
while not Eof do
begin
l_sBz := FieldByName('bz').AsString;
l_Node4 := Tv_lb.Items.AddChild(l_Node3,l_sBz);
l_pData := New(PNodeData);
l_pData^.m_iID := FieldByName('bzh').AsInteger;
l_pData^.m_sLb := l_sLb;
l_pData^.m_sZfx := FieldByName('Zfx').AsString;
l_pData^.m_sBz := l_sBz;
l_pData^.m_iZdsh := FieldByName('Zdsh').AsInteger;
l_pData^.m_iZqsh := FieldByName('Zqsh').AsInteger;
l_Node4.Data := l_pData;
l_Node4.ImageIndex := 4;
l_Node4.SelectedIndex := 4;
next;
end;
Close;
end;
next;
end;
Close;
end;
next;
end;
Close;
end;
next;
end;
Close;
end;