1 (изменено: Gh0sTG0, 2025-03-28 16:19:09)

Тема: AHK: GUI как скрыть место из под кнопок / переформировать layout?

Добрый день.
Есть простенький GUI о 6 кнопках (код ниже).
Если это запустить с 1 `Show` кнопкой - появится кнопка 1, и 5 пустых мест под кнопки ниже.
Кнопки делаются видимыми _ДО_ самого первого `Gui, Show`.

Возможно ли как то сделать так, чтобы пустого места не было? Чтобы, если у меня есть 3 `Show` кнопки - 2, 4, 5 - я бы хотел видеть окно размером в 3 кнопки со всего 3 кнопками - 2, 4, 5?

Условно:


Gui, Add, Button, Default x40 w610 gStart_1 vStart_1, 1
Gui, Add, Button, Default x40 w610 gStart_2 vStart_2 Hidden, 2
Gui, Add, Button, Default x40 w610 gStart_3 vStart_3 Hidden, 3
Gui, Add, Button, Default x40 w610 gStart_4 vStart_4 Hidden, 4
Gui, Add, Button, Default x40 w610 gStart_5 vStart_5 Hidden, 5
Gui, Add, Button, Default x40 w610 gStart_6 vStart_6 Hidden, 6

; Здесь будет весь код для того чтобы сделать `Show` каких то кнопок. Сами кнопки `Show` не делают.
GuiControl, Show, Start_2
GuiControl, Show, Start_3
GuiControl, Show, Start_6

Gui, Show

И он мне выдаст окно:

+ открыть спойлер

https://forum.script-coding.com/misc.php?action=pun_attachment&item=2460&download=0

Post's attachments

2025-03-28_15-14-19.png 6.94 kb, file has never been downloaded. 

You don't have the permssions to download the attachments of this post.

2

Re: AHK: GUI как скрыть место из под кнопок / переформировать layout?

Просто не создавайте лишних кнопок изначально.

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

3 (изменено: Gh0sTG0, 2025-03-28 17:29:33)

Re: AHK: GUI как скрыть место из под кнопок / переформировать layout?

teadrinker

+ открыть спойлер

А как их тогда будет досоздать из программы, без залезания в код?
Собственно, я именно потому их заранее и создал, что понятия не имею как их добавлять кодом.
Там нужно до ~6 кнопок, который появляются или не появляются в зависимости от того, что вот в том месте где замечание про show получит.

UPD подумал, подумал, и решил что поправить код каждый раз можно и вручную, да.

4

Re: AHK: GUI как скрыть место из под кнопок / переформировать layout?

Не совсем понятно что требуется. Если нужно динамически обрабатывать что-то, то используйте цикл. Каждая кнопка имеет своё уникальное имя (можно самому назначить). Через нажатие на кнопку - запускается например функция или метка в которой перерисовывается менюшка в зависимости от нажатой кнопки. Количество кнопок как я понял на 1 меньше чем может быть окошек? Тогда учитывать какое окошко открыто, переименовываем все остальные кнопки ниже по порядку.

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

5 (изменено: Gh0sTG0, 2025-03-28 22:29:23)

Re: AHK: GUI как скрыть место из под кнопок / переформировать layout?

__Михаил__
Есть GUI. GUI, количество кнопок в котором должно задаваться не на этапе написания кода, а на этапе запуска. Получает список из sqlite файла, по списку задает количество кнопок и их текст.
Вот тех кнопок, которые я вижу перед собой при запуске.
2, 3, 5, и.т.п. Сколько в sqlite файле строк есть, столько и кнопок.
Прикинул, скорее всего кнопок не будет больше 10. Но может быть _ОДНА_...
Пробовал сделать через hidden, но оно оставляет здоровенную пустоту на месте hidden кнопок.

Почему на этапе запуска: я его компилирую в экзешник, чтобы закинуть на панель приложений рядом с пуском.

6

Re: AHK: GUI как скрыть место из под кнопок / переформировать layout?

Gh0sTG0
Всё равно малопонятно. Если у вас есть список кнопок и их текстов, то зачем создавать лишние кнопки? Создавайте только те, которые есть в списке.

Gh0sTG0 пишет:

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

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

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

7

Re: AHK: GUI как скрыть место из под кнопок / переформировать layout?

Каждый использует как ему удобнее конечно, но мне лично нравится запускать те или иные скрипты по факту необходимости. Например если зашёл в игру, нажатие на клавишу (например 'Почта') запускает скрипт который нужен в ней. В другом окне эта же клавиша имеет другую привязку к запуску. Основной скрипт всегда запущен при старте системы, нет нужды о нём заботиться.
Всё же советую использовать цикл. Он позволит не только отображать нужное количество кнопок, так ещё и заполнять их текстом и желаемым действием при их нажатии. Плюс можно и размер окна расширять. При желании даже обновление сделать (условие только нужно знать).

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

8 (изменено: Alectric, 2025-03-29 09:44:51)

Re: AHK: GUI как скрыть место из под кнопок / переформировать layout?

b2:=true
b3:=true
b6:=true
gosub,CreateGui

msgbox "После нажатия Ок появятся кнопки 4,5 и исчезнет 2"

b2:=false
b4:=true
b5:=true
gosub,CreateGui

return

CreateGui:
gui,destroy
if b1
  Gui, Add, Button, Default x40 w610 gStart_1 vStart_1, 1
if b2
  Gui, Add, Button, Default x40 w610 gStart_2 vStart_2, 2
if b3
  Gui, Add, Button, Default x40 w610 gStart_3 vStart_3, 3
if b4
  Gui, Add, Button, Default x40 w610 gStart_4 vStart_4, 4
if b5
  Gui, Add, Button, Default x40 w610 gStart_5 vStart_5, 5
if b6
  Gui, Add, Button, Default x40 w610 gStart_6 vStart_6, 6
Gui, Show
return

esc::exitapp

Start_1:
Start_2:
Start_3:
Start_4:
Start_5:
Start_6:
return
Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

9

Re: AHK: GUI как скрыть место из под кнопок / переформировать layout?

Alectric
А вот это похоже на то, что мне и надо. Спасибо, попробую потыкать.

10

Re: AHK: GUI как скрыть место из под кнопок / переформировать layout?

Alectric
А если бы 100 кнопок нужно было, вы бы 100 раз одну и ту же строку написали? Default может быть только одна кнопка.

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

11

Re: AHK: GUI как скрыть место из под кнопок / переформировать layout?

teadrinker
Прошу прощения, это мой косяк, который полетел дальше по копипасте xD. Я множил строку уже здесь, случайно ее утянул т.к. она была первой кнопкой в моем коде (и да, она была с дефолтом).

12 (изменено: Alectric, 2025-03-30 21:18:13)

Re: AHK: GUI как скрыть место из под кнопок / переформировать layout?

teadrinker, всегда начинаю с самого простого варианта, дальше можно нафантазировать любой сложный вариант. В данном случае - просто лень продолжать усложнять.

Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.