1 (изменено: itscan, 2016-12-02 10:51:51)

Тема: AHK: Работа с DropDownList (не решено)

Привет. При работе с DropDownList появилась одна неприятность.

Когда я использую DropDownList, пример простого кода.


Gui, Add, Tab, w400 h550, 1


Gui, Add, DropDownList, gVibor, 1|2|3
Gui, Show,, 
;w400 h600

Vibor:
	if A_GuiControl = 1
		Goto, 1
	if A_GuiControl = 2
		Goto, 2
	if A_GuiControl = 3
		Goto, 3
	Return

1:	
Gui, Add, Text,, 1
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

2:
Gui, Add, Text,, 2
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

3:
Gui, Add, Text,, 3
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

Вылезла такая штука, и я не соображу что нужно сделать.
После запуска скрипта, перейдите на 1 выбор, потом на 2 выбор, потом опять на 1 выбор.

1. При первом выборе все ок, отображается то что нужно . Когда выбираем 2 пункт, то 1 пункт остается. Мне нужно чтобы выбирался, какой-то один пункт или 1 или 2, одновременно оба мне не нужны.

2

Re: AHK: Работа с DropDownList (не решено)

Для этого нужно изменить сам эл. упр. DropDownList. Ненужный пункт можно удалить командой GUIControl.

3

Re: AHK: Работа с DropDownList (не решено)

Так, разобрался сам, теперь такой код. Но появилась другая проблема.


Gui, Add, Tab, w400 h550, 1


Sreda = 1|2
Gui, Add, text,vText1, Текст
Gui, Add, DropDownList, w120 vVSreda gSredaL1, %Sreda%

Vibor2 = 1|2
Gui, Add, text, vText2, Текст
Gui, Add, DropDownList, Hidden vViborr2 gViborL2 w250, %Vibor2%


Vibor3 = 3|4
Gui, Add, text, vText3, Текст
Gui, Add, DropDownList, Hidden vViborr3 gViborL3 w250, %Vibor3%



GuiControl, Hide, Text2
GuiControl, Hide, Viborr2
GuiControl, Hide, Text3
GuiControl, Hide, Viborr3
Gui, Show, autosize, текст
;w400 h600

SredaL1:
gui, submit, nohide
if VSreda = 1
	{
	GuiControl, Hide, Text3
	GuiControl, Hide, Viborr3
	GuiControl, Show, Text2
	GuiControl, Show, Viborr2
	gui, show, autosize
	}

if VSreda = 2
	{
	GuiControl, Hide, Text2
	GuiControl, Hide, Viborr2
	GuiControl, Show, Text3
	GuiControl, Show, Viborr3
	gui, show, autosize
	}


ViborL2:
	if A_GuiControl = 1
		Goto, 1
	if A_GuiControl = 2
		Goto, 2
	Return
	
ViborL3:
	if A_GuiControl = 3
		Goto, 1
	if A_GuiControl = 4
		Goto, 2
	Return

1:	
Gui, Add, Text,, 1
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

2:
Gui, Add, Text,, 2
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

При фильтре показывается то 1 выбор то другой. Но они не появляется на одной строчке, а появляются на разных строчках. Видимо это из-за того что эти элементы скрываются, но они резервируют себе место. Можно как то этот резерв удалять если они скрыты ?

4

Re: AHK: Работа с DropDownList (не решено)

Vibor2 = 1|2
Gui, Add, text, x20 y80 vText2, Текст
Gui, Add, DropDownList, x20 y100 Hidden vViborr2 gViborL2 w250, %Vibor2%


Vibor3 = 3|4
Gui, Add, text, x20 y80 vText3, Текст
Gui, Add, DropDownList, x20 y100 Hidden vViborr3 gViborL3 w250, %Vibor3%

5

Re: AHK: Работа с DropDownList (не решено)

В GUI нет понятия строчек. Есть понятие размеров эл. упр. и координат его левого верхнего угла. Если ничего не указывать, ЭУ создаётся размерами по содержимому, координатами в левом верхнем углу окна. Следующий созданный ЭУ будет размещён ниже предыдущего. Чтобы в одних и тех же координатах разместить два разные ЭУ, задайте эти координаты явным образом.

GUI, Add, ControlType [, Options, Text]
В Options задать:
Xn: определяет X-позицию (n) ЭУ в окне GUI;
Yn: определяет Y-позицию (n) ЭУ в окне GUI.

6

Re: AHK: Работа с DropDownList (не решено)

А я понял. Мы как бы оба этих меню подсовывам в одни координаты. Интересное решение.
С этим справились спасибо.

Но появилась еще одна проблема.
Код сейчас такой:


Gui, Add, Tab, w400 h550, 1


Sreda = 1|2
Gui, Add, text,vText1, Текст
Gui, Add, DropDownList, w120 vVSreda gSredaL1, %Sreda%

Vibor2 = 1|2
Gui, Add, text, x20 y80 vText2, Текст
Gui, Add, DropDownList, x20 y100 Hidden vViborr2 gViborL2 w250, %Vibor2%


Vibor3 = 3|4
Gui, Add, text, x20 y80 vText3, Текст
Gui, Add, DropDownList, x20 y100 Hidden vViborr3 gViborL3 w250, %Vibor3%



GuiControl, Hide, Text2
GuiControl, Hide, Viborr2
GuiControl, Hide, Text3
GuiControl, Hide, Viborr3
Gui, Show, autosize, текст
;w400 h600

SredaL1:
gui, submit, nohide
if VSreda = 1
	{
	GuiControl, Hide, Text3
	GuiControl, Hide, Viborr3
	GuiControl, Show, Text2
	GuiControl, Show, Viborr2
	gui, show, autosize
	}

if VSreda = 2
	{
	GuiControl, Hide, Text2
	GuiControl, Hide, Viborr2
	GuiControl, Show, Text3
	GuiControl, Show, Viborr3
	gui, show, autosize
	}


ViborL2:
	if A_GuiControl = 1
		Goto, 1
	if A_GuiControl = 2
		Goto, 2
	Return
	
ViborL3:
	if A_GuiControl = 3
		Goto, 1
	if A_GuiControl = 4
		Goto, 2
	Return

1:	
Gui, Add, Text,, 1
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

2:
Gui, Add, Text,, 2
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

Проблема итогового вывода. Как понятно из кода, мы выбираем 1 меню. У нас показывается 2 меню, когда мы его выбираем, то показываются 2 кнопки.
Вот штука в том, что эти кнопки перестали показывается.
Если из строки


Vibor2 = 1|2
Gui, Add, text, x20 y80 vText2, Текст
Gui, Add, DropDownList, x20 y100 Hidden vViborr2 gViborL2 w250, %Vibor2%

Убрать vViborr2, то кнопки показываются, но тогда перестает работать фильтр. И у нас сразу появляется меню с финальным выбором.

Я не пойму почему не хочет отрабатывать ?
Если посмотреть самый 1 код, то там отработало. Если смотреть сейчас код с доп фильтрами, то почему то перестал выводить. Хотя код вроде по виду нормальный.

7

Re: AHK: Работа с DropDownList (не решено)

Наверное ошибка при проверке условия if A_GuiControl = 1.

AutoHotkey(RUS).chm пишет:

A_GuiControl Содержит имя переменной, ассоциированной с элементом управления GUI, запустившего текущий поток.

А у Вас имя ассоциированной переменной не "1", а "Viborr2" (или "Viborr3").

8

Re: AHK: Работа с DropDownList (не решено)

Не понял. Что это значит ?
Если сделать так:


ViborL2:
	if A_GuiControl = 1
		Goto, 1
	if A_GuiControl = 2
		Goto, 2
	if A_GuiControl = 3
	Return

То ничего не поменяется.

9

Re: AHK: Работа с DropDownList (не решено)

Это значит, что, создавая ЭУ, можно задать ассоциированную с ним переменную. Вы задали vViborr2 и vViborr3.
Когда происходит проверка условия if A_GuiControl = 2, оказывается, что A_GuiControl равен "Viborr2", а не "2", поэтому условие не выполняется. Поэтому кнопки не создаются.

10

Re: AHK: Работа с DropDownList (не решено)

Извините я все равно не понял.
У меня 2 списка.
ViborL2 это один выбор.
ViborL3 это вообще другой и по идее они вообще не связаны между собой.

vViborr2 и vViborr3 это переменные этих списков.
Я не понимаю что не так, если не сложно, можно написать более понятным языком.

11

Re: AHK: Работа с DropDownList (не решено)

itscan пишет:

Вот штука в том, что эти кнопки перестали показывается.

Кнопки в Вашем коде создаются подпрограммами 1: и 2:. Они в свою очередь могут быть запущены подпрограммами ViborL2: или ViborL3:.
Пошли дальше. Чем могут быть запущены ViborL2: и ViborL3:? Судя по коду, только выбором пункта из первого DropDownList (который vViborr2), либо из второго DropDownList (который vViborr3). При этом Вы проверяете условия

if A_GuiControl = 1
if A_GuiControl = 2
if A_GuiControl = 3
if A_GuiControl = 4

A_GuiControl содержит имя ЭУ, которым была эта подпрограмма запущена. То есть либо "Viborr2", либо "Viborr3". То есть A_GuiControl никогда не будет равен ни 1, ни 2, ни 3, ни 4. Поэтому кнопки никогда не создадутся.

Если всё ещё не понятно, изучите внимательнее документацию к используемым командам и встроенным переменным.

12

Re: AHK: Работа с DropDownList (не решено)


if A_GuiControl = 1
if A_GuiControl = 2
if A_GuiControl = 3
if A_GuiControl = 4

Это я написал пример что я так пробовал и так же не работает.

Как видно по коду:


Gui, Add, Tab, w400 h550, 1


Gui, Add, text,vText1, Текст
Gui, Add, DropDownList, w120 vVSreda gSredaL1, 1|2

Gui, Add, text, x20 y80 vText2, Текст
Gui, Add, DropDownList, x20 y100 Hidden vViborr2 gViborL2 w250, 1|2

Gui, Add, text, x20 y80 vText3, Текст
Gui, Add, DropDownList, x20 y100 Hidden vViborr3 gViborL3 w250, 3|4

GuiControl, Hide, Text2
GuiControl, Hide, Viborr2
GuiControl, Hide, Text3
GuiControl, Hide, Viborr3
Gui, Show, autosize, текст
;w400 h600

SredaL1:
gui, submit, nohide
if VSreda = 1
	{
	GuiControl, Hide, Text3
	GuiControl, Hide, Viborr3
	GuiControl, Show, Text2
	GuiControl, Show, Viborr2
	gui, show, autosize
	}

if VSreda = 2
	{
	GuiControl, Hide, Text2
	GuiControl, Hide, Viborr2
	GuiControl, Show, Text3
	GuiControl, Show, Viborr3
	gui, show, autosize
	}


ViborL2:
	if A_GuiControl = 1
		Goto, 1
	if A_GuiControl = 2
		Goto, 2
	Return
	
ViborL3:
	if A_GuiControl = 3
		Goto, 1
	if A_GuiControl = 4
		Goto, 2
	Return

1:	
Gui, Add, Text,, 1
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

2:
Gui, Add, Text,, 2
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

Я проверяю так:
1. Показывается 1 выпадалка.

Gui, Add, DropDownList, w120 vVSreda gSredaL1, 1|2

В ней можно выбрать 1 или 2.
Допустим человек выбрал 1.
Этим кодом я проверяю что он выбрал 1. и я отображаю следующую выпадалку.


SredaL1:
gui, submit, nohide
if VSreda = 1
	{
	GuiControl, Hide, Text3
	GuiControl, Hide, Viborr3
	GuiControl, Show, Text2
	GuiControl, Show, Viborr2
	gui, show, autosize
	}

Следующая выпадалка это:

Gui, Add, DropDownList, x20 y100 Hidden vViborr2 gViborL2 w250, 1|2

Где у человека опять выбор 1 или 2.
Допустим он выбрал 1.
Этим кодом я проверяю что он выбрал.

ViborL2:
	if A_GuiControl = 1
		Goto, 1
	if A_GuiControl = 2
		Goto, 2
	Return

Если он выбрал 1, то перейти на Goto, 1
Происходит переход на

1:	
Gui, Add, Text,, 1
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

Должны отобразится кнопки.

Что я не так делаю ? Где я ошибся. Или я логику не верно понимаю ?

13

Re: AHK: Работа с DropDownList (не решено)

Это я написал пример что я так пробовал и так же не работает.


Этим кодом я проверяю что он выбрал.

Неправильно. Я написал уже дважды, что A_GuiControl никогда не будет равен 1 (или 2 или 3 или 4). Читайте описание этой встроенной переменной внимательно.

14

Re: AHK: Работа с DropDownList (не решено)

А где можно прочитать тогда? Как мне сделать, чтобы все же показались кнопки.

15

Re: AHK: Работа с DropDownList (не решено)

У меня в подписи ссылки на документацию.

А чтобы кнопки показались, нужно

If A_GuiControl = "Viborr2"

как-то так.

16

Re: AHK: Работа с DropDownList (не решено)

Так мне же надо конкретный выбор то )) если 1 то одно, если 2 то другое. А так условие всегда верно.
В "Viborr2" попадает выбор человека с выпадалки, там в итоге будет штук 10 вариантов.

17 (изменено: itscan, 2016-11-27 23:22:10)

Re: AHK: Работа с DropDownList (не решено)

Посмотрел в хелпе, ничего там нет ценного.

A_GuiControl, содержащую текст или имя переменной элемента управления, получившего событие (если события получено не было, значения нет);

Попробовал выводить переменную, и у меня получается какая то белиберда.


#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.




;--------------------Button---------------------------------------------------------
; Основные вкладки в табличной части
Gui, Add, Tab, w400 h550, 1


Gui, Add, text,vText1, Текст
Gui, Add, DropDownList, w120 vSreda gSredaL1, Aa1|Aa2

Gui, Add, text, x20 y80 vText2, Текст
Gui, Add, DropDownList, x20 y100 Hidden vViborr2 gViborL2 w250, a1|a2

Gui, Add, text, x20 y80 vText3, Текст
Gui, Add, DropDownList, x20 y100 Hidden vViborr3 gViborL3 w250, a3|a4

GuiControl, Hide, Text2
GuiControl, Hide, Viborr2
GuiControl, Hide, Text3
GuiControl, Hide, Viborr3
Gui, Show, autosize, текст
;w400 h600

SredaL1:
gui, submit, nohide
if Sreda = Aa1
	{
	GuiControl, Hide, Text3
	GuiControl, Hide, Viborr3
	GuiControl, Show, Text2
	GuiControl, Show, Viborr2
	gui, show, autosize
	}

if Sreda = Aa2
	{
	GuiControl, Hide, Text2
	GuiControl, Hide, Viborr2
	GuiControl, Show, Text3
	GuiControl, Show, Viborr3
	gui, show, autosize
	}


ViborL2:
	MsgBox, контрол %A_GuiControl%
	MsgBox, выбор %Viborr2%
	if A_GuiControl = a1
		Goto, 1
	if A_GuiControl = a2
		Goto, 2
	Return
	
ViborL3:
	if A_GuiControl = 1
		Goto, 1
	if A_GuiControl = 2
		Goto, 2
	Return

1:	
Gui, Add, Text,, 1
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

2:
Gui, Add, Text,, 2
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

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

При этом %A_GuiControl% получает только сам Viborr2, без реального выбора 1 или 2.
Если сам %Viborr2% смотреть, то в тот момент когда он должен получить 1 или 2. Он вообще ничего не получает.
Но если переключать самую 1 вкладку туда сюда, в какой то момент %Viborr2% получает значение а2, и так с ним и остается.

Кто разбирается, в чем у меня ошибка. Почему так ведет себя программа ?
Буду рад помощи. Я уже вообще не понимаю почему так себя ведет.

-----------------------
Вообще какая у меня цель:
Из 1 выпадашки выбрать 1 из 10 пунктов. допустим выбрали 5
Из 2 выпадашки фильтруем выбор 5 и выводим еще одну выпадашку 1 из 5, допустим выбрали 2
После выбора 2, у меня отображаются допустим кнопки, при нажатии на которые что то будет делаться, но это уже другое.

1 шаг вроде сделан.
2 шаг вроде сделан.
на 3 шаге у меня проблема с переменными.

Я честно не втыкаю что я не так делаю.

18

Re: AHK: Работа с DropDownList (не решено)

http://video460.vkadre.ru/assets/thumbnails/9485430594002210.320.vk.jpg  http://abload.de/img/14582307312110l1ozw.jpg

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

  • ассоциированная переменная

  • метка перехода

  • встроенная переменная A_GuiControl

var = 1|2
GUI, Add, DropDownList, vMyList gMyLabel, %var%
GUI, Show
Return

MyLabel:
GUI, Submit, NoHide
MsgBox,
(
Эта подпрограмма запущена элементом управления,
с которым ассоциирована переменная %A_GuiControl%.
Эта пермененная содержит значение %MyList%.
)
Return

19

Re: AHK: Работа с DropDownList (не решено)

Я понимаю как оно работает. Я не понимаю где у меня ошибка.
Переделал If по вашей схеме.

Пожалуйста запустите у себя, сделайте такие шаги.
Выбрать Аа1, далее текст а1, далее выбрать в 1 выпадалке Аа2, мы получаем заветные кнопки.
Но как видно мы их получили вообще не тогда когда нужно, причем если менять Аа1 на Аа2, то все время появляются кнопки. Я смотрю код, и не понимаю почему такое поведение.
В идеале должно было быть так:
Выбрать Аа1, далее текст а1, кнопки появились, если выбрать а2, то другие кнопки, но это я еще не сделал.



Gui, Add, Tab, w400 h550, 1


Gui, Add, text,vText1, Текст
Gui, Add, DropDownList, w120 vSreda gSredaL1, Aa1|Aa2

Gui, Add, text, x20 y80 vText2, Текст
Gui, Add, DropDownList, x20 y100  vViborr2 gViborL2 w250, a1|a2

Gui, Add, text, x20 y80 vText3, Текст
Gui, Add, DropDownList, x20 y100  vViborr3 gViborL3 w250, a3|a4

GuiControl, Hide, Text2
GuiControl, Hide, Viborr2
GuiControl, Hide, Text3
GuiControl, Hide, Viborr3
Gui, Show, autosize, текст
;w400 h600

SredaL1:
gui, submit, nohide
if Sreda = Aa1
	{
	GuiControl, Hide, Text3
	GuiControl, Hide, Viborr3
	GuiControl, Show, Text2
	GuiControl, Show, Viborr2
	gui, show, autosize
	}

if Sreda = Aa2
	{
	GuiControl, Hide, Text2
	GuiControl, Hide, Viborr2
	GuiControl, Show, Text3
	GuiControl, Show, Viborr3
	gui, show, autosize
	}


ViborL2:
	if Viborr2 = a1
		Goto, 1
	if Viborr2 = a2
		Goto, 2
	Return
	
ViborL3:
	if Viborr3 = a3
		Goto, 1
	if Viborr3 = a4
		Goto, 2
	Return

1:	
Gui, Add, Text,, 1
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

2:
Gui, Add, Text,, 2
Gui, Add, Button, default, &Кнопка
Gui, Add, Button, default, &Кнопка
Return

20

Re: AHK: Работа с DropDownList (не решено)

itscan пишет:

Я понимаю как оно работает. Я не понимаю где у меня ошибка.

Вот теперь вроде поняли. Но забыли в начале подпрограмм ViborL2: и ViborL3: записать в переменные элементов GUI значения из ниспадающих списков.

GUI, Submit, NoHide

21 (изменено: Oomniq, 2016-11-28 00:16:25)

Re: AHK: Работа с DropDownList (не решено)

Что-то вроде этого?

Gui, Add, Tab, w400 h550, 1
Gui, Add, text,vText1, Текст
Gui, Add, DropDownList, w120 vVSreda gSredaL1, 1|2
Gui, Show, autosize, текст
Gui, Add, text, Hidden x20 y80 vText2, Текст2
Gui, Add, DropDownList, Hidden x20 y100 Hidden vViborr2 gViborL2 w250, 1|2
Gui, Add, text, Hidden x20 y80 vText3, Текст3
Gui, Add, DropDownList, Hidden x20 y100 Hidden vViborr3 gViborL3 w250, 3|4
Gui, Add, Text, Hidden x20 y160 vtex1, 1
Gui, Add, Button, Hidden x20 y180 vbutton1 default, &Кнопка
Gui, Add, Button, Hidden x80 y180 vbutton2, &Кнопка
Gui, Add, Text, Hidden x20 y160 vtex2, 2
Gui, Add, Button, Hidden x20 y180 vbutton3 default, &Кнопка
Gui, Add, Button, Hidden x80 y180 vbutton4, &Кнопка
return

SredaL1:
GuiControlGet, vsreda
if VSreda = 1
	{
	GuiControl, Hide, Text3
	GuiControl, Hide, Viborr3
	GuiControl, Show, Text2
	GuiControl, Show, Viborr2
	gui, show, autosize
	}
if VSreda = 2
	{
	GuiControl, Hide, Text2
	GuiControl, Hide, Viborr2
	GuiControl, Show, Text3
	GuiControl, Show, Viborr3
	gui, show, autosize
	}
return

ViborL2:
GuiControlGet, Viborr2
if viborr2=1
goto, 1
if viborr2=2
goto, 2
Return
	
ViborL3:
GuiControlGet, Viborr3
if viborr3=3
goto, 1
if viborr3=4
goto, 2
Return

1:	
loop, 4
GuiControl, Hide, button%a_loopfield%
GuiControl, Hide, Tex2
GuiControl, Show, Tex1
GuiControl, Show, button1
GuiControl, Show, button2
Return

2:
loop, 4
GuiControl, Hide, button%a_loopfield%
GuiControl, Hide, Tex1
GuiControl, Show, Tex2
GuiControl, Show, button3
GuiControl, Show, button4
Return 

22 (изменено: serzh82saratov, 2016-11-28 00:45:24)

Re: AHK: Работа с DropDownList (не решено)

Или так:

#NoEnv 

Gui, -DPIScale
Gui, Add, Tab2, w400 h350, 1

Gui, Add, text, x+20 y+20 vText1, Текст 1
Gui, Add, DropDownList, xp w120 y+10 vSreda gSredaL1, Aa1|Aa2

Gui, Add, text, xp y+30 vText2 Hidden Section, Текст 2
Gui, Add, DropDownList, xp y+10 Hidden vViborr2 gVibor w250, a1|a2

Gui, Add, text, xs ys vText3 Hidden, Текст 3
Gui, Add, DropDownList, xp y+10 Hidden vViborr3 gVibor w250, a3|a4

Gui, Add, Text, Hidden vTextKeys1 Section xp y+30, Кнопки 1
Gui, Add, Button, xp y+10 Hidden vButKeys1_1, &Кнопка1
Gui, Add, Button, xp y+10 Hidden vButKeys1_2, &Кнопка1
Buttons1 := ["TextKeys1","ButKeys1_1","ButKeys1_2"]

Gui, Add, Text, xs ys Hidden vTextKeys2, Кнопки 2
Gui, Add, Button, xp y+10 Hidden vButKeys2_1, &Кнопка2
Gui, Add, Button, xp y+10 Hidden vButKeys2_2, &Кнопка2
Buttons2 := ["TextKeys2","ButKeys2_1","ButKeys2_2"]

Gui, Show, , текст 
Return

SredaL1:
	ShowHide := {Hide:Buttons%ButtonsShow%}, ButtonsShow := 0
	GoSub, Show_Hide
	GuiControl, Choose, Viborr2, 0
	GuiControl, Choose, Viborr3, 0
	
	GuiControlGet, %A_GuiControl%
	if Sreda = Aa1 
		ShowHide := {Show:["Text2","Viborr2"], Hide:["Text3","Viborr3"]}
	else if Sreda = Aa2
		ShowHide := {Hide:["Text2","Viborr2"], Show:["Text3","Viborr3"]}
	Goto, Show_Hide

Vibor:
	GuiControlGet, Control, , %A_GuiControl%   
	if Control in a1,a3 
		ShowHide := {Show:Buttons1, Hide:Buttons2}, ButtonsShow := 1
	if Control in a2,a4
		ShowHide := {Hide:Buttons1, Show:Buttons2}, ButtonsShow := 2
	Goto, Show_Hide 

Show_Hide:	 
	for key, arr in ShowHide
		for i, var in arr
			GuiControl, %key%, %var% 
	Return 
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

23 (изменено: itscan, 2016-11-28 00:54:27)

Re: AHK: Работа с DropDownList (не решено)

serzh82saratov Да, все то что нужно )) ваш код это то что я как раз хотел делать и разбираться, теперь будет проще
ypppu и вам спасибо, добавил в код GUI, Submit, NoHide и так же заработало.
Oomniq И вам спасибо.


ViborL3:
GUI, Submit, NoHide
	if Viborr3 = a3
		Goto, 1
	if Viborr3 = a4
		Goto, 2
	Return

24

Re: AHK: Работа с DropDownList (не решено)

serzh82saratov Был бы очень благодарен, если бы в коде немного поставили комментарии, мне многое в коде не понятно, был бы очень благодарен. Для меня пока что сложно разобраться, а тупо копировать без понимания не хочется. Да и другим думаю будет полезно.


#NoEnv 

Gui, -DPIScale
Gui, Add, Tab2, w400 h350, 1

Gui, Add, text, x+20 y+20 vText1, Текст 1
Gui, Add, DropDownList, xp w120 y+10 vSreda gSredaL1, Aa1|Aa2

Gui, Add, text, xp y+30 vText2 Hidden Section, Текст 2
Gui, Add, DropDownList, xp y+10 Hidden vViborr2 gVibor w250, a1|a2

Gui, Add, text, xs ys vText3 Hidden, Текст 3
Gui, Add, DropDownList, xp y+10 Hidden vViborr3 gVibor w250, a3|a4

Gui, Add, Text, Hidden vTextKeys1 Section xp y+30, Кнопки 1
Gui, Add, Button, xp y+10 Hidden vButKeys1_1, &Кнопка1
Gui, Add, Button, xp y+10 Hidden vButKeys1_2, &Кнопка1
Buttons1 := ["TextKeys1","ButKeys1_1","ButKeys1_2"]

Gui, Add, Text, xs ys Hidden vTextKeys2, Кнопки 2
Gui, Add, Button, xp y+10 Hidden vButKeys2_1, &Кнопка2
Gui, Add, Button, xp y+10 Hidden vButKeys2_2, &Кнопка2
Buttons2 := ["TextKeys2","ButKeys2_1","ButKeys2_2"]

Gui, Show, , текст 
Return

SredaL1:
	ShowHide := {Hide:Buttons%ButtonsShow%}, ButtonsShow := 0
	GoSub, Show_Hide
	GuiControl, Choose, Viborr2, 0
	GuiControl, Choose, Viborr3, 0
	
	GuiControlGet, %A_GuiControl%
	if Sreda = Aa1 
		ShowHide := {Show:["Text2","Viborr2"], Hide:["Text3","Viborr3"]}
	else if Sreda = Aa2
		ShowHide := {Hide:["Text2","Viborr2"], Show:["Text3","Viborr3"]}
	Goto, Show_Hide

Vibor:
	GuiControlGet, Control, , %A_GuiControl%   
	if Control in a1,a3 
		ShowHide := {Show:Buttons1, Hide:Buttons2}, ButtonsShow := 1
	if Control in a2,a4
		ShowHide := {Hide:Buttons1, Show:Buttons2}, ButtonsShow := 2
	Goto, Show_Hide 

Show_Hide:	 
	for key, arr in ShowHide
		for i, var in arr
			GuiControl, %key%, %var% 
	Return 

25 (изменено: itscan, 2016-11-28 11:37:47)

Re: AHK: Работа с DropDownList (не решено)

То что я не понял:
1. Gui, -DPIScale  , - в описании хелпе нашел только примеры с этим параметром, но нет описания что это.
2. Buttons1 := ["TextKeys1","ButKeys1_1","ButKeys1_2"] -в хелпе так же не нашел пример такого кода. Как я понял. Мы создаем переменную Buttons1 =, в скобках [ ], TextKeys1 не очень понятно что это, если это встроенная переменная, то в следующей кнопке так же было TextKeys1, но там уже TextKeys2, значит это что-то другое. Далее в скобках "ButKeys1_1","ButKeys1_2" это видимо сами кнопки, но так же не понятно, что мы в переменную Buttons1 помещаем. Сразу два и более названий кнопки ?

3. ShowHide := {Hide:Buttons%ButtonsShow%}, ButtonsShow := 0 , - тут я так же не нашел примера подобного кода в хелпе, тут видимо создаем переменную ShowHide и помещаем туда скрытую кнопку Buttons + номер кнопки берем из другого перебора,
ShowHide := {Show:Buttons1, Hide:Buttons2}, ButtonsShow := 1
или = 1 или 2, но кнопки у нас вроде имена другие имеют vButKeys1_1 вроде. В общем этот код совсем не понятен.

4. ShowHide := {Show:["Text2","Viborr2"], Hide:["Text3","Viborr3"]}  , - тут такая же ситуация, непонятно что откуда берется.

5.

for key, arr in ShowHide
		for i, var in arr
			GuiControl, %key%, %var% 

тут то же не очень пойму.

26 (изменено: serzh82saratov, 2016-11-28 19:44:28)

Re: AHK: Работа с DropDownList (не решено)

1. Gui, -DPIScale  , - в описании хелпе нашел только примеры с этим параметром, но нет описания что это.

В оффициальном есть.

Остальные вопросы про массивы, ответы здесь.

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

27

Re: AHK: Работа с DropDownList (не решено)



Gui, -DPIScale
;------------------

Gui, Add, Tab, w400 h500, 1|2|3|4

; Кнопки запуска на 1 вкладке Макросы
Gui, Add, Button, default, &1
Gui, Add, Button, default, &2
Gui, Add, Button, default, &3
Gui, Add, Button, default, &4
Gui, Add, Button, default, &5

;Переход на 2 вкладку
Gui, Tab, 2

; Кнопки запуска на 2 вкладке Jira
Gui, Add, Button, default, &1
Gui, Add, Button, default, &2
Gui, Add, Button, default, &3
Gui, Add, Button, default, &4

;Переход на 3 вкладку
Gui, Tab, 3
Gui, Add, Button, default, &a1
;---------------

Gui, Add, text,  vText1, Текст 1
Gui, Add, DropDownList, xp w120 y+10 vSreda gSredaL1, QAA|STT|PROR|DET

Gui, Add, text, xp y+5 vText2 Hidden Section, Текст 2
Gui, Add, DropDownList, xp y+10 Hidden vViborr2 gVibor w250, aa1|aaa1|aaaa1

Gui, Add, text, xs ys vText3 Hidden, Текст 3
Gui, Add, DropDownList, xp y+10 Hidden vViborr3 gVibor w250, aa2|aaa2|aaaa2

Gui, Add, text, xs ys vText4 Hidden, Текст 4
Gui, Add, DropDownList, xp y+10 Hidden vViborr4 gVibor w250, aa3|aaa3|aaaa3

Gui, Add, text, xs ys vText5 Hidden, Текст 5
Gui, Add, DropDownList, xp y+10 Hidden vViborr5 gVibor w250, aa4|aaa4|aaaa4


Gui, Add, Text, Hidden vTextKeys1 Section xp y+5, Кнопки 1
Gui, Add, Button, xp y+10 Hidden vButKeys1_1, &Кнопка1
Gui, Add, Button, xp y+10 Hidden vButKeys1_2, &Кнопка1
Buttons1 := ["TextKeys1","ButKeys1_1","ButKeys1_2"]

Gui, Add, Text, xs ys Hidden vTextKeys2, Кнопки 2
Gui, Add, Button, xp y+10 Hidden vButKeys2_1, &Кнопка2
Gui, Add, Button, xp y+10 Hidden vButKeys2_2, &Кнопка2
Buttons2 := ["TextKeys2","ButKeys2_1","ButKeys2_2"]

Gui, Add, Text, xs ys Hidden vTextKeys3, Кнопки 3
Gui, Add, Button, xp y+10 Hidden vButKeys3_1, &Кнопка3
Gui, Add, Button, xp y+10 Hidden vButKeys3_2, &Кнопка3
Buttons3 := ["TextKeys3","ButKeys3_1","ButKeys3_2"]

Gui, Add, Text, xs ys Hidden vTextKeys4, Кнопки 4
Gui, Add, Button, xp y+10 Hidden vButKeys4_1, &Кнопка4
Gui, Add, Button, xp y+10 Hidden vButKeys4_2, &Кнопка4
Buttons4 := ["TextKeys4","ButKeys4_1","ButKeys4_2"]
Gui, Show, , текст 
Return

SredaL1:
	ShowHide := {Hide:Buttons%ButtonsShow%}, ButtonsShow := 0
	GoSub, Show_Hide
	GuiControl, Choose, Viborr2, 0
	GuiControl, Choose, Viborr3, 0
	GuiControl, Choose, Viborr4, 0
	GuiControl, Choose, Viborr5, 0
	
	GuiControlGet, %A_GuiControl%
	if Sreda = QAA
		ShowHide := {Show:["Text2","Viborr2"], Hide:["Text3","Viborr3"], Hide:["Text4","Viborr4"] , Hide:["Text5","Viborr5"]}
	if Sreda = STT
		ShowHide := {Hide:["Text2","Viborr2"], Show:["Text3","Viborr3"], Hide:["Text4","Viborr4"] , Hide:["Text5","Viborr5"]}
	if Sreda = PROR
		ShowHide := {Hide:["Text2","Viborr2"], Hide:["Text3","Viborr3"], Show:["Text4","Viborr4"] , Hide:["Text5","Viborr5"]}		
	if Sreda = DET
		ShowHide := {Hide:["Text2","Viborr2"], Hide:["Text3","Viborr3"], Hide:["Text4","Viborr4"] , Show:["Text5","Viborr5"]}
	Goto, Show_Hide

Vibor:
	GuiControlGet, Control, , %A_GuiControl%   
	if Control in aa1,aaa1,aaaa1
		ShowHide := {Show:Buttons1, Hide:Buttons2, Hide:Buttons3 , Hide:Buttons4}, ButtonsShow := 1
		
	if Control in aa2,aaa2,aaaa2
		ShowHide := {Hide:Buttons1, Show:Buttons2, Hide:Buttons3 , Hide:Buttons4}, ButtonsShow := 2
		
	if Control in aa3,aaa3,aaaa3
		ShowHide := {Hide:Buttons1, Hide:Buttons2, Show:Buttons3 , Hide:Buttons4}, ButtonsShow := 3
		
	if Control in aa4,aaa4,aaaa4
		ShowHide := {Hide:Buttons1, Hide:Buttons2, Hide:Buttons3 , Show:Buttons4}, ButtonsShow := 4
	Goto, Show_Hide 

Show_Hide:	 
	for key, arr in ShowHide
		for i, var in arr
			GuiControl, %key%, %var% 
	Return 

Подскажите, сделал такой код, по вашему примеру. но у меня проблема.
При запуске, перейти в 3 вкладку. Там выбрать текст 1. QAA, выпадает список ааа1, если выбрать текст 1 не QAA на другое , то текст все равно тянется от QAA а не от выбранного вверху элемента.
По коду смотрел вроде все верно, не пойму где ошибка.
Буду рад помощи.