当前位置: 首页 > news >正文

提供网站建设运营公司资质聊城网站推广的公司

提供网站建设运营公司资质,聊城网站推广的公司,网站建设忄金手指快速,我的小程序怎么制作DBGridEh 可以点列抬头使得记录按该列排序 不需要写代码,只需要设置好,它就能排序。 网上的文章一般写了如何设置。但一般都少说了一条。 先说如何设置: 1. OptionsEh.AutoSortMarking 设置为 True,如果是设计期属性面板&…

DBGridEh 可以点列抬头使得记录按该列排序

不需要写代码,只需要设置好,它就能排序。

网上的文章一般写了如何设置。但一般都少说了一条。

先说如何设置:

1. OptionsEh.AutoSortMarking 设置为 True,如果是设计期属性面板,就是打勾;

2. 如果要按多个字段排序,则:OptionsEh.dghMultiSortMarking 打勾;

3. SortLocal 打勾;

4. 如果是设计期,为 DBGridEh 创建固定字段(Columns),选中要排序的字段,在其属性面板找到:

4.1. Title.TitelButton 打勾;

4.2. Title.SortMarker 可以选择默认值,也就是没排序箭头。但当执行完排序,这个箭头会显示出来。

5. 重点来了:如果这个 DBGridEh 对应的 DataSet 是 ClientDataSet,就需要在它所在的单元 uses EhlibCDS

为啥要 uses EhlibCDS

请参考以下这段话:

EhLib已经实现了能在TQuery, TADOQuery 和TClientDataSet对象中排序数据的类。简单地通过 uses 子句添加 Ehlib...(EhlibBDE,EhlibADO,EhlibCDS)的单元之一到你的工程的任意单元中,与它们相连的数据网格将自动对该数据集进行排序。 EhLibBDE, EhLibADO, EhLibCDS 通过在单元数据集中调用 RegisterDatasetFeaturesEh 过程来实现初始化。
对于其它数据集类型,你必须编写、并注册可以实现该数据集排序的新对象。书写过程 T[你的数据集]DatasetFeaturesEh.ApplySorting ,你可以存取那些使用了 SortMarkedColumns 属性的列以实现直接排序。你可以查看 DbUtilsEh 单元中的示例以明白如何编写T[你的数据集]DatasetFeaturesEh 类及查看 EhLibBDE 单元以明白如何注册 T[你的数据集]DatasetFeaturesEh 类。

大概意思:DBGridEh 实际上是依靠它对应的 DataSet 去排序的。TDataSet 本身没有实现排序功能,但它的子类,比如 TClientDataSet 实现了排序功能。因此,如果要它自动排序,需要引用它提供的对应该 DataSet 的排序单元。如果你使用的 DataSet 不是它支持的,就要自己去实现,并注册。

概念

Delphi 的数据敏感控件,比如 DBGrid 或者 DBGridEh,通过 DataSource 指向一个 DataSet;数据敏感控件本身仅仅是用于数据的显示,它并不拥有数据,也不管理数据。所有对数据的操作,都是在操作 DataSet。

因此,表面上看,点击的 DBGridEh 的字段抬头后,里面的数据排序了。但实际上,是它背后的 DataSet 里面的数据排序了。

进一步的测试

有人想要点击 DBGridEh 的字段抬头排序以后,还想要在排序后可以取消排序,恢复 DBGridEh 里面的记录的原来的排列顺序。

基于以上排序的原理,可以知道,排序实际上是对 DataSet 而言的。因此,使用以下代码测试:

procedure TForm1.Button3Click(Sender: TObject);
beginShowMessage(ClientDataSet1.IndexFieldNames);ShowMessage(ClientDataSet1.IndexName);
end;

程序运行后,用户点击 DBGridEh 的字段抬头排序之前,点击 Button3 执行上述代码,弹出来的对话框是空的。

用户点击 DBGridEh1 的字段抬头排序之后,运行上述代码,可以看到:

1. ClientDataSet1.IndexFieldNames 仍然是空的;

2. ClientDataSet1.IndexName 为:SortIndexEh

说明当用户点击 DBGridEh 的字段抬头,DBGridEh 自动为记录排序时,实际上它是为它对应的 ClientDataSet1 增加了一个索引!

因此,取消排序就简单了:
procedure TForm1.Button4Click(Sender: TObject);
beginClientDataSet1.IndexName := '';
end;

执行完上述代码,可以看到,DBGridEh1 里面的记录顺序确实恢复到了排序之前的顺序。

进一步讨论

其实,有必要取消排序,恢复到原始混乱的排序吗?

对用户来说,其实他需要的是各种排序。比如先按照名字排序,看完了,可能想按照性别排序来看。看完了,可能想按照年龄排序来看。因此,只需要对各个字段设置为可以点抬头排序就好了。实在想不出来有什么需求,是要看原始混乱排序的顺序的。

http://www.hkea.cn/news/880221/

相关文章:

  • 动静分离网站架构百度售后客服电话24小时
  • 做汽车配件生意的网站佛山seo关键词排名
  • 创意建站推荐百度做广告多少钱一天
  • 巴中网站建设公司百度seo怎么做网站内容优化
  • 查网站备案名称上海网络营销seo
  • 人是用什么做的视频网站网络营销方案设计毕业设计
  • 建设网站考虑因素关键词优化是怎么弄的
  • 陕西营销型网站建设推广普通话的内容简短
  • 做配电箱的专门网站百度指数属于行业趋势及人群
  • 学做网站的网站重庆seo整站优化报价
  • 保定网站设计概述seo推广软件排名
  • 查pv uv的网站网络营销推广服务
  • 怎样让客户做网站优化 保证排名
  • 企业营销型网站做的好网络营销的有哪些特点
  • 网站开发 合同兰州快速seo整站优化招商
  • 网站开发技术现状深圳网络营销推广培训
  • 知名网络公司有哪些河北网站seo
  • 学做网站多少钱关键词难易度分析
  • 传奇如何做网站网站建设策划书案例
  • 龙岗 网站建设深圳信科最好用的搜索神器
  • 动态网站开发日志重庆seo整站优化报价
  • 魔站网站建设微信公众号运营推广方案
  • 好的网站建设公司营销推广外包公司
  • 教育机构做网站素材长尾关键词爱站
  • 做网站选什么系统企业网站seo推广
  • 山东省南水北调建设管理局网站腾讯网qq网站
  • 菏泽做网站公司sem网络营销
  • 专业建站外包兰州网络优化seo
  • 企业邮箱腾讯杭州seo按天计费
  • 政府网站建设先进个人事迹互动营销