anchor.diff:      procedure SetDataSource(ADataSource: IDataSource);
       procedure DoDrawCell(Sender: TObject; ACol, ARow: Longint;
         Rect: TRect; State: TGridDrawState; const RowData: Variant);
  -    procedure RefreshPageIndexInterface;
  +    procedure RefreshPageIndexAndGridInterface;
       procedure RefreshPageIndexData(ARefreshColumns: boolean);
       procedure ResizeSearchEdit(ACol: Integer);
       procedure SetPageIndexEditText(const AStr: utf8string);
       procedure SetPageSizeEditText(const AStr: utf8string);
  +    procedure BeforeFetchPage;
  +    procedure FetchPage(out AResult: TPageFetchResult);
  +    procedure AfterFetchPage(ARefreshColumns: boolean; constref APageFetchResult: TPageFetchResult);
     public
       constructor Create(Owner: TComponent); override;
       destructor Destroy; override;
  
positive.code:     procedure Loaded; override;
    protected { TControl }
      procedure BoundsChanged; override;
      procedure DelayedBoundsChange(Sender: TObject);
    protected
      FGUIUpdates: TUpdateOfVisualGridGUI;
      FDataTable: TDataTable;
  
negative.code:   with FDelayedBoundsChangeTimer do
    begin
      Enabled:=false;
      Interval:=20;
      OnTimer:=DelayedBoundsChange;
    end;
  
    FFetchDataThreadTimer := TTimer.Create(Self);
    with FFetchDataThreadTimer do
    begin
      Enabled:=false;
      Interval:=250;
      OnTimer:=FetchDataThreadProgress;
    end;
  
    { default values for properties }
  