行政编制编码按省、市、县三级。代码长度为6位。省级后四位为0000,市级后两位为00。但对于直辖市特殊,一部分县直接归省级管辖。表内容如下: 名称 代码 级别
北京市院 110000 2
海淀区院 110101 4
朝阳区院 110102 4
... ...
... ...
北京铁路局院 110200 3
铁路一院 110201 4
铁路二院 110202 4
... ...
河北省院 130000 2
石家庄院 130100 3
桥东区院 130101 4
桥西区院 130102 4
唐山市院 130200 3
路南区院 130201 4
... ...现在需要根据上述结构,用treeview来分层显示,编辑。效果如下: 北京市院
----海淀区院
----朝阳区院
----北京铁路局院
--------铁路一院
--------铁路二院
河北省院
----石家庄院
--------桥东区院
--------桥西区院
----唐山市院
--------路南区院
我苦苦做了一天也没做出来,不得已请教各位老师,我怀疑我的脑袋被尼古丁已经熏坏了。部门经理已经用异样眼光注视我。哎!
北京市院 110000 2
海淀区院 110101 4
朝阳区院 110102 4
... ...
... ...
北京铁路局院 110200 3
铁路一院 110201 4
铁路二院 110202 4
... ...
河北省院 130000 2
石家庄院 130100 3
桥东区院 130101 4
桥西区院 130102 4
唐山市院 130200 3
路南区院 130201 4
... ...现在需要根据上述结构,用treeview来分层显示,编辑。效果如下: 北京市院
----海淀区院
----朝阳区院
----北京铁路局院
--------铁路一院
--------铁路二院
河北省院
----石家庄院
--------桥东区院
--------桥西区院
----唐山市院
--------路南区院
我苦苦做了一天也没做出来,不得已请教各位老师,我怀疑我的脑袋被尼古丁已经熏坏了。部门经理已经用异样眼光注视我。哎!
如没有我这里给你代码。两种方法都可以。
procedure TForm1.Button2Click(Sender: TObject);
var
i, j, id, id2, iCount : Integer;
sName: string;
node: TTreeNode;
begin
TreeView1.Items.Clear;
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'Select Max(jj) from jydm';
ADOQuery1.Open;
iCount := ADOQuery1.Fields[0].AsInteger;
ADOQuery1.Close;
for i := 1 to iCount do
begin
ADOQuery1.SQL.Text := Format('Select * from jydm where jj = %d order by jydm',[i]);
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
id :=ADOQuery1.FieldByName('jydm').AsInteger;
sName := ADOQuery1.FieldByName('jymc').AsString;
if i = 1 then TreeView1.Items.AddObject(nil,sName,TObject(id))
else begin
id2 := id div 100 * 100;
node := nil;
for j := 0 to TreeView1.Items.Count - 1 do
if Integer(TreeView1.Items[j].Data) = id2 then
begin
node := TreeView1.Items[j];
break;
end;
TreeView1.Items.AddChildObject(node,sName,TObject(id));
end;
ADOQuery1.Next;
end;
ADOQuery1.Close;
end;
end;procedure TForm1.Button3Click(Sender: TObject);
var
i, j, id, id2, iCount : Integer;
sName: string;
node: TTreeNode;
begin
TreeView1.Items.Clear;
ADOQuery1.Close;
ADOQuery1.SQL.Text := 'Select Max(jj) from jydm';
ADOQuery1.Open;
iCount := ADOQuery1.Fields[0].AsInteger;
ADOQuery1.Close;
for i := 1 to iCount do
begin
ADOQuery1.SQL.Text := Format('Select * from jydm where jj = %d order by jydm',[i]);
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
id :=ADOQuery1.FieldByName('jydm').AsInteger;
sName := ADOQuery1.FieldByName('jymc').AsString;
if i = 1 then TreeView1.Items.Add(nil,sName).StateIndex := id
else begin
id2 := id div 100 * 100;
node := nil;
for j := 0 to TreeView1.Items.Count - 1 do
if TreeView1.Items[j].StateIndex = id2 then
begin
node := TreeView1.Items[j];
break;
end;
TreeView1.Items.AddChild(node,sName).StateIndex := id;
end;
ADOQuery1.Next;
end;
ADOQuery1.Close;
end;
end;