在ehlib的DBGridEh控件中使用过滤功能(可以不用 MemTableEh 控件 适用ehlib 5.2 ehlib 5.3)
EHlib 因为小巧而受到很多的delphier 们的欢迎,不过ehlib 5.2 及ehlib 5.3 版本为了实现office 2007过滤风格,突然把直接支持CDS的过滤功能停了,取而代之的是必须使用 MemTableEh 控件做中转,这过程麻烦不说,一些朋友使用下来,发现慢无可忍,从而纷纷选择其它的控件替代,不过三方控件也不是想换就能换的,而且对新的控件,如果不熟悉,你不一定能最优使用他,于是就开始寻找是否还有希望使用单选的功能的dbgrideh 来
经过多方代码碴找
对 DbUtilsEh.pas 做以下修改,终于与以前一样使用,而且类office 2007的选择功能也出来了!
procedure TDatasetFeaturesEh . FillSTFilterListDataValues(AGrid: TCustomDBGridEh; Column: TColumnEh; Items: TStrings); begin end ; |
很是奇怪,这个地方为什么会留空呢,是否是因为用基它控件时,存在BUG? 不得而之....
我们做如下修改:
procedure TDatasetFeaturesEh . FillSTFilterListDataValues(AGrid: TCustomDBGridEh; Column: TColumnEh; Items: TStrings); begin if Assigned(AGrid . Center) then AGrid . Center . StandardFillSTFilterListDataValues(AGrid, Column, Items); end ; |
现在再用以前版本的方法,发现,实现的功能与用了MemTableEh 的没有什么区别,也期待能没有其它的BUG.....
比如过滤的条数 不能太多,设置的条件不能多个等.....
附dbgrideh 中过滤设置的一些重要操作:
在ehlib的DBGridEh控件中使用过滤功能很方便,但使用过程中有几个容易被忽略的地方,它曾经困绕了我很长时间,过滤功能就是用不起来。
1.在UNIT中加入
uses EhLibXXX(EhLibADO、EhLibDBE等,根据你选用的数据集来定);
initialization DBGridEhDefaultStyle . FilterEditCloseUpApplyFilter := True ; //这句写在 .end 前面,同时上面这一句在不同的时候,可能有区别,你在编译不通过时,就要做修改!.END |
有如下的版本:
EhLibCDS
DBGridEhCenter.FilterEditCloseUpApplyFilter := True;
2.设置属性
DBGridEh.STFilter.Local := True;
DBGridEh.STFilter.Visible:= True;
3.设置需过滤字段的 STFilter 属性,这个地方我就不详细说了,相信大家都会了。
2012.11.21补充:应该是5.6版本开始(我试用的是6.0)版本,不再需要修改源码了,另外,6.0也不需要
initialization
DBGridEhDefaultStyle.FilterEditCloseUpApplyFilter := True;
这一行了,实在是方便了很多!
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· MQ 如何保证数据一致性?