Dragdrop - это быстрый способ управления окнами. Как разработчик на основе Windows
Delphi также поддерживает операции перетаскивания, а функция перетаскивания системы приложений очень удобна, что действительно отражает
Сила и удобство Дельфи.
Все элементы управления, предоставленные Delphi (Control, который может получить входные фокусировки)
Соответствующие свойства перетаскивания, события перетаскивания и методы перетаскивания. Далее мы сначала представим поддержку управления перетаскиванием, а затем дадим
Общие шаги и примеры приложения отправки операций перетаскивания.
9.1 Поддержка перетаскивания для элементов управления
В операциях по перетаскиванию элементы управления можно разделить на две категории: управление источником и целевой контроль. Большинство элементов управления можно использовать в качестве элемента управления источником
Также можно использовать в качестве целевого контроля. Но есть также некоторые элементы управления, которые могут поддерживать только один из них.
9.1.1 Свойства перетаскивания
Есть два основных свойства перетаскивания:
● DRAGMODE: режим перетаскивания
Все они установлены в управлении источником перетаскивания. Dragmode управляет пользователем при нажатии управления во время выполнения
Как реагирует управление, когда мышь опущена. Если DragMode установлен на dmautomatic, то когда пользователь нажимает мышь на управлении
Dragmode запускается автоматически;
Чтобы определить, может ли перетаскивание начать.
Dragcursor используется для выбора курсора, отображаемого при перетаскивании.
Спецификации интерфейса, которые распространены в процессе программирования, должны уважать разработчики. Но иногда для конкретных целей,
Разработчики также могут назначить свой курсор Dragcursor.
9.1.2 Мероприятие по перетаскиванию
Есть три основных события перетаскивания:
● Ondragover: Inspire при перетаскивании
● Ondragdrop: Inspire при перетаскивании и сброске
● OnendDrop: Inspire при перетаскивании концов
Первые два события отвечают целевым контролем, а последнее отвечает контролем источника.
Основная функция события Ondragover заключается в определении того, является ли элемент управления приемлемым, когда пользователь бросает перетаскивание на месте.
Его параметры включают:
Источник: Tobject;
Состояние: TDRAGSTATE;
TDRAGSTATE - это тип перечисления, который представляет взаимосвязь между элементами перетаскивания и целевыми элементами.
тип tdragstate = (dsdragenter, dsdraglave, dsdragmove);
Значение разных значений заключается в следующем:
Таблица 9.1 Значение и значение Dragstate
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━
Значение значения
─диимобилил
DSDRAGENTER Перетащите объект в элемент управления, который позволяет отбрасывать перетащенный объект. это состояние по умолчанию.
DSDRAGLEAVE перетаскивает объект от элемента управления, который позволяет сбросить объект сопротивления.
Объект DSDRAGMove Drag Moving перемещается внутри элемента управления, который позволяет сбросить объект сопротивления.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━
Пользователь может использовать предоставленные параметры, чтобы определить, приемлемо ли сброшенное сопротивление, например:
● Тип управления источником суждения:
Принять: = источник - это tlabel;
● Судья объект управления источником:
Принять: = (source = tabset1);
● Судья курсора позиции:
См. Процедуры в (9.2), (9.3).
● Статус перетаскивания судьи:
If (источник - это tlabel) и (state = dsdragmove) тогда
BEGIN SOURCE.Dragicon: = 'new.ico';
конец
еще
Принять: = false;
Когда Accept = true, целевой контроль может реагировать на событие OnDragDrop, которое используется для определения того, что программа после перетаскивания отброшена
Как с этим справиться.
Параметры процесса обработки событий OnDragDrop включают управление источником и позицию курсора. Эта информация может быть использована для обработки
Подтверждение.
Событие OnenDDRAG отвечает источником управления после завершения операции перетаскивания и используется элементом управления источником для выполнения соответствующего
иметь дело с. Конец операции перетаскивания включает в себя принятие перетаскивания, и пользователь выпускает его на управлении, который не может быть отброшен.
Поместите мышь. Параметры этого процесса обработки событий включают целевой элемент управления (Target) и координаты позиции Drop. если
Target = nil, означает, что перетащенный элемент не принимается ни одним элементом управления.
В перемещении перетаскивания операция копирования перетаскивания, представленная в разделе 3, если операция будет успешной, поле списка файлов будет указано ниже.
Отображаемый контент должен быть обновлен. Следующая программа используется для реализации этой функции.
Процедура tfmform.filelistenddrag (отправитель, цель: tobject; x, y: целое число);
Начинать
Если цель <> nil, то filelist.update;
конец;
В дополнение к трем событиям, описанным выше, есть еще одно событие Onmousedown, которое также обычно используется для ответов на перетаскивание.
Хотя OnmouseDown не является специальным событием перетаскивания, начало перетаскивания в ручном режиме в этом
Реализовано в процессе обработки событий.
9.1.3 Метод перетаскивания
Есть три способа перетаскивания:
● Betindrag: запустите перетаскивание в ручном режиме
● ENDDRAG:
Закончить сопротивление
● Перетаскивание: определяет, перетаскивается ли управление
Все три метода используются с помощью управления источником.
Когда DragMode устанавливается в DMmanual, перетаскивание должно вызвать метод управления BERINDRAG для начала.
У Beterindrag есть логический параметр непосредственно. Если входной параметр верно, перетащите, чтобы начать немедленно, немедленно,
Измените на настройки Драгучурса. Если входной параметр является ложным, пока пользователь не перенесет курсор на определенное расстояние
(5 пикселей) Перед тем, как изменить курсор и начать перетаскивать. Это позволяет управлению принять событие OnClick без запуска
Перетащить операцию.
Метод ENDDRAG прерывает перетаскивающее состояние объекта. У него есть логическое падение параметров. Если падение установлено
Верно, перетаскиваемый объект отбрасывается в текущем положении (независимо от того, может ли он быть принят, определяется целевым управлением);
Если ложь, перетаскивание отменяется на месте.
Следующая программа показывает, что перетаскивание отменено при перетаскивании в панель управления.
Процедура tform1.panel1dragover (отправитель, источник: tobject; x, y: целое число;
Состояние: tdragstate;
Начинать
Принять: = false;
if (источник - это tlabel) и (state = dsdragenter), тогда
(Источник как tlabel) .enddrag (false);
конец;
Метод перетаскивания определяет, перетаскивается ли управление. В следующем примере, когда пользователь перетаскивает другой флажок
Когда окно меняется на другой цвет.
Процедура tform1.formativate (отправитель: tobject);
Начинать
Facebox1.dragmode: = dmautomatic;
Facebox2.dragmode: = dmautomatic;
Facebox3.DragMode: = dmautomatic;
конец;
Процедура tform1.formdragover (отправитель, источник: tobject; x, y: целое число;
Состояние: tdragstate;
Начинать
Если CHACKBOX1.Draging Then
Цвет: = claqua;
Если CHACKBOX2.Draging Then
Цвет: = Clyellow;
Если CHACKBOX3.Draging Then
Цвет: = Cllime;
конец;