И MouseMove, и MouseUp, и MouseDown получают координаты курсора
Может, не самый красивый вариант, но я бы сделала так: ввела глобальную логическую переменную и в OnMouseMove смотерела, что мы делаем: перемещаем фигуру (тогда надо рисовать) или просто так двигаем мышкой.
Получилось так: нашли нужный прямоугольник и глобальной переменной flag приравняли 1.
Начинает работать OnMouseMove. И должен передвигаться прямоугольник.
void __fastcall TForm1::PaintBox1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
if (flag==1)
{
int x1=rects.back().x1;
int y1=rects.back().y1;
Form1->PaintBox1->Canvas->Rectangle(x1+X,y1+Y,x1+X-30,y1+Y-30);
}
}
Но через несколько секунд выходит ошибка: Project1 raised exception class std::bad_alloc with message 'Exepption Object Address:0x28011005E'.
После чего можно продолжить Run и тогда прямоугольник двигаеться.
Что не так?
Какое событие даст понять что кнопка мышки отпушена? (Там необходимо flag=0).