1 (изменено: DestroyerCode, 2023-11-27 02:04:48)

Тема: AHK: Передача переменной между нескольких функций

Здравствуйте!
Помогите решить проблему.
Нужно выбрать 1 из 4 групп, и после сохранения, при нажатия Num5 в Msgbox, покажет, какую группу выбрал.
Я как понял, не получается передать value из Rad1, Rad2, Rad3, Rad4 в функцию GroupSelectFunc внутри GroupSelect.



Gui Font, s15
Gui, Add, Radio, x150 y200 vRad1 gGroupSelect +Checked +Group, Группа1
Gui, Add, Radio, x270 y200 vRad2 gGroupSelect, Группа2
Gui, Add, Radio, x390 y200 vRad3 gGroupSelect, Группа3
Gui, Add, Radio, x500 y200 vRad4 gGroupSelect, Группа4
Gui, Add, Button, x250 y370 w200 h30 gGuiSave, Сохранить
Gui, Show, w700 h450
return



GroupSelect:
Gui, Submit, NoHide
GroupSelectFunc(byref GroupSelect){
;GroupSelect := "Тест"
if(Rad1==1)
	Return GroupSelect := "Группа1"
else if(Rad2==1)
	Return GroupSelect := "Группа2"
else if(Rad3==1)
	Return GroupSelect := "Группа3"
else if(Rad4 = True)
	Return GroupSelect := "Группа4"
}
Return

GuiSave:
Gui, Submit, NoHide,	
GroupFunc(byref Group){
	GroupSelectFunc(GroupSelect)
	Group := GroupSelect
}
Return

Numpad5::
	GroupFunc(Group)
	MsgBox % Group
Return

GuiClose:
ExitApp

2

Re: AHK: Передача переменной между нескольких функций

Путаете понятия "определение функции" и "вызов функции". Посмотрите на код:

F3::
   a := 5
   MyFunc(a) {
      MsgBox a
   }
   Return

Скажите, не запуская, что должно произойти при нажатии на F3? Как изменить этот код, чтобы получить нужное поведение?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Передача переменной между нескольких функций

Понятие не имею.
Я функции в AHK начал изучать 3 дня назад, и мои знания не позволяют мне ответить на ваш вопрос.
Скажите, есть ли способ решить мою задачу ?

4 (изменено: DestroyerCode, 2023-11-27 19:48:38)

Re: AHK: Передача переменной между нескольких функций

Правильно ?


F3::
	a := 5
	MyFunc(a)
	MyFunc(a) {
      MsgBox % a
	}
Return

5

Re: AHK: Передача переменной между нескольких функций

Технически правильно. Единственное, что определения функций не принято располагать там же, где они вызываются. Обычно их всех помещают в самом конце кода. Теперь, будучи вооруженным новым знанием, попробуйте взглянуть на свою задачу.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

6 (изменено: DestroyerCode, 2023-11-27 21:23:10)

Re: AHK: Передача переменной между нескольких функций

Да, с этой подсказкой получилось делать, но оказывается там совсем не нужны функции. Я почему то склонился к функциям, ну и тоже самое можно используя функцию, только не вижу смысла.
Ну всё равно спасибо за помощь.
Вот что у меня получилось.


Gui Font, s15
Gui, Add, Radio, x150 y200 vRad1 gGroupSelect +Checked +Group, Группа1
Gui, Add, Radio, x270 y200 vRad2 gGroupSelect, Группа2
Gui, Add, Radio, x390 y200 vRad3 gGroupSelect, Группа3
Gui, Add, Radio, x500 y200 vRad4 gGroupSelect, Группа4
Gui, Add, Button, x250 y370 w200 h30 gGuiSave, Сохранить
Gui, Show, w700 h450
return


GroupSelect:
Gui, Submit, NoHide
	if(Rad1=True)
	GroupSelected := "Группа1"
	else if(Rad2=True)
	GroupSelected := "Группа2"
	else if(Rad3=True)
	GroupSelected := "Группа3"
	else if(Rad4=True)
	GroupSelected := "Группа4"
Return

GuiSave:
	Group := GroupSelected
Return

Mbutton::
	MsgBox, %Group%
Return

GuiClose:
ExitApp

7

Re: AHK: Передача переменной между нескольких функций

В эту часть кода,

DestroyerCode пишет:

GuiSave:
Group := GroupSelected
Return

Можно еще добавить,

Gui, Destroy

чтобы после кнопки "Сохранить" закрывалось окно gui
Примерно так:

DestroyerCode пишет:

GuiSave:
Group := GroupSelected
Gui, Destroy
Return