Что нового

Закрытие GUI окна и продолжение выполнения скрипта при выборе радио-кнопки и нажатия Button-кнопки

SHoCK13666

Новичок
Сообщения
108
Репутация
0
Вот есть такой кусок кода
Код:
...
GUICreate("Настройки", 200, 150) 
GUICtrlCreateGroup(".....:", 10, 10, 185, 90) 
$radio1 = GUICtrlCreateRadio("1", 30, 30, -1, 20)
$radio2 = GUICtrlCreateRadio("2", 30, 50, -1, 20)
$radio3 = GUICtrlCreateRadio("3", 30, 70, -1, 20)
$GO = GUICtrlCreateButton("ОК", 60, 110, 80)
GUICtrlSetState($radio3, $GUI_CHECKED)
GUISetState()

While 1
    $msg = GUIGetMsg()
Select
    Case $msg = $GO
    if  GUICtrlRead ( $radio1  ) = $GUI_CHECKED then
$type = 1 
    ElseIf GUICtrlRead ( $radio2  ) = $GUI_CHECKED then
$type = 2 
    ElseIf GUICtrlRead ( $radio3  ) = $GUI_CHECKED then
$type = 3 
EndIf
GUIDelete()
ContinueLoop
EndSelect

    If $msg = $GUI_EVENT_CLOSE Then Exit
Wend
...

При выборе какой- то радио-кнопки и нажатия кнопки ок должна записаться переменная $type, закрыться GUI окно и продолжиться выполнение скрипта. Переменная записывается, окно закрывается, а дальше ничего не происходит.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Re: Закрытие GUI окна и продолжение выполнения скрипта при выборе радио-кнопки и нажатия Button-кноп

а что должно произойти..там же удаление окна стоит..ну и все.


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

Код:
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $GO
			GUISetState(@SW_HIDE)
			If GUICtrlRead($radio1) = $GUI_CHECKED Then
				$type = 1
			ElseIf GUICtrlRead($radio2) = $GUI_CHECKED Then
				$type = 2
			ElseIf GUICtrlRead($radio3) = $GUI_CHECKED Then
				$type = 3
			EndIf
			Sleep(3000); это для примера, чтобы было видно действие скрытия окна и восстановления
			GUISetState(@SW_SHOW)
	EndSwitch
WEnd
 
Автор
S

SHoCK13666

Новичок
Сообщения
108
Репутация
0
Re: Закрытие GUI окна и продолжение выполнения скрипта при выборе радио-кнопки и нажатия Button-кноп

joiner [?]
а что должно произойти
Дальше в коде есть ещё много всего. А после нажатия ОК скрипт просто останавливается... А в Вашем случае показывает GUI окно опять после выбора


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

Сам уже разобрался... Тупанул просто)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: Закрытие GUI окна и продолжение выполнения скрипта при выборе радио-кнопки и нажатия Button-кноп

SHoCK13666 [?]
Вот есть такой кусок кода
Пишите работоспособный код.
Я бы примерно так сделал.
Код:
#include <GUIConstantsEx.au3>

Global $iType

$iType = _GetTypeValue()
MsgBox(64, 'Info', '$iType = ' & $iType)

Func _GetTypeValue($h_Parent = 0)
	Local $i_Opt, $h_Gui, $a_Rd[4] = [3, 'First', 'Second', 'Third'], $i_BtnOK

	$i_Opt = Opt('GUIOnEventMode', 0)
	$h_Gui = GUICreate('Настройки', 200, 150, -1, -1, -1, -1, $h_Parent)
	GUICtrlCreateGroup('.....:', 10, 10, 185, 90)
	For $i = 1 To $a_Rd[0]
		$a_Rd[$i] = GUICtrlCreateRadio($a_Rd[$i], 30, 30 + ($i - 1) * 20, -1, 20)
	Next
	GUICtrlCreateGroup('', -99, -99, 1, 1)
	GUICtrlSetState($a_Rd[$a_Rd[0]], $GUI_CHECKED)
	$i_BtnOK = GUICtrlCreateButton('ОК', 60, 110, 80)
	GUISetState(@SW_SHOW, $h_Gui)
	While 1
		Switch GUIGetMsg()
			Case $GUI_EVENT_CLOSE, $i_BtnOK
				ExitLoop
		EndSwitch
	WEnd
	For $i = 1 To $a_Rd[0]
		If BitAND(GUICtrlRead($a_Rd[$i]), $GUI_CHECKED) Then
			GUIDelete($h_Gui)
			Opt('GUIOnEventMode', $i_Opt)
			Return $i
		EndIf
	Next
	GUIDelete($h_Gui)
	Opt('GUIOnEventMode', $i_Opt)
	Return -1
EndFunc   ;==>_GetTypeValue
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Re: Закрытие GUI окна и продолжение выполнения скрипта при выборе радио-кнопки и нажатия Button-кноп

Основываясь на первом сообщении код должен быть таким:
Код:
...
GUICreate("Настройки", 200, 150)
GUICtrlCreateGroup(".....:", 10, 10, 185, 90)
$radio1 = GUICtrlCreateRadio("1", 30, 30, -1, 20)
$radio2 = GUICtrlCreateRadio("2", 30, 50, -1, 20)
$radio3 = GUICtrlCreateRadio("3", 30, 70, -1, 20)
$GO = GUICtrlCreateButton("ОК", 60, 110, 80)
GUICtrlSetState($radio3, $GUI_CHECKED)
GUISetState()

While 1
    $msg = GUIGetMsg()
Select
    Case $msg = $GO
    if  GUICtrlRead ( $radio1  ) = $GUI_CHECKED then
$type = 1
    ElseIf GUICtrlRead ( $radio2  ) = $GUI_CHECKED then
$type = 2
    ElseIf GUICtrlRead ( $radio3  ) = $GUI_CHECKED then
$type = 3
EndIf
GUIDelete()
ExitLoop
EndSelect

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
Wend
...
 
Верх