Показать полную графическую версию : [решено] Определить состояние активной радио-кнопки
Привет.
Как мне определить, какая радио-кнопка установленна?
Дело в том, что они создаются динамически. У них могут быть разные и неизвестные имена.
Даже неизвестно их количество. Как мне это сделать?
Может быть, как-то их в массив или коллекцию загонять?
#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
Может быть, как-то их в массив или коллекцию загонять? »
Может быть. Выбор варианта зависит от того, где, как создаются, каким образом используются. А может стоит вообще перейти к модели с GUIOnEventMode = 1.
Начните использовать AutoItSetOption("MustDeclareVars", 1), дабы не было таких нелепых ошибок, как в данном примере. И используйте именованные константы вместо чисел.
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
Атос, бездумное добавление куда попало 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, чё-то у меня выдаёт ошибку.
Переменная $GUI_READ_EXTENDED не определена.
Она необязательна. Я её удалил.
Спасибо.
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).
Странно, в моём такой константы нету. Наверное, версия старая.
Заголовок.
; Title .........: GUIConstantsEx
; AutoIt Version : 3.3.12.0
; Language ......: English
; Description ...: Constants to be used in GUI applications.
; Author(s) .....: Jpm, Valik
Наверное.
; #INDEX# ==================================================================================================== ===================
; Title .........: GUIConstantsEx
; AutoIt Version : 3.3.14.2
; Language ......: English
; Description ...: Constants to be used in GUI applications.
; Author(s) .....: Jpm, Valik
; Dll ...........:
; ==================================================================================================== ===========================
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.