关于 cxGrid 的 filter 中,like 包含条件的改造

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;

联系电话:
020-00000000
联系电话:
020-00000000
联系电话:
020-12345678