Автор Тема: Как реализовать проверку не нажатия кнопок при закрытии GUI ?  (Прочитано 954 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Всем привет
Пытаюсь понять, как можно проверить отсутствие выбора т.е. если вообще не было нажатия кнопок, кроме кнопки выхода?
В качестве примера - скрипт с радио кнопками из справки (немного модифицированный)

(нажмите для показа/скрытия)
 
Если бы один пример - было бы волшебно...для новичка

Русское сообщество AutoIt


Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 392
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Код: AutoIt [Выделить]
#include <GuiConstantsEx.au3>
Global $hGUI, $iRadio1, $iRadio2, $iRadio3, $iRadioValue = 0

$hGUI = GUICreate("Пример", 180, 120)
GUICtrlCreateGroup("Группа", 5, 5, 170, 110)
GUIStartGroup()
$iRadio1 = GUICtrlCreateRadio("Радио &1", 15, 30, Default, 20)
$iRadio2 = GUICtrlCreateRadio("Радио &2", 15, 55, Default, 20)
$iRadio3 = GUICtrlCreateRadio("Радио &3", 15, 80, Default, 20)
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $iRadio1
            $iRadioValue = 1
        Case $iRadio2
            $iRadioValue = 2
        Case $iRadio3
            $iRadioValue = 3
        Case $GUI_EVENT_CLOSE
            If Not $iRadioValue Then
                If MsgBox(5 + 48 + 262144, "Предупреждение", "Не был выбран ни один из вариантов", 0, $hGUI) = 2 Then Exit
            Else
                Exit MsgBox(64 + 262144, "Сообщение", 'Была выбрана "Радио ' & $iRadioValue & '"', 0, $hGUI)
            EndIf
    EndSwitch
WEnd


Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Tempo
Спасибо большое
Еше есть вопрос - что если групп не одна а несколько и нужно проверять их не зависимо. Потому что это - разная информация?
(нажмите для показа/скрытия)

Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 392
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Код: AutoIt [Выделить]
#include <GuiConstantsEx.au3>
Global $hGUI, $iRadio1_1, $iRadio1_2, $iRadio1_3, $iRadio2_1, $iRadio2_2, $iRadio2_3, $iRadioValue1 = 0, $iRadioValue2 = 0

$hGUI = GUICreate("Пример", 180, 235)
GUICtrlCreateGroup("Группа 1", 5, 5, 170, 110)
GUIStartGroup()
$iRadio1_1 = GUICtrlCreateRadio("Радио &1", 15, 30, Default, 20)
$iRadio1_2 = GUICtrlCreateRadio("Радио &2", 15, 55, Default, 20)
$iRadio1_3 = GUICtrlCreateRadio("Радио &3", 15, 80, Default, 20)

GUICtrlCreateGroup("Группа 2", 5, 120, 170, 110)
GUIStartGroup()
$iRadio2_1 = GUICtrlCreateRadio("Радио &1", 15, 145, Default, 20)
$iRadio2_2 = GUICtrlCreateRadio("Радио &2", 15, 170, Default, 20)
$iRadio2_3 = GUICtrlCreateRadio("Радио &3", 15, 195, Default, 20)

GUISetState()

While 1
    Switch GUIGetMsg()
        Case $iRadio1_1
            $iRadioValue1 = 1
        Case $iRadio1_2
            $iRadioValue1 = 2
        Case $iRadio1_3
            $iRadioValue1 = 3

        Case $iRadio2_1
            $iRadioValue2 = 1
        Case $iRadio2_2
            $iRadioValue2 = 2
        Case $iRadio2_3
            $iRadioValue2 = 3

        Case $GUI_EVENT_CLOSE
            If Not $iRadioValue1 Then
                If MsgBox(5 + 48 + 262144, "Предупреждение", "В группе 1 не был выбран ни один из вариантов", 0, $hGUI) = 2 Then Exit
            ElseIf Not $iRadioValue2 Then
                If MsgBox(5 + 48 + 262144, "Предупреждение", "В группе 2 не был выбран ни один из вариантов", 0, $hGUI) = 2 Then Exit
            Else
                Exit MsgBox(64 + 262144, "Сообщение", 'В группе 1 была выбрана "Радио ' & $iRadioValue1 & '"' & @CRLF & _
                        'В группе 2 была выбрана "Радио ' & $iRadioValue2 & '"', 0, $hGUI)
            EndIf
    EndSwitch
WEnd


Русское сообщество AutoIt

Re: Как реализовать проверку не нажатия кнопок при закрытии GUI ?
« Ответ #3 Отправлен: Декабрь 29, 2017, 00:04:58 »

Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Tempo
Спасибо - всего лишь было добавить переменную и оператор ElseIf Not
Не подскажете , как проверялись бы элементы Combo ?
Вот пример
 
Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <WindowsConstants.au3>

Local $msg, $Combo1, $Combo2, $hGUI, $add, $add_set, $insert, $clear, $close, $index, $read, $setsel, $count, $select, $find_string, $del_item, $tmp, $sList
$hGUI = GUICreate("Раскрывающийся список") ; Создаёт окно в центре экрана

$Combo2 = GUICtrlCreateCombo("", 10, 40, 150, 23, $CBS_DROPDOWNLIST + $WS_VSCROLL) ; стиль не редактируемого списка
GUICtrlSetData(-1, "элемент1|элемент2|элемент3|элемент4|", "")

GUISetState() ; показывает созданное окно

; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE

            ExitLoop
        Case $Combo2
            MsgBox(4096, 'Тест', 'Combo 2, выбор: "' & GUICtrlRead($Combo2) & '"', 1, $hGUI)
    EndSwitch

WEnd
 


Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 392
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <WindowsConstants.au3>

Global $hGUI, $iCombo1, $iCombo2, $sRead1, $sRead2
$hGUI = GUICreate("Пример", 150, 150)

$iCombo1 = GUICtrlCreateCombo(Null, 5, 5, 140, 20, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL))
GUICtrlSetData(-1, "элемент1|элемент2|элемент3|элемент4")
$iCombo2 = GUICtrlCreateCombo(Null, 5, 30, 140, 20, BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL))
GUICtrlSetData(-1, "элемент1|элемент2|элемент3|элемент4")

GUISetState()

While 1
     Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            $sRead1 = GUICtrlRead($iCombo1)
            $sRead2 = GUICtrlRead($iCombo2)
            If Not $sRead1 Then
                If MsgBox(5 + 48 + 262144, "Предупреждение", "Combo 1 не был выбран ни один из вариантов", 0, $hGUI) = 2 Then Exit
            ElseIf Not $sRead2 Then
                If MsgBox(5 + 48 + 262144, "Предупреждение", "Combo 2 не был выбран ни один из вариантов", 0, $hGUI) = 2 Then Exit
            Else
                Exit MsgBox(64 + 262144, "Сообщение", 'Combo 1, выбор: "' & $sRead1 & '"' & @CRLF & _
                        'Combo 2, выбор: "' & $sRead2 & '"', 0, $hGUI)
            EndIf
    EndSwitch
WEnd


Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Спасибо, Tempo!!
О GUICtrlCreateLabel пока не спрашиваю - тут понятно  :)
ушел эксперментировать дальше ....

PS
И чуть не забыл - с Наступающим Новым Годом Вас ... и всех благ

Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Здравствуйте
Есть вопрос о
Код: AutoIt [Выделить]
Я попробовал реализовать проверку этого типа кнопки и у меня  возникли вопросы
(нажмите для показа/скрытия)
При опросе кнопок скрипт отдает такие значения при их опросе: если галочка установлена то 1, если нет то 4.  Почему именно такие цифры,  есть промежуточные значения?
Я не совсем понял об параметре $BS_AUTO3STATE - зачем еще третье состояние?
Примененный тут оператор If Not  для проверки  не нажатия- скорее всего бессмыслен, потому что значение будет получено в любом случае т.е.  стоит проверять не отсутствие значения а его конкретные значения?



Русское сообщество AutoIt


Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 392
  • Репутация: 92
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
dr.room, это значения констант $GUI_CHECKED и $GUI_UNCHECKED

Скриншот из справки думаю он вам поможет
Цитировать

Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Tempo
Спасибо, помогло  :)
Вариант на основе утверждения
(нажмите для показа/скрытия)
Но основе отрицания
(нажмите для показа/скрытия)
ну и так как мне не дают покоя и оставляют вопросы  :(, получаемые значения при их проверке(что же  они означают??) , то и на их основе 
(нажмите для показа/скрытия)
« Последнее редактирование: Январь 11, 2018, 04:36:36 от dr.room »

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1420
  • Репутация: 207
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
... значения при их проверке(что же  они означают??)...
Битовый флаг.

Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Только сейчас и понял,  что эти значение связаны с константами ...  :) спасибо

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
3299 Просмотров
Последний ответ Март 13, 2010, 20:04:32
от CreatoR
9 Ответов
5157 Просмотров
Последний ответ Июнь 14, 2011, 02:01:38
от erlik
10 Ответов
5125 Просмотров
Последний ответ Сентябрь 29, 2011, 20:25:12
от AZJIO
1 Ответов
2519 Просмотров
Последний ответ Декабрь 28, 2011, 19:23:44
от madmasles
0 Ответов
1883 Просмотров
Последний ответ Июль 08, 2012, 19:38:08
от Freaxxx
4 Ответов
1479 Просмотров
Последний ответ Март 15, 2014, 22:12:48
от AZJIO
2 Ответов
1221 Просмотров
Последний ответ Сентябрь 05, 2014, 10:10:41
от joiner
2 Ответов
1620 Просмотров
Последний ответ Март 26, 2015, 14:36:37
от pvnn
2 Ответов
859 Просмотров
Последний ответ Январь 09, 2017, 02:12:23
от Sergy
9 Ответов
1000 Просмотров
Последний ответ Октябрь 16, 2017, 00:08:50
от dr.room