动手生成 Delphi xe DBTreeview 三级行政图树 省市县

Posted jijm123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动手生成 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.

效果如下


技术图片

 

以上是关于动手生成 Delphi xe DBTreeview 三级行政图树 省市县的主要内容,如果未能解决你的问题,请参考以下文章

Delphi xe7 FireMonkey / Mobile (Android, iOS)生成 QR Code完整实例

delphi XE4生成ipa并部署到越狱iPad视频教程

Delphi XE10,Json 生成和解析,再利用indyhttp控件Post

Delphi调用JAVA的WebService上传XML文件(XE10.2+WIN764)

新的 Delphi XE2 自动生成的内部版本号是不是链接到 1.1.2000 00:00:00?

Delphi XE 字节数组索引