anchor.diff:  begin
     LHandled := False;
     if ColCount = 0 then Exit;
  +  LDataTable := ActiveDataTable;
  +  if (ARow > 0) and (ARow > Length(LDataTable^.Rows)) then
  +    Exit;
     if ARow = 0 then ResizeSearchEdit(ACol);
     LColumn := FColumns[ACol];
     Rect := CalculateCellContentRect(Rect);
  
positive.code: 
    ResetLastSelection;
    UpdateSelection(SelectionType);
  end;
  
  procedure TCustomVisualGrid.SetWidgetControl(AValue: TControl);
  
negative.code: begin
    if FSelectionType=AValue then
      Exit;
    FSelectionType:=AValue;
    // do not select if don't need (otherwise it means false selection event and false selection in grid)
    if (FDeselectionType = dtNone) or (FLastSelection.Selections <> nil) then
    begin
      // reset internal selection variable for stNone (and call event)
      if FSelectionType = stNone then
        ResetLastSelection;
      UpdateSelection(FSelectionType);
      GridSelection(Self, 0, 0)
    end;
  end;
  
  procedure TCustomVisualGrid.SetDeselectionType(AValue: TDeselectionType);
  