zoukankan      html  css  js  c++  java
  • 动手生成 Delphi xe DBTreeview 三级行政图树 省市县

    表结构及记录

    object tarea: TFDQuery
        Connection = FDConnection1
        SQL.Strings = (
          'select *'
          'from tArea  order by fParentCode')
        Left = 160
        Top = 240
      end

     object tv: TTreeView
        Left = 0
        Top = 0
        Width = 554
        Height = 320
        Align = alClient
        Indent = 19
        TabOrder = 1
        ExplicitLeft = 40
        ExplicitTop = 32
        ExplicitWidth = 121
        ExplicitHeight = 97
      end

    代码

    procedure TForm1.FormCreate(Sender: TObject);
      var
        nodes:ttreenodes;
        node:ttreenode ;
        CurItem ,CurItem1:Ttreenode ;
        nodestr:string;
        lastparent,temp:string;
        i,j:integer   ;
    begin
             TV.Items.Clear;
         nodes:=TV.Items;
         Tarea.Active:=true;
         node:=nodes.add(nil,Tarea.FieldByName('fCode').Value+'_'+Tarea.FieldByName('fNAME').Value);
         Tarea.Next;
         while NOT Tarea.Eof  do
         BEGIN
              if Tarea.FieldByName('fParentCode').AsString='' then
                 nodes.add(nil,Tarea.FieldByName('fCode').Value+'_'+Tarea.FieldByName('fNAME').Value);  //省份

               if Tarea.FieldByName('fParentCode').AsString<>lastparent then
                //当前记录 fParentCode跟上条记录 fParentCode  不相等,表明是换一个父代了
                //需查找
               begin
                  CurItem := TV.Items.GetFirstNode;
                    while CurItem <> nil do
                       begin
                        if copy( CurItem.Text,1,pos('_',CurItem.Text)-1) =Tarea.FieldByName('fParentCode').Value then
                           begin
                            CurItem.Selected:=true;
                            break;
                            end;
                           CurItem := CurItem.GetNext;
                       end;
                  nodes.addCHILD(CurItem,Tarea.FieldByName('fCode').Value+'_'+Tarea.FieldByName('fNAME').Value);  //
               end;

              if (Tarea.FieldByName('fParentCode').AsString<>'')
                                  AND
                  (Tarea.FieldByName('fParentCode').AsString=lastparent)
                  //当前记录 fParentCode跟上条记录 fParentCode  相等,表明是同一个父代了,直接添加就行
                  then
                  BEGIN
                     nodes.addCHILD(CurItem,Tarea.FieldByName('fCode').Value+'_'+Tarea.FieldByName('fNAME').Value);  //
                  END;


               lastparent:= Tarea.FieldByName('fParentCode').AsString;
               Tarea.Next;
         END;
         nodes.GetFirstNode;


    end;

    end.

    效果如下


  • 相关阅读:
    HDU 4763 Theme Section(KMP+枚举公共前后缀)
    HDU 3613 Best Reward(扩展KMP求前后缀回文串)
    HDU 3613 Best Reward(manacher求前、后缀回文串)
    扩展KMP模板
    Vue
    Vue
    css 文本换行 文本溢出隐藏用省略号表示剩下内容
    sublime 神一样的插件
    markdown
    css 居中布局
  • 原文地址:https://www.cnblogs.com/jijm123/p/11336431.html
Copyright © 2011-2022 走看看