1 (изменено: Vicoriyan, 2018-05-10 18:02:05)

Тема: AHK: Переключатель с помощью Button

Всем доброго времени суток. Поправьте меня, если неправильно назвал тему.
Можно сделать, чтоб управлялось одной кнопкой?

Составил скрипт, чтоб Вы поняли, чего именно я хочу добиться.

Start = Старт
Stop = Остановлен
Disabled1 =
Disabled2 = +Disabled
restart:
Gui Add, Button, x39 y68 w80 h61 %Disabled1% gButton1, %Start%
Gui Add, Button, x150 y68 w80 h61 %Disabled2% gButton2, %Stop%
Gui Show, w270 h191, Window
Return 

Button1:
Start = Запущен
Stop = Стоп
Disabled1 = +Disabled
Disabled2 =
Gui, Destroy
Goto, restart
return

Button2:
Start = Старт
Stop = Остановлен
Disabled1 =
Disabled2 = +Disabled
Gui, Destroy
Goto, restart
return

GuiEscape:
GuiClose:
    ExitApp

Сейчас две кнопки. Но как сделать, чтоб все это управлялось одной? Ну и соответственно со сменой текста внутри кнопки.
Читал справку по GuiControlGet и если я правильно понял, это тут не сработает.

2 (изменено: red2881, 2018-05-10 18:38:24)

Re: AHK: Переключатель с помощью Button

AHK: Включение/выключение цикла на одну кнопку.
AHK: Многодельность клавиши
AHK: два действия на одну клавишу

3

Re: AHK: Переключатель с помощью Button

Спасибо, что ответили red2881, но я спрашивал про саму конструкцию в Gui как это реализовать. Чтоб была только одна кнопка с начальной позицией СТАРТ и при нажатии на нее была кнопка с надписью СТОП.

4

Re: AHK: Переключатель с помощью Button


singleinstance, force
btnlbl := 0                                ;starts in off position; change to 1 to start in on position
gui, add, button, gtest vtest, % btnlbl?"on":"off"
gui,show, w200 h200
return

test:
btnlbl := !btnlbl
guicontrol, ,test, % btnlbl?"on":"off"
if btnlbl
	msgbox Do "on" Stuff
else
	msgbox Do "off" Stuff
return

https://autohotkey.com/board/topic/1076 … as-toggle/

5

Re: AHK: Переключатель с помощью Button

То, что нужно. Спасибо огромное.

6

Re: AHK: Переключатель с помощью Button

Еще нашел одно решение по своему вопросу.

Gui, Add, Button, w100 h100, Start
Gui, Show, w200 h200, Test
Return

ButtonStart:
GuiControlGet, OutputVar,, Button1
If OutputVar = Start
  GuiControl, Text, Button1, Stop
Else
  GuiControl, Text, Button1, Start
Return