Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Автоматическое переключение Checkbox

Ответить
Настройки темы
Автоматическое переключение Checkbox

Старожил


Сообщения: 251
Благодарности: 45

Профиль | Отправить PM | Цитировать


Возможно ли реализовать авто переключение CHECKBOX в этом скрипте и как ?
Допустим установлена галочка на CHECKBOX 1, тогда с CHECKBOX 1.1 галочка снимается если она там была. Если устанавливаем на CHECKBOX 1.1, то с CHECKBOX 1 снимается.
Также CHECKBOX 2 - CHECKBOX 2.2
и так далее в случае присутствия следующих CHECKBOX .....

читать дальше »
Код: Выделить весь код
#cs ----------------------------------------------------------------------------
 AutoIt Version: 3.3.14.2
#ce ----------------------------------------------------------------------------
#include <GUIConstants.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)
$id2 = GUICtrlCreateCheckbox ("CHECKBOX 2", 12, 60, -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)
$id11 = GUICtrlCreateCheckbox ("CHECKBOX 1.1", 12, 230, -1, -1)
$id12 = GUICtrlCreateCheckbox ("CHECKBOX 2.2", 12, 250, -1, -1)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GUISetState()
Do
    $msg = GUIGetMsg()
       If $msg = $Close Then Exit
       If $msg = $nInst Then
         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)
        If $msg = $GUI_EVENT_CLOSE Then Exit
   EndIf
Until $msg = -3
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Func _Checked($idControlID)
    Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_Checked

Отправлено: 12:39, 07-04-2016

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
#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)
$id2 = GUICtrlCreateCheckbox ("CHECKBOX 2", 12, 60, -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)
$id11 = GUICtrlCreateCheckbox ("CHECKBOX 1.1", 12, 230, -1, -1)
$id12 = GUICtrlCreateCheckbox ("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)
        Case $id1, $id11, $id2, $id12
            $iNext = $iMsg + 1

            If $iMsg = $id2 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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 13:07, 07-04-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 251
Благодарности: 45

Профиль | Отправить PM | Цитировать


Creat0R, в вашем варианте рекурсия происходит в каждой из групп, а нужно чтобы рекурсивно происходило в обеих группах.

Изначально галочки отсутствуют.

Установили на CHECKBOX 1 имеет связь с CHECKBOX 1.1
Установили на CHECKBOX 1.1 с CHECKBOX 1 снимается

Установили на CHECKBOX 2 имеет связь с CHECKBOX 2.2
Установили на CHECKBOX 2.2 с CHECKBOX 2 снимается

CHECKBOX 1 >> CHECKBOX 1.1
CHECKBOX 1 << CHECKBOX 1.1

CHECKBOX 2 >> CHECKBOX 2.2
CHECKBOX 2 << CHECKBOX 2.2

Есть ли идеи ?

Отправлено: 08:13, 08-04-2016 | #3


Аватара для Creat0R

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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:20, 08-04-2016 | #4


Старожил


Сообщения: 251
Благодарности: 45

Профиль | Отправить PM | Цитировать


Creat0R,

С чекбоксами лучше, там есть возможность добавить ещё пункты CHECKBOX 3 - 4 - 5 >> CHECKBOX 13 - 14 - 15 (цифры поменял для удобства) и т.д,
а вот как добавить в Radio не разобрался. Возможно ли и в Radio добавлять пункты ???

Вот с добавлением для CHECKBOX
читать дальше »
Код: Выделить весь код
#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 11", 12, 230, -1, -1)
$id2 = GUICtrlCreateCheckbox ("CHECKBOX 2", 12, 60, -1, -1)
$id12 = GUICtrlCreateCheckbox ("CHECKBOX 12", 12, 250, -1, -1)
$id3 = GUICtrlCreateCheckbox ("CHECKBOX 3", 12, 80, -1, -1)
$id13 = GUICtrlCreateCheckbox ("CHECKBOX 13", 12, 270, -1, -1)
$id4 = GUICtrlCreateCheckbox ("CHECKBOX 4", 12, 100, -1, -1)
$id14 = GUICtrlCreateCheckbox ("CHECKBOX 14", 12, 290, -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($id3) Then
                MsgBox(4096+48, '', 'CHECKBOX 3', 1)
            Endif
            If _Checked($id4) Then
                MsgBox(4096+48, '', 'CHECKBOX 4', 1)
            Endif
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^По умолчанию^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            If _Checked($id11) Then
                MsgBox(4096+48, '', 'CHECKBOX 11', 1)
            Endif
            If _Checked($id12) Then
                MsgBox(4096+48, '', 'CHECKBOX 12', 1)
            Endif
            If _Checked($id13) Then
                MsgBox(4096+48, '', 'CHECKBOX 13', 1)
            Endif
            If _Checked($id14) Then
                MsgBox(4096+48, '', 'CHECKBOX 14', 1)
            Endif
            GUISetState(@SW_RESTORE)
        Case $id1, $id11, $id2, $id12, $id3, $id13, $id4, $id14
            $iNext = $iMsg + 1

            If $iMsg = $id11 Or $iMsg = $id12 Then
                $iNext = $iMsg - 1
            EndIf
            If $iMsg = $id12 Or $iMsg = $id13 Then
                $iNext = $iMsg - 1
            EndIf
            If $iMsg = $id13 Or $iMsg = $id14 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

Отправлено: 17:43, 08-04-2016 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
...

GUIStartGroup()
$id1 = GUICtrlCreateRadio ("CHECKBOX 1", 12, 40, -1, -1)
$id11 = GUICtrlCreateRadio ("CHECKBOX 11", 12, 230, -1, -1)

GUIStartGroup()
$id2 = GUICtrlCreateRadio ("CHECKBOX 2", 12, 60, -1, -1)
$id12 = GUICtrlCreateRadio ("CHECKBOX 12", 12, 250, -1, -1)

GUIStartGroup()
$id3 = GUICtrlCreateRadio ("CHECKBOX 3", 12, 80, -1, -1)
$id13 = GUICtrlCreateRadio ("CHECKBOX 13", 12, 270, -1, -1)

GUIStartGroup()
$id4 = GUICtrlCreateRadio ("CHECKBOX 4", 12, 100, -1, -1)
$id14 = GUICtrlCreateRadio ("CHECKBOX 14", 12, 290, -1, -1)

...
Код: Выделить весь код
Case $id1, $id11, $id2, $id12, $id3, $id13, $id4, $id14
в этом случае не нужно.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:07, 12-04-2016 | #6


Старожил


Сообщения: 251
Благодарности: 45

Профиль | Отправить PM | Цитировать


Creat0R,

Премного благодарен !

Отправлено: 22:18, 12-04-2016 | #7


Старожил


Сообщения: 251
Благодарности: 45

Профиль | Отправить PM | Цитировать


Creat0R,

Не разобрался с активностью и не активностью Checkbox в это скрипте
хотел сделать так чтобы при установке галочки на "ID 7" со всех "ID 1...ID 6" галочки снимались и
сами "ID 1...ID 6" становились неактивные, а при снятии галочки с "ID 7" всё становилось снова активным.
Помогите пожалуйста
читать дальше »
Код: Выделить весь код
#include <GUIConstants.au3>
GUICreate("Test", 250, 250)
$Button1 = GUICtrlCreateButton("Установить", 7, 220, 80, 22)
GUICtrlSetState(-1, 256 + 512) ;$GUI_FOCUS + $GUI_DEFBUTTON
$Close = GUICtrlCreateButton("Выход", 160, 220, 80, 22)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
$id1 = GUICtrlCreateCheckbox ("ID 1", 16, 50, -1, -1)
GUICtrlSetState (-1,$GUI_UNCHECKED)
$id2 = GUICtrlCreateCheckbox ("ID 2", 16, 70, -1, -1)
GUICtrlSetState (-1,$GUI_CHECKED)
$id3 = GUICtrlCreateCheckbox ("ID 3", 16, 90, -1, -1)
GUICtrlSetState (-1,$GUI_CHECKED)

;GUIStartGroup()
$id4 = GUICtrlCreateCheckbox ("ID 4", 16, 120, -1, -1, $BS_AUTORADIOBUTTON)
$id5 = GUICtrlCreateCheckbox ("ID 5", 16, 140, -1, -1, $BS_AUTORADIOBUTTON)
$id6 = GUICtrlCreateCheckbox ("ID 6", 16, 160, -1, -1, $BS_AUTORADIOBUTTON)
$id7 = GUICtrlCreateCheckbox ("ID 7", 16, 190, -1, -1)
GUICtrlSetState ($id6,$GUI_CHECKED)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

GUISetState()
While 1
  $iMsg = GUIGetMsg()
    Switch $iMsg
      Case $Close, $GUI_EVENT_CLOSE
         Exit
      Case $Button1
          GUISetState(@SW_HIDE)
                 If _Checked($id1) Then
                        MsgBox(0,"","ID 1",1)
                   Endif
                 If _Checked($id2) Then
                        MsgBox(0,"","ID 2",1)
                   Endif
                 If _Checked($id3) Then
                        MsgBox(0,"","ID 3",1)
                   Endif
                 If _Checked($id4) Then
                        MsgBox(0,"","ID 4",1)
                   Endif
                 If _Checked($id5) Then
                        MsgBox(0,"","ID 5",1)
                   Endif
                 If _Checked($id6) Then
                        MsgBox(0,"","ID 6",1)
                   Endif
                 If _Checked($id7) Then
                        MsgBox(0,"","ID 7",1)
                   Endif
          GUIDelete()
          MsgBox(4096+48, '', 'Завершено', 5)
       Exit
    EndSwitch
WEnd
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Func _Checked($idControlID)
    Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_Checked

Отправлено: 20:18, 14-04-2016 | #8


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
While 1
    $iMsg = GUIGetMsg()

    Switch $iMsg
        Case $Close, $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            ...
        Case $id7
            $iState = $GUI_ENABLE

            If GUICtrlRead($id7) = $GUI_CHECKED Then
                $iState = $GUI_DISABLE
            EndIf

            For $iID = $id1 To $id6
                GUICtrlSetState($iID, BitOR($GUI_UNCHECKED, $iState))
            Next
    EndSwitch
WEnd

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:21, 17-04-2016 | #9


Старожил


Сообщения: 251
Благодарности: 45

Профиль | Отправить PM | Цитировать


Creat0R,

Тут вот набрал часть скрипта
читать дальше »
Код: Выделить весь код
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <AutoItConstants.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Opt("TrayIconDebug", 1)        ;0 - без сведений, 1 - отладочные сведения
Opt("TrayIconHide", 0)        ;0 - отображать, 1 - скрыть
Opt("GUICloseOnESC", 1)        ;0 = При нажатии ESC не высылать сообщение $GUI_EVENT_CLOSE.
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Global $Title = "TEST"
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GUICreate($Title, 265, 355, -1, -1, $WS_SIZEBOX + $WS_SYSMENU + $WS_MINIMIZEBOX)
$Button2 = GUICtrlCreateButton("DELETE", 70, 260, 120, 22)
$Close = GUICtrlCreateButton("ESC", 70, 300, 120, 22)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
$id1 = GUICtrlCreateCheckbox ("ID 1", 18, 50, -1, -1)
$id2 = GUICtrlCreateCheckbox ("ID 2", 18, 70, -1, -1)
$id3 = GUICtrlCreateCheckbox ("ID 3", 18, 90, -1, -1)
$id4 = GUICtrlCreateCheckbox ("ID 4", 18, 110, -1, -1)
$id5 = GUICtrlCreateCheckbox ("ID 5", 18, 130, -1, -1)
$id6 = GUICtrlCreateCheckbox ("ID 6", 18, 150, -1, -1)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GUISetState()
While 1
  $iMsg = GUIGetMsg()
    Switch $iMsg
      Case $Close, $GUI_EVENT_CLOSE
         Exit
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      Case $Button2
            GUISetState(@SW_DISABLE)
               $Ask = MsgBox(256+32+4+262144, "", "TEST", 0)
            If $Ask <> 6 Then
                  For $iID = $id1 To $id6
                  GUICtrlSetState($iID, BitOR($GUI_UNCHECKED, $GUI_ENABLE))
               Next
            GUISetState(@SW_ENABLE)
               If Not WinActive($Title) Then WinActivate($Title)
               Else

               ; 1. Тут проверка на присутствие отмеченных чекбоксов и если хотя бы один не отмечен (т.е. все пустые) то появляется диалог
                     MsgBox(4096+64, "", "UNCHECKED", 1) ;дальнейшее выполнение скрипта прекращается и преходит в режим ожидания.

               ; 2. Если присутствуют отмеченные чекбоксы (все или хотя бы один, то скрипт продолжает выполнять команды ниже


            GUISetState(@SW_HIDE)
                 If _Checked($id1) Then MsgBox(4096+64, "", "id1", 1)
                 If _Checked($id2) Then MsgBox(4096+64, "", "id2", 1)
                 If _Checked($id3) Then MsgBox(4096+64, "", "id3", 1)
                 If _Checked($id4) Then MsgBox(4096+64, "", "id4", 1)
                 If _Checked($id5) Then MsgBox(4096+64, "", "id5", 1)
                 If _Checked($id6) Then MsgBox(4096+64, "", "id6", 1)
               MsgBox(4096+64, "", "END", 1)
            GUISetState(@SW_SHOW)
            GUISetState(@SW_ENABLE)
               For $iID = $id1 To $id6
                  GUICtrlSetState($iID, BitOR($GUI_UNCHECKED, $GUI_ENABLE))
               Next
               If Not WinActive($Title) Then WinActivate($Title)
            EndIf
    EndSwitch
WEnd
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Func _Checked($idControlID)
    Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
EndFunc   ;==>_Checked

в самом скрипте закомментировано что не получается сделать после "Else". Может есть вариант это реализовать ?

Последний раз редактировалось nibble74, 01-05-2016 в 20:54.


Отправлено: 18:20, 01-05-2016 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Автоматическое переключение Checkbox

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Автоматическое переключение языков ввода. Zajac Microsoft Windows 2000/XP 7 08-10-2013 13:41
DNS/DHCP - Автоматическое переключение между сетевыми соединениями. BROTHERHOOD Сетевые технологии 11 09-03-2013 21:37
[решено] Переключение в GUI - Checkbox TERMINAL AutoIt 2 18-01-2013 11:00
Прочее - автоматическое переключение проксей Shurik_M Сетевые технологии 2 21-07-2010 15:21
FreeBSD - автоматическое переключение почты и сайта. mr.Brightside Общий по FreeBSD 10 27-01-2010 18:26




 
Переход