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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] ComboBox не передаёт переменную в функцию. (http://forum.oszone.net/showthread.php?t=345325)

Alkogolik 26-05-2020 13:18 2922736

ComboBox не передаёт переменную в функцию.
 
Добрый день.
сильно не пинайте, только учусь. Переменная внутри функции работает. если несколько функций то код слишком большой получается.
пересмотрел несколько примеров, везде внутри функции, а надо снаружи. подскажите что не так?
Скрытый текст
Код:

#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


Creat0R 26-05-2020 14:31 2922755

Ну вообще то в первом варианте (то что не работает), в любом случае $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


Alkogolik 26-05-2020 15:11 2922768

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

Creat0R 26-05-2020 16:46 2922786

Цитата:

Цитата Alkogolik
укажи ссылку на теги для Autoit »

Не совсем понял, про какие теги идёт речь?
Если речь про подсветку, тогда сюда.

Alkogolik 26-05-2020 17:08 2922792

Цитата:

Цитата 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



Время: 17:07.

Время: 17:07.
© OSzone.net 2001-