cxGrid的FilterRow默认自动匹配左边%而不是右边%

Posted 我的学习笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cxGrid的FilterRow默认自动匹配左边%而不是右边%相关的知识,希望对你有一定的参考价值。

/==============================================================================
// 修改cxGrid的FilterRow过滤框的默认值为左匹配
//==============================================================================

1、建立一个公共储存过程,如果有其他Unit需要的话必须做全局声明。

procedure SetCustomFilterRow(cxGridDBBandedTableView: TcxGridDBBandedTableView);
var
  I: Integer;
  S: string;
begin
  with cxGridDBBandedTableView, ViewData do
  begin
    if FilterRow.Focused then
    begin
      for I := 0 to ColumnCount - 1 do
      begin
        S := VarToStr(FilterRow.Values[I]);
        if (Length(S)> 0) and (S[1] <> ‘%‘) then
          FilterRow.Values[I] := ‘%‘ + S;
      end;
    end;
  end;
end;

 

2、选择cxGrid中的TcxGridDBBandedTableView,找到Events中的DataContoller的Filter的OnChanged,双击后增加调用修改函数的代码

procedure TFormMainOperation.cxgrddbbandtv1DataControllerFilterChanged(
  Sender: TObject);
begin
  SetCustomFilterRow(cxgrddbbandtv1);
end;

说明:cxgrddbbandtv1是本人实际程序中的cxGrid中的cxGridDBBandedTableView的Name

           TFormMainOperation是本人实际程序中Form的Name

           如果只有一个Form使用可以修改公共调用函数,增加“TFormXXXX.”这样更简单

 

注意:右匹配%是否自动带出取决于:选择cxGrid中的TcxGridDBBandedTableView,找到Properties中的DataContoller的Filter的PercentWildcard(默认%一般不需要修改)和SupportedLike(真正起效果的属性)

TcxGridDBBandedTableView.DataController.Filter.Options :=[fcoCaseInsensitive];//不区分大小写

 

 

 

Using a checkbox at runtime to make FilterRow Visible/Invisible通过checkbox来控制是否显示

[delphi] view plain copy
 
  1. procedure TForm1.CheckBox1Click(Sender: TObject);  
  2. begin  
  3.   cxGrid1DBTableView1.FilterRow.Visible := CheckBox1.Checked;  
  4. end;  

 

控制焦点是否在FilterRow上

[delphi] view plain copy
 

ViewData.FilterRow.Focused := True;  

 

以上是关于cxGrid的FilterRow默认自动匹配左边%而不是右边%的主要内容,如果未能解决你的问题,请参考以下文章

cxgrid显示海量数据

DevExpress控件cxGrid实现多列模糊匹配输入的完美解决方案

DevExpress控件cxGrid实现多列模糊匹配输入的完美解决方案

cxGrid自动保存当前单元格输入的数据

delphi cxgrid 列内容 中心对齐如何实现

cxGrid 隔行换色