Что нового

GUICtrlSetOnEvent основанный на значении выражений

Diesel

Новичок
Сообщения
35
Репутация
0
Слепил подобие скрипта, но он не работает, прошу исправить ошибки.
Мне необходимо при нажатии (любой) кнопки она запоминала переменную и окно $Form1 = GUICreate закрывалось, после начиналось выполнение команды по "выбранной" переменной.

Код:
#include <GUIConstants.au3> 
#Include <WinAPI.au3> 

Opt("TrayMenuMode",1)
Opt("GUICoordMode",1)
Opt("GUIOnEventMode", 1)

Global $i = 0

	$Form1 = GUICreate("Тест", 211, 80)
	GUICtrlCreateLabel ("Выберите цифру",57,12,100,15)
	$1 = GUICtrlCreateButton ("1",8,35,35,30)
	GUICtrlSetOnEvent($1, $i = 1)
	$2 = GUICtrlCreateButton ("2",48,35,35,30)
	GUICtrlSetOnEvent($2, $i = 2)
	$3 = GUICtrlCreateButton ("3",88,35,35,30)
	GUICtrlSetOnEvent($3, $i = 3)
	$4 = GUICtrlCreateButton ("4",128,35,35,30)
	GUICtrlSetOnEvent($4, $i = 4)
	$5 = GUICtrlCreateButton ("5",168,35,35,30)
	GUICtrlSetOnEvent($5, $i = 5)

While 0
    If $i = 1 Then
	MsgBox(0, "1", "Вы выбрали 1.")
        If $i = 2 Then
		MsgBox(0, "2", "Вы выбрали 2.")
			If $i = 3 Then
			MsgBox(0, "3", "Вы выбрали 3.")
				If $i = 4 Then
				MsgBox(0, "4", "Вы выбрали 4.")
					If $i = 4 Then
					MsgBox(0, "5", "Вы выбрали 5.")
					EndIf
				EndIf
			EndIf
        EndIf
    EndIf
    WEnd

GUISetState()
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
Func _Exit()
	Exit
EndFunc
$exit = TrayCreateItem("Выход")
Do
Until GUIGetMsg() = -3 or TrayGetMsg() = $exit
 
Автор
D

Diesel

Новичок
Сообщения
35
Репутация
0
То что нужно :smile: спасибо!

Но остается вопрос.
Это лишь отрезок из полного скрипта, как после сообщения
Код:
MsgBox(0, "1", "Вы выбрали 1.")
сделать закрытие гуя
Код:
$Form1 = GUICreate("Тест", 211, 80)
и переход на главный гуй?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Diesel
Попробуйте так:
Код:
#NoTrayIcon
#include <GUIConstants.au3>
#include <Constants.au3>

Opt("TrayMenuMode", 3)
Opt("GUIOnEventMode", 1)
Opt("TrayOnEventMode", 1)

Dim $aButon[6] = [5]

$nShow = TrayCreateItem("Открыть окно")
TrayItemSetOnEvent(-1, "_Show")
TrayItemSetState(-1, $TRAY_DISABLE)
TrayCreateItem("")
$nExit = TrayCreateItem("Выход")
TrayItemSetOnEvent(-1, "_Exit")
$Form1 = GUICreate("Тест", 211, 80)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Hide")
GUICtrlCreateLabel("Выберите цифру", 57, 12, 100, 15)
For $i = 1 To $aButon[0]
	$aButon[$i] = GUICtrlCreateButton($i, 8 + 40 * ($i - 1), 35, 35, 30)
	GUICtrlSetOnEvent(-1, '_MyFunc')
Next
GUISetState(@SW_SHOW, $Form1)
TraySetState()

While 1
	Sleep(10)
WEnd

Func _MyFunc()
	GUISetState(@SW_HIDE, $Form1)
	TrayItemSetState($nShow, $TRAY_ENABLE)
	MsgBox(64, @GUI_CtrlId, 'Функция № ' & GUICtrlRead(@GUI_CtrlId))
EndFunc   ;==>_MyFunc

Func _Hide()
	GUISetState(@SW_HIDE, $Form1)
	TrayItemSetState($nShow, $TRAY_ENABLE)
EndFunc   ;==>_Hide

Func _Exit()
	Exit
EndFunc   ;==>_Exit

Func _Show()
	GUISetState(@SW_SHOW, $Form1)
	TrayItemSetState($nShow, $TRAY_DISABLE)
EndFunc   ;==>_Show
 
Автор
D

Diesel

Новичок
Сообщения
35
Репутация
0
madmasles, а как туда на кнопки добавить функции? У меня не получается :-[


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

И еще проблема выходит, если назначить эту команду на любую кнопку
Код:
Func _test2()
$WinTest2 = GUICreate("тест2", 211, 80)
	$test2 = GUICtrlCreateButton ("ок",88,35,35,30)
	GUICtrlSetOnEvent($test2, "_Test3")
	GUISetState()
EndFunc

Func _test3()
	$WinPet = GUIDelete()
EndFunc

Первое окно просто перестает отвечать на нажатие кнопок, и даже не закрывается
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Diesel
Попробуйте так:
Код:
#NoTrayIcon
#include <GUIConstants.au3>
#include <Constants.au3>

Opt('TrayMenuMode', 3)
Opt('GUIOnEventMode', 1)
Opt('TrayOnEventMode', 1)

$nShow = TrayCreateItem('Открыть окно')
TrayItemSetOnEvent(-1, '_Show')
TrayItemSetState(-1, $TRAY_DISABLE)
TrayCreateItem('')
TrayCreateItem('Выход')
TrayItemSetOnEvent(-1, '_Exit')
$hGui = GUICreate('Тест', 211, 80)
GUISetOnEvent($GUI_EVENT_CLOSE, '_Hide')
GUICtrlCreateLabel('Выберите цифру', 57, 12, 100, 15)
For $i = 1 To 5
	GUICtrlCreateButton($i, 8 + 40 * ($i - 1), 35, 35, 30)
	GUICtrlSetOnEvent(-1, '_Func')
Next
GUISetState(@SW_SHOW)
TraySetState()

While 1
	Sleep(10)
WEnd

Func _Hide()
	GUISetState(@SW_HIDE, $hGui)
	TrayItemSetState($nShow, $TRAY_ENABLE)
EndFunc   ;==>_Hide

Func _Exit()
	Exit
EndFunc   ;==>_Exit

Func _Show()
	GUISetState(@SW_SHOW, $hGui)
	TrayItemSetState($nShow, $TRAY_DISABLE)
EndFunc   ;==>_Show

Func _DelWin()
	GUIDelete(@GUI_WinHandle)
	TrayItemSetState($nShow, $TRAY_ENABLE)
EndFunc   ;==>_DelWin

Func _Func()
	GUISetState(@SW_HIDE, $hGui)
	GUICreate('Test ' & @GUI_CtrlId - 3, 211, 80)
	GUISetOnEvent($GUI_EVENT_CLOSE, '_DelWin')
	GUICtrlCreateButton('ок', 88, 35, 35, 30)
	GUICtrlSetOnEvent(-1, '_Test' & @GUI_CtrlId - 3)
	GUISetState(@SW_SHOW)
EndFunc   ;==>_Func

Func _Test1()
	MsgBox(64, 'Test', 'Func _Test1()')
EndFunc   ;==>_Test1

Func _Test2()
	MsgBox(64, 'Test', 'Func _Test2()')
EndFunc   ;==>_Test2

Func _Test3()
	MsgBox(64, 'Test', 'Func _Test3()')
EndFunc   ;==>_Test3

Func _Test4()
	MsgBox(64, 'Test', 'Func _Test4()')
EndFunc   ;==>_Test4

Func _Test5()
	MsgBox(64, 'Test', 'Func _Test5()')
EndFunc   ;==>_Test5
 
Верх