MouseUp method
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;
}
}