delphi中父母表示法递归构造treeview(在递归函数之外查询数据库)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ComCtrls, StdCtrls;
type
PTNodeInfo=^TNodeInfo;
TNodeInfo=record
id,preId:string;
end;
type
TArr=array of TNodeInfo;
type
TForm1 = class(TForm)
Button1: TButton;
tree: TTreeView;
Query1: TADOQuery;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure CreateTree(var arr:TArr);
procedure InitArray(var arr:TArr);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.InitArray(var arr:TArr);
var
Query:TADOQuery;
i:integer;
sql:string;
begin
Query:=TADOQuery.Create(nil);
Query.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=E:\实验\递归父母表示\新建 Microsoft Office Access 应用程序.mdb;Persist
Security Info=False';
sql:= 'select * from table1';
Query.Close;
Query.SQL.Clear;
Query.SQL.Add(sql);
Query.Open;
Query.First;
SetLength(arr,Query.RecordCount);
i:=0;
while not Query.Eof do
begin
arr[i].id:=Query.fields[0].AsString;
arr[i].preId:=Query.Fields[1].AsString;
Inc(i);
Query.Next;
end;
end;
procedure TForm1.CreateTree(var arr:TArr);
var
p:pTNodeInfo;
procedure CreateTree(Pre:PTNodeInfo;preNode:TTreeNode;var arr:TArr);
var
pInfo:pTNodeInfo;
node:TTreeNode;
i:integer;
begin
i:=length(arr)-1;
while i>=0 do
begin
new(pInfo);
pInfo:=@arr[i];
if pInfo.preId=pre.id then
begin
node:=tree.Items.AddChild(preNode,pInfo.id);
node.Data:=pInfo;
CreateTree(pInfo,node,arr);
end;
i:=i-1;
end;
end;
begin
new(p);
p.id:='000';
createTree(p,nil,arr);
tree.FullExpand;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
arr:TArr;
i:Integer;
begin
InitArray(arr);
CreateTree(arr);
memo1.Clear;
for i:=0 to tree.Items.Count-1 do
memo1.Lines.Add(ptnodeinfo(tree.Items[i].data).Id+' '+ptnodeinfo(tree.Items[i].data).preId);
end;
end.转载于:https://www.cnblogs.com/piaoliuxia/archive/2008/09/06/1937319.html
- 点赞
- 收藏
- 分享
- 文章举报
- delphi中父母表示法递归构造treeview(在递归函数之外查询数据库)
- delphi中父母表示法递归构造treeview(在递归函数之外查询数据库)
- delphi中父母表示法递归构造treeview(在递归函数之外查询数据库)
- delphi中递归算法构建treeView(查询数据库在递归函数内部)
- Delphi ADOQuery连接数据库的查询、插入、删除、修改
- delphi数据库中ADOConnecting位置对查询结果的影响
- C语言数据库操作如何查询某两条相邻数据并表示出来?
- Delphi 数据库查询(TADOQuery)
- DELPHI设计数据库查询的几种方法
- Delphi 数据库查询(TADOQuery)
- Delphi 数据库查询(TADOQuery)
- Delphi 数据库查询(TADOQuery)
- Delphi(ADOConncction+ADOQuery+DataSoure+TListView)TListView显示数据库查询数据!!!--演示案例
- 数据库连接查询之外连接查询
- Delphi数据库的拼音检索(查询)方案-汉字转换成拼音
- 数据库未打开 仅允许在固定表 试图中查询或者无法表示/锁定数据文件
- Delphi-ADOQuery连接数据库的查询、插入、删除、修改
- 阿庆SQL智能查询分析器,使用delphi开发的一个数据库查询分析管理工具.分享给大家
- Delphi实现数据库查询编辑功能
- 数据库SQL中的分钟表示应该使用MI(非常重要的一个问题,以前一直认为和java中一样,用mm就可以表示);校对规则(查询时区分大小写)