1. 程式人生 > >cxGrid的FilterRow默認自動匹配左邊%而不是右邊%

cxGrid的FilterRow默認自動匹配左邊%而不是右邊%

target events DC board -a val ocl phi proc

/==============================================================================
// 修改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默認自動匹配左邊%而不是右邊%