Что нового

[Элементы GUI] Проверка выбора в двух радиобоксах

Gealut

Новичок
Сообщения
38
Репутация
0
Только начал экспериментировать с GUI и получается странный результат, помогите, плиз, кто-нибудь:

Код:
#include "GuiConstantsEx.au3"
;#include "ProgressConstants.au3"

Dim $site1, $site2, $typf1, $typf2, $typf3, $Button1, $Button2, $R1, $R2

GuiCreate("Тест выбора двух радиобоксов", 330, 260)

; Выбор сайта
GuiCtrlCreateGroup("AAA or BBB:", 20, 20, 140, 100)
$site1 = GuiCtrlCreateRadio("AAA", 30, 50, 100)
GuiCtrlSetState($site1, $GUI_CHECKED)
$site2 = GuiCtrlCreateRadio("BBB", 30, 70, 100)
GUICtrlCreateGroup ("",-99,-99,1,1)  ;close group

GuiCtrlCreateGroup("CCC or DDD or EEE:", 170, 20, 140, 100)
$typf1 = GuiCtrlCreateRadio("CCC", 190, 50, 100)
GuiCtrlSetState($typf1, $GUI_CHECKED)
$typf2 = GuiCtrlCreateRadio("DDD", 190, 70, 100)
$typf3 = GuiCtrlCreateRadio("EEE", 190, 90, 100)
GUICtrlCreateGroup ("",-99,-99,1,1)  ;close group

; PROGRESS
;GuiCtrlCreateProgress(90, 135, 220, 30)
;GuiCtrlSetData(-1, 0)
;GuiCtrlCreateLabel("Выполнено:", 20, 140)

; BUTTON
$Button1 = GUICtrlCreateButton("Начать",50,190,100,40)
$Button2 = GUICtrlCreateButton("Отменить",170,190,100,40)

GuiSetState()

While 1
    $nMsg = GUIGetMsg()
    Select
		Case $nMsg = $GUI_EVENT_CLOSE
			GUIDelete()
            Exit
			
		Case $nMsg = $site1 And BitAND(GUICtrlRead($site1), $GUI_CHECKED) = $GUI_CHECKED
			$R1 = "AAA"

		Case $nMsg = $site2 And BitAND(GUICtrlRead($site2), $GUI_CHECKED) = $GUI_CHECKED
			$R1 = "BBB"

		Case $nMsg = $typf1 And BitAND(GUICtrlRead($typf1), $GUI_CHECKED) = $GUI_CHECKED
			$R2 = "CCC"

		Case $nMsg = $typf2 And BitAND(GUICtrlRead($typf2), $GUI_CHECKED) = $GUI_CHECKED
			$R2 = "DDD"

		Case $nMsg = $typf3 And BitAND(GUICtrlRead($typf3), $GUI_CHECKED) = $GUI_CHECKED
			$R2 = "EEE"

        Case $nMsg = $Button1
			MsgBox(0, "Test", "Выбор: =" &$R1 & "= =" & $R2 & "=")
			GUIDelete()
			Exit
                        
        Case $nMsg = $Button2
			GUIDelete()
			Exit
			      
    EndSelect
WEnd


Если в радиобоксах выбрать вторые-третьи варианты - выводит результат правильно. Если в радиобоксах выбрать вторые-третьи варианты, а потом переключить их обратно на первый вариант - выводит результат правильно. А вот если в любом из радиобоксов вообще не изменять умолчание - то для него выведет пустую строку вместо "AAA" или "CCC" соответственно.

Где я напортачил, подскажите, плиз?
 

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
299
Gealut [?]
Где я напортачил, подскажите, плиз?
Если ты еще не кликал по чекбоксам то и значения $R1 и $R2 еще не определены.
Ты же присваиваешь им значения только при клике



Добавлено:
Сообщение автоматически объединено:

Сделай при объявлении переменных - присвоение начальных условий так :
Код:
Dim $site1, $site2, $typf1, $typf2, $typf3, $Button1, $Button2, $R1='AAA', $R2='CCC'



Добавлено:
Сообщение автоматически объединено:

Или сделай принудительный клик :

Код:
;...............................................................
GuiSetState()
ControlClick ("",'',$site1)
ControlClick ("",'',$typf1)
While 1
;.................................................................
 
Автор
G

Gealut

Новичок
Сообщения
38
Репутация
0
Спасибо, теперь все понял.
 
Верх