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

时间:2012-01-11 01:37:19

标签: delphi drag delphi-xe2 firemonkey

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

可以覆盖表单的DragLeave方法。对于在目标区域之外被丢弃的所有对象,都会调用此方法。