Delphi 如何确定拖动操作已在FireMonkey中结束?

Delphi 如何确定拖动操作已在FireMonkey中结束?,delphi,drag,delphi-xe2,firemonkey,Delphi,Drag,Delphi Xe2,Firemonkey,我想知道拖动的控件是否已在任何目标之外释放 有人会认为应该使用OnDragEnd,但该事件不起作用(他们忘记在FMX.Types单元中调用DragEnd过程) 另一种选择是,我尝试在mouseup上使用拖动控件。不起作用。当DragMode=dmAutomatic时不会触发 最后,我尝试覆盖表单本身的MouseUp过程(因为所有鼠标事件在传递给相应控件之前都会经过表单)。惊奇:当控件的DragMode=dmAutomatic时,MouseUp过程不会被调用 令人惊讶的是,这么简单的事情却很难实现

我想知道拖动的控件是否已在任何目标之外释放

有人会认为应该使用OnDragEnd,但该事件不起作用(他们忘记在FMX.Types单元中调用DragEnd过程)

另一种选择是,我尝试在mouseup上使用拖动控件。不起作用。当DragMode=dmAutomatic时不会触发

最后,我尝试覆盖表单本身的MouseUp过程(因为所有鼠标事件在传递给相应控件之前都会经过表单)。惊奇:当控件的DragMode=dmAutomatic时,MouseUp过程不会被调用


令人惊讶的是,这么简单的事情却很难实现,但我希望有人能找到一个有效的解决方案。

可以覆盖表单的DragLeave方法。此方法适用于在目标区域之外放置的所有对象。

在拖动模式下,您将丢失正常的鼠标事件,因为它们首先被拖动事件捕获。至于让拖动事件起作用,希望有人能找到答案。这很可能是个bug。你有更新3吗?是的,有更新3。找到解决方案后我会向你汇报。