anchor.diff:  begin
     if Assigned(FDataSource) then
       AResult := FDataSource.FetchPage(
  -      TPageFetchParams.Create(FPageIndex, FPageSize, nil), FDataTable)
  +      TPageFetchParams.Create(FPageIndex, FPageSize, FFilter), FDataTable)
     else
       FillChar(AResult, SizeOf(AResult), #0);
   end;
  
positive.code: end;
  
  procedure TCustomVisualGrid.SearchButtonClick(Sender: TObject);
  begin
  
  end;
  
  procedure TCustomVisualGrid.ControlsEnable(AEnable: boolean);
  
negative.code: const
    TEXT_FILTER = [vgfMatchTextExact, vgfMatchTextBeginning, vgfMatchTextEnd, vgfMatchTextAnywhere];
    NUMERIC_FILTER = [vgfNumericEQ, vgfNumericLT, vgfNumericLTE, vgfNumericGT, vgfNumericGTE, vgfNumericBetweenInclusive, vgfNumericBetweenExclusive];
    SORTABLE_TEXT_FILTER = TEXT_FILTER + [vgfSortable];
    SORTABLE_NUMERIC_FILTER = NUMERIC_FILTER + [vgfSortable];
  
  type
    TColumnFilter = record
      ColumnName: utf8string;
      Sort: TSortDirection;
      Filter: TVisualGridFilter;
      Values: array of Variant;
    end;
  
    TFilterCriteria = TArray<TColumnFilter>;
  