Что нового

[Окна, Диалоги] Работа с полями диалогового окна

samuron

Новичок
Сообщения
7
Репутация
1
Доброго времени суток Господа. Прошу помочь в последующем вопросе, т.к я только учусь и не все понимаю(очень сложно).
Помогите пожалуйста доработать представленный код. Бьюсь уже не один день, а сдвинуться не могу. Необходимо:
1) Для цикла данные берутся из созданного InputBox, а надо чтобы InputBox не было, а данные брались из $Input1.
2) $iCombo1 поместить в переменную, для дальнейшей ее вставки через команду Control Send
3) $iCombo2 поместить в переменную, для дальнейшей ее вставки через команду Control Send
4) $Input2 поместить в переменную, для дальнейшей ее вставки через команду Control Send
5) $Input3 поместить в переменную, для дальнейшей ее вставки через команду Control Send
Очень надеюсь на Вашу помощь. По возможности если возможно подпишите комментарии (к сделанному вами в коде), для дальнейшего мною анализа.
Код:
#include <GUIConstantsEx.au3>
#include <GUIComboBox.au3>

$hGUI = GUICreate("Automation", 355, 361, 404, 316)


$sConfig = @ScriptDir & '\Config.ini'
$sHistory = IniRead($sConfig, 'Main', 'History', '')
$iCombo1 = GUICtrlCreateCombo("Выберите принтер", 40, 112, 273, 25)
$iCombo2 = GUICtrlCreateCombo("Выберите принтер зебра", 40, 184, 273, 25)
GUICtrlSetData($iCombo1, $sHistory)
GUICtrlSetData($iCombo2, $sHistory)


$Input1 = GUICtrlCreateInput("номера заказов", 40, 48, 273, 21)
$Label1 = GUICtrlCreateLabel("Введите номера заказов", 72, 24, 209, 18)
GUICtrlSetBkColor(-1, -2)
GUICtrlSetData(-1, "Введите номера заказов")
GUICtrlSetFont(-1, 14, 800, 2, "Times New Roman")
$Label2 = GUICtrlCreateLabel("Выберите принтер", 87, 86, 174, 26)
GUICtrlSetBkColor(-1, -2)
GUICtrlSetData(-1, "Выберите принтер")
GUICtrlSetFont(-1, 14, 800, 2, "Times New Roman")
$Label3 = GUICtrlCreateLabel("Выберите принтер Zebra", 64, 160, 226, 18)
GUICtrlSetBkColor(-1, -2)
GUICtrlSetData(-1, "Выберите принтер Zebra")
GUICtrlSetFont(-1, 14, 800, 2, "Times New Roman")
$Button2 = GUICtrlCreateButton("Начать", 116, 313, 113, 25)
$Input2 = GUICtrlCreateInput("с какой даты", 72, 264, 81, 21)
$Input3 = GUICtrlCreateInput("По какую дату", 224, 264, 81, 21)
$Label4 = GUICtrlCreateLabel("Введите даты для обновления базы", 29, 233, 309, 26)
GUICtrlSetBkColor(-1, -2)
GUICtrlSetData(-1, "Введите даты для обновления базы")
GUICtrlSetFont(-1, 14, 800, 2, "Times New Roman")
$Label5 = GUICtrlCreateLabel("С:", 47, 264, 23, 26)
GUICtrlSetBkColor(-1, -2)
GUICtrlSetData(-1, "С:")
GUICtrlSetFont(-1, 14, 800, 2, "Times New Roman")
$Label6 = GUICtrlCreateLabel("По:", 190, 262, 34, 26)
GUICtrlSetBkColor(-1, -2)
GUICtrlSetData(-1, "По:")
GUICtrlSetFont(-1, 14, 800, 2, "Times New Roman")
GUISetState(@SW_SHOW)

$Pic1 = GUICtrlCreatePic("C:\Users\\Desktop\2fons.ru-51421.jpg", 0, 0, 355, 361)
GUISetState(@SW_SHOW, $hGUI)

#include <GUIConstantsEx.au3>





While 1

	Switch GUIGetMsg()
	Case $GUI_EVENT_CLOSE

			 $sHistory = _GUICtrlComboBox_GetList($iCombo1)
             $sHistory = _GUICtrlComboBox_GetList($iCombo2)



             Exit


              $sItem = GUICtrlRead($iCombo1)
			  $sItem = GUICtrlRead($iCombo2)

            If $sItem <> '' Then
                _GUICtrlComboBox_AddString($iCombo1, $sItem)
				_GUICtrlComboBox_AddString($iCombo2, $sItem)
                _GUICtrlComboBox_SetEditText($iCombo1, '')
				_GUICtrlComboBox_SetEditText($iCombo2, '')
                GUICtrlSetState($iCombo1, $GUI_FOCUS)
				GUICtrlSetState($iCombo2, $GUI_FOCUS)

			EndIf
		 Case $Button2

			$sStr = InputBox("диалоговое окно", "введите слова через запятую...", "черепаха,рысь,волк,кот")
If @error = 1 Then Exit
$aWords = StringSplit($sStr, ",") 
Run("notepad")
WinWaitActive("Безымянный — Блокнот")
For $i = 1 To $aWords[0] 
    WinActivate("Безымянный — Блокнот")
    
	Send($aWords[$i])
    Send("{Enter}")
	WinActive("Automation")
			WinClose("Automation")
Next

	EndSwitch

WEnd
 
A

Alofa

Гость
OffTopic:
samuron сказал(а):
...для дальнейшего мною анализа.
А людям анализировать ваш код, в таком виде, думаете удобно? В SciTe-то все выглядит красиво.
Заключите ваш код не в тег "[code][/code]", а в "[autoit][/autoit]" пожалуйста.
И желательно предварительно обработать его "Tidy Autoit Source" (в зависимости от используемой SciTE, это сочетание клавиш "Alt+T" или "Ctrl+T").
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
samuron

Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
Код:
#include <GUIConstantsEx.au3>
#include <GUIComboBox.au3>

;~ $sConfig = @ScriptDir & '\Config.ini'
;~ $sHistory = IniRead($sConfig, 'Main', 'History', '')

$hGUI = GUICreate("Automation", 355, 361, 404, 316)
$iLabel1 = GUICtrlCreateLabel("Номера заказов", 110, 24, 209, 18)
GUICtrlSetFont(-1, 14, 800, 2, "Times New Roman")
$iInput1 = GUICtrlCreateInput("372635", 40, 48, 273, 21)
$iLabel2 = GUICtrlCreateLabel("Выберите принтер", 90, 86, 174, 26)
GUICtrlSetFont(-1, 14, 800, 2, "Times New Roman")
$iCombo1 = GUICtrlCreateCombo("Выберите принтер", 40, 112, 273, 25)
GUICtrlSetData($iCombo1, "принтер1|принтер2")
$iLabel3 = GUICtrlCreateLabel("Выберите принтер Zebra", 64, 160, 226, 18)
GUICtrlSetFont(-1, 14, 800, 2, "Times New Roman")
$iCombo2 = GUICtrlCreateCombo("Выберите принтер", 40, 184, 273, 25)
GUICtrlSetData($iCombo2, "зебра1|зебра2")
$iLabel4 = GUICtrlCreateLabel("Введите даты для обновления базы", 29, 233, 309, 26)
GUICtrlSetFont(-1, 14, 800, 2, "Times New Roman")
$Label5 = GUICtrlCreateLabel("С:", 47, 264, 23, 26)
GUICtrlSetFont(-1, 14, 800, 2, "Times New Roman")
$iInput2 = GUICtrlCreateInput("02.03.2022", 72, 264, 81, 21)
$Label6 = GUICtrlCreateLabel("По:", 190, 262, 34, 26)
GUICtrlSetFont(-1, 14, 800, 2, "Times New Roman")
$iInput3 = GUICtrlCreateInput("22.05.2022", 224, 264, 81, 21)
$Button2 = GUICtrlCreateButton("Начать", 116, 313, 113, 25)
GUISetState(@SW_SHOW)

;~ $Pic1 = GUICtrlCreatePic("C:\Users\Desktop\2fons.ru-51421.jpg", 0, 0, 355, 361)
GUISetState(@SW_SHOW, $hGUI)

While 1

	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button2

			$sStr = GUICtrlRead($iInput1) & @LF
			$sStr &= GUICtrlRead($iCombo1) & @LF
			$sStr &= GUICtrlRead($iCombo2) & @LF
			$sStr &= GUICtrlRead($iInput2) & @LF
			$sStr &= GUICtrlRead($iInput3) & @LF

			Run("notepad")
			WinWait("[CLASS:Notepad]")
			Send($sStr)
	EndSwitch
WEnd
 
Автор
S

samuron

Новичок
Сообщения
7
Репутация
1
Спасибо Вам огромное Garrett!!! Выручали. :ok:
 
A

Alofa

Гость
Еще:
Код:
#include <GUIConstantsEx.au3>; Все "#include" обычно располагают в начале скрипта

Local $sConfig = @ScriptDir & '\Config.ini'
Local $sHistory = IniRead($sConfig, 'Main', 'History', 0)
Local $hElement[5] ; Здесь будут храниться controlID некоторых элементов GUI

$hGUI = GUICreate("Automation", 355, 361)
GUICtrlCreatePic(@ProgramFilesDir & '\AutoIt3\Examples\GUI\msoobe.jpg', 0, 0, 355, 361) ; В каком месте скрипта стоит данная функция тоже важно
GUICtrlSetState(-1, $GUI_DISABLE) ; Это обязательно в нашем случае (читайте справку по "GUICtrlCreatePic()")

$hElement[1] = GUICtrlCreateCombo("Выберите принтер", 40, 112, 273, 25)
$hElement[2] = GUICtrlCreateCombo("Выберите принтер зебра", 40, 184, 273, 25)
GUICtrlSetData($hElement[1], $sHistory)
GUICtrlSetData($hElement[2], $sHistory)

$hElement[0] = GUICtrlCreateInput("номера заказов", 40, 48, 273, 21)
$hElement[3] = GUICtrlCreateInput("с какой даты", 72, 264, 81, 21)
$hElement[4] = GUICtrlCreateInput("По какую дату", 224, 264, 81, 21)
$Button2 = GUICtrlCreateButton("Начать", 116, 313, 113, 25)

GUICtrlSetDefBkColor($GUI_BKCOLOR_TRANSPARENT, $hGUI) ;	|=> Все нижеследующие элементы будут иметь заданный фоновый цвет
GUISetFont(14, 800, 2, "Times New Roman") ;				|   и шрифт

GUICtrlCreateLabel("Введите номера заказов", 72, 24, 209, 18)
GUICtrlCreateLabel("Выберите принтер", 87, 86, 174, 26)
GUICtrlCreateLabel("Выберите принтер Zebra", 64, 160, 226, 18)
GUICtrlCreateLabel("Введите даты для обновления базы", 29, 233, 309, 26)
GUICtrlCreateLabel("С:", 47, 264, 23, 26)
GUICtrlCreateLabel("По:", 190, 262, 34, 26)

GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			ExitLoop ; Здесь было не понятно, что вы хотели сделать - поэтому Выходим из цикла
		Case $Button2
			Local $sStr
			For $sS In $hElement
				$sStr &= GUICtrlRead($sS) & @CRLF
				If $sS = $hElement[1] Then IniWrite($sConfig, 'Main', 'History', GUICtrlRead($sS) & '|' & $sHistory) ; Записываем данные в "Config.ini"
			Next

			Run("notepad.exe")
			$hWnd = WinWait("[CLASS:Notepad]")
			ControlSetText($hWnd, '', '[CLASS:Edit; INSTANCE:1]', $sStr)
			ExitLoop
	EndSwitch
WEnd
GUIDelete($hGUI) ; Это в принципе не обязательно, если конец скрипта
 
Верх