如何使用 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 实现数据的自动排序居然如些简单!

EhLib DBGridEh组件在Delphi中应用全攻略总结

【DBGridEh(增强型表格组件)功能详解】 DBGridEh组件无论在外观上还是功能上都非常类似Borland开发工具中现有的dbgrid组件,它除了提供dbgrid组件的全部功能外,还增加了下...
  • hangyi_008
  • hangyi_008
  • 2014年03月15日 20:03
  • 683

Ehlib 的 DBGridEh 控件导出到Excel的三种封装过程/函数

必须uses DBGridEhImpExp,  EhlibADO, DBGridEh 第一种: procedure TForm2.dbgridehtoexp(lsdbgrideh: tdbgride...
  • wozengcong
  • wozengcong
  • 2013年09月10日 23:23
  • 1417

EhLib控件使用技巧 --DBGridEh自动过滤

DBGridEh 可以为你提供一个更加美观和功能丰富的 DBGird,比如平面化显示、奇偶行不同颜色(斑马线)、快速查找、合计行、Grid 打印等。在 Ehlib 的后期版本中,还提供了一个非常强大的...
  • Trassion
  • Trassion
  • 2015年11月17日 00:02
  • 1878

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

DBGridEh 提供了一个非常强大的过滤功能,他会在 DBGrid 的表头下方显示一个过滤行,用户在此行的相应列中输入查询条件,DBGridEh 可以自动为您筛选出所需要的数据。...
  • u011558122
  • u011558122
  • 2016年08月11日 15:07
  • 203

Ehlib常用属性

【页脚以及统计值】    TDBGridEh allows to show special row (footer) or rows at bottom part. Use FooterRowCou...
  • my98800
  • my98800
  • 2016年07月25日 09:37
  • 333

DBGridEh用法总结三(PivotGrid的汉化)

数据库字段一般都是英文,不能直接展示给用户,而应该显示中文含义给用户。需要汉化两部分,一是设计用的字段汉化,二是表格区显示内容的汉化。 1、 字段汉化 设计工具(PivotGridToolBoxE...
  • ghs79
  • ghs79
  • 2017年02月08日 14:33
  • 584

Java实现字符串数组和字符串排序

在Java环境下,对字符串数组或者对字符串排序都是一件很容易的
  • xiaobangsky
  • xiaobangsky
  • 2014年10月13日 14:51
  • 2510

Java使用Comparable接口自定义排序

Java经典编程300例之实例063 使用Comparable接口自定义排序 案例见 实例说明 默认情况下,保存在List集合中的数组是不进行排序的,不过可以通过使用Comparable接口自...
  • The_star_is_at
  • The_star_is_at
  • 2017年04月19日 21:01
  • 913

项目总结——hashtable排序问题

前言:         对于Hashtable在我的上篇博客中有提到,是用在了事务处理中,向sqlhelper传递参数,这个用的很巧妙不知道大家有没有进一步的研究,但是为什么现在需要用到Hashtab...
  • hy6688_
  • hy6688_
  • 2013年09月24日 00:15
  • 4709

delphi实现dbgrideh点击列自动排序

dbgrideh控件本身是支持点击列自动排列的,只要设置
  • baidu_20650485
  • baidu_20650485
  • 2014年11月04日 17:31
  • 1746
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何使用 Ehlib 实现自动排序
举报原因:
原因补充:

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