anchor.diff:    RegisterComponents('Pascal Framework', [TVisualGrid]);
   end;
   
  +{ TVisualGridSelection }
  +
  +function TVisualGridSelection.GetCol: longint;
  +begin
  +  if Length(Selections) = 0 then
  +    Exit(-1);
  +  Result := Selections[0].Left;
  +end;
  +
  +function TVisualGridSelection.GetRow: longint;
  +begin
  +  if Length(Selections) = 0 then
  +    Exit(-1);
  +  Result := Selections[0].Top;
  +end;
  +
  +function TVisualGridSelection.GetRowCount: longint;
  +begin
  +  if Length(Selections) = 0 then
  +    Exit(0);
  +  Result := Selections[0].Height;
  +end;
  +
   { TFetchDataThread }
   
   procedure TFetchDataThread.Execute;
  
positive.code:     property SearchCapabilities : TSearchCapabilities read GetSearchCapabilities;
    end;
  
    TDrawVisualCellEvent = procedure(Sender: TObject; ACol, ARow: Longint;
      Canvas: TCanvas; Rect: TRect; State: TGridDrawState; const RowData: Variant; var Handled: boolean) of object;
  
  
negative.code:     property SelectionType: TSelectionType read FSelectionType write SetSelectionType;
  
      property OnDrawVisualCell: TDrawVisualCellEvent read FOnDrawVisualCell write FOnDrawVisualCell;
      property OnPreparePopupMenu: TPreparePopupMenuEvent read FOnPreparePopupMenu write FOnPreparePopupMenu;
    end;
  
    TVisualGrid = class(TCustomVisualGrid)
  