DBGRIDEH 排序 我自己大总结【含DBX,Dac控件】
1.三个属性让DBGridEH可以点击表头自动排序
只要设置下面三个属性:
ColumDefValues->Title->TitleButton设为TRUE
sortlocal 设为TRUE
OptionsEH->dghautosortmarking设为TRUE
最后,一定要记得在pas文件的uses里引用上ehlib***,我这里的是ehlibCDS,网上也有的是ehlibBDE。我这里的情况是如果没有引用这个ehlibCDS,在点击dbgrideh表头时出现了小三角号,但就是不排序。
2.ehlib 自动过滤和排序
--------------------------------------------------------------------------------
delphi版本
ehlib版本
5.2.84
方式
TADOQuery + TDataSetDriverEh + TMemTableEh + TDataSource +
DBGridEh
--------------------------------------------------------------------------------------
过滤:
1. DBGridEh.STFilter.Local := True
DBGridEh.STFilter.Visible :=
True
2. uses EhLibMTE;
DONE!
排序
1. DBGridEh.SortLocal := True
DBGridEh.OptionsEh.dghAutoSortMarking := True
DBGridEh.OptionsEh.dghMultiSortMarking := True
DONE!
一、DBGridEH点击标题自动排序的设定
①按DataSet源类型的不同,在工程中引用EhLib相应排
序单元文件,如uses EhLibAdo,uses EhLibCDS,uses EhLibBDE、uses
EhLibDBX等,我一般都会在一个公共文件中进行引用,这样就无须在所有用到DBGridEH的单元中都城加入引用语句了,如在DataModule
之类的公共窗体中uses EhLibXXX;一次就行了。
②设置DBGridEH的OptionsEH.dghAutoSortMarking := True;如果希望多列排序还可设置OptionsEH.dghMultiSortMarking := True;
③如果你的DataSet源是TClientDataSet,且只想对已下载到本地的数据进行排序的话,则请设置DBGridEH的SortLocal := True;
④
设置DBGridEH中所有希望进行排序的列标题的按钮属性为True,即Columns[i].Title.TitleButton :=
True;字段类型为LookUp类型或计算字段不能排序,故这类字段
列的TitleButton应设置为False,否则点击标题进行排序时会发生异常。
至此,点击DBGridEH标题就可以自动排序了,多列排序需按下Ctrl键。
但是有一个小 BUG(我使用的是EhLibCDS),那就是标题列上的排序图标和排序结果不相符,当升序排列时出现的不是向上的箭头,而是向下的箭头,降序则相反。这应该是EhLib中的设置标题重画方法时赋反了一个逻辑标志值。如何修正它呢?
二、排序标志相反BUG的修正
方法一、最佳方法,找到问题源,修正它!可惜,我没找到。
方法二、修改DBGridEH.res,把两个bmp图标文件对换一下,有点麻烦。
方法三、大致翻阅一下DBGridEH源码,发现排序图标文件标志是由两个常量定义的,
const
...
bmSmDown = 'DBSMDOWNEH';
bmSmUp = 'DBSMUPEH';
...
这就好办了,在此对换一下,又安全又快捷
//bmSmDown = 'DBSMDOWNEH'; //这是原始内容
//bmSmUp = 'DBSMUPEH'; //这是原始内容
bmSmDown = 'DBSMUPEH'; // Modified by 小宇飞刀 2009-10-24 10:31:26
bmSmUp = 'DBSMDOWNEH'; // Modified by 小宇飞刀 2009-10-24 10:31:26
至此,一切OK!
=======================================2014.03.14======================================
我自己的总结,我以后开发不在用ado了,以后就用TSqlConnection + TSqlQuery + TDataSetPrevider + TClientDataSet + TDataSource 这种模式了
所以DbGrideh 要想自动排序,只需要排序 本地的内存数据库就可以了,不用写代码 ,dbgrideh的设置如下:
1.ColumDefValues->Title->TitleButton设为TRUE
2.sortlocal 设为TRUE
3.OptionsEH->dghautosortmarking设为TRUE
就可以了!...
=============================2014.03.19世界变化的真快,我现在用上FireDac了,巨爽无比,DBX控件Bug太多,最终放弃了==============
通过这次转变,学习了太多的东西,知道原来链接驱动还有UniDac,FireDac且更加强大方便,还跨平台,网店管家用的就是UniDac...;delphi 收购了AnyDac改名成FireDac
这个以后才是delphi的方向,FireDac + FireMonkey 跨平台的开发语言,原生程序 跨平台的框架 跨平台的数据库链接驱动,方向巨对,Delphi又要腾飞了,传奇又要开始了
用上了FireDac后感觉就是 下一代 跨平台的 BDE 我靠,巨强...;
针对FireDac 下 dbgrideh 排序的问题,是这样的;
1.ColumDefValues->Title->TitleButton设为TRUE
2.sortlocal 设为TRUE
3.OptionsEH->dghautosortmarking设为TRUE
4.把EhLibFireDAC添加到项目中就可, 其他需要排序的窗体,不需要引用,只需要 把这个添加到项目中就可.草草草.....

DBGRIDEH 排序 我自己大总结【含DBX,Dac控件】的更多相关文章
- Atitit. BigConfirmTips 控件 大数据量提示确认控件的原理and总结O9
Atitit. BigConfirmTips 控件 大数据量提示确认控件的原理and总结O9 1. 主要的涉及的技术 1 2. 主要的流程 1 3. 调用法new confirmO9t(); 1 4. ...
- c# 将页面导出到word(含图片及控件)
/// <summary> /// 创建word /// <param name="filePath">文件路径 </param> /// &l ...
- Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明)
一.隐藏和显示元素 $('#button_save_12').css('display', 'none'); // 隐藏按钮 $('#button_save_12').css('display', ' ...
- Web大文件上传(断点续传)控件-Xproer.HttpUploader6-安装教程
安装教程: IE8控件安装教程 IE9控件安装教程 Firefox控件安装教程 Chrome控件安装教程 Chrome 45+控件安装教程 相关问题: 提示Runtime Error错误 360拦 ...
- QRowTable表格控件-支持hover整行、checked整行、指定列排序等
目录 一.开心一刻 二.嘴一嘴 三.效果展示 四.浅谈实现 五.自定义数据源 1.data函数 2.flags函数 六.自定义视图 1.目的 2.问题分析 七.测试 八.相关文章 原文链接:QRowT ...
- QRowTable表格控件(五)-重写表头排序、支持第三次单击恢复默认排序
目录 一.原生表格 二.效果展示 三.实现方式 1.排序列定制 2.排序交互修改 四.相关文章 原文链接:QRowTable表格控件(五)-重写表头排序.支持第三次单击恢复默认排序 一.原生表格 开发 ...
- 扩展GridView实现的一个自定义无刷新分页,排序,支持多种数据源的控件TwfGridView
最近项目View层越来越趋向于无刷新化,特别是数据展示方面,还要对Linq有很好的支持.在WebFrom模式的开发中,GridView是一个功能很强大,很常用的控件,但是他也不是完美的,没有自带的无刷 ...
- [WP8.1UI控件编程]Windows Phone大数据量网络图片列表的异步加载和内存优化
11.2.4 大数据量网络图片列表的异步加载和内存优化 虚拟化技术可以让Windows Phone上的大数据量列表不必担心会一次性加载所有的数据,保证了UI的流程性.对于虚拟化的技术,我们不仅仅只是依 ...
- Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..
Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率.. 1. hybrid App 1 1.1. Hybrid Ap ...
- 因用了NeatUpload大文件上传控件而导致Nonfile portion > 4194304 bytes错误的解决方法
今天遇到一个问题,就是“NeatUpload大文件上传控件而导致Nonfile portion > 4194304 bytes错误”,百度后发现了一个解决方法,跟大家分享下: NeatUploa ...
随机推荐
- spring boot 中默认最大线程连接数,线程池数配置查看
本文为博主原创,转载请注明出处: 可以查看 AbstractEndpoint 源码中的常量的定义: public abstract class AbstractEndpoint<S, U> ...
- Hive(2)-Hive安装及简单使用
本文的安装版本为Hive 3.1.2,且安装为单节点. 1. 安装参考及注意事项 (1) 官网:http://hive.apache.org/ (2) 上篇博客:Hadoop 3.1.3伪分布式环境安 ...
- Linux性能分析——TOP命令详解
Linux性能分析--TOP命令详解 1.Top命令介绍 Linux系统中,Top命令主要用于实时运行系统的监控,包括Linux内核管理的进程或者线程的资源占用情况. 这个命令对所有正在运行的进程和系 ...
- [转帖]rsync原理
简介: Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的"Rsync算法"来使本地和远 ...
- [转帖]Linux之/etc/fstab文件讲解
https://www.cnblogs.com/FengGeBlog/p/10178824.html /etc/fstab是用来存放文件系统的静态信息的文件.位于/etc/目录下,可以用命令less ...
- [转帖]Percolator - 分布式事务的理解与分析
https://zhuanlan.zhihu.com/p/261115166 Percolator - 分布式事务的理解与分析 概述 一个web页面能不能被Google搜索到,取决于它是否被Googl ...
- [转帖]Linux常用的一些命令,看你知道多少?
https://zhuanlan.zhihu.com/p/115279009 Linux中命令有很多,而Linux系统中使用命令也是它的一大特点.在Linux系统中使用命令处理问题灵活,高效,所以熟知 ...
- [转帖]《Linux性能优化实战》笔记(24)—— 动态追踪 DTrace
使用 perf 对系统内核线程进行分析时,内核线程依然还在正常运行中,所以这种方法也被称为动态追踪技术.动态追踪技术通过探针机制来采集内核或者应用程序的运行信息,从而可以不用修改内核和应用程序的代码就 ...
- [转帖]从理论到实践,异步I/O模式下NVMe SSD高性能之道
在早期NVMe的讨论话题中,常常将之AHCI协议进行对比,在支持的最大队列深度.并发进程数以及消耗时钟周期数等方面,NVMe吊打了AHCI.最直观也最权威的就是下面这张对比图片. NVMe与AHCI协 ...
- [转帖]Linux系统下rpm命令使用详解
简介 rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采用. ...