1.PInfo表结构
ID VARCHAR(50)
FullName VARCHAR(50)
ParentID VARCHAR(50)

2.Unit文件
unit Info;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, DB, ADODB;

type
  PNodeInfo=^TNodeInfo;
  TNodeInfo=record
    ID:string;
    FullName:string;
  end;

TfmInfo = class(TForm)
    TreeView1: TTreeView;
    btnShowInfo: TButton;
    ADOQuery1: TADOQuery;
    ADOConnection1: TADOConnection;
    procedure CreateChildTree(ParentNode: TTreeNode);
    procedure btnShowInfoClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fmInfo: TfmInfo;

implementation

{$R *.dfm}

//创建子树
procedure TfmInfo.CreateChildTree(ParentNode: TTreeNode);
var
  Query:TADOQuery;
  ChildNode:TTreeNode; //孩子结点
  ChildNodeInfo:PNodeInfo; //孩子结点信息
begin
  Query:=TADOQuery.Create(nil);
  with Query do
  begin
    Connection:=ADOConnection1;
    SQL.Add('SELECT ID,FullName FROM PInfo WHERE ParentID = '''+PNodeInfo(ParentNode.Data)^.ID+''''); //获取孩子结点信息
    Open;

while not Eof do
    begin
      New(ChildNodeInfo);
      ChildNodeInfo^.ID:=FieldByName('ID').AsString;
      ChildNodeInfo^.FullName:=FieldByName('FullName').AsString;

ChildNode:=TreeView1.Items.AddChildObject(ParentNode,(ChildNodeInfo^.ID+ChildNodeInfo^.FullName),ChildNodeInfo); //添加孩子结点,并关联孩子结点信息

CreateChildTree(ChildNode); //进行递归

Next;
    end;

Close;
  end;
end;

procedure TfmInfo.btnShowInfoClick(Sender: TObject);
var
  BootNode:TTreeNode; //根结点
  BootNodeInfo:PNodeInfo; //根结点信息
begin
  with ADOQuery1 do
  begin
    SQL.Clear;
    SQL.Add('SELECT ID,FullName FROM PInfo WHERE ParentID IS NULL'); //获取根结点信息
    Open;

New(BootNodeInfo);
    BootNodeInfo^.ID:=FieldByName('ID').AsString;
    BootNodeInfo^.FullName:=FieldByName('FullName').AsString;

TreeView1.Items.Clear;
    BootNode:=TreeView1.Items.AddChildObject(nil,(BootNodeInfo^.ID+BootNodeInfo^.FullName),BootNodeInfo); //添加根结点,并关联根结点信息

Close;
  end;

CreateChildTree(BootNode); //创建子树
  TreeView1.FullExpand; //展开所有树结点
end;

end.

在DELPHI中用TreeView控件从数据库中动态装载信息的更多相关文章

  1. TreeView控件绑定数据库

    1.在设计视图里面的代码 <form id="form1" runat="server"> <div> <h1>两个表< ...

  2. Delphi下Treeview控件基于节点编号的访问

    有时我们需要保存和重建treeview控件,本文提供一种方法,通过以树结构节点的编号访问树结构,该控件主要提供的方法如下:      function GetGlobeNumCode(inNode:T ...

  3. Delphi下Treeview控件基于节点编号的访问1

    有时我们需要保存和重建treeview控件,本文提供一种方法,通过以树结构节点的编号访问树结构,该控件主要提供的方法如下:      function GetGlobeNumCode(inNode:T ...

  4. WPF中TreeView控件数据绑定和后台动态添加数据(二)

    写在前面:在(一)中,介绍了TreeView控件MVVM模式下数据绑定的方法.在这篇文章中,将总结给节点添加事件的方法,这样说有些不对,总之实现的效果就是点击某个节点,将出现对应于该节点的页面或者数据 ...

  5. WPF中TreeView控件数据绑定和后台动态添加数据(一)

    数据绑定: 更新内容:补充在MVVM模式上的TreeView控件数据绑定的代码. xaml代码: <TreeView Name="syntaxTree" ItemsSourc ...

  6. asp.net TreeView控件绑定数据库显示信息

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  7. C#之Winform中treeview控件绑定数据库

    private DataSet ds; private SqlDataAdapter sqlDataAdapter1; private int maxnodeid; private void Form ...

  8. C#-WebForm-ASP开发练习:从数据库中动态添加信息

    传统的ASP开发方式,是C#代码和HTML代码混合在一起,ASP与ASP.NET不是一个东西. <%  %>  -  可以扩起来一段范围,这一段范围之内只能允许编写C#代码 <%= ...

  9. VB TreeView控件使用详解

    来源:http://www.newxing.com/Tech/Program/VisualBasic/TreeView_587.html 三小时快速掌握TreeView树状控件的使用.能不能掌握控件的 ...

随机推荐

  1. php 生成gif 动图,可控制每张图时间

    <?php //namespace gifCreator; /** * Create an animated GIF from multiple images */ class gifcreat ...

  2. ArrayList 和 Vector 的区别是什么?(未完成)

    ArrayList 和 Vector 的区别是什么?(未完成)

  3. MySQL进阶 9: 联合查询 - 查询语句1 union 查询语句2 union ...

    #进阶 : 联合查询 /* union 联合 合并: 将多条查询语句的结果合并成一个结果 语法: 查询语句1 union 查询语句2 union ... 应用语境: 要查询的结果来自多个表,但查询的列 ...

  4. CSS3媒体查询实例

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. 重构CMDB,避免运维之耻

    CMDB,几乎是每个运维人都绕不过去的字眼,但又是很多运维人的痛,因为CMDB很少有成功的,因此我也把它称之为运维人的耻辱. 那么到底错在哪儿了?该如何去重构它? 今天我想从我的角度来和大家探讨一下业 ...

  6. C语言学习系列(三)C程序结构

    一.C程序结构 C 程序主要包括以下部分: 预处理器指令 函数 变量 语句 & 表达式 注释 new C program demo: #include <stdio.h> /*预处 ...

  7. JavsScript 一些技巧方法

    直接定义一个匿名函数,并立即调用: (function(){     //TODO: }()); 说明:function之前的左圆括号是必需的,如果不写这个,JavaScript解析器会试图将关键字f ...

  8. 003_C/C++笔试题_分享大汇总

    (一)感谢:lhzstudio 01_C++经典面试题全集 50~100道 都附带有参考答案 02_C++开发工程师面试题库 100~150道 03_C++笔试题库之编程.问答题 150~200道 0 ...

  9. 51nod 1020

    求 $n$ 个数的排列中逆序数为 $k$ 的排列数$f[n][k]$ 表示 $n$ 个数的排列中逆序数为 $k$ 的排列数$f[n][k] = \sum_{i = 0}^{n - 1} f[n - 1 ...

  10. Ubuntu18.04安装和配置Django,并实现简单示例

    一.前言(系统,django介绍,window.mac.linux简单区别) Django是python开发过程最重要的web框架.因为在看的Django教学视频是在mac下安装的,我自己用的是Lin ...