1 (изменено: to4er, 2015-02-16 14:16:57)

Тема: AHK: GUI и динамический Drop Down List

Как сделать, чтобы в одном GUI опции одного DDL зависели от другого, родительского DDL? То есть, в первом DDL, примеру выбор: Овощи|Фрукты, во втором в зависимости от выбора первого либо: Огурцы|Помидоры , либо Яблоки|Груши ?

2

Re: AHK: GUI и динамический Drop Down List

Командой GuiControl. Русского перевода нет.

3 (изменено: Irbis, 2015-02-16 15:23:21)

Re: AHK: GUI и динамический Drop Down List

Arr := {"Дом" : "|Кирпич||Дерево|Панель"
       ,"Машина" : "|Седан||Джип|Пикап"
       ,"Животное" : "|Кот||Собака|Единорог"}
for k in Arr
  mainList .= k "|"
Gui, Add, DropDownList, gmainCh vChoice Choose1 xm, % mainList
Gui, Add, DropDownList, vList gsubCh x+m
Gui, Add, Button, Default w50 h50 xm y+20, OK
Gui, Add, Button, w50 h50 xp+202, Exit
Gosub mainCh
Gui, Show
Return

mainCh:
   GuiControlGet,Choice,, Choice
   GuiControl,, List, % Arr[Choice]
Return

SubCh:
   GuiControlGet, subCh,, List
   tooltip % SubCh
   sleep 700
   tooltip
Return
ButtonOK:
   GuiControlGet, subCh,, List
   MsgBox % subCh
Return
ButtonExit:
GuiClose:
ExitApp

4 (изменено: to4er, 2015-02-16 17:35:26)

Re: AHK: GUI и динамический Drop Down List

Ув. Irbis, у меня что-то не получается + там еще пару вопросов, загляните, пожалуйста, в лс.
В общем, такая конструкция, и там 3 списка, один главный - управляет вторым, а второй - третьим. Пытался встроить ваш код, но у меня криво как-то выходит. Списки не разворачиваются, кнопки не работают.

Gui, TestGUI:Add, DropDownList, x155 y15 w95 h21, Родительский список
Gui, TestGUI:Add, DropDownList, x10 y15 w135 h21, Список среднего уровня
Gui, TestGUI:Add, DropDownList, x10 y45 w135 h21, Список нижнего уровня
Gui, TestGUI:Add, DropDownList, x10 y75 w135 h21, DropDownList
Gui, TestGUI:Add, DropDownList, x10 y105 w135 h21, DropDownList
Gui, TestGUI:Add, Button, x155 y45 w95 h40, OK
Gui, TestGUI:Add, Button, x155 y90 w95 h40, Exit
Gui, TestGUI:Add, Text, x10 y130 w21 h13, Text
Gui, TestGUI:Show, w260 h146, TestGUI
Return
ButtonOK:
ButtonExit:
TestGUIGuiClose:
ExitApp

5 (изменено: Malcev, 2015-02-16 20:13:28)

Re: AHK: GUI и динамический Drop Down List

Например так:

Parent := "first|second"
Choice_first := "A|B|C"
Choice_first_A := "1|2|3"
Choice_first_B := "4|5"
Choice_first_C := "6"
Choice_second := "D|E"
Choice_second_D := "s1|s2|s3"
Choice_second_E := "s4|s5"


Gui Add, DropDownList, vList1 gListChange1 Choose1, %Parent%
Gui Add, DropDownList, vList2 gListChange2 Choose1, %Choice_first%
Gui Add, DropDownList, vList3 Choose1, %Choice_first_A%
Gui Show
Return

ListChange1:
GuiControlGet, List1 
GuiControl,, List2, % "|" Choice_%List1%
GuiControl, Choose, List2, 1
GuiControlGet, List2
GuiControl,, List3, % "|" Choice_%List1%_%List2%
GuiControl, Choose, List3, 1
Return

ListChange2:
GuiControlGet, List1 
GuiControlGet, List2 
GuiControl,, List3, % "|" Choice_%List1%_%List2%
GuiControl, Choose, List3, 1
Return

6 (изменено: to4er, 2015-02-16 20:52:21)

Re: AHK: GUI и динамический Drop Down List

Спасибо, только данный скрипт не позволяет запрещенные символы вставлять в списки, что не очень удобно. Я, в принципе, с первым разобрался, если б еще 3 DDL в нем вместо двух было б шикарно.

7

Re: AHK: GUI и динамический Drop Down List

Да, тогда так:

Parent := "first|second"
Choice_1 := "A|B|C"
Choice_1_1 := "1|2|3"
Choice_1_2 := "4|5"
Choice_1_3 := "6"
Choice_2 := "D|E"
Choice_2_1 := "s1|s2|s3"
Choice_2_2 := "s4|s5"


Gui Add, DropDownList, AltSubmit vList1 gListChange1 Choose1, %Parent%
Gui Add, DropDownList, AltSubmit vList2 gListChange2 Choose1, %Choice_1%
Gui Add, DropDownList, AltSubmit vList3 Choose1, %Choice_1_1%
Gui Show
Return

ListChange1:
GuiControlGet, List1
GuiControl,, List2, % "|" Choice_%List1%
GuiControl, Choose, List2, 1
GuiControlGet, List2
GuiControl,, List3, % "|" Choice_%List1%_%List2%
GuiControl, Choose, List3, 1
Return

ListChange2:
GuiControlGet, List1
GuiControlGet, List2 
GuiControl,, List3, % "|" Choice_%List1%_%List2%
GuiControl, Choose, List3, 1
Return

8

Re: AHK: GUI и динамический Drop Down List

Какая переменная тут отвечает за вывод результата? Что-то я совсем запутался..

9

Re: AHK: GUI и динамический Drop Down List

Если мы в Гуи указываем AltSubmit, То комманда  GuiControlGet возвращает номер выбора.

10

Re: AHK: GUI и динамический Drop Down List

Вот более простой для понимания пример, по-моему:

oLists := { Товары: "Фрукты||Овощи"
          , Фрукты: "Яблоки||Груши", Овощи: "Огурцы||Помидоры"
          , Яблоки: "Антоновка||Гольден|Мельба", Груши: "Дюшес||Велеса|Московская"
          , Огурцы: "Конни||Патти|Клавдия", Помидоры: "Аурия||Балерина|Будёновка" }

Gui, Margin, 25, 12
Gui, Add, DDL, vGoods gHandling, % oLists.Товары
Gui, Add, DDL, vGroups gHandling, % oLists.Фрукты
Gui, Add, DDL, vSort gHandling, % oLists.Яблоки
Gui, Show
Return

Handling:
   Gui, Submit, NoHide
   if (A_GuiControl = "Goods")  {
      GuiControl,, Groups, % "|" oLists[Goods]
      Gui, Submit, NoHide
      GuiControl,, Sort, % "|" oLists[Groups]
   }
   else if (A_GuiControl = "Groups")
      GuiControl,, Sort, % "|" oLists[Groups]
   else
      MsgBox, % Sort
   Return
   
GuiClose:
   ExitApp
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: GUI и динамический Drop Down List

Всем спасибо, все решено.