cxGrid原控件条件like 仅是在右边加了 % ,达不到我们常用的 模糊包含 的功能;
现改造 cxLike.pas 里面的 LikeStr 函数,使之达到模糊包含的功能;
把这个文件复制到你的程序目录
或者将以下函数 改造控件安装目录下 如 \DevExpress VCL\ExpressDataController\Sources\cxLike.pas
的同名函数;
改动完成后, 所有使用该文件做过滤的, like, not like 都会受影响
无论是在 filterRow 或者弹出的过滤编辑器中 都适用;
function LikeStr(const AStr, APatternStr: string; APercent, AUnderline: Char): Boolean;
var
vPatternStr: String;
begin
vPatternStr := trim(stringreplace(APatternStr,'%','',[rfReplaceAll]));
if Length(vPatternStr)>0 then
begin
if vPatternStr[1] <> '%' then
vPatternStr := '%' + vPatternStr;
if vPatternStr[Length(vPatternStr)] <> '%' then
vPatternStr := vPatternStr + '%';
end;
Result := Like(PChar(AStr), Length(AStr), PChar(vPatternStr),
Length(vPatternStr), APercent, AUnderline, #0);
end;