行政编制编码按省、市、县三级。代码长度为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来分层显示 北京市院
----海淀区院
----朝阳区院
----北京铁路局院
--------铁路一院
--------铁路二院
河北省院
----石家庄院
--------桥东区院 
--------桥西区院 
----唐山市院
--------路南区院
我苦苦做了一天也没做出来,不得已请教各位老师,我怀疑我的脑袋被尼古丁已经熏坏了。

解决方案 »

  1.   

    算法是递归对比(把字符串拆分出来110000,110101...先取头两位数据,然后取后四位跟0000比较,比出来的是根节点,然后类推此法并能实现楼住的要求.
    ),然后找找treeciew的实现.这个比较容易办.以上答案仅供参考.
      

  2.   

    请问大虾:能否不要用什么递归算法,我不会算法。有没有简单,比较通俗易懂的方法。现在主要的问题是县级院该如何放置。对于普通省的排列,可以按照省、市、县来排列,但是对于直接归省管的县级单位,就不知道该方在那里?我参考下面这个例子,虽然简单,但对于我不使用:

         BookDirs.db
         Code (Key Index Field)        Name
         A000                          社会科学类                // 后三位是000为根结点
         A100                          哲学                      // 后二位是00为二级结点
         A101                          马克主义原理              
         A200                          历史
         B000                          自然科学类生成的TreeView为:
    -A000 社会科学类                  //在节点上加入结点编码是为了以后判断点击节点时方便
       -A100 哲学
            -A101 马克主义原理
       -A200 历史
    -B000 自然科学类生成树的代码为:procedure TAMdept.GenTree();
    var gc,gc1,gc2:string;
        nd,ndc:TTreenode;
    begin
    TreeView.items.Clear;
    with BookDirs do
    begin
      indexname:='Code';
      first;
      while not eof  do
      begin
       gc:=copy(FieldByName('Code').AsString,2,3);
       gc1:=copy(FieldByName('Code').AsString,2,1);
       gc2:=copy(FieldByName('Code').AsString,3,2);    
       if gc='000' then nd:=TreeView.items.add(nil,FieldByName('Code').AsString+' '+FieldByName('Name').AsString)
          else if  (gc1<>'0') and (gc2='00') then ndc:=TreeView.items.addchild(nd,FieldByName('Code').AsString+' '+FieldByName('Name').AsString)
             else TreeView.items.addchild(ndc,FieldByName('Code').AsString+' '+FieldByName('Name').AsString);
       Next;
      end;
    end;
    end;