如何使用 Ehlib 实现自动排序

转载 2004年08月11日 08:17:00

如何使用 Ehlib 实现自动排序

翻译:nxyc_twz@163.com

??? 在 Ehlib 2.6 版的 DataService 文件夹下提供了一些可以使数据集实现自动排序的文件。TDBGridEh 使用这些文件中的相关对象可以实现当排序标记发生变化时实现自动排序。

??? 如果你改变了数据网格及标题的排序标记而没有书写 OnSortMarkingChanged 事件,数据网格将尝试自动进行数据排序。DBGridEhDataService 尝试通过 GetDatasetFeaturesForDataSet 查找 TDataSet 中可以排序的特定的对象。正如你所知道的,TDataSet 不支持数据排序,但它的派生对象 TQuery 或 TClientDataSet 却允许实现数据排序。使用过程 RegisterDatasetFeaturesEh ,你可以注册 TDatasetFeaturesEhClass 类,该类可以实现对 TQuery, TADOQuery 以及 TClientDataSet 对象进行排序。简单地通过 uses 子句添加 Ehlib...(EhlibBDE,EhlibADO,EhlibCDS)的单元之一到你的工程的任意单元中,与它们相连的数据网格将自动对该数据集进行排序。 EhLibBDE, EhLibADO, EhLibCDS 通过在单元数据集中调用 RegisterDatasetFeaturesEh 过程来实现初始化。对于其它数据集类型,你必须编写、并注册可以实现该数据集排序的新对象。书写过程 T[你的数据集]DatasetFeaturesEh.ApplySorting ,你可以存取那些使用了 SortMarkedColumns 属性的列以实现直接排序。你可以查看 DbUtilsEh 单元中的示例以明白如何编写T[你的数据集]DatasetFeaturesEh 类及查看 EhLibBDE 单元以明白如何注册 T[你的数据集]DatasetFeaturesEh 类。

引擎?????????? 数据集?????????? 单元文件

BDE??????????? TQuery?????????? EhLibBDE?
ADO??????????? TADOQuery??????? EhLibADO?
ClientDataSet? TClientDataSet?? EhLibCDS?
DBExpress????? TSQLQuery??????? EhLibDBX
InterBase????? Express TIBQuery EhLibIBX

译者注:

实际上,实现该功能非常简单(以下我以BDE为例说明如何实现自动排序):

1.在窗体上放置一个 DBGridEh 组件,并将其连接到相应的 BDE 数据集;

2.将该组件的[OptionsEn]中的 dgAutoSortMarking 属性设置为 True;

3.双击该组件,在其弹出的属性编辑器中添加相关字段;

4.将要排序的字段的属性列表的 [Title]的 TitleButton 属性设置为 True;

5.最后,千万不要忘了在 uses 子句中加上 EhlibBDE单元。

好了,使用上面的方法,你会发现原来通过 Ehlib 实现数据的自动排序居然如些简单!

D7+Ehlib 7.0.133 DBGridEh,点击列标题排序属性设置好之后,有时无法排序的解决办法

如题,Delphi 7下安装了Ehlib 7.0.133 版本,使用DBGridEh-->DataSource-->TMemTableEh-->TADODataDriverEh连接这些控件,设置了DB...
  • lotusyangjun
  • lotusyangjun
  • 2016-06-15 10:41:06
  • 1366

EhLib控件使用---DBGrideh实现自动排序

1.在optioneh中设置: AutosortMarking:=True 2.设置DbGridEh的属性:(不一定总要设置,与使用的数据连接有关) sortlocal:=True; ...
  • Trassion
  • Trassion
  • 2015-11-17 13:23:42
  • 1277

如何使用 Ehlib 实现自动排序(转)

在 Ehlib 的 DataService 文件夹下提供了一些可以使数据集实现自动排序的文件。TDBGridEh 使用这些文件中的相关对象可以实现当排序标记发生变化时实现自动排序。   如果你改变了数...
  • lotusyangjun
  • lotusyangjun
  • 2010-12-13 12:59:00
  • 655

ehlib5.6 中,dbgrideh控件如何实现点击字段名称排序

1、DBGridEh1-->OptionsEh-->dghAutoSortMarking   设置为True。 2:DBGridEh1-->Columns-->Title-->TitleButton...
  • bq_cui
  • bq_cui
  • 2012-07-19 14:06:17
  • 1518

DBGridEh使用UniDac默认不能排序和过滤的解决方案

以下是EhLib论坛找到的一个帖子中关于此问题解决方案的英文原文 Copy EhLibUniDAC.pas file from \DataService\Others\ folder to the ...
  • wozengcong
  • wozengcong
  • 2013-09-20 15:00:45
  • 2282

EhLib 使用教程:Ehlib 过滤功能的实现

DBGridEh 可以为你提供一个更加美观和功能丰富的 DBGird,比如平面化显示、奇偶行不同颜色(斑马线)、快速查找、合计行、Grid 打印等。在 Ehlib 的后期版本中,还提供了一个非常强大的...
  • beyondqd
  • beyondqd
  • 2012-05-31 16:43:44
  • 4613

EhLib控件的使用说明

EhLib控件的使用说明 一. DBGridEh组件: 1.      属性。       2.      使用统计栏功能 (1)   设置统计栏行数,将DBGridEh.Foot...
  • beyondqd
  • beyondqd
  • 2012-05-31 17:54:11
  • 3281

DBGridEh6用DBGridEh控件设置排序和筛选

我原来用DBGridEh6.1.139版本的时候用DBGridEh控件设置排序设置以下两步就可以了 1.将该组件的[optionsen]中的 dgautosortmarking 属性设置为 true;...
  • wozengcong
  • wozengcong
  • 2013-08-29 23:26:08
  • 1556

Delphi7安装ehlib卸载以及安装问 not a design time package.解决办法

EhLib 在 Delphi 7 下的安装方法: 1、将 EhLib 解压到一个目录,如:E:\VCL\EhLib; 2、将 EhLib 安装目录下 Common 目录、DataService...
  • zisongjia
  • zisongjia
  • 2017-09-02 15:48:34
  • 555

EhLib9.1.024 D7-XE10.2 Tokyo full source 破解版 (含帮助文档和Demo)

  • 2017年11月09日 15:12
  • 98.03MB
  • 下载
收藏助手
不良信息举报
您举报文章:如何使用 Ehlib 实现自动排序
举报原因:
原因补充:

(最多只允许输入30个字)