-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Определить состояние активной радио-кнопки
Привет.
Как мне определить, какая радио-кнопка установленна?
Дело в том, что они создаются динамически. У них могут быть разные и неизвестные имена.
Даже неизвестно их количество. Как мне это сделать?
Может быть, как-то их в массив или коллекцию загонять?
Код:
#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
…зависит от того, где, как создаются, каким образом используются. »
|
|
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 ...........:
; ===============================================================================================================================
|
Время: 15:33.
© OSzone.net 2001-