Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Определить состояние активной радио-кнопки (http://forum.oszone.net/showthread.php?t=328050)

Атос 03-07-2017 10:53 2748701

Определить состояние активной радио-кнопки
 
Привет.
Как мне определить, какая радио-кнопка установленна?
Дело в том, что они создаются динамически. У них могут быть разные и неизвестные имена.
Даже неизвестно их количество. Как мне это сделать?
Может быть, как-то их в массив или коллекцию загонять?


Код:

#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
$hGUI1 = GUICreate("Window", 300, 300, -1, -1)
$yyy = 10
$nnn1 = 111
For $i = 1 To 3
$yyy = $yyy + 30
$nnn = $nnn1 * $i
GUICtrlCreateRadio($nnn, 60, $yyy, 100, 22)
Next
Local $but = GUICtrlCreateButton('Получить', 110, 160 , 80, 22)
GUISetState()
While 1
    $hMsg = GUIGetMsg(1)
    Select
        Case $hMsg[0] = -3
            Exit
        Case $hMsg[0] = $but
            MsgBox(0, '', GUICtrlRead("Идентификатор установленной радио-кнопки"))
    EndSelect
WEnd


Iska 03-07-2017 11:43 2748720

Цитата:

Цитата Атос
Может быть, как-то их в массив или коллекцию загонять? »

Может быть. Выбор варианта зависит от того, где, как создаются, каким образом используются. А может стоит вообще перейти к модели с GUIOnEventMode = 1.

Начните использовать AutoItSetOption("MustDeclareVars", 1), дабы не было таких нелепых ошибок, как в данном примере. И используйте именованные константы вместо чисел.

Атос 03-07-2017 12:31 2748734

Iska, а как такое сделать?
Как мне узнать на какой радио-кнопке стоит галочка?

Код:

#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
$hGUI1 = GUICreate("Window", 300, 300, -1, -1)
$yyy = 10
$nnn1 = 111
For $i = 1 To 3
$yyy = $yyy + 30
$nnn = $nnn1 * $i
GUICtrlCreateRadio($nnn, 60, $yyy, 100, 22)
Next
Local $but = GUICtrlCreateButton('Получить', 110, 160 , 80, 22)
GUISetState()
While 1
    $hMsg = GUIGetMsg(1)
    Select
        Case $hMsg[0] = -3
            Exit
        Case $hMsg[0] = $but
Opt("GUIOnEventMode", 1)
            MsgBox(0, '', GUICtrlRead("Установленная радио-кнопка"))
Opt("GUIOnEventMode", 0)
    EndSelect
WEnd


Iska 03-07-2017 12:47 2748740

Атос, бездумное добавление куда попало Opt("GUIOnEventMode", 1) не решит Ваших проблем.

Код:

#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>

AutoItSetOption("MustDeclareVars", 1)

Local $hGUI1 = GUICreate("Window", 300, 300, -1, -1)

Local $iTop = 10
Local $sRadioButtonText = "RadioButton"
Local $aRadioButtons[3]

Local $hMsg


For $i = 1 To 3
        $iTop += 30

        $aRadioButtons[$i - 1] = GUICtrlCreateRadio($sRadioButtonText & String($i), 60, $iTop, 100, 22)
Next

Local $idButton = GUICtrlCreateButton('Получить', 110, 160 , 80, 22)

GUISetState()

While True
    $hMsg = GUIGetMsg(1)

    Select
                Case $hMsg[0] = $GUI_EVENT_CLOSE
            Exit
        Case $hMsg[0] = $idButton
                        For $i = 1 To 3
                                If GUICtrlRead($aRadioButtons[$i - 1]) = $GUI_CHECKED Then
                                        MsgBox(0, "Checked RadioButton ID =" & $aRadioButtons[$i - 1], GUICtrlRead($aRadioButtons[$i - 1], $GUI_READ_EXTENDED ))
                                EndIf
                        Next
    EndSelect
WEnd

GUIDelete()

Про:
Цитата:

Цитата Атос
Даже неизвестно их количество. »

вопросы остаются теми же:
Цитата:

Цитата Iska
…зависит от того, где, как создаются, каким образом используются. »


Атос 03-07-2017 12:51 2748743

Iska, чё-то у меня выдаёт ошибку.
Переменная $GUI_READ_EXTENDED не определена.

Она необязательна. Я её удалил.
Спасибо.

Iska 03-07-2017 13:27 2748759

Цитата:

Цитата Атос
Iska, чё-то у меня выдаёт ошибку.
Переменная $GUI_READ_EXTENDED не определена. »

Это не переменная, а глобальная константа, определённая во включаемом файле GUIConstantsEx.au3:
Код:

; GUICtrlRead Constants
Global Const $GUI_READ_DEFAULT = 0 ; (Default) Returns a value with state or data of a control.
Global Const $GUI_READ_EXTENDED = 1 ; Returns extended information of a control (see Remarks).


Атос 03-07-2017 14:19 2748771

Странно, в моём такой константы нету. Наверное, версия старая.

Заголовок.

Скрытый текст
; Title .........: GUIConstantsEx
; AutoIt Version : 3.3.12.0
; Language ......: English
; Description ...: Constants to be used in GUI applications.
; Author(s) .....: Jpm, Valik

Iska 03-07-2017 14:30 2748777

Наверное.
Код:

; #INDEX# =======================================================================================================================
; Title .........: GUIConstantsEx
; AutoIt Version : 3.3.14.2
; Language ......: English
; Description ...: Constants to be used in GUI applications.
; Author(s) .....: Jpm, Valik
; Dll ...........:
; ===============================================================================================================================



Время: 15:33.

Время: 15:33.
© OSzone.net 2001-