Сайт AZJIO
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Скрипты для LiveCD [0]
Скрипты для WindowsXP [8]
Примеры скриптов [15]
Функции [5]
Поиск
Главная » Статьи » Скрипты AutoIt3 » Примеры скриптов

drag-and-drop

перетащить и бросить


Операция "перетащить и бросить" (drag-and-drop) требует включения стиля для GUI и элементов, на которые можно перетаскивать файл. Хотя я и указал в примере событие, но для Input и Edit оно не обязательно. Событие позволяет обработать данные перед тем как вставить в элемент. Если вас не устраивает нативная способ drag-and-drop, используйте WM_DROPFILES, в справке есть пример. Так же UDF от Ward - DragDropEvent обрабатывает в том числе перетягивание текста.

#include <GUIConstants.au3>
#include <WindowsConstants.au3>

; стиль drag-and-drop, (0x00000010)
$Gui = GUICreate("Проверка drag-and-drop", 420, 200, -1, -1, -1, $WS_EX_ACCEPTFILES)
; создаём область Label, первым элементом, чтоб не перекрывать остальные,
;размер можно указать на всё окно

$CatchDrop = GUICtrlCreateLabel("", 0, 0, 420, 40)
; устанавливаем параметры области - скрытая и drag-and-drop (128+8)
GUICtrlSetState(-1, $GUI_DISABLE + $GUI_DROPACCEPTED)

GUICtrlCreateLabel("используйте drag-and-drop", 120, 3, 200, 18)

$Label1 = GUICtrlCreateLabel("Путь 1", 24, 40, 186, 17)
$Input1 = GUICtrlCreateInput("", 24, 57, 305, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Input наделённый свойством drag-and-drop (8)
$folder1 = GUICtrlCreateButton("Обзор...", 344, 56, 57, 23)

$Label2 = GUICtrlCreateLabel("Путь 2", 24, 90, 186, 17)
$Input2 = GUICtrlCreateInput("", 24, 107, 305, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Input наделённый свойством drag-and-drop (8)
$folder2 = GUICtrlCreateButton("Обзор...", 344, 106, 57, 23)

$Label3 = GUICtrlCreateLabel("Путь 3", 24, 140, 186, 17)
$Input3 = GUICtrlCreateInput("", 24, 157, 305, 21)
GUICtrlSetState(-1, $GUI_DROPACCEPTED) ; Input наделённый свойством drag-and-drop (8)
$folder3 = GUICtrlCreateButton("Обзор...", 344, 156, 57, 23)

GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_DROPPED ;событие приходящееся на drag-and-drop (-13)
            If @GUI_DropId = $Input1 Then GUICtrlSetData($Input1, @GUI_DragFile)
            If @GUI_DropId = $Input2 Then GUICtrlSetData($Input2, @GUI_DragFile)
            If @GUI_DropId = $Input3 Then GUICtrlSetData($Input3, @GUI_DragFile)
            If @GUI_DropId = $CatchDrop Then MsgBox(0, "В область drag-and-drop попал файл", @GUI_DragFile)
            ; кнопки обзор
        Case $folder1
            $folder01 = FileOpenDialog("Указать файл", @WorkingDir & "", "Любой (*.*)", 1 + 4)
            If @error Then ContinueLoop
            GUICtrlSetData($Input1, $folder01)
        Case $folder2
            $folder02 = FileOpenDialog("Указать файл", @WorkingDir & "", "Любой (*.*)", 1 + 4)
            If @error Then ContinueLoop
            GUICtrlSetData($Input2, $folder02)
        Case $folder3
            $folder03 = FileOpenDialog("Указать файл", @WorkingDir & "", "Любой (*.*)", 1 + 4)
            If @error Then ContinueLoop
            GUICtrlSetData($Input3, $folder03)
        Case $GUI_EVENT_CLOSE ; закрыть (-3)
            Exit
    EndSwitch
WEnd


#cs
    Событие $GUI_EVENT_DROPPED можно удалить, но теряется универсальность.
    Если открыть путь кнопкой "Обзор..." и далее кинуть файл в Input,
    то пути складываются в одну строку последовательно.
    Именно $GUI_EVENT_DROPPED устраняет эту проблему установкой пути с помощью GUICtrlSetData.
#ce

Категория: Примеры скриптов | Добавил: AZJIO (11.01.2011)
Просмотров: 2471 | Рейтинг: 3.5/2
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Вход
Друзья сайта
  • Справки AZJIO
  • USBTOR
  • PureBasic (Ru)
  • PureBasic (En)
  • AutoIT3 - Ru.Board
  • autoit-script.ru
  • autoitscript.com
  • WinPE - Ru.Board
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    ЮMoney

    Мой кошелёк

    ЮMoney: 4100117604217624


    AZJIO © 2024