anchor.diff:    if not (ssLeft in Shift) or (fMouseOverRow = -1) then
       Exit;
   
  +  // Do not do anything else, in case Cell we are working on is Disabled
  +  if not Rows[fMouseOverCell.Y].Cells[fMouseOverCell.X].Enabled then
  +    Exit;
  +
     NewIndex := fMouseOverRow;
   
     if NewIndex >= fRowCount then
  
positive.code:   begin
      fTimeOfLastClick := 0; //Double click shouldn't happen if you click on one server A, then server B
      ItemIndex := NewIndex;
      if not KMSamePoint(fMouseOverCell, KMPOINT_INVALID_TILE) and Columns[fMouseOverCell.X].TriggerOnChange
        and Assigned(fOnChange) then
      begin
        fOnChange(Self);
  
negative.code:   //do not invoke inherited here, to fully override parent DoClick method
    IsClickHandled := False;
  
    if not KMSamePoint(fMouseOverCell, KMPOINT_INVALID_TILE)
      and Rows[fMouseOverCell.Y].Cells[fMouseOverCell.X].Enabled then
    begin
      if Assigned(fOnCellClick) then
        IsClickHandled := IsClickHandled or fOnCellClick(Self, fMouseOverCell.X, fMouseOverCell.Y)
      else
        if Assigned(fOnCellClickShift) then
          IsClickHandled := IsClickHandled or fOnCellClickShift(Self, Shift, fMouseOverCell.X, fMouseOverCell.Y)
    end;
  
    //Let propagate click event only when OnCellClick did not handle it
    if not IsClickHandled then
    begin
      inherited DoClick(X, Y, Shift, Button);
      if Assigned(fOnChange)
        and not fOnChangeInvoked
        and Rows[fMouseOverCell.Y].Cells[fMouseOverCell.X].Enabled then // Only trigger for enabled cells
        fOnChange(Self);
    end;
  end;
  