Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Можно сделать, чтобы в InputBox вводилось сразу несколько параметров а не один??? (http://forum.oszone.net/showthread.php?t=133585)

sashadeg 02-03-2009 17:35 1052989

Можно сделать, чтобы в InputBox вводилось сразу несколько параметров а не один???
 
Можно сделать, чтобы в InputBox вводилось сразу несколько параметров а не один??? а то у меня в программу вводится 5 параметров сразу, и окно за окном не очень удобно...

Creat0R 02-03-2009 20:03 1053087

Цитата:

Цитата sashadeg
Можно сделать, чтобы в 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 1053101

Я не очень понимаю то что вы мне написали, но я хочу что то типа такова это я сделал в графическом редакторе))) Ввести один текст в одно окно, другой в другое, третий в третье... Можно так??? Если нет, то поисните пожалуйста предыдущий ваш код программы поподробнее...

Creat0R 02-03-2009 21:07 1053131

Цитата:

Цитата sashadeg
это я сделал в графическом редакторе »

Так а почему бы не использовать это? :)

Вот так:

Код:

#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 1053136

Спс за ответ, щас изучу и попробую применить....)))

sashadeg 03-03-2009 05:36 1053420

А что делает эта часть кода???

$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 1053536

Цитата:

Цитата sashadeg
что делает эта часть кода? »

Помещает в переменную значения из строк ввода. Если StringFormat путает, то можно и так:

Код:

$sParams = _
    "Input 1 Value: " & GUICtrlRead($Input_1) & @CRLF & _
    "Input 2 Value: " & GUICtrlRead($Input_2) & @CRLF & _
    "Input 3 Value: " & GUICtrlRead($Input_3)

Цитата:

Цитата sashadeg
почему у меня скрипт после нажатия на OK не продолжает своей работы (окно не закрывается а стоит так же и ждет новых параметров...) »

Потому что скрипту никто не сказал что нужно закрывать GUI после получения параметров :) - Просто добавьте GUIDelete() и ExitLoop после MsgBox().

sashadeg 03-03-2009 13:27 1053687

НЕТ. Не получается у меня задуманного=(
Данные, вводимые в первом окне должны стать переменной, допустим, $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 1053929

Цитата:

Цитата sashadeg
Зачем нам $sParams ? »

Это пример, ведь там явно видно, что используется GUICtrlRead($Input_1), где $Input_1 это идентификатор элемента (строка ввода).

Цитата:

Цитата sashadeg
у меня почему то соответствут символу "3" »

См. выше, это идентификатор контрола.

Цитата:

Цитата sashadeg
Вот проверьте сами »

Вы не правильно используете переменные, нужно сначала читать данные с полей ввода:

Код:

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



Время: 09:52.

Время: 09:52.
© OSzone.net 2001-