Использование Drag and Drop Назад В начало Вперед

Drag and Drop в VIP интерфейсах основан на стандартном механизме обмена данными Windows. Возможен как обмен внутри одного приложения, так и между другими приложениями Windows, поддерживающими Drag and Drop.

Для использования Drag and Drop в интерфейсах, необходимо при помощи функций DNDWindowAcceptDrag и DNDFieldAcceptDrag указать окна и поля которые могут принимать данные (т.е. "приёмники"), и при помощи функции DNDFieldDropSource указать поля из которых возможно "перетаскивание" (т.е. "источники").

По умолчанию Drag and Drop включен только в редакторе, который может обмениваться блоками текста с другими окнами редактора или внешними приложениями, либо перемещать и копировать текcт внутри себя самого.

Для правильной работы Drag and Drop в интерфейсах должны быть обработчики событий (см. "События Drag and Drop."), которые сохраняют и загружают данные в буфере обмена. Буфер обмена может хранить несколько порций данных в различных форматах. Для идентификации формата используется целое число типа longInt. Идентификаторы стандартных форматов описаны как константы с префиксом CF. Перед использованием данных в нестандартном формате, его (формат) необходимо зарегестрировать функцией DNDRegisterFormat.

Для работы с текстовыми данными реализован перевод кодировок. Использование формата CF_TEXT гарантирует правильность кодировки при записи или считывании данных.

Запись и считывание данных производится при помощи функций DNDSetData, DNDGetData, DNDSetContainer, DNDGetContainer, DNDSetSContainer, DNDGetSContainer. Поддерживается запись и считывание переменных простых типов, структур и контейнеров.

Чтобы обеспечить универсальность механизма, важно реализовать максимальную независимость данных в буфере от текущего состояния системы, избегать использования для передачи данных переменных, полей временных таблиц и других способов делающих интерпретацию данных из буфера неоднозначной.

Оглавление раздела

Функции для работы с Drag and Drop

События Drag and Drop

Константы Drag and Drop

Пример использования Drag and Drop