1 (изменено: itscan, 2016-03-30 11:48:11)

Тема: AHK: Gui, показать пункт меню в нужный момент

Добрый день.
Вопрос мой скорее всего уже был, но я искал, и именно на свой вопрос не нашел ответ.
У меня все просто, но не пойму как сделать.

Задача.

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

Приложу код,

Запуск, в блокноте на русс языке набрать лояяя, откроется меню
1. человек вводит дату.
2. человек выбирает число
3. человек выбирает валюту.
4. в зависимости от того какую выбрал человек валюту, динамически создается еще одно поле под 3 полем. и там человек выбирает дальше.
И тем самым он будет последовательно заполнять поля, а данная табличка постепенно будет добавлять меню в зависимости от выбора предыдущего.

Вот я собственно не пойму как вызвать 4 меню, если чел в 3 выбрал например 1 вариант.

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



:c*:лояяя::
{

Gui, Font,s11, Verdana;

;Gui, Add, Text, C5A528D, Окончание карты (9134):
;Gui, Add, Edit, w150 vKtFin

Gui, Add, Text, C5A528D, Дата в формате:(ГГГГММДД)(20160327):
Gui, Add, Edit, w150 vDtOper

Gui, Add, Text, C5A528D, Сумма операции (10000 = 100р. 00к):
Gui, Add, DropDownList, w150  vSumPay , |10000|15000|20000

Gui, Add, Text, C5A528D, Валюта (RUB,$,E,BYR,BBD,KPW):
Gui, Add, DropDownList, w150 vValuta , |810|840|978


if Valuta = 840
{
Gui, Add, Text, C5A528D, Парент (ib):
Gui, Add, DropDownList, w150 vPar , |1|2|3|
}

if Valuta = 810
{
Gui, Add, Text, C5A528D, Парент (ib):
Gui, Add, DropDownList, w150 vPar , |4|5|6|
}


Gui, Color, F5BFA7, B8DDF0


Gui, Add, Button, default, OK
Gui, Show, w250, Лояльность v1.0

return
ButtonOK:
Gui, Submit


Gui, Destroy
GuiClose:
Exit

}

2

Re: AHK: Gui, показать пункт меню в нужный момент

Приведите заголовок в порядок.

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

3

Re: AHK: Gui, показать пункт меню в нужный момент

teadrinker
так гуд ?

4

Re: AHK: Gui, показать пункт меню в нужный момент

Нет.

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

5

Re: AHK: Gui, показать пункт меню в нужный момент

А точка там посредине зачем? Да и в конце в заголовках точки не ставятся. Пройдите ещё раз по ссылке «как правильно составить текст заголовка».

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

6

Re: AHK: Gui, показать пункт меню в нужный момент

Теперь ок.

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

7 (изменено: Alectric, 2016-03-28 20:47:27)

Re: AHK: Gui, показать пункт меню в нужный момент

Такой вариант не пойдет?


  Gui,2: Add, Text,y+5 C5A528D, Парент (ib):
  Gui,2: Add, DropDownList,y+5 w150 vPar , |1|2|3|
  Gui,2: Add, Button,xm+100 default, OK

  Gui,3: Add, Text,y+5 C5A528D, Парент (ib):
  Gui,3: Add, DropDownList,y+5 w150 vPar , |4|5|6|
  Gui,3: Add, Button,xm+100 default, OK

Gui, Font,s11, Verdana;

;Gui, Add, Text, C5A528D, Окончание карты (9134):
;Gui, Add, Edit, w150 vKtFin
Gui, Add, Button,xm+180 ym+280 w70 default, OK

Gui, Add, Text,xm ym C5A528D, Дата:
Gui, Add, DateTime, w150 vDtOper

Gui, Add, Text, C5A528D, Сумма операции (10000 = 100р. 00к):
Gui, Add, DropDownList, w150  vSumPay , |10000|15000|20000

Gui, Add, Text, C5A528D, Валюта:
Gui, Add, DropDownList, w150 gchange vValuta , |RUB|$|E|BYR|BBD|KPW
Gui, Add, Edit,x+5 yp w70 vVar

Gui, Color, F5BFA7, B8DDF0


:c*:лояяя::
Gui, Show, , Лояльность v1.0
return

ButtonOK:
Gui, Submit
stringleft,DtOper,DtOper,8
msgbox,% "Дата:`n" DtOper
return

change:
Gui, Submit,nohide
;msgbox,% Valuta
if Valuta = RUB
  Gui,2: Show
else if Valuta = $
  Gui,3: Show
return

2ButtonOK:
3ButtonOK:
Gui,%A_Gui%: Submit
Gui,1:Default
GuiControl,,Var,%Par%
return

GuiClose:
Exit

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

8

Re: AHK: Gui, показать пункт меню в нужный момент

itscan, Вы нарушаете Правила форума:

Важнейшие правила форума пишет:

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

Правила форума пишет:

3.3. Идеального литературного языка на форуме от Вас не требуют, однако неумение или нежелание более-менее грамотно писать по-русски рассматривается как неуважение к присутствующим. Обязательно прочитайте Ваше сообщение перед публикацией.
Запрещается преднамеренно коверкать написание всех (или многих) слов ради забавы.

Отредактируйте свои сообщения, проставив заглавные буквы, знаки препинания, замените слово "чел".

9 (изменено: itscan, 2016-03-31 16:00:10)

Re: AHK: Gui, показать пункт меню в нужный момент

Нет немножечко не то.

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

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

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

10 (изменено: itscan, 2016-03-31 16:02:17)

Re: AHK: Gui, показать пункт меню в нужный момент

Что в итоге получится:
Что человек выбрал рубли, ему подгрузились еще два поля, он заполнил число 2 и выбрал что то еще.
Ему еще подгрузилось 2 поля, где он так же заполнил число и что то выбрал.
Ему еще подгрузилось 3 поля, где он заполнил 2 поля и выбрал еще одно поле, после нажал Ок.

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

Post's attachments

Screenshot_8.jpg
Screenshot_8.jpg 39.48 kb, 20 downloads since 2016-03-30 

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

11 (изменено: itscan, 2016-03-31 16:03:01)

Re: AHK: Gui, показать пункт меню в нужный момент

Поменял текст в 2х последних сообщениях, на более простой вариант.

12 (изменено: Alectric, 2016-03-31 20:37:23)

Re: AHK: Gui, показать пункт меню в нужный момент

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

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

13

Re: AHK: Gui, показать пункт меню в нужный момент

ddlist1 = 1|2
ddlist2 = a|b
ddlist3 = c|d
x:=y:=10
Gui,Add,DropDownList, x%x% y%y% vanswer gchoice, %ddlist1%
y+=30
Gui,Add,DropDownList, x%x% y%y% vanswer1, %ddlist2%
Gui,Add,DropDownList, x%x% y%y% vanswer2, %ddlist3%
GuiControl, Hide, answer1
GuiControl, Hide, answer2
gui, show, autosize
return

choice:
gui, submit, nohide
if (answer = 1)
{
   GuiControl, Hide, answer2
   GuiControl, Show, answer1
   gui, show, autosize
}
else
{
   GuiControl, Hide, answer1
   GuiControl, Show, answer2
   gui, show, autosize
}
Return

14 (изменено: itscan, 2016-04-01 13:53:07)

Re: AHK: Gui, показать пункт меню в нужный момент

Alectric
Такой штуки как поменял не будет.
Даже если будет, это исключительная ситуация,
человек 1 раз сделает такую ошибку и больше не будет.
Моя мини программа будет для помощи им,
и в их же интересах не пытаться сломать ей
Иначе они будут все делать ручками )

Malcev
Спасибо.
Супер, то что нужно, буду разбираться )
----

Посмотрел код, я понял смысл.
создаем 3 переменных с вариантом выбора 1 или 2.
ddlist1 = 1|2
ddlist2 = a|b
ddlist3 = c|d

Добавил в коде: больше выборов, например
ddlist1 = 1|2|3|4 ...n
ddlist2 = a|b|d|e ...n
ddlist3 = c|f|g|h  ...n

Далее не понял запись, что она дает ?  X = Y, a Y = 10?  Что Х и У примут число 10 ?
x:=y:=10

Так же строка y+=30, так же не понимаю что это и что это делает.

Далее мы создаем дроплист, куда подставляем Х=10 и Y=10 ?

Далее в строке переходим на choice: и смотрим какой параметр получил vanswer,
если получил 1, то скрываем answer2 и показываем answer1
или скрываем answer1 и показываем answer2

Далее в меню которое появилось можно выбрать что то еще.

Если я все верно понял, уточните пожалуйста мои вопросы, иначе картина не 100% понятна.

15

Re: AHK: Gui, показать пункт меню в нужный момент

А есть смысл для каждого варианта создавать контрол?


Gui, Add, DropDownList, x10 y10 vChoice gChoice, 1|2
Gui, Add, DropDownList, xp y+10 vAnswer Hidden
Gui, Show, AutoSize
Return

Choice:
	GuiControlGet, Choice 
	GuiControl, , Answer, % ["|a||b","|c||d"][Choice] 
	GuiControl, Show, Answer
	Gui, Show, AutoSize NA 
	Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

16

Re: AHK: Gui, показать пункт меню в нужный момент

Спасибо. Многое уже додумал сам.
Столкнулся с такой ситуацией.
Если по выпадающему меня сделать 3-4 выбора, и каждый отдельный выбор заранее создать и скрыть, для того чтобы пользователю показать только один который подходит под выбор.

Так вот. у меня такая штука, что эти 3-4 скрытых элемента, резервируют себе место, выглядит это так. см картинку.

На Ява есть 3 параметра, это скрыть, показать, убрать резерв строки.
А тут есть подобный параметр? Я не смог найти.

Post's attachments

Screenshot_14.jpg 22.98 kb, 1 downloads since 2016-04-01 

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

17

Re: AHK: Gui, показать пункт меню в нужный момент

Ещё раз задам вопрос:

А есть смысл для каждого варианта создавать контрол?

Gui, Add, DropDownList, x10 y10 vChoice gChoice, 1|2|3|4
Gui, Add, DropDownList, xp y+10 vAnswer Hidden
Gui, Show, AutoSize
Return

Choice:
	GuiControlGet, Choice 
	GuiControl, , Answer, % ["|a||b","|c||d","|e||f","|g||h"][Choice] 
	GuiControl, Show, Answer
	Gui, Show, AutoSize NA 
	Return

А тут есть подобный параметр? Я не смог найти.

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

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

18 (изменено: Malcev, 2016-04-02 01:05:20)

Re: AHK: Gui, показать пункт меню в нужный момент

Как я понимаю, itscan хочет двигать контролы.
У меня так получается:

ddlist1 = 1|2
ddlist2 = a|b
ddlist3 = c|d
ddlist4 = e|f
delta := 25, y := -delta
loop 4
{
   y += delta
   Gui,Add,DropDownList, x10 y%y% v%A_Index%, % ddlist%A_Index%
}
Gui, Show, AutoSize
Return


f1::  ; прячет 2 контрол и остальные поднимает.
id := 2, y := -2*delta
loop 4
{
   y += delta
   If (A_Index < id)
      Continue
   If (A_Index = id)
   {
      GuiControl, Hide, % A_Index
      Continue
   }
   GuiControl, Move, % A_Index, y%y%
}
Gui, Show, AutoSize
return

19 (изменено: itscan, 2016-04-04 14:13:27)

Re: AHK: Gui, показать пункт меню в нужный момент

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

Если посмотреть картинку, то на 3 картинке видно что идет выбор валюты. Я хотел сделать так.
Смотря какую валюту выбрать, $ E Руб, следующую строку "Сколько" выводить именно под данную валюту.
Но трабл с резервом строки не могу победить. Пока что сделал что "Сколько" у всех выводится одинаково, но это не правильно.

Post's attachments

Screenshot_17.jpg 115.94 kb, 1 downloads since 2016-04-04 

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

20

Re: AHK: Gui, показать пункт меню в нужный момент

Вот хоть убейте, не понимаю в чём проблема. Какие контролы куда двигать, и что где не то место занимает.
Вот 4 контрола в одном месте:


Gui, Add, DropDownList, x10 y10 vChoice gChoice, 1|2|3|4
Gui, Add, DropDownList, xp y+10 vAnswer1 Hidden, a||b
Gui, Add, DropDownList, xp yp wp vAnswer2 Hidden, c||d
Gui, Add, DropDownList, xp yp wp vAnswer3 Hidden, e||f
Gui, Add, DropDownList, xp yp wp vAnswer4 Hidden, g||h
Gui, Show, AutoSize
Return

Choice:
	GuiControlGet, Choice  
	Loop 4
		GuiControl, Hide, Answer%A_Index%
	GuiControl, Show, Answer%Choice%
	Gui, Show, AutoSize NA 
	Return

Но всё равно не ясно зачем этот огород с кучей контролов, если одного достаточно. Чем не подходит вариант предложенный в 17 посте?

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

21

Re: AHK: Gui, показать пункт меню в нужный момент

Вы не понимаете, у меня не 2 выбора, а гораздо больше.
С 2 выборами проблем нет.
Вот когда будет 3 выбор, при этом 3 выбор может быть 3х вариантов,
Пример:

1 выпадающее меню. там выбор А или Б или С
Выбрали Б

Причем неважно что выбрали в 1 меню. все равно откроется только это меню.
2 выпадающее меню. там выбор 1 или 2 или 3
Выбрали 1


3 выпадающее меню.
Если выбрали 1. выводить выпадающее меню Х, (тут свой выбор)
Если выбрали 2. выводить выпадающее меню Y, (тут свой выбор)
Если выбрали 3. выводить выпадающее меню Z (тут свой выбор)

22 (изменено: serzh82saratov, 2016-04-05 19:56:15)

Re: AHK: Gui, показать пункт меню в нужный момент

Так какая разница во втором (как в 17 посте) третьем, или пятом DropDownList будут разные варианты.


Gui, Add, DropDownList, x10 y10 vChoice1 gChoice, a|b|c
Gui, Add, DropDownList, xp y+10 vChoice2 gChoice Hidden, один|два|три
Gui, Add, DropDownList, xp y+10 vChoice3 gChoice Hidden
Gui, Show, AutoSize
Return

Choice:
	Gui, Submit, Nohide
	If A_GuiControl = Choice1
		GuiControl, Show, Choice2
	Else If A_GuiControl = Choice2
	{
		GuiControlGet, hChoice2, Hwnd, Choice2
		SendMessage, 0x147, 0, 0, , ahk_id %hChoice2%   ; CB_GETCURSEL
		Sel := ErrorLevel + 1
		GuiControl, , Choice3, % ["|x1|x2","|y1|y2|y3","|z1|z2|z3|z4"][Sel] 
		GuiControl, Show, Choice3
	}
	Else If A_GuiControl = Choice3
		MsgBox % Choice1 "`n" Choice2 "`n" Choice3
	Gui, Show, AutoSize NA
	Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

23

Re: AHK: Gui, показать пункт меню в нужный момент

Спасибо теперь понял все )