捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  粤ICP备10103342号-1 DELPHI盒子 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 盒子检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
树的快速创建算法 (只需读一次数据库)
关键字:快速创建树 算法 treeCreate treeview
来 自:原创
平 台:Win9x,Win2k/XP/NT,Win2003 下载所需:0 火柴
深浅度:中级 完成时间:2005/11/8
发布者:tangming2811 发布时间:2005/11/8
编辑器:DELPHI7 语  种:简体中文
分 类:组件 下载浏览:2/18669
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
无图片
树的快速创建算法,只需读一次数据库.

unit U_CreateTree;

interface

uses
  Classes, ComCtrls, ADODB, SysUtils;

type
  PPNodedata=^TNodeData;
  TNodeData = record
    ID:integer;//节点编号
    PID:Integer;//父节点编号
    Name:string;//节点名称
    child:PPNodedata;//孩子节点
    brather:PPNodedata;//兄弟节点
  end;
  PNodeData = PPNodeData;
  TTreeFill1 = class(TThread)
    TV: TTreeView;
    RootID:Integer;
    ptr:PPNodeData;
    root:PPNodeData;//根节点
    PointNode:PPNodeData;
    s:array[0..10000] of PPNodeData;
   constructor Create(Root_Id:integer;ATreeView: TTreeView);
  private
    procedure AddTree(Node: TTreeNode; PN: PNodeData);
  protected
    procedure Execute; override;
  end;

implementation

uses
  U_Main, DateUtils;

var count,nodeCount:Integer;
//----------
constructor TTreeFill1.Create(Root_Id:integer;ATreeView:TTreeView);
begin
  TV:= ATreeView;
  TV.Items.Clear;
  RootID:=Root_Id;
  inherited Create(False);
end;
//----------
procedure TTreeFill1.Execute;
var Query: TADOQuery;
    i,j:Integer;
    Node: TTreeNode;
begin
  FreeOnTerminate := True;
  TV.Items.Clear;
  with Query do
    begin
      Query := TADOQuery.Create(nil);
      Connection := frm_Main.ADOC_SQL;//需要更改
      Close;
      SQL.Clear;
      SQL.Add('Select * from 部门表 order by 部门编号 ');
      Open;
      first;
      count:=recordcount;
      if count>0 then
        begin
          for i:=0 to recordcount-1 do
          begin
          new(PointNode);
          PointNode^.child:=nil;
          PointNode.brather:=nil;
          PointNode^.ID:=fieldbyname('部门编号').AsInteger;
          PointNode^.PID:=fieldbyname('父部门编号').AsInteger;
          PointNode^.Name:=fieldbyname('部门名称').AsString;
          s[i]:= PointNode;
          next;
          end;
        end;
      free;
    end;
//------创建树----------
for i:=0 to count-1 do
  begin
    for j:=0 to count-1 do
     if s[i]^.PID=s[j]^.ID then
       begin
         if s[j]^.child=nil then
          s[j]^.child:=s[i]
         else
          begin
          ptr:= s[j]^.child;
          while (ptr.brather<>nil) do
          ptr:=ptr^.brather;
          ptr.brather:=s[i];
          end;
        end;
  end;
  for i:=0 to count-1 do
    if s[i]^.ID=RootID then
    begin
      root:=s[i]; //根节点
      break;
    end;
  Node:=TV.Items.AddObject(nil,Root^.Name,Root);//创建树的根节点
  nodeCount:=0; 
  Node.ImageIndex := 0;
  Node.SelectedIndex := 2;
  AddTree(Node,root);
end;

procedure TTreeFill1.AddTree(Node:TTreeNode;PN:PNodeData);
var
   nNode: TTreeNode;
   PNode,q: PNodeData;
begin
PNode:=PN;
if PNode.child<>nil then
  begin
     q:=PNode.child;
     while (q<>nil) do
      begin
       nNode:=TV.Items.AddchildObject(Node,q^.Name,q);
       nodeCount:=nodeCount+1;
       AddTree(nNode,q);
       q:=q^.brather;
      end;
  end;
end;

end.

作者qq:13575437
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
将数据记录直接高速生成树实例
400109 2007/12/2 下+9116/浏+18799 评+11
树 Tree 应用实例改进
xiaohua0851 2007/4/3 下+3456/浏+16174 评+0
测试一次性加载父子结构表数据到树控件
liqj 2006/12/28 下+3162/浏+11497 评+5
一张表的个人的树型结构程序例
suerwork 2006/10/24 下+2815/浏+12025 评+2
TreeView + SQL的应用
fcl91244 2006/7/25 下+4993/浏+18640 评+3
一种具有树型关系的对象管理
mrjiou 2006/5/17 下+1240/浏+11816 评+2
树 Tree 应用实例
chang888 2005/12/22 下+2816/浏+17959 评+8
快速创建树的方法 (抛弃拙劣的数据库结构和…
vvyang 2005/12/20 下+3513/浏+19814 评+52
一个创建树Tree的例子
lichina 2005/11/26 下+3140/浏+17121 评+4
树的快速创建算法 (只需读一次数据库)
tangming2811 2005/11/8 下+2/浏+18670 评+9
由特定数据库表格式(3个字段)生成TreeView树…
xvjie2002 2005/7/2 下+8006/浏+18115 评+15
用TreeView从数据库中动态装载信息
hxb_leiyuan 2005/3/15 下+5300/浏+23380 评+14
dbtree (数据库连接treeview函数)
lyq2276959 2004/12/8 下+4285/浏+21980 评+27
Treeview与数据库的联合使用实例
kwbin 2004/3/29 下+5342/浏+28738 评+39
TreeView与数据表关联应用实例
george_hu 2004/3/10 下+4606/浏+25700 评+19
相关评论
共有评论9条
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 技术支持:深圳市麟瑞科技有限公司 1999-2024 V4.01 粤ICP备10103342号-1 更新RSS列表