2012-01-11 15 views
7

Chcę dowiedzieć się, czy przeciągnięta kontrola została wydana poza dowolnym celem.Jak ustalić, czy operacja przeciągania zakończyła się w FireMonkey?

Można by pomyśleć, że należy użyć OnDragEnd, ale to zdarzenie nie działa (zapomnieli wywołać procedurę DragEnd w jednostce FMX.Types).

Jako alternatywę, wypróbowałem OnMouseUp dla kontroli przeciągniętej. Nie działa. Nie uruchamia się, gdy DragMode = dmAutomatic.

W ostateczności próbowałem zastąpić procedurę MouseUp samego formularza (ponieważ wszystkie zdarzenia myszy przechodzą przez formularz przed przekazaniem do odpowiedniej kontrolki). Zaskoczenie: procedura MouseUp nie jest wywoływana, gdy parametr DragMode kontrolki = dmAutomatic.

Niesamowite, że coś bardzo prostego jest niezwykle trudne do osiągnięcia, ale mam nadzieję, że ktoś znalazł skuteczne rozwiązanie.

+0

W trybie przeciągania utracisz normalne zdarzenia myszy, ponieważ są one najpierw chwytane przez zdarzenia przeciągania. Jeśli chodzi o pobieranie zdarzeń przeciągania, mam nadzieję, że ktoś ma odpowiedź. To najprawdopodobniej błąd. Czy masz aktualizację 3? –

+0

Tak, mam Aktualizację 3. Będę raportować, kiedy znalazłem rozwiązanie. – Domus

Odpowiedz

1

Możliwe jest zastąpienie metody DragLeave formularza. Ta metoda jest wywoływana dla wszystkich obiektów, które są opuszczane poza obszarem docelowym.

Powiązane problemy