PureBasic

DragOSFormats()

Синтаксис

Result = DragOSFormats(Formats() , Count [, Actions])

Описание


Начинает операцию Drag & Drop (Перетаскивание мышью) со списком данных произвольного формата. Какие типы форматов доступны и способ их представления зависят от операционной системы. Эта функция предоставляет возможность работать с форматами, не имеющими поддержки PureBasic, при этом используя простые механизмы, предоставляемые этой библиотекой для выполнения операции перетаскивания.

Параметры

Formats() Массив структур DragDataFormat, содержащих один или несколько форматов для перетаскивания. У структуры должна быть такая форма:

Structure DragDataFormat
    Format.i    ; Определяемый OS идентификатор формата для перетаскивания (больше информации смотрите ниже)
    *Buffer        ; Буфер в памяти, содержащий данные в этом формате
    Size.i        ; Размер данных в буфере
EndStructure

Windows:
В Windows поле 'Format' задаёт значение CLIPBOARDFORMAT. Это может быть любой стандартный формат буфера обмена (описанный в Windows SDK), или формат, зарегистрированные с помощью функции RegisterClipboardFormat_() API.
Linux:
В Linux поле 'Format' задаёт значение GdkAtom. Его можно создать с помощью функции gdk_atom_intern_() из gdk. Широко известными атомами являются типы mime (например "text/html" для данных html). Также можно создать атом из любой строки, которую сможет понять приложение-получатель.
MacOSX:
В MacOSX поле 'Format' задаёт тип данных (clipboard scrap type). Это 4-символьные числовые константы, например 'TEXT'. Какое-то количество типов данных предопределено, но можно использовать и произвольные значения, если принимающая программа их понимает.
Count Обозначает количество содержащихся в массиве форматов.

Если перетаскивается несколько форматов, принимающая сторона примет первый же, который опознает. Поэтому формат, который предоставляет более всего информации (т.е. представляет данные наиболее точно) должен быть первым в массиве, с менее описательными, но более общими форматами далее. Таким способом каждое приложение получит наилучшее понятное ему представление данных.
Actions (дополн.) Комбинация действий Drag & Drop, которые разрешены для данных. Если параметр не задан, единственным разрешённым действием будет то #PB_Drag_Copy. Возможные действия: (их можно сочетать с помощью оператора '|'),
  #PB_Drag_Copy: Можно копировать данные
  #PB_Drag_Move: Можно перемещать данные
  #PB_Drag_Link: Можно создать ссылку на данные
Пользователь может выбрать, какое из этих действий выполнить, нажав клавиши-модификаторы вроде Ctrl или Shift. Какие действия будут выполнены, зависит также от того, что разрешено принимающей стороной перетаскивания. (В MacOSX действия считаются лишь предложениями. Принимающая сторона перетаскивания может выбрать другое действие.)

Возвращаемое значение

Возвращает одно из упомянутых выше значений действий Drag & Drop чтобы сообщить, какое действие выполнил пользователь, или значение #PB_Drag_None, если пользователь прервал выполнение операции Drag & Drop.

Обратите внимание на то, что если возвращено значение #PB_Drag_Move, то удалить перетащенные данные из вашего приложения должны вы.

Комментарии

Drag & Drop можно начать в любой момент, но левая кнопка мыши должна быть нажата, так как иначе операция немедленно закончится без результата. Обычно операция Drag & Drop начинается когда Гаджет породил событие, имеющее по классификации функции EventType() тип #PB_EventType_DragStart.

См. также

DragText(), DragImage(), DragFiles(), DragPrivate(), SetDragCallback()

Поддерживаемые OS

Все

<- DragImage() - Оглавление DragDrop - DragPrivate()->