1

Тема: AHK: как сохранять состояние ЭУ "Radio"

Такой вопрос. Из нескольких ЭУ "Radio" можно сгруппировать один большой, имеющий привязку к одной единственной переменной. А как по уму, сохранить это значения и восстановить состояние ЭУ?
Вот, к примеру, я установил точку в 5ом элементе. В переменной появилось число "5". Я сохраняю это число куда-нибудь в файлик, либо в реестр. Далее я перезапускаю скрипт. И я хочу дать ему понять, в котором шарике ставить точку. Пока что это выглядит так:

If (OutputVar = 1)
a := 1, b := 0, c := 0
If (OutputVar = 2)
a := 0, b := 1, c := 0
If (OutputVar = 3)
a := 0, b := 0, c := 1

Gui, Add, GroupBox, x10 y10 w150 h100
Gui, Add, Radio, x30 y40 vSpisok gAutoSubmit Checked%a%
Gui, Add, Radio, 		 		gAutoSubmit Checked%b%
Gui, Add, Radio, 		 		gAutoSubmit Checked%c%

То есть приходится перебрать большое количество комбинаций. И чем больше строк в ЭУ, тем больше проверок. Может существует более элегантное решение?

2

Re: AHK: как сохранять состояние ЭУ "Radio"

Я бы так сделал:

OutputVar := 2

Gui, Add, GroupBox, x10 y10 w150 h100
Gui, Add, Radio, x30 y40 vSpisok gAutoSubmit
Gui, Add, Radio,              gAutoSubmit
Gui, Add, Radio,              gAutoSubmit
OutputVar += 1
GuiControl,, Button%OutputVar%, 1
Gui, Show
AutoSubmit:
Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: как сохранять состояние ЭУ "Radio"

Не проще каждому ЭУ назначить переменную, и не зависеть от добавленных до этого Button.


OutputVar := 2

Gui, Add, GroupBox, x10 y10 w150 h100
Gui, Add, Radio, x30 y40 vRadio1
Gui, Add, Radio, vRadio2
Gui, Add, Radio, vRadio3 
GuiControl,, Radio%OutputVar%, 1
Gui, Show
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: как сохранять состояние ЭУ "Radio"

serzh82saratov, так проще, но все ЭУ radio будут разобщённые. А требуется, чтобы они были сгруппированы в одно целое. К примеру, их будет 20 штук, и нужно запомнить, в которую поставлена точка для сохранения значения в файл настроек. Чтобы при следующем запуске скрипта восстановить предыдущее состояние.

5

Re: AHK: как сохранять состояние ЭУ "Radio"

ypppu пишет:

все ЭУ radio будут разобщённые

Разве в моём примере у вас можно поставить точку сразу во всех?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK: как сохранять состояние ЭУ "Radio"

Думал только я не умею нормально использовать радио-кнопки.
Для себя выбрал метод установки флажков после создания Gui через 'HWND', в виде отдельной метки, которая запускается при завершении создания интерфейса и при смене каких-либо настроек.

Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

7

Re: AHK: как сохранять состояние ЭУ "Radio"

ypppu

OutputVar := 12

Gui, Add, GroupBox, x10 y10 w150 h500 Section
loop 20
	Gui, Add, Radio, xs+10 yp+20 vRadio%A_Index%, %A_Index%
GuiControl,, Radio%OutputVar%, 1
Gui, Show
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8

Re: AHK: как сохранять состояние ЭУ "Radio"

serzh82saratov пишет:

Разве в моём примере у вас можно поставить точку сразу во всех?

Нет, только в каком-то одном. Но так скрипт не может просто взять и сохранить состояние ЭУ. Придётся перебирать состояние каждой радио-точки.

9

Re: AHK: как сохранять состояние ЭУ "Radio"

Зачем перебирать, если у них есть имена?

OutputVar := 12

Gui, Add, GroupBox, x10 y10 w150 h500 Section
loop 20
	Gui, Add, Radio, xs+10 yp+20 vRadio%A_Index% gGroup1, Check %A_Index%
GuiControl,, Radio%OutputVar%, 1
Gui, Show
Return
 
Group1: 
	ToolTip %  SaveGroup1 := SubStr(A_GuiControl, 6) 
	Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10

Re: AHK: как сохранять состояние ЭУ "Radio"

serzh82saratov, оно, конечно, так заработает, спору нет.

ypppu пишет:

Придётся перебирать состояние каждой радио-точки.

Это я говорю про перебор на этапе сохранения и восстановления. Программа загружается, заглядывает в ini-файлик, либо в реестр. В Вашем варианте там вместо одного числа - двадцать чисел. А более элегантное решение - это когда считал одно число и выставил один ЭУ в нужное состояние.

11

Re: AHK: как сохранять состояние ЭУ "Radio"

А вы можете другими словами, я ничего не понял совсем.
Где у меня двадцать чисел. И что там противоречит:

считал одно число и выставил один ЭУ в нужное состояние

И где в вашем решении элегантность, если как минимум есть зависимость от ранее добавленных контролов.
И где у вас этап сохранения.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

12

Re: AHK: как сохранять состояние ЭУ "Radio"

Извиняюсь, был невнимателен.

loop 20
	Gui, Add, Radio, xs+10 yp+20 vRadio%A_Index% gGroup1, Check %A_Index%

- двадцать раз создаются ЭУ с уникальными именами, но число на выходе одно.

13 (изменено: serzh82saratov, 2021-01-29 23:53:56)

Re: AHK: как сохранять состояние ЭУ "Radio"

Что за магическое число? Вы специально говорите так, чтобы было не понятно?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

14 (изменено: ypppu, 2021-01-30 00:03:12)

Re: AHK: как сохранять состояние ЭУ "Radio"

Каждый ЭУ в Вашем примере имеет свой уникальный номер Radio%A_Index%. Поначалу я подумал, что Вы предполагаете сохранять состояние каждого из этих ЭУ. Потом въехал, что достаточно запомнить тот, по которому был произведён щелчок. Под "числом на выходе" я имею в виду число, означающее номер выбранного RadioButton, состояние которого будет сохранёно в файле настроек.