Delphi treeview 多结点绑定Delphi treeview 多结点绑定
1. 创建一个单元如下
unit uDialogFindUnassignedUsersInfo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uDialogBase, ComCtrls, RzTreeVw, StdCtrls, Menus, ADODB, DB;
type
TfrmDialogFindUnassign...
Delphi treeview 多结点绑定
1. 创建一个单元如下
unit uDialogFindUnassignedUsersInfo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uDialogBase, ComCtrls, RzTreeVw, StdCtrls, Menus, ADODB, DB;
type
TfrmDialogFindUnassignedUsersInfo = class(TfrmDialogBase)
GroupBox1: TGroupBox;
tvSystemManagerInfo: TRzTreeView;
ADOConnection1: TADOConnection;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
function Execute: Boolean;
procedure CreateChildTree(ParentNode: TTreeNode);
procedure ShowChildTree;
end;
type
PNodeInfo = ^TNodeInfo;
TNodeInfo = record
ID: string;
Name: string;
end;
var
frmDialogFindUnassignedUsersInfo: TfrmDialogFindUnassignedUsersInfo;
implementation
uses
uDataModule;
{$R *.dfm}
procedure TfrmDialogFindUnassignedUsersInfo.CreateChildTree
(ParentNode: TTreeNode);
var
adoQuery: TADOQuery;
ChildNode: TTreeNode; // 孩子结点
ChildNodeInfo: PNodeInfo; // 孩子结点信息
ParentID: string;
begin
inherited;
adoQuery := TADOQuery.Create(nil);
with adoQuery do
begin
try
Connection := ADOConnection1;
Close;
SQL.Clear;
if (PNodeInfo(ParentNode.Data)^.ID = '') then
ParentID := '0'
else
ParentID := PNodeInfo(ParentNode.Data)^.ID;
SQL.Add('SELECT t_ID,t_Name FROM tbl_Test WHERE t_ParentID =' + ParentID);
Open;
while not Eof do
begin
New(ChildNodeInfo);
ChildNodeInfo^.ID := FieldByName('t_ID').AsString;
ChildNodeInfo^.Name := FieldByName('t_Name').AsString;
ChildNode := tvSystemManagerInfo.Items.AddChildObject(ParentNode,
ChildNodeInfo^.Name, ChildNodeInfo);
CreateChildTree(ChildNode); // 进行递归
Next;
end;
Close;
except
on E: Exception do
Free;
end;
end;
end;
procedure TfrmDialogFindUnassignedUsersInfo.ShowChildTree; var
ChildNode: TTreeNode; // 孩子结点
ChildNodeInfo: PNodeInfo; // 孩子结点信息
begin
inherited;
New(ChildNodeInfo);
ChildNodeInfo^.ID := '0'; // 此方法中最顶结点为0标识
ChildNodeInfo^.Name := '';
ChildNode := tvSystemManagerInfo.Items.AddChildObject(nil, '全部',
ChildNodeInfo);
CreateChildTree(ChildNode); // 进行递归
tvSystemManagerInfo.FullExpand; end;
procedure TfrmDialogFindUnassignedUsersInfo.FormShow(Sender: TObject);
begin
inherited;
ShowChildTree;
end;
procedure TfrmDialogFindUnassignedUsersInfo.FormClose(Sender: TObject;
var Action: TCloseAction); begin
inherited;
frmDialogFindUnassignedUsersInfo := nil;
end;
End.
到此,绑定结果。
本文档为【Delphi treeview 多结点绑定】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。