http://bbs.csdn.net/topics/390536919
关于 cxGrid 的过滤问题 [问题点数:20分,结帖人zhengyc653]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
收藏
|
本帖最后由 zhengyc653 于 2013-08-03 15:17:16 编辑 今天用了一下cxGrid的过滤功能,非常强大,非常喜欢! 如何使它无需加%%就能过滤出名字包含‘国‘的人? |
发表于: 2013-08-03 15:14:15 楼主 对我有用[0] | 丢个板砖[0] | 引用 | 举报| 管理 回复次数:14 |
用户输入“国”,你的代码就要包上%号。 |
|
回复于: 2013-08-03 15:23:17#1 得分:0 |
引用 1 楼 ddqqyy 的回复:
关键是在哪里的代码加上%号? |
|
回复于: 2013-08-03 15:38:26#2 得分:0 |
用户输入查询条件之后,一般都要再点击一个“查询”按钮才开始查询吧? 你就在按钮事件中加%嘛。 |
|
回复于: 2013-08-03 15:45:31#3 得分:0 |
引用 3 楼 ddqqyy 的回复:
这个查询对话框要cxGrid自带的,不是我们自己设计的啊 |
|
回复于: 2013-08-03 15:47:52#4 得分:0 |
二楼没明白楼主的意思。同求解决方法 |
|
回复于: 2013-08-03 15:52:58#5 得分:0 |
自己顶一下.... 难道没人遇到这个问题? |
|
回复于: 2013-08-06 08:26:33#6 得分:0 |
lz的需求, 只能改dev的代码实现 like的匹配情况有: %国% 国% %国 |
|
回复于: 2013-08-06 10:24:08#7 得分:0 |
引用 7 楼 simonhehe 的回复:
我也不知道要改Dev的代码,可跟踪来跟踪去,就是不知道要在哪改! |
|
回复于: 2013-08-06 10:41:35#8 得分:0 |
思路: 应该在过滤窗体中找到确定这个按钮,然后更改生成出来的过滤字串。 于是,找到 cxFilterControlDialog.pas ,查看 OK 按钮的 OnClick 事件 发现里面只有一条语句: ApplyFilter; 于是,再跟踪 ApplyFilter 函数,它的声明如下: procedure ApplyFilter; virtual; Delphi/Pascal code
继续跟踪 DoBeforeApply ,发现其也是一个虚方法: Delphi/Pascal code
又发现 FOnBeforeApply 的声明为: |
|||||
回复于: 2013-08-06 10:53:58#9 得分:0 |
filterControl.ApplyFilter; filterControl 这个对象在哪? 在这个单元好像没找到这个对象 不知道是引引哪个单元的东东 |
|
回复于: 2013-08-06 11:02:16#10 得分:0 |
1 把这个文件复制到你的程序目录 \DevExpress VCL\ExpressDataController\Sources\cxFilter.pas 2 TcxFilterCriteria.AddItem过程做如下修改:(自动给like, not like运算的查询条件加%) Delphi/Pascal code
|
|||
回复于: 2013-08-06 17:52:49#11 得分:0 |
引用 11 楼 simonhehe 的回复:
非常感谢这位仁兄的帮助,问题解决了一半,按照你的方法,确实可行,但只适用于这个界面: |
|||
回复于: 2013-08-06 22:56:45#12 得分:0 |
之前的修改全部取消. 一下改动完成后, 所有使用该文件做过滤的, like, not like 都会受影响 function LikeStr(const AStr, APatternStr: string; APercent, AUnderline: Char): Boolean; |
|
回复于: 2013-08-07 09:14:21#13 得分:20 |
非常感谢 simonhehe 的热心助助!!问题解决,分不多,全给你了。 |
|
原文地址:https://www.cnblogs.com/westsoft/p/8503918.html