|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] ComboBox не передаёт переменную в функцию. |
|
[решено] ComboBox не передаёт переменную в функцию.
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать
Добрый день.
сильно не пинайте, только учусь. Переменная внутри функции работает. если несколько функций то код слишком большой получается. пересмотрел несколько примеров, везде внутри функции, а надо снаружи. подскажите что не так? Скрытый текст
#include <ButtonConstants.au3> #include <ComboConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 302, 111, 192, 114) Global $Combo1 = GUICtrlCreateCombo("", 24, 24, 145, 25) GUICtrlSetData(-1, "яблоко|шарик|вода|трава|изолента", "яблоко") $Button1 = GUICtrlCreateButton("Button1", 192, 24, 75, 25) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### ; это не работает ;#cs $msg = GUICtrlRead($Combo1) if $msg = "яблоко" Then $msg = ("красное") if $msg = "шарик" Then $msg = ("круглый") if $msg = "вода" Then $msg = ("мокрая") if $msg = "трава" Then $msg = ("зеленая") if $msg = "изолента" Then $msg = ("синяя") ;#ce While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 start() EndSwitch WEnd Func start() ; это работает ;#cs ; $msg = GUICtrlRead($Combo1) ; if $msg = "яблоко" Then $msg = ("красное") ; if $msg = "шарик" Then $msg = ("круглый") ; if $msg = "вода" Then $msg = ("мокрая") ; if $msg = "трава" Then $msg = ("зеленая") ; if $msg = "изолента" Then $msg = ("синяя") ;#ce MsgBox (0,"info", $msg ) endFunc |
|
Отправлено: 13:18, 26-05-2020 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Ну вообще то в первом варианте (то что не работает), в любом случае $msg будет "красное", т.к изначально выбор стоит на яблоке.
Скорее всего нужно так: #include <GUIConstantsEx.au3> Global $sCombo_Data = 'яблоко|шарик|вода|трава|изолента' Global $sType_Data = 'красное|круглый|мокрая|зеленая|синяя' $hGUI = GUICreate('Form1', 300, 100) $Combo1 = GUICtrlCreateCombo('', 24, 24, 145, 25) GUICtrlSetData(-1, $sCombo_Data, 'яблоко') $Button1 = GUICtrlCreateButton('Button1', 192, 24, 75, 25) GUISetState(@SW_SHOW) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $Button1 start() EndSwitch WEnd Func start() Local $sRead = GUICtrlRead($Combo1) Local $aCombo = StringSplit($sCombo_Data, '|') Local $aType = StringSplit($sType_Data, '|') For $i = 1 To $aCombo[0] If $aCombo[$i] = $sRead Then MsgBox(64, 'info', $aType[$i], 0, $hGUI) EndIf Next EndFunc |
------- Отправлено: 14:31, 26-05-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Creat0R, спасибо. пойду разбираться.
P.S. если не сложно укажи ссылку на теги для Autoit. А то нашел тему а ей более 10 лет и ошибок много. http://forum.oszone.net/thread-148733.html |
Отправлено: 15:11, 26-05-2020 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 16:46, 26-05-2020 | #4 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
немного переделал (мне новичку читается легче). но всё равно спасибо. помог. Скрытый текст
#include <ButtonConstants.au3> #include <ComboConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiComboBox.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Form1", 302, 111, 192, 114) $Combo1 = GUICtrlCreateCombo("яблоко", 8, 8, 139, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL)) GUICtrlSetData(-1, "шарик|вода|трава|изолента") $Button1 = GUICtrlCreateButton("Button1", 192, 24, 75, 25) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 If _GUICtrlComboBox_GetCurSel($Combo1) = 0 Then $msg = ("красное") ElseIf _GUICtrlComboBox_GetCurSel($Combo1) = 1 Then $msg = ("круглый") ElseIf _GUICtrlComboBox_GetCurSel($Combo1) = 2 Then $msg = ("мокрая") ElseIf _GUICtrlComboBox_GetCurSel($Combo1) = 3 Then $msg = ("зелёная") Else $msg = ("синяя") EndIf start1() start2() EndSwitch WEnd Func start1() MsgBox (0,"info1", $msg ) endFunc Func start2() MsgBox (0,"info2", $msg ) endFunc |
||
Последний раз редактировалось Alkogolik, 26-05-2020 в 17:25. Причина: в теги Autoit Отправлено: 17:08, 26-05-2020 | #5 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
HP Envy X2 не передаёт изображение на внешний монитор | Stirlitz | Непонятные проблемы с Железом | 0 | 11-05-2019 20:13 | |
[решено] Микрофон передаёт фоновый звук компьютера через переднюю панель. | kraphtee | Непонятные проблемы с Железом | 4 | 09-12-2014 18:38 | |
Монитор - Samsung S19C200BR не передаёт слабые красные оттенки | CyraxZ | Прочее железо | 3 | 21-11-2014 00:19 | |
CMD/BAT - [решено] Добавить в реестр переменную именно как переменную %var% а не как ее значение | NoIZz | Скриптовые языки администрирования Windows | 3 | 13-08-2012 21:52 | |
Видеокарта не передаёт сигнал на телевизор. | EduardK | Видеокарты | 2 | 26-11-2011 15:31 |
|