Что нового

Как сделать кнопку УКАЗАТЬ или ОБЗОР к GUICtrlCreateInput

Centrinar

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

rusreg79

Продвинутый
Сообщения
159
Репутация
57
Код:
$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

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Код:
#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
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Я иногда делаю кнопку внутри Input'а:

Код:
#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



Добавлено:
Сообщение автоматически объединено:

Ну или так, чтобы весь текст в Input был виден:

Код:
#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
 
Верх