表结构及记录

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 三级行政图树 省市县的更多相关文章

  1. 动手生成 Delphi xe DBTreeview

    tProductType表结构如下 object FDConnection1: TFDConnection    Params.Strings = (      'Database=ClothingT ...

  2. Delphi XE 10 跨平台三层数据库应用教程

    Delphi XE 10 跨平台三层数据库应用教程 前言: Delphi XE 开始越来越庞大,比经典的Delphi7难用,但依然是目前所有跨平台开发工具中开发效率最高.最容易上手的,其快速设计RAD ...

  3. [转载]: delphi中XLSReadWrite控件的使用(2)---delphi XE下安装

    一.下载 官方下载网址: http://www.axolot.com/components/download.htm 从这里可以下载到从Delphi5到DelphiXE全部支持的版本. 二.软件安装 ...

  4. Delphi xe 下快捷使用 FastMM 的内存泄露检测功能

    Delphi xe 集成了FastMM,调试程序是的时候可以方便地检查内存泄露了.  使用方法:在project中,添加一行: ReportMemoryLeaksOnShutdown := Debug ...

  5. Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决(对三层的例子配置有帮助)

    Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLSto ...

  6. Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决

    Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLSto ...

  7. delphi xe 10.3 利用Git组群开发,Git服务器安装,Git 拉取,提交,推送相关设置操作

    1. Git服务器安装, 参考 https://blog.csdn.net/u012842630/article/details/97175397 Git服务器官方网站,要FQ. 2. 工具软件 gi ...

  8. delphi 2010与delphi XE破解版的冲突

    在系统中同时安装了Dephi 2010LITE版与Delphi XE lite后,总是会有一个有问题 是因为两者都是读取C:\ProgramData\Embarcadero目录下的license文件, ...

  9. delphi XE Berlin ReadProcessMemory WriteProcessMemory

    delphi  XE,Berlin [dcc32 Error] Unit9.pas(93): E2033 Types of actual and formal var parameters must ...

随机推荐

  1. Cloud Native Weekly |面对云平台宕机,企业如何止损

    KubeEdge v0.2发布 KubeEdge在18年11月24日的上海KubeCon上宣布开源的一个开源项目,旨在依托K8S的容器编排和调度能力,实现云边协同.计算下沉.海量设备的平滑接入. Ku ...

  2. C++ 正则查找

    #include <iostream> #include <regex> using namespace std; int main() { string str; getli ...

  3. Socket嵌套字通讯

    一.socket是什么 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后 ...

  4. 遍历windows窗口

    原文 1. GetDesktopWindow GetNextWindow HWND hAll = ::GetDesktopWindow(); HWND hCurrent = ::GetNextWind ...

  5. Django 数据库mysql到models的映射方法

    Django自动生成models 如果数据库表已经存在,执行命令,可以自动生成Models模型,实现models与数据表的映射 >>> python manage.py inspec ...

  6. [2019年湘潭大学程序设计竞赛(重现赛)H chat][背包dp]

    链接:https://ac.nowcoder.com/acm/contest/893/H来源:牛客网 题目描述 在Casya生活的世界里,一天由m个小时组成. 最近Casya的女神终于答应在接下来的n ...

  7. C# Parallel 使用

    ParallelLoopResult result = Parallel.For(, , i => { Console.WriteLine("{0}, task: {1}, threa ...

  8. E:last-child

    E:last-child 语法: E:last-child { sRules } 说明: 匹配父元素的最后一个子元素E.大理石平台厂家大理石平台厂家 要使该属性生效,E元素必须是某个元素的子元素,E的 ...

  9. 畅通工程续(HDU 1874)(简单最短路)

    某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多.这让行人很困扰. 现在 ...

  10. 二十、网络ifconfig 、ip 、netstat、ss之二

    ip 网络层协议 ip地址 点分十进制分为4段,范围 0-255 ip分类 A 占据1段,最左侧一段第一位固定为0 0 000 0000 - 0 111 1111  0 - 127:其中0为网络,12 ...