现在的位置: 首页 > 综合 > 正文

DBGRIDEH 组件在Borland开发工具中应用全攻略

2013年12月12日 ⁄ 综合 ⁄ 共 2925字 ⁄ 字号 评论关闭

DBGRIDEH Enlib 3.0组件包中的组件之一。Enlib 3.0组件包是一位俄国人为增强Borland系列开发工具功能而开发的第三方组件,它具有界面友好、功能强大、开发效率高、、快速制作预览/打印简单中国式报表等特点。因此,一推出即受到广大Borland程序员的青睐。目前这个版本支持Borland Delphi versions 4567 Borland C++ Builder versions 4 & 5 ,可极大地提高数据库应用系统客户端的性能。许多商品软件如《速达2000》等都使用了该组件。下面本人将使用该组件在实际系统开发过程中的经验总结如下。

    Enlib3.0组件包中最重要而且功能最强大的莫过于dbgrideh组件,本文介绍的所有实例均在Delphi 7开发环境下调试通过。

一、DBGridEh(增强型表格组件)功能详解
    DBGridEh
组件无论在外观上还是功能上都非常类似Borland开发工具中现有的dbgrid组件,它除了提供dbgrid组件的全部功能外,还增加了下列新功能:

任意选择多行、列或矩形区域的数据.
为多列标题设定共同的父标题行.
表格底部(Footer 区显示求和、计数和其它统计信息.
自动调整组件宽度与客户区域等宽.
设置标题行、数据行的高度.
超长的标题行、数据行文本自动折行处理.
标题行可作为按钮使用,并可选择是否显示排序标志符(降序升序).
点击列标题可对当前列自动排序而无需编写代码.
能够自动设置删除超长文本显示不下的多余部分,并以省略号()代替.
自动搜索字段(Lookup)数据单元格以单、多列字段下拉列表形式显示.
自动搜索字段(Lookup)数据单元格可进行增量搜索.
可锁定任意列数在屏幕水平方向不滚动.
日期时间控件DateTime picker 可支持TDateField and TDateTimeField两种日期格式.
根据字段不同值显示关联的ImageList 对象图片组中的图片.
隐藏任意列.
显示3D风格的数据区、表尾区和锁定滚动列,制作3D外观表格.
显示Memo类型字段值.
BOOLEAN型数据外,其它数据类型也可以检查框( checkbox )形式显示数据.
使用专门的函数和过程来存取以regini文件格式保存的表格布局(包含各数据列表、数据列访问顺序、列宽、索引标识、行高等信息)文件。
通过设置数据单元格的hintToolTips属性,当移动鼠标到该单元格时,可以显示单元格容纳不下的文本内容.
将组件中数据导入/导出到Text, Csv, HTML, RTF, XLS 和内部数据等多种格式的文件中.

    DBGridEh组件主要属性见下表(其它属性参见dbgrid):

    DBGridEh组件事件基本与DBGrid相同,在此不再赘述。
 

 

2004-1-2 11:32:00   

 2004-1-2 11:33:10   

 

 2004-1-2 11:33:33   

 

 2004-1-2 11:37:47   

二、应用实例
    Enlib3.0
组件包安装成功后,在系统的组件面板中会显示“enlib”组件包标签(如图1),添加DBGridEh到窗体的方法与其它组件一样。在窗体中添加该组件后,请跟我一起来实现图2的一些特殊效果,具体属性设置请参考属性表的说明。

A、定制标题行
 1
、制作复杂标题行
   
标题行可设为2行以上高度,并可以为多列创建一个共同的父标题行。为实现这个效果,需在各个列标题属性中以分隔父标题和子标题,如办公用品包括代码和名称两部分,具体属性设置如下:

usemultititile=true;
titlelines=2
DBGridEh.Columns[0].Title.Caption := '
办公用品|代码';
DBGridEh.Columns[1].Title.Caption := '
办公用品|名称';

 2、标题行显示图片
   
实现图2中的购买人标题行显示效果。首先添加一个imagelist组件img1并在其中添加一组bmp,ico格式的图片。然后将DBGridEhTitleImages设置为img1.最后在需要显示图片的列标题的imageindex中设置需要显示的img1中图片的序号。按F9执行一下程序,是不是很酷!

 3、自动显示标题行的升降排序标志符(降序升序)并做相应排序
    DBGridEh
组件可以在标题行单元格中显示小三角形升、降排序标志符图片,在运行时可点击标题行,图片自动切换并做相应排序。具体属性设置如下:

OptionsEhdghAutoSortMarking
Column.Title.TitleButton
true

SortMarkedColumns 为当前排序列可在运行时使用.
然后在该列的ontitleclick事件中添加代码:
procedure TForm_Query.DBGridEh1TitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh);
var
  sortstring:string; //
排序列
begin
  //
进行排序
  with Column do
  begin
    if FieldName = '' then
      Exit;
    case Title.SortMarker of
      smNoneEh:
      begin
        Title.SortMarker := smDownEh;
        sortstring := Column.FieldName + ' ASC';
      end;
      smDownEh: sortstring := Column.FieldName + ' ASC';
      smUpEh: sortstring := Column.FieldName + ' DESC';
    end;
  //
进行排序
    try
      dataset.Sort := sortstring //dataset
为实际数据集变量名
    except
    end;
  end;
end;

切记lookup型字段不可做上述设置,否则系统会提示错误。

    另外,组件说明书中提到不需要编写代码即可自动排序,但是不编写代码自动排序方法我还没找到,有知道的朋友烦请告诉我一声啊!让我也对程序代码进行减肥

 

 2004-1-2 11:38:16   

 

 2004-1-2 11:39:41   

B、定制表格底部(footer)区域的汇总统计行
    DBGridEh
组件可以在表格底部显示汇总行,如记录数合计、列字段累加和等信息。在FooterRowCount中设置底部显示的行数;然后在Footers 编辑器中添加一个或多个显示列,显示列可以是字段值累加和、记录数合计、字段值或静态文件等集合类型,可以在设计时在ValueType属性中设置,也可在运行时通过设置Footers[i].ValueType指定其类型。其含义见下表:

    切记设置DBGridEh.SumList.Active True,才会进行汇总统计运算。需注意的是,如显示类型为不是当前列的累加和,则需在fieldname属性中指定汇总列,其它类型则无此要求。

 

 2004-1-2 11:43:13   

 

抱歉!评论已关闭.