`
txf2004
  • 浏览: 7042062 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多
DBGRIDEH 是Enlib 3.0组件包中的组件之一。Enlib 3.0组件包是一位俄国人为增强Borland系列开发工具功能而开发的第三方组件,它具有界面友好、功能强大、开发效率高、、快速制作预
览/打印简单中国式报表等特点。因此,一推出即受到广大Borland程序员的青睐。目前这个版本支持Borland Delphi versions 4,5,6&7 和 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 )形式显示数据.

● 使用专门的函数和过程来存取以reg或ini文件格式保存的表格布局(包含各数据列表、数据列访问顺序、列宽、索引标识、行高等信息)文件。

● 通过设置数据单元格的hint和ToolTips属性,当移动鼠标到该单元格时,可以显示单元格容纳不下的文本内容.

● 将组件中数据导入/导出到Text, Csv, HTML, RTF, XLS 和内部数据等多种格式的文件中.

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

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

二、应用实例

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格式的图片。然后将DBGridEh的TitleImages设置为img1.最后在需要显示图片的列标题的imageindex中设置需要显示的img1中图片的序号。按F9执行一下程序,是不是很酷!

3、自动显示标题行的升降排序标志符(▽降序△升序)并做相应排序

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

OptionsEh=dghAutoSortMarking

Column.Title.TitleButton=true

SortMarkedColumns 为当前排序列可在运行时使用.

然后在该列的ontitleclick事件中添加代码:

procedureTForm_Query.DBGridEh1TitleBtnClick(Sender:TObject;
ACol:Integer;Column:TColumnEh);
var
sortstring:
string;//排序列
begin
//进行排序
withColumndo
begin
ifFieldName=''then
Exit;

caseTitle.SortMarkerof
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型字段不可做上述设置,否则系统会提示错误。
另外,组件说明书中提到不需要编写代码即可自动排序,但是不编写代码自动排序方法我还没找到,有知道的朋友烦请告诉我一声啊!让我也对程序代码进行“减肥”。
B、定制表格底部(footer)区域的汇总统计行
DBGridEh 组件可以在表格底部显示汇总行,如记录数合计、列字段累加和等信息。在FooterRowCount中设置底部显示的行数;然后在Footers 编辑器中添加一个或多个显示列,显示列可以是字段值累加和、记录数合计、字段值或静态文件等集合类型,可以在设计时在ValueType属性中设置,也可在运行时通过设置Footers[i].ValueType指定其类型。其含义见下表:

属性值
fvtSum
FvtCount
fvtFieldValue
fvtStaticText
含义
字段累加和
记录数合计
字段值
静态文本
切记设置DBGridEh.SumList.Active 为 True,才会进行汇总统计运算。需注意的是,如显示类型为不是当前列的累加和,则需在fieldname属性中指定汇总列,其它类型则无此要求。

C、定制表格数据单元外观

1、根据不同字段值显示相应的小图片

如根据库存材料的不同状态在数据单元格中显示相应图片,具体设置如下:

添加一个imagelist组件img

1并在其中添加一组bmp,ico格式的图片。然后将需要显示图片的列的imagelist属性设置为img1;在keylist属性中添加实际数据存储值,一行为一个值,切记一定要与imagelist中图片顺序一一对应,否则会张冠李戴,面目全非。还可在picklist中添加提示信息,也要求是一行为一个值,并设tooltip为true,那么,运行时当鼠标移动到该数据单元格时在显示图片的同时还显示提示信息,怎么样,功能够强大吧!可使用空格键或鼠标切换下一张图片,图片切换的同时也改变了实际存储数据值。也可通过shift+空格或鼠标切换为上一张图片。这样就实现了上下两个方向图片切换。

2、显示检查框(checkbox)外观

对于Boolean型字段值在dbgrideh组件中自动显示为检查框。通常情况下我们需将非Boolean型字段值也此外观显示,如性别字段为字符型,字段值为“男性”时为选中,“女性”时为未选中。需要在keylist编辑器中设置实际存储数据值,第一行为选中时的值“1”,第二行为未选中的值“0”,第三行为其它值“2”,支持三态显示。

3、显示单、多列下拉列表

根据单元格字段值显示与其相关的其它表字段内容,如部门代码字段显示为部门名称。首先需在当前表中新建立一个lookup型字段,设置好关联表的字段和返回字段。多列下拉列表需在单列基础上做进一步设置,在LookupDisplayFields中以“;”号将关联表中多个字段分隔开,而且返回字段必须作为其中的第一项。具体设置如下:

dropdownshowtitles=true

dropdownsizing=true

dropdownwidth=-1

例:当前表中只有部门代码无部门名称列,需与部门表建立关联,当点击单元格时以部门代码、部门名称两列下拉列表形式显示。

4、显示日历下拉列表

Date 和 DateTime类型字段值均可以此形式显示。外观与编辑框无异,当点击该单元格时,右侧会出现“▽”符号,点击之即可出现日历下拉列表。有时不希望出现日历下拉列表,只需设置Column.ButtonStyle属性为 cbsNone即可,此方法同样适用于其它组件不以特殊外观显示的情况。

5、3D或平面外观效果

设置OptionsEh属性 中fixed, frozen, footer 和 data rows等属性表格外观为3D效果,设置flat为true则为平面外观效果.

6、锁定多列不滚动

当表格水平方向信息在一屏幕显示不下时,此项功能非常有用。例如,工资表格中包含姓名、基本工资、绩效工资等信息一屏幕显示不下,需要通过移动水平滚动条显示下一屏信息。如果不锁定关键字段列如姓名,则移动到下一屏时就不知道此条记录对应的姓名。因此,在实际应用中经常需锁定多列不滚动。

例:姓名字段为表格第二列,则设置FrozenCols=2.这样当一屏幕显示不下,通过移动水平滚动条显示下一屏信息时,表格前两列不滚动,作为参照列。

D、导入/导出数据

导入/导出数据在实际处理过程中是比较烦琐的。但是Enlib3.0提供了一系列函数让你轻松实现此功能,而且支持的文件格式很多:Text, Csv, HTML, RTF, XLS 和内部数据格式。除此之外,还可对任意选择的数据区域进行操作。函数如下:

Pascal: SaveDBGridEhToExportFile(TDBGridEhExportAsText,DBGridEh1,'c:\temp\file1.txt',False);

C++: SaveDBGridEhToExportFile(__classid(TDBGridEhExportAsText),DBGridEh1,"c:\\temp\\file1.txt",false);

说明:其中false参数表示导出的是选中的局部数据区域数据,true则为整个表格数据。

例:将当前表格中数据导出为EXCEL等格式文件。

在窗体中添加一个SaveDialog组件和“导出”按钮B_exp,在“导出”按钮的click事件中添加如下代码:

procedureTForm1.B_expClick(Sender:TObject);
varExpClass:TDBGridEhExportClass;
Ext:
string;
begin
SaveDialog1.FileName:
='file1';
if(ActiveControlisTDBGridEh)then
ifSaveDialog1.Executethen
begin
caseSaveDialog1.FilterIndexof
1:beginExpClass:=TDBGridEhExportAsText;Ext:='txt';end;
2:beginExpClass:=TDBGridEhExportAsCSV;Ext:='csv';end;
3:beginExpClass:=TDBGridEhExportAsHTML;Ext:='htm';end;
4:beginExpClass:=TDBGridEhExportAsRTF;Ext:='rtf';end;
5:beginExpClass:=TDBGridEhExportAsXLS;Ext:='xls';end;
else
ExpClass:
=nil;Ext:='';
end;
ifExpClass<>nilthen
begin
ifUpperCase(Copy(SaveDialog1.FileName,Length(SaveDialog1.FileName)-2,3))<>
UpperCase(Ext)then
SaveDialog1.FileName:
=SaveDialog1.FileName+'.'+Ext;
SaveDBGridEhToExportFile(ExpClass,DBGridEh1,SaveDialog1.FileName,False);
//其中false为局部数据
end;
end;
end;

E、将存在的DBGrid组件转换为DBGridEh组件.

通过笔者上述介绍,想必你已经对Enlib组件包产生好感而且越越欲试了,那就赶快下载使用吧。但是,使用一段时间并且喜欢上它后,你又有新的问题产生了,那就是为了保持界面风格一致,能否将已经开发完成的应用程序中的DBGrid组件能否转换为DBGridEh组件,进行一次彻底革命?答案是肯定的。尽管DBGridEh并不是继承于CustomDBGrid组件, 但是DBGridEh和DBGrid它们之间有许多相同之处.因此可以相互转换。

具体步骤如下:

1、在Delphi IDE下打开TDBGrid组件.

2、通过组合键Alt-F12将form 以文本方式显示;

3、将所有TDBGrid 对象名改变为 TDBGridEh对象名,如:DBGrid1: TDBGrid改为 DBGrid1: TDBGridEh;

4、再次通过组合键Alt-F12将文本方式恢复为form 显示;

5、将form各相关事件中定义的所有TDBGrid改为TDBGrideh,如DBGrid1: TDBGrid改为DBGrid1: TDBGridEh;

6、重新编译应用程序。

以上只是本人在实际程序开发过程中使用dbgrideh组件的一些体会,当然其功能还远不止这些。欢迎朋友与我做进一步交流。

分享到:
评论

相关推荐

    DBGridEh开发使用攻略

    DBGridEh是Enlib 3.0组件包中的一个关键组件,专为增强Borland开发工具...总之,DBGridEh组件是Borland开发环境中一个强大且灵活的数据库显示工具,能够显著提升开发效率,创建出功能丰富、用户友好的数据库应用程序。

    DBGridEh of Enlib 3.0组件

    DBGridEh组件无论在外观上还是功能上都非常类似Borland开发工具中现有的dbgrid组件,它除了提供dbgrid组件的全部功能外,还增加了下列新功能: ● 任意选择多行、列或矩形区域的数据. ● 为多列标题设定共同的父...

    Delphi即时报表DBgrideh实例源码

    Delphi是一款强大的Windows应用程序开发工具,它以其直观的可视化编程界面和高效的编译器而闻名。在Delphi中,DBGridEh是一个扩展组件库,主要用于处理数据网格展示,提供了比标准DBGrid更丰富的功能和更好的性能。...

    delphi5+存储过程+DBGridEh组件+导出Excel

    delphi5+存储过程+DBGridEh组件+导出Excel

    dbgrideh的用法

    Enlib 3.0组件包是一位俄国人为增强Borland系列开发工具功能而开发的第三方组件,它具有界面友好、功能强大、开发效率高、、快速制作预览/打印简单中 国式报表等特点。因此,一推出即受到广大Borland程序员的青睐。...

    DBGridEH控件的实用化

    DBGridEh控件是Delphi开发环境中一个增强版的数据库网格组件,它在标准的DBGrid基础上提供了更多的功能和自定义选项,使得开发者能够更好地展示和操作数据库数据。这个控件尤其适用于需要进行复杂数据展示和用户交互...

    dbgrideh傻瓜式安装

    它提供了丰富的功能,包括数据编辑、排序、过滤、分组以及自定义列等,使得开发者能够轻松地在应用程序中集成高效的数据网格组件。对于那些不熟悉复杂安装流程的用户,dbgrideh提供了“傻瓜式安装”方法,旨在让安装...

    DBGridEH好用的数据控件

    DBGridEH是一款在Delphi开发环境中广泛使用的高效数据可视化控件,它为开发者提供了一种强大的方式来展示和操作数据库中的数据。这个控件在原生的TDBGrid基础上进行了扩展和增强,提供了更多的功能和自定义选项,...

    DBGRIDEH使用說明

    DBGRIDEH是Enlib 3.0组件包中的一款强化型表格组件,特别适合在Borland开发环境中,如Delphi 7和C++ Builder 4 & 5,用于构建高效、功能丰富的数据库应用系统客户端。这个组件以其直观的用户界面、强大的功能和便捷...

    DBGridEh应用实例

    以上是DBGridEh组件在实际应用中的几个关键点,通过这些定制,开发者可以创建出高度交互且美观的数据展示界面。不过,DBGridEh还有更多高级特性,例如列拖放、过滤、分页等,等待开发人员进一步探索和利用。

    dbgridEh,列中可以有复选框

    `dbgridEh`是EhLib组件库的一部分,EhLib是一个广泛使用的第三方组件集,它包含了大量用于数据库应用开发的组件。`dbgridEh`继承自`TDBGrid`,并且在其基础上增加了许多高级功能,比如支持自定义列类型、编辑器、列...

    dbgrideh中添加checkbox源码

    在 Delphi 项目中,我们可以使用 ClientDataSet 组件来连接数据库,并使用 dbgrideh 组件来显示数据。在 dbgrideh 中,我们可以添加 checkbox 列,并设置其为可编辑状态,以实现全选或反选的功能。 在实现上述功能...

    DBGridEh首列显示行号的Demo

    DBGridEh是一款在Delphi或C++Builder开发环境中广泛使用的增强型数据库网格控件,它提供了许多原生DBGrid不具备的功能。...通过学习和实践,开发者能够更好地掌握DBGridEh的使用,从而在数据库应用开发中更加得心应手。

    DELPHI 表格控件DBGridEh史上最全使用资料(101页)

    DELPHI表格控件DBGridEh是应用在Delphi开发环境中的一款增强型表格组件,它提供了丰富多样的数据操作和显示功能,能够极大地简化开发人员在表格操作方面的编码工作。接下来,将从DBGridEh的功能、应用实例以及与之...

    DELPHI_表格控件DBGridEh资料_delphi_DBGridEh_

    总的来说,DBGridEh是Delphi开发人员在构建数据库应用程序时的强大工具,它的功能强大且易于定制,能够显著提升用户体验并简化开发工作。通过深入学习和实践,开发者可以充分利用DBGridEh的潜力,打造出高效、美观的...

    Delphi7表格插件dbgridEH3.6下载

    Delphi 7是一款经典的Windows应用程序开发工具,以其强大的VCL框架和高效的编译器而闻名。在开发过程中,数据可视化是至关重要的,其中表格控件是常用的数据展示方式。DBGrid是Delphi自带的一种标准表格组件,用于...

    dbgrideh一键安装for D6/D7

    dbgrideh是一款强大的数据库网格控件,它提供了丰富的功能和优秀的性能,用于在Windows应用程序中显示和编辑数据。 安装dbgrideh通常涉及多个步骤,包括下载库文件、解压、将单元文件添加到项目路径、注册组件等。...

    Delphi Dbgrideh多表头导出excel非comobj

    标题中的"Delphi Dbgrideh多表头导出excel非comobj"指的是在Delphi编程环境下,使用Dbgrideh组件处理具有复杂表头的数据,并将其导出为Excel文件,但不依赖于COM对象(如Microsoft Excel)来实现这一功能。...

    DBGridEh表中表

    在Delphi7开发环境中,DBGridEh是一个增强型的表格控件,它提供了比标准DBGrid更多的功能和灵活性,特别是在处理复杂数据展示时。在Access数据库作为后端的情况下,DBGridEh能够有效地实现主从表关系的展示,这就是...

    设置DBGRidEh过滤属性.rar_DBGridEh_DBGridEh 过滤属性设置_EhLib_设置DBGRidEh过滤属性

    在Delphi数据库应用程序开发中,Ehlib的DBGridEh数据浏览控件的应用很广泛。然而在应用中通常属性设置方面会使许多人摸不着头脑。这个小程序也许会为朋友们提供些帮助

Global site tag (gtag.js) - Google Analytics