捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
一种简洁的无限树生成方法
关键字:treeview 数据库
来 自:原创
平 台:Win2K/2003/NT/XP 下载所需:0 火柴
深浅度:中级 完成时间:2016-7-21
发布者:744840146 (奖励50火柴) 发布时间:2016-7-23
编辑器:Delphi7 语  种:简体中文
分 类:数据库 下载浏览:159/4323
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
图片如果打不开,说明流量不够了,请稍候下载……
  实现了一种简洁的数据库转对方法,使用数组保存当前目录,通过计算代码长度来计算父节点,只需要对数据库进行一次查询,速度很快。数据库中代码为
 001
 001001
 001002
 002
这种样子。

procedure loadTree;
var
  p: array of TTreeNode;//只用户保存当前的目录
  node: TTreeNode;//当前节点
  i: Integer;
begin
  tv.Items.Clear;
  with tv, Items, qry do
  begin
    SQL.Text := 'select * from sys_department order by code';
    Open;
    //最大保存16级
    SetLength(p, 16);
    while not Eof do
    begin
      //计算当前代码级数,每一级三位长度
      i := Trunc(Length(FieldByName('code').AsString) / 3);
      if i = 1 then
      begin
        p[0] := Items.Add(nil, FieldByName('title').AsString);
        node := p[0];
      end
      else
      begin
        p[i - 1] := AddChild(p[i - 2], FieldByName('title').AsString);
        node := p[i - 1];
      end;
      with node do
      begin
        Hint := FieldByName('title').AsString;
        Tag := FieldByName('id').AsInteger;
        Expanded := True;
      end;
      Next;
    end;
  end;
end;
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
没有相关文章
相关评论
共有评论4条 当前显示最后4条评论
wszysystem 2016-7-23 11:22:18
移动结点呢?
744840146 2016-7-23 11:27:20
仅有读取的,还没有完成移动树的功能
isxuzhu 2016-7-28 17:15:17
不错不错!
dajun 2016-8-12 9:40:14
hint不正确,都显示最后一项
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 1999-2012 V3.01 沪ICP备05001939号 更新RSS列表