anchor.diff:  
   procedure TCustomVisualGrid.RefreshPageIndexData(ARefreshColumns: boolean);
   var
  -  i: Integer;
     LResult: TPageFetchResult;
   begin
  -  if Assigned(FDataSource) then
  -  begin
  -    if FPageIndex >= FPageCount then
  -      FPageIndex := FPageCount - 1;
  -
  -    LResult := FDataSource.FetchPage(
  -      TPageFetchParams.Create(FPageIndex, FPageSize, nil), FDataTable);
  -
  -    FPageCount:=LResult.PageCount;
  -
  -    if LResult.TotalDataCount >= 0 then
  -      FTotalDataCount := LResult.TotalDataCount
  -    else
  -      FTotalDataCount := -1;
  -
  -    FAllRecordsCountLabel.Visible := FTotalDataCount<>-1;
  -    FAllRecordsCountLabel.Caption:=Format('Total: %d', [FTotalDataCount]);
  -
  -    FPageIndex := LResult.PageIndex;
  -
  -    if ARefreshColumns then
  -      ReloadColumns;
  -    FDrawGrid.RowCount := Length(FDataTable.Rows) + 1;
  -  end;
  -  RefreshPageIndexInterface;
  -  FDrawGrid.Refresh;
  +  if Assigned(FDataSource) and FetchDataInThread then
  +    TFetchDataThread.Create(Self, ARefreshColumns)
  +  else
  +  begin
  +    BeforeFetchPage;
  +    FetchPage(LResult);
  +    AfterFetchPage(ARefreshColumns, LResult);
  +  end;
   end;
   
   procedure TCustomVisualGrid.ResizeSearchEdit(ACol: Integer);
  
positive.code: function TCustomVisualGrid.GetSingleSearch: boolean;
  begin
    Result := FTopPanelRight.Visible;
  end;
  
  procedure TCustomVisualGrid.SetMultiSearchToggleBox(AValue: boolean);
  
negative.code:     procedure Loaded; override;
    protected { TControl }
      procedure BoundsChanged; override;
    protected
      FGUIUpdates: TUpdateOfVisualGridGUI;
      FDataTable: TDataTable;
  