|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] ComboBox не передаёт переменную в функцию. |
|
|
[решено] ComboBox не передаёт переменную в функцию.
|
|
Новый участник Сообщения: 3 |
Добрый день.
сильно не пинайте, только учусь. Переменная внутри функции работает. если несколько функций то код слишком большой получается. пересмотрел несколько примеров, везде внутри функции, а надо снаружи. подскажите что не так? Скрытый текст
#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 | |
|