Как определить, что операция перетаскивания закончилась в FireMonkey?

Я хочу узнать, был ли перетаскиваемый элемент управления выпущен за пределы какой-либо цели.

Можно было бы подумать, что следует использовать OnDragEnd, но это событие не работает (они забыли вызвать процедуру DragEnd в модуле FMX.Types).

В качестве альтернативы я попробовал OnMouseUp для перетаскиваемого элемента управления. Не срабатывает, когда DragMode = dmAutomatic.

В качестве последнего средства я попытался переопределить процедуру MouseUp самой формы (поскольку все события мыши проходят через форму перед передачей соответствующему элементу управления). Сюрприз: процедура MouseUp не вызывается, когда элемент управления DragMode = dmAutomatic.

Удивительно, насколько сложно достичь такой простой задачи, но я надеюсь, что кто-то нашел рабочее решение.

7
задан Marcus Adams 11 January 2012 в 15:18
поделиться