Zrozumienie operacji przeciągania i upuszczania w Delphi

„Przeciągnij i upuść” oznacza przytrzymanie przycisku mysz komputerowa przycisk podczas 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 aplikacji.

Przykład przeciągania i upuszczania

Rozpocznij nowy projekt i umieść jeden formularz sterujący obrazem w formularzu. Użyj Inspektora obiektów, aby załadować obraz (właściwość Obraz), a następnie ustaw DragMode właściwość do dmManual. Stworzymy program, który pozwoli przenieść środowisko wykonawcze kontroli TImage za pomocą przeciągnij i upuść technikę.

DragMode

Komponenty pozwalają na dwa rodzaje przeciągania: automatyczny i ręczny. Delphi używa właściwości DragMode do kontrolowania, kiedy użytkownik jest w stanie przeciągnąć formant. Domyślną wartością tej właściwości jest dmManual, co oznacza, że ​​przeciąganie komponentów wokół aplikacja nie jest dozwolona, ​​z wyjątkiem szczególnych okoliczności, dla których musimy napisać odpowiedni kod. Niezależnie od ustawienia właściwości DragMode, komponent będzie się poruszał tylko wtedy, gdy zostanie napisany poprawny kod w celu zmiany jego położenia.

instagram viewer

OnDragDrop

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

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

Zaakceptować

Musimy użyć zdarzenia OnDragOver formularza, aby zasygnalizować, że formularz może zaakceptować formant TImage, który chcemy na niego upuścić. Chociaż akceptuję parametr domyślnie ma wartość True, jeśli nie jest dostarczony moduł obsługi zdarzeń OnDragOver, formant odrzuca przeciągany obiekt (tak jakby parametr Accept został zmieniony na False).

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

DragCursor

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

BeginDrag

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

Teraz użyjemy Ctrl + MouseDown kombinacja klawiatury umożliwiająca przeciąganie. Zestaw TIMageDragMode z powrotem do dmManual i napisz procedurę obsługi zdarzeń MouseDown w następujący sposób:

BeginDrag przyjmuje parametr boolowski. Jeśli przekażemy wartość Prawda (jak w tym kodzie), przeciąganie rozpocznie się natychmiast; jeśli False, nie rozpocznie się, dopóki nie poruszymy myszką w niewielkiej odległości. Pamiętaj, że wymaga to klawisza Ctrl.

instagram story viewer