anchor.diff:      property Options: TVisualGridOptions read FOptions write SetOptions;
       property Canvas: TCanvas read GetCanvas;
       property SelectionType: TSelectionType read FSelectionType write SetSelectionType;
  -    // IMPORTANT: set DeselectionType before SelectionType to avoid auto-selected first row
       property DeselectionType: TDeselectionType read FDeselectionType write SetDeselectionType;
       property Selection: TVisualGridSelection read GetSelection;
       property SelectedRows : TArray<Variant> read GetSelectedRows;
  
positive.code:   end;
  
    // show or hide Search Panel (related to option vgoAutoHideSearchPanel)
    if (vgoAutoHideSearchPanel in FOptions) and (FPageCount in [0,1]) then
    begin
      if FCanSearch then
      begin
  
negative.code:       PageSize := LCount;
    end;
  
    function FindProperFilter: boolean;
    var
      f: ^TColumnFilter;
    begin
      for f in FFilters.Ptr^ do
        if f.Filter <> vgfSortable then
          Exit(true);
      Result := false;
    end;
  
  begin
    // if filter is active then vgoAutoHideSearchPanel should be not considered.
    // Note: vgfSortable is not considered as 'real' filter
    LHasFilter := (FSearchEdit.Text <> '') and (FFilters.Count > 0) and FindProperFilter;
  
    SetPageIndexEditText(IntToStr(Succ(FPageIndex)));
    FPageCountLabel.Caption := Format('/%d',[FPageCount]);
  
  