工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > 开发专栏 > Delphi > 正文
一种树型控件在Delphi中的使用方法
[文章信息]
作者:袁军 黄树成 朱霞
时间:2005-02-24
出处:计算机与信息技术
责任编辑:方舟
[文章导读]
本文介绍了ExpressQuantumGrid Suite中树型控件 TdxDBTreeList 的使用方法和技巧……
advertisement
热点推荐
· 优化ASP.NET应用程序性能研究与探讨
· 设计欣赏:《夜精灵》之湖边感悟
· Word表格中单元格的合并与拆分
· 软件精选 C++建立对象间消息连接
· Windows XP无线网络安全精解
[正文]
  摘 要 树型控件是一种有效的表示方法,在数据库应用程序的开发中经常用它可视化表示对象之间的层次关系。本文介绍了Developer Express inc. 的ExpressQuantumGrid Suite中树型控件 TdxDBTreeList 的使用方法和技巧,特别是由多关系表构成树型结构的情况。

  关键词 树型控件,TdxDBTreeList,多关系表

  简介

  树型控件是一种有效的表示方法,在数据库应用程序的开发中经常用它可视化表示对象之间的层次关系,便于用户的操作和使用。比如:表示一个公司部门的层次结构;磁盘文件系统等。Borland 公司的Delphi 开发系统提供了一般的树型控件TTreeView,它可以在设计时或运行时生成必要的树型结构图,方法是通过生成控件对象的 Items 属性。设计时方式通过手工方式增加items,主要适用于静态、少量的 items 的情况;运行时方式通过程序生成树型结构的 items,它既适合静态又可用于动态的情况。在实际工作中,树状结构中的 items 经常来自数据库的一个或若干个关系表中,若想利用 TTreeView 控件生成相关的树状结构,设计时方式很难实现,运行时方式虽然可以实现,但需要程序员设计大量的代码,而且容易出错。因此,为了提高开发效率,减少重复开发,我们必须使用 data-aware 树型控件。Developer Express inc. 的ExpressQuantumGrid Suite 中树型控件TdxDBTreeList 属于 data-aware 型,items 不仅可以来自数据库的关系表,而且可以为数组等其它数据源。本文介绍了TdxDBTreeList 的使用方法和技巧,特别是由多关系表构成树型结构的情况。

  TdxDBTreeList 概述

  Developer Express inc. 开发的The ExpressQuantumGrid Suite 包含三个功能强大的控件,它们分别是:TdxTreeList 、 TdxDBTreeList 和 TdxDBGrid。TdxDBTreeList 直接继承于 TCustomdxDBTreeListControl ,它是 data-aware 型的,不仅结合标准的树型视图和列表控件的特性,而且具有独特的特性:运行时列定制、一个树结点内编辑任意列的能力和由dataset 生成树结构。

  使用该树型控件关键是设定属性页中几个重要的属性,分别为:DataSource、KeyField、ParentField 和 Bands。其中 DataSource 为提供树型结构的数据源,可以为来自一个或若干个关系表的元组的集合,因此它是必须的且不为空;KeyField 为 DataSource 的元组中唯一标识自身的关键码;树型控件表示的是对象之间的层次关系,除树根结点之外(最上层项目),每一个结点都有一个唯一的双亲结点(直接上层结点)。ParentField 即是元组中标识其双亲结点的 KeyField 。根结点的 ParentField 值必须不是 DataSource 代表的元组中 KeyField 值之一;Bands 控制树型结构显示的列数,通过它提供的 Add 方法增加合适的 Columns ,Columns 有两个重要的属性:Caption 和 FieldName 。Caption 可以设定树型结构的标题,FieldName 代表 DataSource 的元组表示树型结构项目的字段。例如用如下的部门关系表作为 DataSource 形成树型结构:

  表1 unti 关系表

UnitNo unitName superiorUnit
0000 东南大学 -1
0001 计算机系 0000
000101 硬件教研室 0001
000102 软件教研室 0001
0002 外语系 0000
000201 大外教研室 0002
000202 专外教研室 0002

  其中,unitNo 表示部门号;unitName 部门名称;superiorUnit 上级部门号。KeyField 设为unitNo;ParentField 设为 superiorUnit ;Bands 的一列 Columns 的 FieldName 设为 unitName 。这样形成如图1所示的树型结构。


图1 树型结构示例图

  多关系表生成的树结构

  实际应用中经常需要由两个或若干个关系表构成树型结构,从表面上看,TdxDBTreeList 仅支持一个关系表。我们可以巧妙地利用 SQL 中功能强大的 SELECT 语句生成必要的数据源 DataSource 。SELECT 语句不仅可以由一个关系表生成元组集合,还可以由多表生成,语法形式为:

select ………. Union select …….. union select ………。

  如存在如下两个关系表 unit 部门表和 teacher 教师表:

create table unit (
 unitNo varchar2(6) not null, ………..部门号
 unitName varchar2(30), ……….部门名称
 superiorUnitNo varchar2(6), …..上级部门号
 primary key (unitNo ))
 create teacher (
  teacherNo varchar2(8) not null , ……..教师号
  teacherName varchar2(10) , ……..教师名
  unitNo varchar(6), ……..教师所在教研室号
  primary key (teacherNo),
  foreign key unitNo(unitNo) references unit )

  其中,teacher 表的字段 unitNo 为引用unit表的外键。假设unit 的关系表内容同表1;teacher的内容如下:

  表2 teacher 关系表

teacherNo teacherName unitNo
00010001 Computer1 000101
00010002 Computer2 000102
00020001 Foreign1 000201
00020001 Foreign2 000202

  如要生成如图2所示的来自unit 和 teacher 两个关系表数据的树型结构:

     
         图2 待生成的unit 和 teacher 两个关系表数据的树型结构

  可以用下列语句:

select unitNo||' ' as unitNo,unitName, superiorUnit
from depart
union
select teacherNo as unitNo,teacherName as unitName,unitNo||' ' as superiorUnit from teacher

  生成的数据集作为 TdxDBTreeList 的数据源;unitNo 作为 KeyField;superiorUnit 作为 ParentField 等。需要注意的是,其中 uintNo||' '是一种字符串连接运算,之所以要这么做是因为 unit 关系模式中 unitNo 的字段宽度为 6 位,而 teacher 中的 teacherNo 为 8 位,作为 TdxDBTreeList 的 KeyField 必须统一二者的宽度,否则可能出现问题,读者可以亲自试验。

  结论

  树型控件是一种强有力的交互工具,利用第三方提供的 data-aware 树型控件可以效、可靠地开发应用程序。SQL 中的 SELECT 是一个功能强大的语句,灵活的使用它可以实现过程性语言所无法代替的效果。欲了解 TdxDBTreeList 的详细情况可以查看该公司的网站 www.devexpress.com 。

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • 利用Indy的TIdFtp控件实现FTP协议
  • 用Delphi实现Singleton模式
  • Delphi2005和DUnit搭建敏捷开发平台
  • Delpih 中的Windows API编程初步
  • 利用Delphi 2005 编写C#应用程序
  • 中国将从4月1日起收取电信网码号资源占用费
  • 信产部将整顿高清碟机标准 红头文件已印好
  • 九成手机贴牌商难迈核准制高门槛
  • 网e拍网站被黑 黑客大肆传播入侵方法
  • 新浪一前男员工与盛大一前女员工的深夜对话
  • 信产部正式将EVD颁布为电子行业推荐性标准
  • CIO转换角色定位:从“保姆”到“参谋”
  • 一流企业是怎样卖技术的?
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索