在DELPHI中用TreeView控件从数据库中动态装载信息
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.
最新文章
- Linux From Scratch(从零开始构建Linux系统,简称LFS)- Version 7.7(三)
- Orchard Application Host
- BugTracker 加入发Mail的功能
- <;转载>;NPOI Excel 单元格背景颜色对照表
- Android.mk学习 笔记
- C语言中 scanf 和 printf 的小要点
- 使用angular的ng-repeat遇到的一个问题
- 通过sql做数据透视表,数据库表行列转换(pivot和Unpivot用法)(一)
- 定义文字用em、rem,效果和px一样
- Android 开源项目 eoe 社区 Android 客户端(转)
- 简单明了查看内存使用和ubuntu的版本号及位数
- vijos1698题解
- awk删除最后一个字符
- 8-unittest中case管理
- python random函数
- L1-027 出租(20)(STL-map代码)
- 关于Java抽象类,接口与实现接口及派生类继承基类
- 【IT笔试面试题整理】给定一个数组a[N]构造数组b [N]
- Linux命令(一) pwd ,cd
- ASP.NET MVC 4 (四) 控制器扩展
热门文章
- JAVA Calendar类获取上个月的第一天和最后一天
- MySQL快速生成100W条测试数据
- appium+python 【Mac】UI自动化测试封装框架介绍 <;四>;---脚本的调试
- pandas处理json脱坑(二)--jsonError: Expecting &#39;,&#39; delimiter: line 1 column 2674
- Java8-Lambda-No.03
- Miller-Rabin素性测试
- 牛客练习赛51 D题
- c#简单的SQLHelp
- TCP SACK 介绍 转载
- python3安装web.py