Delphi中动态加载TreeView信息
2021-02-06 15:17
标签:and begin click message not dia bsp end span Delphi中动态加载TreeView信息 标签:and begin click message not dia bsp end span 原文地址:https://www.cnblogs.com/jijm123/p/11408413.htmlunit 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 (TNodenil) and (TNode=TreeView1.Selected) then
ShowMessage(PNodeInfo(TNode.Data)^.Url); //显示双击结点的信息
end;
end.
上一篇:Delphi实现树型结构具体实例
文章标题:Delphi中动态加载TreeView信息
文章链接:http://soscw.com/index.php/essay/51788.html