Войти

Показать полную графическую версию : [решено] Можно сделать, чтобы в InputBox вводилось сразу несколько параметров а не один???


sashadeg
02-03-2009, 17:35
Можно сделать, чтобы в InputBox вводилось сразу несколько параметров а не один??? а то у меня в программу вводится 5 параметров сразу, и окно за окном не очень удобно...

Creat0R
02-03-2009, 20:03
Можно сделать, чтобы в 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 это я сделал в графическом редакторе))) Ввести один текст в одно окно, другой в другое, третий в третье... Можно так??? Если нет, то поисните пожалуйста предыдущий ваш код программы поподробнее...

Creat0R
02-03-2009, 21:07
это я сделал в графическом редакторе »
Так а почему бы не использовать это? :)

Вот так:

#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 =)

Creat0R
03-03-2009, 10:15
что делает эта часть кода? »
Помещает в переменную значения из строк ввода. Если 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)

Creat0R
03-03-2009, 17:41
Зачем нам $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