Как менять размеры вкладок в GUI?

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Как менять размеры вкладок в GUI?

Re: Как менять размеры вкладок в GUI?

by vmech » 29 Oct 2023, 15:16

Ну в общем есть 2 внутренних переменных: A_GuiControl и A_GuiControlEvent.
В первой отпечатывается значение, каким либо образом связанное с элементом Gui, с которым взаимодействует пользователь.
Во второй отпечатывается тип действия (обычно - из статичного списка), которое было произведено над этим элементом при взаимодействии.
Ну и, собссно, после старта скрипта, и до первого клика куда бы то ни было, они - пустые (т.е. им не присвоено вообще никаких значений).
Ну вот если использовать проверку на значение даже хотя бы второй переменной (элемент то нам известен - собственно запускается подпрограмма, привязанная именно к этому элементу), тогда это и будет простейший фильтр:

Code: Select all

If (A_GuiControlEvent)
{
	Switch Tabvar
	{
	Case 1:Guicontrol, Move, Tabvar, W200 H180
	Case 2:Guicontrol, Move, Tabvar, W250 H120
	; Case "Главная":Guicontrol, Move, Tabvar, W200 H180
	; Case "Дополнительная":Guicontrol, Move, Tabvar, W250 H120
	}
}
Пока переменной не присвоено значение, условие в If будет ложным, и блок Switch будет просто пропущен.
Условие станет истинным после первого (и каждого последующего) клика по вкладкам, и тогда блок Switch будет выполнять свою функцию.
Вот и все «премудрости» :)

Re: Как менять размеры вкладок в GUI?

by marusa122 » 29 Oct 2023, 14:49

@vmech, жги! Мне уже интересно))

Re: Как менять размеры вкладок в GUI?

by vmech » 29 Oct 2023, 13:29

@marusa122, я обнаружил способ, как избавиться от изменения размера элемента вкладок при запуске скрипта. Если интересно - напиши, поясню механику (там ничего сложного, просто как обычно «дьявол скрывается в мелочах» :lol: ).

Re: Как менять размеры вкладок в GUI?

by vmech » 29 Oct 2023, 12:37

@marusa122, там ещё есть такая тема: если добавить опцию AltSubmit в команду Gui, Add, Tab2, vTabvar gTabSub AltSubmit, Главная|Дополнительная, тогда в переменную Tabvar будут передаваться числовые значения, соответствующие порядковым номерам вкладок, слева направо. Соответственно, в условных операторах Case нужно будет проставить цифры, без кавычек, вместо строковых значений, чтобы всё работало.

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

Просто имей это ввиду, и «запиши себе на корочку» ;)

Re: Как менять размеры вкладок в GUI?

by marusa122 » 29 Oct 2023, 10:30

@vmech, спасибо, это оно!
А насчет Autohotkey v2... по нему нет русскоязычной справки, да и как человеку, который абсолютно в этом не шарит, v1.1 мне кажется проще и логичнее.

Re: Как менять размеры вкладок в GUI?

by vmech » 29 Oct 2023, 10:05

Вобщем не знаю зачем тебе это нужно... Но, похоже ты хотела вот это:

Code: Select all

#Requires Autohotkey v1.1

Gui, Add, Tab2, vTabvar gTabSub, Главная|Дополнительная

Gui,Tab, Главная
Gui,Add,Text,,Строка 1 для вкладки Главная
Gui,Add,Text,,Строка 2 для вкладки Главная
Gui,Add,Text,,Строка 3 для вкладки Главная
Gui,Add,Text,,Строка 4 для вкладки Главная
Gui,Add,Text,,Строка 5 для вкладки Главная

Gui,Tab, Дополнительная
Gui,Add,Text,,Строка 1 для вкладки Дополнительная
Gui,Add,Text,,Строка 2 для вкладки Дополнительная
Gui,Add,Text,,Строка 3 для вкладки Дополнительная

Gui, Show

TabSub:
Gui,Submit,NoHide
Switch Tabvar
{
Case "Главная":Guicontrol, Move, Tabvar, W200 H180
Case "Дополнительная":Guicontrol, Move, Tabvar, W250 H120
}
Return

GuiClose:
ExitApp
Добавил к инициализации элемента вкладок метку подпрограммы gTabSub. Она будет вызываться при каждом клике по вкладкам.
ВАЖНО: Почему то, при запуске скрипта, без всяких кликов, эта подпрограмма вызывает сама себя 1 раз - поэтому элемент с вкладками сразу отображается в изменённом размере. Не знаю как от этого избавиться. М.б. кто другой, более сведущий в этих вопросах, подскажет.

ЗЫ. Уже совсем забыл как пишется код в Autohotkey v1 - это издевательство над рассудком какое то... @marusa122, почему ты не начинаешь изучать, и использовать, Autohotkey v2 ?

Re: Как менять размеры вкладок в GUI?

by marusa122 » 29 Oct 2023, 07:28

@vmech
vmech wrote:
29 Oct 2023, 06:41
Попробовать использовать Tab3 вместо Tab/Tab2 ?
Я попробовала использовать Tab3:

Code: Select all

Gui, Add, Tab3, vTabvar, Главная|Дополнительная

Gui,Tab, Главная
Gui,Add,Text,,Строка 1 для вкладки Главная
Gui,Add,Text,,Строка 2 для вкладки Главная
Gui,Add,Text,,Строка 3 для вкладки Главная
Gui,Add,Text,,Строка 4 для вкладки Главная
Gui,Add,Text,,Строка 5 для вкладки Главная

Gui,Tab, Дополнительная
Gui,Add,Text,,Строка 1 для вкладки Дополнительная
Gui,Add,Text,,Строка 2 для вкладки Дополнительная
Gui,Add,Text,,Строка 3 для вкладки Дополнительная

Gui, Show

Return
Высота вкладки Дополнительная должна быть меньше высоты вкладки Главная. Но она остается такой же, из-за чего половина вкладки Дополнительная остается пустой. А нужно, чтобы ее высота уменьшалась по размеру содержимого.

Re: Как менять размеры вкладок в GUI?

by vmech » 29 Oct 2023, 06:41

Попробовать использовать Tab3 вместо Tab/Tab2 ?
https://www.autohotkey.com/docs/v1/lib/GuiControls.htm#Tab_vs
Автоматический размер: если скрипт не задан, ширина и/или высота элемента управления Tab3 автоматически вычисляются в одно из следующих значений (в зависимости от того, что наступит раньше после создания элемента управления).:

* В первый раз элемент управления Tab3 перестает быть текущим элементом управления tab. Это может произойти в результате вызова Gui Tab (с параметрами или без них) или создания другого элемента управления tab.
* Первый раз Gui Show вызывается для этого конкретного Gui.

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

Элементы управления Tab и Tab2 не изменяются автоматически; они получают произвольный размер по умолчанию.

Как менять размеры вкладок в GUI?

by marusa122 » 29 Oct 2023, 02:34

Здравствуйте.
Есть скрипт:

Code: Select all

Gui, Add, Tab2, vTabvar, Главная|Дополнительная
Gui, Show

Gui,Tab, Главная
Gui,Add,Text,,Строка 1 для вкладки Главная
Gui,Add,Text,,Строка 2 для вкладки Главная
Gui,Add,Text,,Строка 3 для вкладки Главная
Gui,Add,Text,,Строка 4 для вкладки Главная
Gui,Add,Text,,Строка 5 для вкладки Главная

Gui,Tab, Дополнительная
Gui,Add,Text,,Строка 1 для вкладки Дополнительная
Gui,Add,Text,,Строка 2 для вкладки Дополнительная
Gui,Add,Text,,Строка 3 для вкладки Дополнительная

Esc::
Guicontrol, Move, Tabvar, W200 H200
Gui, Show, W100 H100
Return

Tab::
Guicontrol, Move, Tabvar, W300 H300
Gui, Show, W200 H200
Return
Как сделать так, чтобы команда, выполняемая при нажатии Esc, автоматически выполнялась при переходе на вкладку "Дополнительная"? А команда, выполняемая при нажатии Tab, автоматически выполнялась при переходе на вкладку "Главная"?

Top