Автор Тема: Как сделать кнопку УКАЗАТЬ или ОБЗОР к GUICtrlCreateInput  (Прочитано 3993 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Centrinar [?]

  • Новичок
  • *
  • Сообщений: 100
  • Репутация: 1
    • Награды
Необходима кнопка Обзор (обычно еще обозначают "...") к GUICtrlCreateInput. Что бы при ее нажатии и указании файла в GUICtrlCreateInput появлялся путь к файлу.

Русское сообщество AutoIt


Оффлайн rusreg79 [?]

  • Продвинутый
  • ***
  • Сообщений: 159
  • Репутация: 57
  • Пол: Мужской
    • Награды
Код: AutoIt [Выделить]
$var = FileOpenDialog('message', @WindowsDir & "\", "Images (*.jpg;*.bmp)", 1 + 4 )

If @error Then
    MsgBox(4096,"","No File(s) chosen")
Else
    $var = StringReplace($var, "|", @CRLF)
    MsgBox(4096,"","You chose " & $var)
EndIf

Программаторы программировали, программировали, да не выпрограммировали

Оффлайн Zaramot [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1160
  • Репутация: 656
  • Пол: Мужской
  • I ♥ AutoIt
    • Награды
  • Версия AutoIt: 3.3.8.1
Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate('Cделать кнопку "ОБЗОР"', 318, 100)
GUICtrlCreateLabel('Файл:', 8, 5)
$Input1 = GUICtrlCreateInput("", 8, 21, 257, 21)
$Button1 = GUICtrlCreateButton("...", 272, 18, 35, 25)
GUICtrlCreateLabel('Папка:', 8, 50)
$Input2 = GUICtrlCreateInput("", 8, 65, 257, 21)
$Button2 = GUICtrlCreateButton("...", 272, 62, 35, 25)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        case $Button1
            $file = FileOpenDialog('Choose a file', '', 'All files (*.*)', '', '', GUICreate(''))
            GUICtrlSetData($Input1, $file)
        Case $Button2
            $folder = FileSelectFolder("Choose a folder.", "", '', '', GUICreate(''))
            GUICtrlSetData($Input2, $folder)
    EndSwitch
WEnd

« Последнее редактирование: Сентябрь 06, 2011, 01:22:00 от Zaramot »

Русское сообщество AutoIt

Re: Как сделать кнопку УКАЗАТЬ или ОБЗОР к GUICtrlCreateInput
« Ответ #2 Отправлен: Июль 20, 2011, 15:59:45 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Я иногда делаю кнопку внутри Input'а:

Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

$hGUI = GUICreate("Browse Button inside Input", 320, 100)

$Browse_Btn = GUICtrlCreateButton("...", 290, 42, 18, 18)
$Path_Inpt = GUICtrlCreateInput("C:\", 10, 40, 300, 22, BitOR($GUI_SS_DEFAULT_INPUT, $WS_CLIPSIBLINGS))

GUISetState(@SW_SHOW, $hGUI)

While 1
    $nMsg = GUIGetMsg()
   
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Browse_Btn
            $sFile = FileOpenDialog("Open file as", "", "All supported files (*.*)", 0, "", $hGUI)
            If Not @error Then GUICtrlSetData($Path_Inpt, $sFile)
    EndSwitch
WEnd



Добавлено: Июль 20, 2011, 18:46:31
Ну или так, чтобы весь текст в Input был виден:

Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>

$hGUI = GUICreate("Browse Button inside Input", 320, 100)

$aPath_Inpt = _GUICtrlCreateBttnInput("C:\", 10, 60, 300, 22)

GUISetState(@SW_SHOW, $hGUI)

While 1
    $nMsg = GUIGetMsg()
   
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $aPath_Inpt[0] ;Button event
            $sFile = FileOpenDialog("Open file as", "", "All supported files (*.*)", 0, "", $hGUI)
            If Not @error Then GUICtrlSetData($aPath_Inpt[1], $sFile)
    EndSwitch
WEnd

Func _GUICtrlCreateBttnInput($sText, $iLeft, $iTop, $iWidth, $iHeight)
    Local $nBtn, $nInpt, $aRet[2]
   
    $iWidth -= 20
   
    $nBtn = GUICtrlCreateButton("...", $iWidth + 8, $iTop + 1, 20.5, $iHeight - 1.5)
    GUICtrlCreateInput("", $iWidth + 9, $iTop, 20, $iHeight, BitOR($GUI_SS_DEFAULT_INPUT, $ES_READONLY, $WS_CLIPSIBLINGS))
    GUICtrlSetBkColor(-1, 0xFFFFFF)
   
    $nInpt = GUICtrlCreateInput($sText, $iLeft, $iTop, $iWidth, $iHeight, BitOR($GUI_SS_DEFAULT_INPUT, $WS_CLIPSIBLINGS))
   
    $aRet[0] = $nBtn
    $aRet[1] = $nInpt
   
    Return $aRet
EndFunc

« Последнее редактирование: Июль 20, 2011, 18:46:32 от CreatoR, Причина: Объединение сообщений »


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Русское сообщество AutoIt

Re: Как сделать кнопку УКАЗАТЬ или ОБЗОР к GUICtrlCreateInput
« Ответ #3 Отправлен: Июль 20, 2011, 18:27:33 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
0 Ответов
28006 Просмотров
Последний ответ Август 26, 2009, 16:24:06
от CreatoR
2 Ответов
2857 Просмотров
Последний ответ Март 29, 2011, 17:47:11
от Viktor217
8 Ответов
5199 Просмотров
Последний ответ Май 05, 2015, 13:35:48
от madmasles
0 Ответов
1112 Просмотров
Последний ответ Май 05, 2015, 14:05:31
от madmasles
3 Ответов
1183 Просмотров
Последний ответ Август 20, 2015, 00:56:50
от CreatoR
8 Ответов
1587 Просмотров
Последний ответ Ноябрь 30, 2015, 14:03:12
от Maxlinus
7 Ответов
1655 Просмотров
Последний ответ Февраль 18, 2017, 23:46:02
от Alofa
5 Ответов
827 Просмотров
Последний ответ Сентябрь 17, 2017, 18:13:49
от InnI
11 Ответов
972 Просмотров
Последний ответ Май 11, 2018, 11:35:16
от AtoS
1 Ответов
180 Просмотров
Последний ответ Февраль 04, 2019, 13:42:35
от pvnn