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

Компьютерный форум 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 | Цитировать


Много непоняток в коде, например, зачем там GUISetState(@SW_DISABLE) и проверка активности окна?
И что за AutoItConstants.au3?

Я бы делал так:

Код: Выделить весь код
#include <GUIConstants.au3>
#include <GUIConstantsEx.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"
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
$hGUI = 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
            $Ask = MsgBox(256 + 32 + 4 + 262144, "", "TEST", 0, $hGUI)

            If $Ask <> 6 Then
                For $iID = $id1 To $id6
                    GUICtrlSetState($iID, BitOR($GUI_UNCHECKED, $GUI_ENABLE))
                Next

                ContinueLoop
            EndIf

            GUISetState(@SW_HIDE)
            $bChecked = False

            For $iID = $id1 To $id6
                ; хотя бы один отмечен
                If _Checked($iID) Then
                    $bChecked = True

                    MsgBox(4096 + 64, "", GUICtrlRead($iID, 1), 1, $hGUI)
                    GUICtrlSetState($iID, BitOR($GUI_UNCHECKED, $GUI_ENABLE))
                EndIf
            Next

            ; все пустые
            If Not $bChecked Then
                MsgBox(4096 + 64, "", "UNCHECKED", 1, $hGUI)
            Else
                MsgBox(4096 + 64, "", "END", 1, $hGUI)
            EndIf

            GUISetState(@SW_SHOW)
    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

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

Отправлено: 02:23, 02-05-2016 | #11



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

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


Старожил


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

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


Цитата Creat0R:
зачем там GUISetState(@SW_DISABLE) и проверка активности окна? »
Так в моём варианте после появления окна с кнопками Да и Нет родительское окно оставалось активным, что меня не устраивало, а активация из-за того, что это же окно иногда убегало на задний план если открыты какие нибудь окна приложений.

Цитата Creat0R:
И что за AutoItConstants.au3? »
просто забыл убрать, для чего нужно было уже не помню )

Огромнейшее спасибо за помощь.


P.S. Жаль, что полноценной справки к AutoIt на русском нет.

Отправлено: 13:43, 02-05-2016 | #12


Старожил


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

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


Creat0R,

Что то я не понял как вставить команды, мучаюсь уже пару часов )

Допустим отметили несколько CheckBox (ID2, ID4, ID6) и нужно выполнить RunWait - у каждого CheckBox своя команда RunWait, а также у каждого CheckBox
может быть несколько RunWait с проверкой архитектуры, скажем вот так

Код: Выделить весь код
If _Checked($id1) Then
  If @OSArch = "X86" Then RunWait(@ScriptDir & "\...")
  If @OSArch = "X64" Then
	 RunWait(@ScriptDir & "\...")
	 RunWait(@ScriptDir & "\...")
  EndIf
EndIf

Последний раз редактировалось nibble74, 02-05-2016 в 18:35.


Отправлено: 18:24, 02-05-2016 | #13


Старожил


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

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


Немного пришлось изменить

Код: Выделить весь код
            GUISetState(@SW_HIDE)
            $bChecked = False

            For $iID = $id1 To $id6
                If _Checked($id1) Then
                    $bChecked = True
                     MsgBox(4096 + 64, "", "ID1", 1, $hGUI)
                     GUICtrlSetState($id1, BitOR($GUI_UNCHECKED, $GUI_ENABLE))
		EndIf
	        If _Checked($id2) Then
                    $bChecked = True
                     MsgBox(4096 + 64, "", "ID2", 1, $hGUI)
                     GUICtrlSetState($id2, BitOR($GUI_UNCHECKED, $GUI_ENABLE))
		EndIf
               ; .....
			   
            Next

            If Not $bChecked Then
                MsgBox(4096 + 64, "", "UNCHECKED", 1, $hGUI)
	    Else
                MsgBox(4096 + 64, "", "END", 1, $hGUI)
            EndIf

            GUISetState(@SW_SHOW)

Отправлено: 12:25, 03-05-2016 | #14


Аватара для Creat0R

Must AutoIt


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

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


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

    Switch $iMsg
        Case $Close, $GUI_EVENT_CLOSE
            Exit
            ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        Case $Button2
            $Ask = MsgBox(256 + 32 + 4 + 262144, "", "TEST", 0, $hGUI)

            If $Ask <> 6 Then
                For $iID = $id1 To $id6
                    GUICtrlSetState($iID, BitOR($GUI_UNCHECKED, $GUI_ENABLE))
                Next

                ContinueLoop
            EndIf

            GUISetState(@SW_HIDE)
            $bChecked = False

            For $iID = $id1 To $id6
                ; хотя бы один отмечен
                If _Checked($iID) Then
                    $bChecked = True
                    ExitLoop
                EndIf
            Next

            ; все пустые
            If Not $bChecked Then
                MsgBox(4096 + 64, "", "UNCHECKED", 1, $hGUI)
            Else
                If _Checked($id1) Then
                     MsgBox(4096 + 64, "", "id1", 1, $hGUI)
                    GUICtrlSetState($id1, BitOR($GUI_UNCHECKED, $GUI_ENABLE))

                    Switch @OSArch
                        Case "X86"
                            RunWait(@ScriptDir & "\...")
                        Case "X64"
                            RunWait(@ScriptDir & "\...")
                            RunWait(@ScriptDir & "\...")
                    EndSwitch
                EndIf

                ;и т.д. (If _Checked($id2) Then)

                MsgBox(4096 + 64, "", "END", 1, $hGUI)
            EndIf

            GUISetState(@SW_SHOW)
    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

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

Отправлено: 13:02, 03-05-2016 | #15


Старожил


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

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


Creat0R,

Есть ли возможность сделать GUICtrlCreateRadio с прокруткой в окне ?

читать дальше »
Код: Выделить весь код
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
$hGUI = GUICreate("Test", 200, 150, -1, -1, $WS_OVERLAPPEDWINDOW + $WS_VSCROLL)
GUIStartGroup()
$id1 = GUICtrlCreateRadio ("1", 15, 20, -1, -1)
$id2 = GUICtrlCreateRadio ("2", 15, 40, -1, -1)
$id3 = GUICtrlCreateRadio ("3", 15, 60, -1, -1)
$id4 = GUICtrlCreateRadio ("4", 15, 80, -1, -1)
GUIStartGroup()
$id5 = GUICtrlCreateRadio ("5", 15, 100, -1, -1)
$id6 = GUICtrlCreateRadio ("6", 15, 120, -1, -1)
$id7 = GUICtrlCreateRadio ("7", 15, 140, -1, -1)
$id8 = GUICtrlCreateRadio ("8", 15, 160, -1, -1)
GUIStartGroup()
$id9 = GUICtrlCreateRadio ("9", 15, 180, -1, -1)
$id10 = GUICtrlCreateRadio ("10", 15, 200, -1, -1)
$id11 = GUICtrlCreateRadio ("11", 15, 220, -1, -1)
$id12 = GUICtrlCreateRadio ("12", 15, 240, -1, -1)
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
GUISetState()
While 1
   $iMsg = GUIGetMsg()

   Switch $iMsg
	  Case $GUI_EVENT_CLOSE
		 Exit

   EndSwitch
WEnd

Отправлено: 12:48, 16-05-2016 | #16


Аватара для Creat0R

Must AutoIt


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

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


Цитата nibble74:
Есть ли возможность сделать GUICtrlCreateRadio с прокруткой в окне ? »
Да, но это уже другая тема.

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

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

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:03, 18-05-2016 | #17


Старожил


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

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


Цитата Creat0R:
Да, но это уже другая тема. »
Фильтр не дал результат такой темы, только нашёл для GUICtrlCreateLabel, но это не совсем то, что надо.

Создать новую тему ?

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


Аватара для Creat0R

Must AutoIt


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

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


Цитата nibble74:
Создать новую тему ? »
Да, а эту пометить решённой.

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

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

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


Отправлено: 03:08, 19-05-2016 | #19



Компьютерный форум 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




 
Переход