anchor.diff:  
     TDrawVisualCellEvent = procedure(Sender: TObject; ACol, ARow: Longint;
       Canvas: TCanvas; Rect: TRect; State: TGridDrawState; const RowData: Variant; var Handled: boolean) of object;
  +
  +  EVisualGridError = class(Exception);
   
     { TCustomVisualGrid }
   
  
positive.code:   public
      constructor Create(Owner: TComponent); override;
      destructor Destroy; override;
      property Columns: TStrings read FColumns write SetColumns;
      property DataSource: IDataSource read FDataSource write SetDataSource;
      property PageSize: Integer read FPageSize write SetPageSize default 100;
      property PageIndex: Integer read FPageIndex write SetPageIndex default -1;
  
negative.code: 
  procedure TCustomVisualGrid.ReloadColumns;
  begin
    FDrawGrid.ColCount := Length(FDataTable.Columns);
  end;
  
  procedure TCustomVisualGrid.SetDataSource(ADataSource: IDataSource);
  