PureBasic

DragFiles()

Синтаксис

Result = DragFiles(Files$ [, Actions])

Описание


Начинает операцию Drag & Drop (Перетаскивание мышью) со списком имён файлов.

Параметры

Files$ Список имен файлов или каталогов для перетаскивания. Несколько имён файлов следует разделять символом Chr (10) (перевод строки). Каждое имя файла должно включать полный путь, так как приложение-получатель не будет знать, как расшифровать относительные имена. Имена файлов должны соответствовать существующим файлам, к которым у приложения-получателя есть доступ.
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.

Обратите внимание на то, что в отличие от других функций, начинающих Drag & Drop, когда возвращается значение #PB_Drag_Move делать ничего не нужно. Так как перетаскиваемые данные это только имена файлов, но не сами файлы, любое действие с файлом должно выполняться принимающей стороной перетаскивания.

Комментарии

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

Пример

; Выберите какие-нибудь файлы или каталоги и перетащите их в другое приложение
;
If OpenWindow(1, 200, 200, 400, 400, "Drag & Drop", #PB_Window_SystemMenu)
    ExplorerListGadget(1, 10, 10, 380, 380, "*", #PB_Explorer_MultiSelect)

    Repeat
        Event = WaitWindowEvent()

        If Event = #PB_Event_Gadget And EventGadget() = 1 And EventType() = #PB_EventType_DragStart
            Files$ = ""
            For i = 0 To CountGadgetItems(1)-1
                If GetGadgetItemState(1, i) & #PB_Explorer_Selected
                    Files$ + GetGadgetText(1) + GetGadgetItemText(1, i) + Chr(10)
                EndIf
            Next i

            DragFiles(Files$)
        EndIf

    Until Event = #PB_Event_CloseWindow
EndIf

См. также

DragText(), DragImage(), DragPrivate(), DragOSFormats(), SetDragCallback()

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

Windows, Linux

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