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

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

概述表结构及记录 object tarea: TFDQuery     Connection = FDConnection1     SQL.Strings = (       ‘select *‘       ‘from tArea  order by fParentCode‘)     Left = 160     Top = 240   end  object tv: TTreeView    

表结构及记录

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 xe DBTreeview 三级行政图树 省市县所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1216320.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存