Zrozumienie operacji przeciągania i upuszczania

Kobieta

Burak Karademir / Moment





„Przeciągnij i upuść” oznacza przytrzymanie mysz komputerowa w miarę przesuwania myszy, a następnie zwolnij przycisk, aby upuścić obiekt. Delphi ułatwia programowanie przeciągania i upuszczania do aplikacji.

Możesz naprawdę przeciągać i upuszczać z/do dowolnego miejsca, na przykład z jednego formularza do drugiego lub z Eksploratora Windows do swojej aplikacji.



Przykład przeciągania i upuszczania

Rozpocznij nowy projekt i umieść jedną kontrolkę obrazu na formularzu. Użyj Inspektora obiektów, aby załadować obraz (właściwość Obraz), a następnie ustaw Tryb przeciągania własność do dmManual . Stworzymy program, który umożliwi przenoszenie środowiska wykonawczego kontroli TImage za pomocą technika przeciągnij i upuść .

Tryb przeciągania

Komponenty pozwalają na dwa rodzaje przeciągania: automatyczne i ręczne. Delphi używa właściwości DragMode do kontrolowania, kiedy użytkownik może przeciągnąć kontrolkę. Domyślną wartością tej właściwości jest dmManual, co oznacza, że ​​przeciąganie komponentów po aplikacji jest niedozwolone, z wyjątkiem szczególnych okoliczności, dla których musimy napisać odpowiedni kod. Niezależnie od ustawienia właściwości DragMode komponent zostanie przeniesiony tylko wtedy, gdy zostanie napisany poprawny kod zmieniający jego położenie.



Po przeciągnięciu

Zdarzenie rozpoznające przeciąganie i upuszczanie nazywa się zdarzeniem OnDragDrop. Używamy go do określenia, co chcemy zrobić, gdy użytkownik upuści obiekt. Dlatego, jeśli chcemy przenieść komponent (obraz) do nowej lokalizacji na formularzu, musimy napisać kod obsługi zdarzenia OnDragDrop formularza.

Parametr Source zdarzenia OnDragDrop to usuwany obiekt. Typ parametru źródłowego to TObject. Aby uzyskać dostęp do jego właściwości, musimy rzutować go na właściwy typ komponentu, którym w tym przykładzie jest TImage.

Zaakceptować

Musimy użyć zdarzenia OnDragOver formularza, aby zasygnalizować, że formularz może zaakceptować kontrolkę TImage, którą chcemy na nim umieścić. Chociaż Akceptuj parametr wartością domyślną jest True, jeśli nie podano procedury obsługi zdarzeń OnDragOver, formant odrzuca przeciągany obiekt (tak jakby parametr Accept został zmieniony na False).

Uruchom swój projekt i spróbuj przeciągnąć i upuścić obraz. Zwróć uwagę, że podczas przeciągania obraz pozostaje widoczny w swoim pierwotnym położeniuwskaźnik myszy porusza się. Nie możemy użyć procedury OnDragDrop, aby uczynić komponent niewidocznym podczas przeciągania, ponieważ ta procedura jest wywoływana dopiero po upuszczeniu obiektu przez użytkownika (jeśli w ogóle).



Przeciągnij kursor

Jeśli chcesz zmienić obraz kursora prezentowany podczas przeciągania kontrolki, użyj właściwości DragCursor. Możliwe wartości właściwości DragCursor są takie same jak te dla właściwości Cursor. Możesz użyć animowanych kursorów lub czegokolwiek, na przykład pliku obrazu BMP lub pliku kursora CUR.

Rozpocznij przeciąganie

Jeśli DragMode to dmAutomatic, przeciąganie rozpoczyna się automatycznie po naciśnięciu przycisku myszy z kursorem na kontrolce. Jeśli zostawiłeś wartość właściwości DragMode TImage jako wartość domyślną dmManual, musisz użyć metod BeginDrag/EndDrag, aby umożliwić przeciąganie komponentu. Bardziej powszechnym sposobem przeciągania i upuszczania jest ustawienie DragMode na dmManual i rozpoczęcie przeciągania przez obsługę zdarzeń związanych z myszą.



Teraz użyjemy Ctrl+Mysz w dół kombinacji klawiszy, aby umożliwić przeciąganie. Ustawić Obraz 's DragMode z powrotem do dmManual i napisz procedurę obsługi zdarzeń MouseDown w następujący sposób:

BeginDrag przyjmuje parametr logiczny. Jeśli przekażemy True (jak w tym kodzie), przeciąganie rozpoczyna się natychmiast; jeśli False, nie rozpocznie się, dopóki nie przesuniemy myszy na niewielką odległość. Pamiętaj, że wymaga to klawisza Ctrl.