delphi cxGrid过滤器配合Filter过滤器,完美!
原文已删除.
2024-03-22修正:
效果图:

需求: 在cxgrid执行过虑操作前,重新定义关键词,实现模糊匹配.比如用户输入"ABC",则改为"%ABC".实际上,对于文本匹配,cxgrid默认会在关键词后面多加一个"%"号,所以我们只需要在前面加一个"%"就可以了
核心代码:
procedure TForm1.cxGrid1DBTableView1DataControllerFilterBeforeChange(Sender: TcxDBDataFilterCriteria; ADataSet: TDataSet; const AFilterText: string); var ROld, RNew, NewStr: string; begin ROld := ' LIKE '''; RNew := ' LIKE ''' + '*'; //数据库为ACCESS.已设置属性DataController.filter.percentwildcard:=* ,把%改成*是为了用户操作简便,按%需要同时按shift键,而*号在小键盘上可以直接输入,视需求而定吧 //处理过滤条件,替换字符串 NewStr := StringReplace(AFilterText, RNew, ROld, [rfReplaceAll, rfIgnoreCase]); NewStr := StringReplace(NewStr, ROld, RNew, [rfReplaceAll, rfIgnoreCase]); NewStr := StringReplace(NewStr, '*', '%', [rfReplaceAll, rfIgnoreCase]); //把星号转成% FDMemTable1.Filtered := False; FDMemTable1.Filter := NewStr; self.Caption :=newstr; FDMemTable1.Filtered := True; end; procedure TForm1.scGPButton3Click(Sender: TObject); //清空条件 begin cxGrid1DBTableView1.DataController.Filter.Clear ; end;

浙公网安备 33010602011771号