unit Unit3;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, DB, ADODB, StdCtrls; type PNodeInfo=^TNodeInfo;
TNodeInfo=record
ID:string;
FullName:string;
Url:string;
end; TForm3 = class(TForm)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
TreeView1: TTreeView;
Button1: TButton;
procedure CreateChildTree(ParentNode: TTreeNode);
procedure CreateViewTree(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure TreeView1DblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form3: TForm3; implementation {$R *.dfm} procedure TForm3.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,Url 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;
ChildNodeInfo^.Url:=FieldByName('Url').AsString;
ChildNode:=TreeView1.Items.AddChildObject(ParentNode,(ChildNodeInfo^.FullName),ChildNodeInfo); //添加孩子结点,并关联孩子结点信息
CreateChildTree(ChildNode); //进行递归
Next;
end;
Close;
end;
end; procedure TForm3.CreateViewTree(Sender: TObject);
var
BootNode:TTreeNode; //根结点
BootNodeInfo:PNodeInfo; //根结点信息
begin
with ADOQuery1 do
begin
SQL.Clear;
SQL.Add('SELECT ID,FullName,Url FROM PInfo WHERE ParentID IS NULL'); //获取根结点信息
Open; New(BootNodeInfo);
BootNodeInfo^.ID:=FieldByName('ID').AsString;
BootNodeInfo^.FullName:=FieldByName('FullName').AsString;
BootNodeInfo^.Url:=FieldByName('Url').AsString;
TreeView1.Items.Clear;
BootNode:=TreeView1.Items.AddChildObject(nil,(BootNodeInfo^.FullName),BootNodeInfo); //添加根结点,并关联根结点信息
Close;
end;
CreateChildTree(BootNode); //创建子树
TreeView1.FullExpand; //展开所有树结点
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
CreateViewTree(Sender);
end; procedure TForm3.TreeView1DblClick(Sender: TObject);
var
TNode:TTreeNode;
X,Y:Integer;
begin
//获取双击的结点
with TreeView1 do
begin
X:=ScreenToClient(Mouse.CursorPos).X;
Y:=ScreenToClient(Mouse.CursorPos).Y;
TNode:=GetNodeAt(X,Y);
end;
if (TNode<>nil) and (TNode=TreeView1.Selected) then
ShowMessage(PNodeInfo(TNode.Data)^.Url); //显示双击结点的信息
end; end.

最新文章

  1. C语言 &#183; 4-3水仙花数
  2. 新作《ASP.NET Web API 2框架揭秘》正式出版
  3. DOM-Document类型
  4. BZOJ 1799 同类分布
  5. Struts2注解使用说明
  6. 【BZOJ 3672】【UOJ #7】【NOI 2014】购票
  7. HashTable、HashSet和Dictionary的区别
  8. 清除linux缓存命令
  9. zabbix服务器监控suse系统教程
  10. 理解模数转换器的噪声、ENOB和有效分辨率
  11. C++@类对象和类指针的区别(转)
  12. php通过文件头检测文件类型通用类(zip,rar…)(转)
  13. QT5.1.1中MinGW4.8的环境变量配置
  14. hash表的建立和查找
  15. 设计模式(三)-- 适配器模式(Adapter)
  16. CDMA sid, nid, bid 含义解释
  17. POJ 1023 The Fun Number System
  18. The summary of Interview
  19. JAVAEE——BOS物流项目09:业务受理需求分析、创建表、实现自动分单、数据表格编辑功能使用方法和工作单快速录入
  20. 【Android 应用开发】Android 平台 HTTP网速测试 案例 API 分析

热门文章

  1. 《ABCD组》第三次作业:团队项目的原型设计
  2. LevelDB的源码阅读(三) Get操作
  3. Ajax使用方法
  4. 加入redis缓存的 优 缺 点以及解决方案
  5. HTML 003 元素
  6. 007——转载-MATLAB读取文件夹下的文件名
  7. redis默认端口6379以其名命名,是我孤陋寡闻了,是名性感美女(梅尔兹)
  8. 详解DLX及其应用
  9. mysql插入数据自动生成主键uuid
  10. Wireshark 序