Что нового

[Элементы GUI] Назначить действие двум кнопкам через Case

thefrog

Новичок
Сообщения
26
Репутация
0
Здравствуйте:smile:
Подскажите, как назначить двум кнопкам одно действие через инструкцию Case

К примеру у меня есть 2 окна: Родительское и дочернее. На каждом окне по одной кнопке, при нажатии на кнопку (как на род. так и на дочерн. окне) окну дается свойство
Код:
@SW_HIDE
.
И вот я подумал: если я буду писать для двух кнопок одно и тоже действие, это получается бред.
Подскажите, как правильно написать, чтобы было не вот так:
Код:
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $PaternHide
			GUISetState(@SW_HIDE)
		Case $ChildHide
			GUISetState(@SW_HIDE)
						
	EndSwitch
WEnd


А вот так:smile:

Код:
While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $PaternHide & $ChildHide
			GUISetState(@SW_HIDE)
	EndSwitch
WEnd

Пожалуйста:smile:
 

Fever

Скриптер
Сообщения
308
Репутация
112
Код:
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $PaternHide, $ChildHide
            GUISetState(@SW_HIDE)
    EndSwitch
WEnd
 
Автор
T

thefrog

Новичок
Сообщения
26
Репутация
0
Да, действительно работает, спасибо за подсказку:smile:

Но, когда я вызываю дочернее окно и нажимаю "спрятать" в родительском не работает.

Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Дочернее окно", 221, 96, 192, 124)
$Button3 = GUICtrlCreateButton("Спрятать", 72, 40, 75, 25)

$Form1 = GUICreate("Родительское окно", 245, 80, 192, 124)
$Button1 = GUICtrlCreateButton("Спрятать", 136, 32, 75, 25)
$Button2 = GUICtrlCreateButton("Дочернее", 40, 32, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1,$Button3
			GUISetState(@SW_HIDE)
		Case $Button2
			GUISetState(@SW_SHOW, $Form2)

	EndSwitch
WEnd


Может быть я что-то не правильно сделал :(
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
thefrog
Попробуйте так:
1. выход только из родительского окна. На то оно и родительское. :smile:
Код:
#include <GUIConstantsEx.au3>

#region ### START Koda GUI section ### Form=
$hForm2 = GUICreate("Дочернее окно", 221, 96, 192, 124)
$nButton3 = GUICtrlCreateButton("Спрятать", 72, 40, 75, 25)

$hForm1 = GUICreate("Родительское окно", 245, 80, 192, 124)
$nButton1 = GUICtrlCreateButton("Спрятать", 136, 32, 75, 25)
;$Button2 = GUICtrlCreateButton("Дочернее", 40, 32, 75, 25)
GUISetState(@SW_SHOW, $hForm1)
#endregion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg(1)
	Switch $nMsg[1]
		Case $hForm1
			Switch $nMsg[0]
				Case $GUI_EVENT_CLOSE
					Exit
				Case $nButton1
					GUISetState(@SW_HIDE, $hForm1)
					GUISetState(@SW_SHOW, $hForm2)
			EndSwitch
		Case $hForm2
			Switch $nMsg[0]
				Case $GUI_EVENT_CLOSE, $nButton3
					GUISetState(@SW_HIDE, $hForm2)
					GUISetState(@SW_SHOW, $hForm1)
			EndSwitch
	EndSwitch
WEnd
2. выход из любого окна.
Код:
#include <GUIConstantsEx.au3>

#Region ### START Koda GUI section ### Form=
$hForm2 = GUICreate("Дочернее окно", 221, 96, 192, 124)
$nButton3 = GUICtrlCreateButton("Спрятать", 72, 40, 75, 25)

$hForm1 = GUICreate("Родительское окно", 245, 80, 192, 124)
$nButton1 = GUICtrlCreateButton("Спрятать", 136, 32, 75, 25)
;$nButton2 = GUICtrlCreateButton("Дочернее", 40, 32, 75, 25)
GUISetState(@SW_SHOW, $hForm1)
#EndRegion ### END Koda GUI section ###

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $nButton1
            GUISetState(@SW_HIDE, $hForm1)
			GUISetState(@SW_SHOW, $hForm2)
        Case $nButton3
			GUISetState(@SW_HIDE, $hForm2)
			GUISetState(@SW_SHOW, $hForm1)
    EndSwitch
WEnd
 
Автор
T

thefrog

Новичок
Сообщения
26
Репутация
0
Это то, что я искал, спасибо! :smile:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
OffTopic:
thefrog
Примеры на месте.
 
Верх