Показать полную графическую версию : [решено] Можно сделать, чтобы в InputBox вводилось сразу несколько параметров а не один???
sashadeg
02-03-2009, 17:35
Можно сделать, чтобы в InputBox вводилось сразу несколько параметров а не один??? а то у меня в программу вводится 5 параметров сразу, и окно за окном не очень удобно...
Можно сделать, чтобы в InputBox вводилось сразу несколько параметров а не один? »
Можно, например, сообщить юзеру про это:
$Input = InputBox("Title", "Введите несколько параметров, разделённые запятой (парам1, парам2 и т.д.):", "парам1, парам2")
$aAll_Params = StringSplit($Input, ",")
For $i = 1 To $aAll_Params[0]
$aAll_Params[$i] = StringStripWS($aAll_Params[$i], 3)
ConsoleWrite($aAll_Params[$i] & @CRLF)
Next
sashadeg
02-03-2009, 20:27
Я не очень понимаю то что вы мне написали, но я хочу что то типа такова http://websave.mediaring.ru/21739 это я сделал в графическом редакторе))) Ввести один текст в одно окно, другой в другое, третий в третье... Можно так??? Если нет, то поисните пожалуйста предыдущий ваш код программы поподробнее...
это я сделал в графическом редакторе »
Так а почему бы не использовать это? :)
Вот так:
#include <GUIConstantsEx.au3>
$GUI = GUICreate("AutoIt Example", 300, 160)
$Input_1 = GUICtrlCreateInput("Param1", 20, 20, 260, 20)
$Input_2 = GUICtrlCreateInput("Param2", 20, 50, 260, 20)
$Input_3 = GUICtrlCreateInput("Param3", 20, 80, 260, 20)
$Ok_Button = GUICtrlCreateButton("OK", 40, 130, 60, 20)
$Cancel_Button = GUICtrlCreateButton("Cancel", 300-60-40, 130, 60, 20)
GUISetState(@SW_SHOW, $GUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $Cancel_Button
Exit
Case $Ok_Button
$sParams = StringFormat("Input 1 Value: %s\nInput 2 Value: %s\nInput 3 Value: %s", _
GUICtrlRead($Input_1), GUICtrlRead($Input_2), GUICtrlRead($Input_3))
MsgBox(64, "Results", $sParams)
EndSwitch
WEnd
sashadeg
02-03-2009, 21:10
Спс за ответ, щас изучу и попробую применить....)))
sashadeg
03-03-2009, 05:36
А что делает эта часть кода???
$sParams = StringFormat("Input 1 Value: %s\nInput 2 Value: %s\nInput 3 Value: %s", _
GUICtrlRead($Input_1), GUICtrlRead($Input_2), GUICtrlRead($Input_3))
И почему у меня скрипт после нажатия на OK не продолжает своей работы (окно не закрывается а стоит так же и ждет новых параметров...)
Нужно чтобы окно закрылось и далее, например, вылезло окно с текстом вводившийся в $Input_1 =)
что делает эта часть кода? »
Помещает в переменную значения из строк ввода. Если StringFormat путает, то можно и так:
$sParams = _
"Input 1 Value: " & GUICtrlRead($Input_1) & @CRLF & _
"Input 2 Value: " & GUICtrlRead($Input_2) & @CRLF & _
"Input 3 Value: " & GUICtrlRead($Input_3)
почему у меня скрипт после нажатия на OK не продолжает своей работы (окно не закрывается а стоит так же и ждет новых параметров...) »
Потому что скрипту никто не сказал что нужно закрывать GUI после получения параметров :) - Просто добавьте GUIDelete() и ExitLoop после MsgBox().
sashadeg
03-03-2009, 13:27
НЕТ. Не получается у меня задуманного=(
Данные, вводимые в первом окне должны стать переменной, допустим, $Input_1.
Данные, вводимые во втором окне должны стать переменной $Input_2.
Данные, вводимые в третьем окне должны стать переменной $Input_3.
Зачем нам $sParams ???
Когда я введу в первом окне слово "autoit", то переменной $Input_1 и должно соответствовать это слово.... А у меня почему то соответствут символу "3"=(
Вот проверьте сами:
#include <GUIConstantsEx.au3>
$GUI = GUICreate("AutoIt Example", 300, 160)
$Input_1 = GUICtrlCreateInput("Param1", 20, 20, 260, 20)
$Input_2 = GUICtrlCreateInput("Param2", 20, 50, 260, 20)
$Input_3 = GUICtrlCreateInput("Param3", 20, 80, 260, 20)
$Ok_Button = GUICtrlCreateButton("OK", 40, 130, 60, 20)
$Cancel_Button = GUICtrlCreateButton("Cancel", 300-60-40, 130, 60, 20)
GUISetState(@SW_SHOW, $GUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $Cancel_Button
Exit
Case $Ok_Button
$sParams = StringFormat("Input 1 Value: %s\nInput 2 Value: %s\nInput 3 Value: %s", _
GUICtrlRead($Input_1), GUICtrlRead($Input_2), GUICtrlRead($Input_3))
MsgBox(64, "Results", $sParams)
GUIDelete()
ExitLoop
EndSwitch
WEnd
sleep(1000)
Run("Notepad.exe")
sleep(1000)
Send ($Input_1)
Зачем нам $sParams ? »
Это пример, ведь там явно видно, что используется GUICtrlRead($Input_1), где $Input_1 это идентификатор элемента (строка ввода).
у меня почему то соответствут символу "3" »
См. выше, это идентификатор контрола.
Вот проверьте сами »
Вы не правильно используете переменные, нужно сначала читать данные с полей ввода:
#include <GUIConstantsEx.au3>
$GUI = GUICreate("AutoIt Example", 300, 160)
$Input_1 = GUICtrlCreateInput("Param1", 20, 20, 260, 20)
$Input_2 = GUICtrlCreateInput("Param2", 20, 50, 260, 20)
$Input_3 = GUICtrlCreateInput("Param3", 20, 80, 260, 20)
$Ok_Button = GUICtrlCreateButton("OK", 40, 130, 60, 20)
$Cancel_Button = GUICtrlCreateButton("Cancel", 300 - 60 - 40, 130, 60, 20)
GUISetState(@SW_SHOW, $GUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $Cancel_Button
Exit
Case $Ok_Button
$sInput_1_Data = GUICtrlRead($Input_1)
$sInput_2_Data = GUICtrlRead($Input_2)
$sInput_3_Data = GUICtrlRead($Input_3)
GUIDelete($GUI)
ExitLoop
EndSwitch
WEnd
Run(@WindowsDir & "\Notepad.exe")
WinWait("[CLASS:Notepad]")
ControlSetText("[CLASS:Notepad]", "", "", $sInput_1_Data)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.