Что нового

Как в группе Radio-точек узнать какой из них активный?

agikon

Знающий
Сообщения
789
Репутация
17
например есть 3 радиоточки в одной группе.
как узнать в какой радиоточке в данный момент стоит галочка?
вот такая конструкция на мой взгляд слишком неоптимальная
Код:
If BitAND(GUICtrlRead($Radio1), $GUI_CHECKED) Then
If BitAND(GUICtrlRead($Radio2), $GUI_CHECKED) Then
If BitAND(GUICtrlRead($Radio3), $GUI_CHECKED) Then


вот можно ли в группе сразу узнать какой активный? чтобы вот эти IF-ы не делать?

вот сам скрипт
Код:
#include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>

$GUI  = GUICreate('', 300, 250)
$Button = GUICtrlCreateButton('узнать активный Radio', 20, 100, 150, 30)

$Gr = GUICtrlCreateGroup("группа А Б В", 10, 10, 150, 50);
$Radio1 = GUICtrlCreateRadio('A', 20, 30, 30, 20)
GUICtrlSetState(-1, $GUI_CHECKED)
$Radio2 = GUICtrlCreateRadio('Б', 80, 30, 30, 20)
$Radio3 = GUICtrlCreateRadio('В', 130, 30, 30, 20)
GUISetState()

While 1
	$nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
		Case $Button
            _radio()
	EndSwitch
wend


Func _radio()
; что тут написать?????
MsgBox(64, 'Info', 'Активный Radio: (А) (Б) или (В)')
Endfunc
 

axlwor

Скриптер
Сообщения
657
Репутация
147
посмотри пример для функции GUIStartGroup
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
ого тяжело на воспринятие как-то... :whistle:
думал полегче будет.
ну спасибо за наводку.
 

XpycT

Скриптер
Сообщения
380
Репутация
132
agikon
Как вариант можно так
Код:
#include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>

Global $aRadio[4] = [3]

$GUI  = GUICreate('', 300, 250)
$Button = GUICtrlCreateButton('узнать активный Radio', 20, 100, 150, 30)

$Gr = GUICtrlCreateGroup("группа А Б В", 10, 10, 150, 50);
$aRadio[1] = GUICtrlCreateRadio('A', 20, 30, 30, 20)
GUICtrlSetState(-1, $GUI_CHECKED)
$aRadio[2] = GUICtrlCreateRadio('Б', 80, 30, 30, 20)
$aRadio[3] = GUICtrlCreateRadio('В', 130, 30, 30, 20)
GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button
            _radio()
    EndSwitch
wend


Func _radio()

	For $r = 1 To $aRadio[0]
		If BitAND(GUICtrlRead($aRadio[$r]), $GUI_CHECKED) = $GUI_CHECKED Then ExitLoop

	Next

	MsgBox(64, 'Info', 'Активный Radio: ' & GUICtrlRead($aRadio[$r], 1))
Endfunc
 

ggzgamer

Осваивающий
Сообщения
134
Репутация
23
А у меня нет в include вот этого WinAPIEx.au3
интересно узнать что в нём находится или есть другие способы узнать какой Radio активирован?
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
agikon [?]
как узнать в какой радиоточке в данный момент стоит галочка?

А зачем узнавать ?
Достаточно фиксировать установку галочки .
И в дальнейшем использовать значение ключа : $iCheckedRadio_Number
Примерно так :
Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>

Global $iCheckedRadio_Number

$Gui=GUICreate("Моя радио кнопка") 

GUICtrlCreateGroup("Радио кнопка ", 10, 10, 230, 86) 
$radio1 = GUICtrlCreateRadio("Радио 1", 20, 25, -1, 20)
$radio2 = GUICtrlCreateRadio("Радио 2", 20, 45, -1, 20)
$radio3 = GUICtrlCreateRadio("Радио 2", 20, 65, -1, 20)
GUICtrlCreateGroup("", -99, -99, 1, 1) 
GUICtrlSetState($radio2, $GUI_CHECKED)
$iCheckedRadio_Number=2

$Lab=GUICtrlCreateLabel("", 20, 125, 230, 20, 0x1000)
$But=GUICtrlCreateButton("Get Checked Radio", 20, 165, 230, 20)

GUISetState() 

While 1
	$msg = GUIGetMsg()
	Switch $msg
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $radio1 To $radio3
			$iCheckedRadio_Number=($msg+1)-$radio1; фиксируем номер активного Radio
		Case $But
			GUICtrlSetData ( $Lab, "В данный момент  галочка стоит в : " & $iCheckedRadio_Number)
	EndSwitch
WEnd




Добавлено:
Сообщение автоматически объединено:

Если галочка где-то устанавливается програмно ,то фиксировать и это так :

Код:
GUICtrlSetState($radio2, $GUI_CHECKED)
$iCheckedRadio_Number=2
 
Верх