anchor.diff:  end;
   
   procedure TCustomVisualGrid.AfterFetchPage;
  +
  +  procedure UpdateDrawGridRect;
  +  var
  +    LNewRect: TGridRect;
  +    LOptions: TGridOptions;
  +  begin
  +    LNewRect := TGridRect.Create(FLastSelectionEvent.Col, FLastSelectionEvent.Row + 1,
  +      FLastSelectionEvent.Col + FLastSelectionEvent.ColCount, FLastSelectionEvent.Row + FLastSelectionEvent.RowCount);
  +
  +    FIgnoreSelectionEvent:=true;
  +    TDrawGridAccess(FDrawGrid).MoveExtend(false, LNewRect.Left, LNewRect.Bottom);
  +    FIgnoreSelectionEvent:=false;
  +
  +    if goRangeSelect in FDrawGrid.Options then
  +      FDrawGrid.Selection := LNewRect
  +    else
  +      FDrawGrid.Row := FLastSelectionEvent.Row + 1;
  +  end;
  +
   begin
     with FLastFetchDataResult do
     if Assigned(FDataSource) then
  
positive.code: 
      if RefreshColumns then
        ReloadColumns;
      FDrawGrid.RowCount := Length(FDataTable.Rows) + 1;
    end;
    RefreshPageIndexAndGridInterface;
  end;
  
  procedure TCustomVisualGrid.UpdateSelection(ASelectionType: TSelectionType);
  var
    LSelectionEvent: boolean;
  begin
    if FCurrentSelectionType = ASelectionType then
      Exit;
  
    FCurrentSelectionType:=ASelectionType;
    LSelectionEvent := FCurrentSelectionType=stNone;
    case FCurrentSelectionType of
      stNone: FDrawGrid.Options:=FDefaultDrawGridOptions;
      stCell: FDrawGrid.Options:=FDefaultDrawGridOptions+[goDrawFocusSelected];
      stRow: FDrawGrid.Options:=FDefaultDrawGridOptions+[goRowSelect];
      stMultiRow: FDrawGrid.Options:=FDefaultDrawGridOptions+[goRowSelect,goRangeSelect];
    end;
    if LSelectionEvent and Assigned(FOnSelection) then
        FOnSelection(Self, FLastSelection);
  end;
  
  function TCustomVisualGrid.SelectionsEquals(constref A, B: TVisualGridSelection
    ): boolean;
  begin
    case FSelectionType of
      stNone: Result := false;
      stCell: Result := (A.Col = B.Col) and (A.Row = B.Row);
      stRow: Result := (A.Row = B.Row);
      stMultiRow: Result := (A.Row = B.Row) and (A.RowCount = B.RowCount);
    end;
  end;
  
  procedure TCustomVisualGrid.ResetLastSelection;
  begin
    FLastSelection.Selections := nil;
  end;
  
  procedure TCustomVisualGrid.SetPageSize(Value: Integer);
  
negative.code:     FDeselectionType: TDeselectionType;
      FCurrentSelectionType: TSelectionType;
      FLastSelection: TVisualGridSelection;
      FLastSelectionEvent: TVisualGridSelection;
      FIgnoreSelectionEvent: boolean;
      FCellPadding : TRect;
      FWidgetControl: TControl;
  