Что нового

[Окна, Диалоги] Исправление работы GUICtrlCreateCombo при активации/деактивации

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
#include <GUIConstantsEx.au3>

HotKeySet('{1}', '_Func')

$hGUI = GUICreate('GUI окно', 150, 120)
$nComb = GUICtrlCreateCombo('', 10, 15, 110, 150)
GUICtrlSetData(-1, 'CPU|Cd-rom|HDD|DDR', 'CPU')
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
		Case $nComb
            Switch GUICtrlRead($nComb)
                Case "CPU"
                    MsgBox(0, "selected", "Тут пишем код для CPU")
                Case "Cd-rom"
                    MsgBox(0, "selected", "Тут пишем код для Cd-rom")
                Case "HDD"
                    MsgBox(0, "selected", "Тут пишем код для HDD")
                Case "DDR"
                    MsgBox(0, "selected", "Тут пишем код для DDR")
            EndSwitch
    EndSwitch
WEnd

Func _Func()
	Local Static $iState = False
	Switch $iState
		Case 1
			GUICtrlSetState($nComb, $GUI_DISABLE)
			$iState = False
		Case Else
			GUICtrlSetState($nComb, $GUI_ENABLE)
			$iState = True
    EndSwitch
EndFunc
 

ivsatel

Продвинутый
Сообщения
319
Репутация
84
Viktor1703
Я так понял, что требуется еще и реакция на
Код:
GUICtrlSetState($hGUI, $GUI_ENABLE)

Т.е. нажал 1 и сразу,
Код:
GUICtrlSetState($hGUI, $GUI_ENABLE)
, и сразу
Код:
MsgBox(0, "selected", "")

А следующее нажатие 1 только
Код:
GUICtrlSetState($hGUI, $GUI_DISABLE)

Это если я правильно понял.
Промирно так:
Код:
#include <GUIConstantsEx.au3>

HotKeySet('{1}', '_Func')

$hGUI = GUICreate('GUI окно', 150, 120)
$nComb = GUICtrlCreateCombo('', 10, 15, 110, 150)
GUICtrlSetData(-1, 'CPU|Cd-rom|HDD|DDR', 'CPU')
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $nComb
            Switch GUICtrlRead($nComb)
                Case "CPU"
                    MsgBox(0, "selected", "Тут пишем код для CPU")
                Case "Cd-rom"
                    MsgBox(0, "selected", "Тут пишем код для Cd-rom")
                Case "HDD"
                    MsgBox(0, "selected", "Тут пишем код для HDD")
                Case "DDR"
                    MsgBox(0, "selected", "Тут пишем код для DDR")
			EndSwitch
    EndSwitch
WEnd

Func _Func()
    Local Static $iState = False
    Switch $iState
        Case 1
            GUICtrlSetState($nComb, $GUI_DISABLE)
            $iState = False
        Case Else
            GUICtrlSetState($nComb, $GUI_ENABLE)
            $iState = True
			Switch GUICtrlRead($nComb)
                Case "CPU"
                    MsgBox(0, "selected", "Тут пишем код для CPU")
                Case "Cd-rom"
                    MsgBox(0, "selected", "Тут пишем код для Cd-rom")
                Case "HDD"
                    MsgBox(0, "selected", "Тут пишем код для HDD")
                Case "DDR"
                    MsgBox(0, "selected", "Тут пишем код для DDR")
			EndSwitch
    EndSwitch
EndFunc
 
Автор
nu3dell

nu3dell

Осваивающий
Сообщения
139
Репутация
24
ivsatel Ну вроде хорошо, чуть исрвил что бы 2 раза одно и тоже не писать

Код:
#include <GUIConstantsEx.au3>

HotKeySet('{1}', '_Func')

$hGUI = GUICreate('GUI окно', 150, 120)
$nComb = GUICtrlCreateCombo('', 10, 15, 110, 150)
GUICtrlSetData(-1, 'CPU|Cd-rom|HDD|DDR', 'CPU')
GUICtrlSetState(-1, $GUI_DISABLE)
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $nComb
		_list()
    EndSwitch
WEnd

Func _Func()
    Local Static $iState = False
    Switch $iState
        Case 1
            GUICtrlSetState($nComb, $GUI_DISABLE)
            $iState = False
        Case Else
            GUICtrlSetState($nComb, $GUI_ENABLE)
            $iState = True
            _list()
    EndSwitch
EndFunc

 Func _list()
	  Switch GUICtrlRead($nComb)
                Case "CPU"
                    MsgBox(0, "selected", "Тут пишем код для CPU")
                Case "Cd-rom"
                    MsgBox(0, "selected", "Тут пишем код для Cd-rom")
                Case "HDD"
                    MsgBox(0, "selected", "Тут пишем код для HDD")
                Case "DDR"
                    MsgBox(0, "selected", "Тут пишем код для DDR")
				EndSwitch
EndFunc
 
Верх