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

Dom*_*mus 7 delphi drag delphi-xe2 firemonkey

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

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

作为替代方案,我尝试使用OnMouseUp进行拖动控制.不行.DragMode = dmAutomatic时不会触发.

作为最后的手段,我试图覆盖表单本身的MouseUp过程(因为所有鼠标事件在传递给相应的控件之前都会通过表单).惊喜:当控件的DragMode = dmAutomatic时,不会调用MouseUp过程.

令人惊讶的是,这非常简单,这是非常难以实现的,但我希望有人可能找到了一个有效的解决方案.

Dom*_*mus 1

可以重写表单的 DragLeave 方法。对于掉落到目标区域之外的所有对象,都会调用此方法。