Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] ComboBox не передаёт переменную в функцию.

Ответить
Настройки темы
[решено] ComboBox не передаёт переменную в функцию.

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Alkogolik
Дата: 26-05-2020
Описание: код в теги.
Добрый день.
сильно не пинайте, только учусь. Переменная внутри функции работает. если несколько функций то код слишком большой получается.
пересмотрел несколько примеров, везде внутри функции, а надо снаружи. подскажите что не так?
Скрытый текст
Код: Выделить весь код
#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

 

Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3041
Благодарности: 1004

Профиль | Сайт | Отправить 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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:31, 26-05-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Creat0R, спасибо. пойду разбираться.
P.S. если не сложно укажи ссылку на теги для Autoit. А то нашел тему а ей более 10 лет и ошибок много.
http://forum.oszone.net/thread-148733.html

Отправлено: 15:11, 26-05-2020 | #3


Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3041
Благодарности: 1004

Профиль | Сайт | Отправить PM | Цитировать


Цитата Alkogolik:
укажи ссылку на теги для Autoit »
Не совсем понял, про какие теги идёт речь?
Если речь про подсветку, тогда сюда.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:46, 26-05-2020 | #4


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] ComboBox не передаёт переменную в функцию.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход