Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Получить значение Radio

Ответить
Настройки темы
[решено] Получить значение Radio

Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем доброго здоровья.

Есть 2 формы с Radio. Первый вариант создавался раньше, с фиксированным набором Radio, и работает с требуемым результатом.

Работает
Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$iLeft = @DesktopWidth/2-115
$iTop = 10

$Window = GUICreate("Pass", 230, 174,$iLeft, $iTop)
$B_Show = GUICtrlCreateButton("Показать", 152, 144, 73, 17)
GUICtrlSetState(-1, $GUI_DISABLE)

$Group1 = GUICtrlCreateGroup("", 5, 28,220,90)
$iRadio1 = GUICtrlCreateRadio("Аа", 24, 40, 73, 17)
$iRadio2 = GUICtrlCreateRadio("Бб", 24, 64, 73, 17)
$iRadio3 = GUICtrlCreateRadio("Вв", 24, 88, 73, 17)
$iRadio4 = GUICtrlCreateRadio("Гг", 120, 40, 73, 17)
$iRadio5 = GUICtrlCreateRadio("Дд", 120, 64, 73, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE; $nCancel
            Exit
    Case $iRadio1 To $iRadio5
           $vaar =GUICtrlRead($nMsg,1)
           GUICtrlSetState($B_Show,$GUI_ENABLE)
                      MsgBox(0,'',$vaar)
    EndSwitch
WEnd


Но со временем немного поменялись условия и набор Radio необходимо создавать динамически - Периодически необходимо разное колличество этих Button-ов. Во втором варианте это реализовано

Не работает
Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$sPath_ini = @HomeDrive & "\Example.ini"
$iLeft = @DesktopWidth/2-115
$iTop = 10
$iLeftR =10
$iTopR = 35
$sRead = IniRead($sPath_ini, "Section", "Key", "NotFound")
$iRadio = StringSplit($sRead, ",")

$Window = GUICreate("Pass", 230, 174,$iLeft, $iTop)
$B_Show = GUICtrlCreateButton("Показать", 152, 144, 73, 17)
GUICtrlSetState(-1, $GUI_DISABLE)

$Group1 = GUICtrlCreateGroup("", 5, 28,220,90)
For $i = 1 To $iRadio[0]
   $iItem = GUICtrlCreateRadio($iRadio[$i], $iLeftR, $iTopR)
        $iTopR += 20
If $iTopR > 100 Then
        $iTopR = 35
        $iLeftR += 75
    EndIf
Next
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE; $nCancel
            Exit
    Case $iItem
           $vaar =GUICtrlRead($nMsg,1)
           GUICtrlSetState($B_Show,$GUI_ENABLE)
                      MsgBox(0,'',$vaar)
    EndSwitch
WEnd


Вот только ответ получаю от последнего созданного, а надо бы от каждого, как в первом. Есть ли возможность всё это дело поправить?

Отправлено: 17:00, 29-04-2016

 

Аватара для Mike909

Новый участник


Сообщения: 38
Благодарности: 14

Профиль | Отправить PM | Цитировать


через массивы:
Скрытый текст

Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

Local $sPath_ini = @HomeDrive & "\Example.ini"
Local $iLeft = @DesktopWidth/2-115
Local $iTop = 10
Local $iLeftR =10
Local $iTopR = 35
Local $sRead = IniRead($sPath_ini, "Section", "Key", "NotFound")
Local $iRadio = StringSplit($sRead, ",")
Local $iRadio = [3,"1 radio","2 radio","3 radio"]

Local $Window = GUICreate("Pass", 230, 174,$iLeft, $iTop)
Local $B_Show = GUICtrlCreateButton("Показать", 152, 144, 73, 17)
GUICtrlSetState(-1, $GUI_DISABLE)

Local $Group1 = GUICtrlCreateGroup("", 5, 28,220,90)
Local $count = $iRadio[0]
Local $aItem = []
Local $iItem 
For $i = 1 To $count
    $iItem = GUICtrlCreateRadio($iRadio[$i], $iLeftR, $iTopR)
    _ArrayAdd($aItem,$iItem)
    $iTopR += 20
	If $iTopR > 100 Then
        $iTopR = 35
        $iLeftR += 75
    EndIf
Next
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE; $nCancel
            Exit
    Case $aItem[1] to $aItem[$count]
           $vaar =GUICtrlRead($nMsg,1)
           GUICtrlSetState($B_Show,$GUI_ENABLE)
                      MsgBox(0,'',$vaar)
    EndSwitch
WEnd
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:41, 29-04-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: 7z Example.7z
(165 байт, 21 просмотров)

Прошу прощения за долгий ответ. Праздники... Цитата Mike909:
через массивы: »
всё чудесно работает, но наборы Radio при этом приходится создавать вручную. Сразу я конечно то и не предупредил, моя вина, что Radio создаются автоматом из ini.-файла - сколько там значений столько и Radio. Сейчас буду пробовать прикрутить свойства массива к скрипту. Может у кого проще и быстрее получится буду благодарен т.к. не так силён в AutoIt.
ini.файлик во вложении

Отправлено: 08:39, 04-05-2016 | #3


Новый участник


Сообщения: 12
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: 7z Example.7z
(187 байт, 21 просмотров)

"Допилил". Возможно не очень красиво, (пришлось ini-шку подправить), но меня устраивает:

Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

Local $sPath_ini = @HomeDrive & "\Example.ini"
Local $iLeft = @DesktopWidth/2-115
Local $iTop = 10
Local $iLeftR =10
Local $iTopR = 35
Local $sRead = IniRead($sPath_ini, "Section", "Key", "NotFound")
Local $iRadio_R = StringSplit($sRead, ",")
Local $Window = GUICreate("Pass", 230, 174,$iLeft, $iTop)
Local $B_Show = GUICtrlCreateButton("Показать", 152, 144, 73, 17)
GUICtrlSetState(-1, $GUI_DISABLE)

    $msg = ''
    For $i = 1 To $iRadio_R[0]
         $msg &= $iRadio_R[$i]&','
   Next
$result = StringTrimLeft($msg,1)
$result = StringTrimRight($result,1)

Local $iRadio = [$iRadio_R[0],$result]
$vvv=StringReplace($result,"'",'')
$vvv=StringSplit($vvv,",")

Local $Group1 = GUICtrlCreateGroup("", 5, 28,220,90)
Local $count =$vvv [0]
Local $aItem = []
Local $iItem
For $i = 1 To $count
    $iItem = GUICtrlCreateRadio($vvv[$i], $iLeftR, $iTopR)
    _ArrayAdd($aItem,$iItem)
    $iTopR += 20
    If $iTopR > 100 Then
        $iTopR = 35
        $iLeftR += 75
    EndIf
Next
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE; $nCancel
            Exit
    Case $aItem[1] to $aItem[$count]
           $vaar =GUICtrlRead($nMsg,1)
           GUICtrlSetState($B_Show,$GUI_ENABLE)
                      MsgBox(0,'',$vaar)
    EndSwitch
WEnd
Отдельная благодарность для Mike909 , на счёт массивов. Я бы не додумал.
Тему закрываю.
Может кому пригодится ini-Поправленный:

Отправлено: 12:33, 04-05-2016 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Получить значение Radio

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Как получить значение параметра из реестра, добавить значение в текстовый файл etc.? Dark Ange1 Скриптовые языки администрирования Windows 28 22-06-2022 14:37
CMD/BAT - Как получить значение искомой подстроки в строке? Loki3D Скриптовые языки администрирования Windows 11 24-02-2018 08:37
[решено] получить значение из _GUICtrlComboBoxEx_Create VNRed_OK AutoIt 4 13-05-2015 08:21
[решено] AJAX. получить значение в подгружаемом элементе Artem-Samsung Вебмастеру 1 11-09-2010 12:43
Как получить значение CPU и VM. Желательно на С++ Lenycik Программирование и базы данных 3 16-05-2007 12:07




 
Переход