MouseUp method

void MouseUp(
  1. TMouseButton Button,
  2. TShiftState Shift,
  3. int X,
  4. int Y,
)
override

Implementation

void MouseUp(TMouseButton Button, TShiftState Shift, int X, int Y)
{
  int ResizeLine(TGridAxisDrawInfo AxisInfo)
  {
    int Result = AxisInfo.FixedBoundary;
    for(int i = AxisInfo.FirstGridCell; i<_gridSizing.Index; i++)
      Result+=(AxisInfo.GetExtent(i) as int) + AxisInfo.EffectiveLineWidth;
    return _gridSizing.Pos - Result;
  }

  try
  {
    switch(_gridSizing.State)
    {
      case TGridState.Selecting:
        MouseMove(Shift, X, Y);

        UpdateEdit();
        Click();
        break;

      case TGridState.RowSizing:
      case TGridState.ColSizing:
        TGridDrawInfo DrawInfo = TGridDrawInfo();
        CalcDrawInfo(DrawInfo);
        DrawSizingLine(DrawInfo);
        if((_gridSizing.State == TGridState.ColSizing) && UseRightToLeftAlignment())
          _gridSizing.Pos = ClientWidth - _gridSizing.Pos;
        if(_gridSizing.State == TGridState.ColSizing)
        {
          int NewSize = ResizeLine(DrawInfo.Horz);
          if(NewSize > 1)
          {
            ColWidths[_gridSizing.Index] = NewSize;
            UpdateDesigner();
          }
        }
        else
        {
          int NewSize = ResizeLine(DrawInfo.Vert);
          if(NewSize > 1)
          {
            RowHeights[_gridSizing.Index] = NewSize;
            UpdateDesigner();
          }
        }
        break;

      case TGridState.ColMoving:
          DrawMove();

          if(EndColumnDrag(_gridSizing.MoveIndex, _gridSizing.MovePos, TPoint(X,Y))
            && (_gridSizing.MoveIndex != _gridSizing.MovePos))
          {
            MoveColumn(_gridSizing.MoveIndex, _gridSizing.MovePos);
            UpdateDesigner();
          }
          UpdateEdit();
        break;

      case TGridState.RowMoving:
          DrawMove();

          if(EndRowDrag(_gridSizing.MoveIndex, _gridSizing.MovePos, TPoint(X,Y))
            && (_gridSizing.MoveIndex != _gridSizing.MovePos))
          {
            MoveRow(_gridSizing.MoveIndex, _gridSizing.MovePos);
            UpdateDesigner();
          }
          UpdateEdit();
        break;

      default:
        UpdateEdit();
        break;
    }
    super.MouseUp(Button, Shift, X, Y);
  }
  finally
  {
    _gridSizing.State = TGridState.Normal;
  }
}