Must AutoIt
Сообщения: 3054
Благодарности: 1009
|
Профиль
|
Сайт
|
Отправить PM
| Цитировать
Цитата nibble74:
в вашем варианте рекурсия происходит в каждой из групп, а нужно чтобы рекурсивно происходило в обеих группах. »
|
Не совсем понял, что значит в обеих?
1 привязан к 1.1, а 2 к 2.2.
Может так:
Код: 
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.14.2
#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
Opt("TrayIconDebug", 1)
Opt("TrayIconHide", 0)
Opt("GUICloseOnESC", 1)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Beep(1000, 150)
GUICreate("TEST", 440, 440)
$nInst = GUICtrlCreateButton ("Run", 7, 410, 80, 22)
$Close = GUICtrlCreateButton ("Exit", 350, 410, 80, 22)
$icon = GUICtrlCreateIcon ("@ScriptDir & '\name.exe",0, 29,375,32,32)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GUICtrlCreateGroup("Disable", 7, 15, 426, 170)
GUICtrlSetFont(-1, -1, 700)
DllCall('UxTheme.dll', 'int', 'SetWindowTheme', 'hwnd', GUICtrlGetHandle(-1), 'wstr', 0, 'wstr', 0)
GUICtrlSetColor(-1, 0x0000FF)
$id1 = GUICtrlCreateCheckbox ("CHECKBOX 1", 12, 40, -1, -1)
$id11 = GUICtrlCreateCheckbox ("CHECKBOX 1.1", 12, 230, -1, -1)
$id2 = GUICtrlCreateCheckbox ("CHECKBOX 2", 12, 60, -1, -1)
$id12 = GUICtrlCreateCheckbox ("CHECKBOX 2.2", 12, 250, -1, -1)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GUICtrlCreateGroup("Restore", 7, 200, 426, 170)
GUICtrlSetFont(-1, -1, 700)
DllCall('UxTheme.dll', 'int', 'SetWindowTheme', 'hwnd', GUICtrlGetHandle(-1), 'wstr', 0, 'wstr', 0)
GUICtrlSetColor(-1, 0x0000FF)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GUISetState()
While 1
$iMsg = GUIGetMsg()
Switch $iMsg
Case $Close, $GUI_EVENT_CLOSE
Exit
Case $nInst
GUISetState(@SW_MINIMIZE);@SW_MINIMIZE
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Отключить и остановить^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If _Checked($id1) Then
MsgBox(4096+48, '', 'CHECKBOX 1', 1)
Endif
If _Checked($id2) Then
MsgBox(4096+48, '', 'CHECKBOX 2', 1)
Endif
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^По умолчанию^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If _Checked($id11) Then
MsgBox(4096+48, '', 'CHECKBOX 1.1', 1)
Endif
If _Checked($id12) Then
MsgBox(4096+48, '', 'CHECKBOX 2.2', 1)
Endif
GUISetState(@SW_RESTORE)
Case $id1, $id11, $id2, $id12
$iNext = $iMsg + 1
If $iMsg = $id11 Or $iMsg = $id12 Then
$iNext = $iMsg - 1
EndIf
GUICtrlSetState($iNext, $GUI_UNCHECKED)
If Not _Checked($iMsg) Then GUICtrlSetState($iMsg, $GUI_CHECKED)
EndSwitch
WEnd
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Func _Checked($idControlID)
Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc ;==>_Checked
А вообще это делается не с CheckBox, а с Radio.
Код: 
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.14.2
#ce ----------------------------------------------------------------------------
#include <GUIConstantsEx.au3>
Opt("TrayIconDebug", 1)
Opt("TrayIconHide", 0)
Opt("GUICloseOnESC", 1)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Beep(1000, 150)
GUICreate("TEST", 440, 440)
$nInst = GUICtrlCreateButton ("Run", 7, 410, 80, 22)
$Close = GUICtrlCreateButton ("Exit", 350, 410, 80, 22)
$icon = GUICtrlCreateIcon ("@ScriptDir & '\name.exe",0, 29,375,32,32)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GUICtrlCreateGroup("Disable", 7, 15, 426, 170)
GUICtrlSetFont(-1, -1, 700)
DllCall('UxTheme.dll', 'int', 'SetWindowTheme', 'hwnd', GUICtrlGetHandle(-1), 'wstr', 0, 'wstr', 0)
GUICtrlSetColor(-1, 0x0000FF)
$id1 = GUICtrlCreateRadio ("CHECKBOX 1", 12, 40, -1, -1)
$id11 = GUICtrlCreateRadio ("CHECKBOX 1.1", 12, 230, -1, -1)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GUICtrlCreateGroup("Restore", 7, 200, 426, 170)
GUICtrlSetFont(-1, -1, 700)
DllCall('UxTheme.dll', 'int', 'SetWindowTheme', 'hwnd', GUICtrlGetHandle(-1), 'wstr', 0, 'wstr', 0)
GUICtrlSetColor(-1, 0x0000FF)
$id2 = GUICtrlCreateRadio ("CHECKBOX 2", 12, 60, -1, -1)
$id12 = GUICtrlCreateRadio ("CHECKBOX 2.2", 12, 250, -1, -1)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GUISetState()
While 1
$iMsg = GUIGetMsg()
Switch $iMsg
Case $Close, $GUI_EVENT_CLOSE
Exit
Case $nInst
GUISetState(@SW_MINIMIZE);@SW_MINIMIZE
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Отключить и остановить^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If _Checked($id1) Then
MsgBox(4096+48, '', 'CHECKBOX 1', 1)
Endif
If _Checked($id2) Then
MsgBox(4096+48, '', 'CHECKBOX 2', 1)
Endif
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^По умолчанию^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If _Checked($id11) Then
MsgBox(4096+48, '', 'CHECKBOX 1.1', 1)
Endif
If _Checked($id12) Then
MsgBox(4096+48, '', 'CHECKBOX 2.2', 1)
Endif
GUISetState(@SW_RESTORE)
EndSwitch
WEnd
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Func _Checked($idControlID)
Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc ;==>_Checked
|