Понимание операций перетаскивания в Delphi

«Перетаскивать» означает удерживать компьютерная мышь кнопку, как мышь перемещается, а затем отпустите кнопку, чтобы уронить объект. Delphi позволяет легко программировать перетаскивание в приложения.

Вы можете перетаскивать объекты из любого места в другое, например из одной формы в другую, или из проводника Windows в свое приложение.

Пример перетаскивания

Запустите новый проект и поместите один элемент управления изображением в форму. Используйте Object Inspector для загрузки изображения (свойство Picture), а затем установите DragMode собственность на dmManual. Мы создадим программу, которая позволит перемещать среду выполнения элемента управления TImage с помощью техника перетаскивания.

DragMode

Компоненты допускают два типа перетаскивания: автоматическое и ручное. Delphi использует свойство DragMode для управления, когда пользователь может перетащить элемент управления. Значением по умолчанию для этого свойства является dmManual, что означает, что перетаскивание компонентов вокруг Заявка не допускается, за исключением особых обстоятельств, для которых мы должны написать соответствующий код. Независимо от настройки свойства DragMode, компонент будет перемещаться, только если написан правильный код для его изменения.

instagram viewer

OnDragDrop

Событие, которое распознает перетаскивание, называется событием OnDragDrop. Мы используем его, чтобы указать, что мы хотим, чтобы пользователь отбрасывал объект. Поэтому, если мы хотим переместить компонент (изображение) в новое место на форме, нам нужно написать код для обработчика события OnDragDrop формы.

Параметр Source события OnDragDrop - это удаляемый объект. Тип исходного параметра - TObject. Чтобы получить доступ к его свойствам, мы должны привести его к правильному типу компонента, который в этом примере является TImage.

принимать

Мы должны использовать событие OnDragOver формы, чтобы указать, что форма может принять элемент управления TImage, который мы хотим добавить на него. Хотя принимаю параметр по умолчанию True, если обработчик события OnDragOver не указан, элемент управления отклоняет перетаскиваемый объект (как если бы параметр Accept был изменен на False).

Запустите свой проект и попробуйте перетащить изображение. Обратите внимание, что изображение остается видимым в своем первоначальном месте, пока перетаскивается движется указатель мыши. Мы не можем использовать процедуру OnDragDrop, чтобы сделать компонент невидимым, пока происходит перетаскивание, потому что эта процедура вызывается только после того, как пользователь уронит объект (если вообще будет).

DragCursor

Если вы хотите изменить изображение курсора, отображаемое при перетаскивании элемента управления, используйте свойство DragCursor. Возможные значения для свойства DragCursor такие же, как для свойства Cursor. Вы можете использовать анимированные курсоры или что угодно, например, файл изображения BMP или файл курсора CUR.

BeginDrag

Если DragMode имеет значение dmAutomatic, перетаскивание начинается автоматически, когда мы нажимаем кнопку мыши с курсором на элементе управления. Если вы оставили значение свойства DragMode в TImage с его значением по умолчанию dmManual, вы должны использовать методы BeginDrag / EndDrag, чтобы разрешить перетаскивание компонента. Более распространенный способ перетаскивания - установить DragMode в dmManual и начать перетаскивание, обрабатывая события нажатия кнопки мыши.

Теперь мы будем использовать Ctrl + MouseDown комбинация клавиатуры, чтобы позволить перетаскивание иметь место. Устанавливать TImageDragMode вернитесь в dmManual и напишите обработчик события MouseDown следующим образом:

BeginDrag принимает логический параметр. Если мы передаем True (как в этом коде), перетаскивание начинается немедленно; если False, он не запустится, пока мы не переместим мышь на небольшое расстояние. Помните, что для этого требуется клавиша Ctrl.

instagram story viewer