2012-01-11 8 views
7

Quiero saber si un control arrastrado se ha liberado fuera de cualquier destino.¿Cómo se determina que una operación de arrastre ha finalizado en FireMonkey?

Uno pensaría que se debe utilizar OnDragEnd, pero ese evento no funciona (olvidaron llamar al procedimiento DragEnd en la unidad FMX.Types).

Como alternativa, probé OnMouseUp para el control arrastrado. No funciona No se activa cuando DragMode = dmAutomatic.

Como último recurso, traté de anular el procedimiento MouseUp del formulario en sí (dado que todos los eventos del mouse pasan por el formulario antes de pasarlo al control respectivo). Sorpresa: el procedimiento MouseUp no se llama cuando el DragMode del control = dmAutomatic.

Es sorprendente cómo algo tan simple es tan difícil de lograr, pero espero que alguien haya encontrado una solución funcional.

+0

Al estar en el modo de arrastre, perderá los eventos normales del mouse, ya que son atrapados primero por los eventos de arrastre. En cuanto a que los eventos de arrastre funcionen, es de esperar que alguien tenga la respuesta. Es muy probable que sea un error. ¿Tiene la actualización 3? –

+0

Sí, tengo la Actualización 3. Informaré cuando encuentre una solución. – Domus

Respuesta

1

Es posible anular el método DragLeave del formulario. Este método se usa para todos los objetos que se descartan fuera de un área objetivo.

Cuestiones relacionadas