1

Тема: AHK: Работа с полями для ввода

Возникли проблемы с такой задачей - после ввода количества строк и столбцов нужно создать такое количество строк и столбцов элементов Edit, и потом скрыть их.

2

Re: AHK: Работа с полями для ввода

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

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

3

Re: AHK: Работа с полями для ввода

Попробую по другому объяснить. Нужно создать определенное количество элементов Edit ( поля для ввода ). Например я ввел создать 5 элементов Edit по горизонтали, и 4 по вертикали.

В общем главная задача - создание определенного количество элементов Edit ( полей для ввода ) по горизонтали и по вертикали, а потом нажатием на кнопку эти Поля для ввода скрыть.

4

Re: AHK: Работа с полями для ввода

Теперь понятно. А в чём затруднения?

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

5

Re: AHK: Работа с полями для ввода

teadrinker пишет:

Теперь понятно. А в чём затруднения?

Получается только создание определенного количества элементов Edit. Допустим если нажали на кнопку то добавили 3 элемента Edit. А выбрать допустим "Создать N элементов Edit по горизонтали, и N1 по вертикали" то тут уже не определенное количество а другое.

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

Да и проблема не могу  никак скрыть именно поле Edit, а не все окно.

6

Re: AHK: Работа с полями для ввода

row := 3, col :=5

w := 40  ; ширина поля
h := 21  ; высота поля
a := 5   ; расстояние между колонками
b := 5   ; расстояние между рядами

Loop % row
{
   n := A_Index
   Loop % col
      Gui, Add, Edit, % "x" (A_Index = 1 ? 10 : "+" . a)
         . " y" (A_Index = 1 ? (n = 1 ? 10 : "+" . b) : "p")
         . " w" w " h" h
         . " vEdit" k := A_Index + (n - 1)*col
}

Gui, Add, Button, xp-10 y+5 w50, Hide
Gui, Show
return

GuiClose:
   ExitApp

ButtonHide:
   Loop % k
      GuiControl, Hide, Edit%A_Index%
   return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Работа с полями для ввода

Большое спасибо! А как мне теперь с переменными каждого поля Edit разобраться? Как допустим среди этих всех строк и столбцов перемножить именно значения столбцов?

8

Re: AHK: Работа с полями для ввода

Поля создаются слева направо и сверху вниз. В названиях переменных увеличивается на единицу число в конце, от Edit1 до Edit15. Что значит "перемножить именно значения столбцов" опять непонятно.

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

9

Re: AHK: Работа с полями для ввода

http://s2.ipicture.ru/uploads/20131204/JhSBV4Gd.jpg

На рисунке выше я выделил элементы Edit которые нужно умножить. Допустим в 1 элемент я ввел 5, ниже ввел 3, в самый нижний 2. Получается это элементы Edit1, Edit10, Edit11.

Но как мне автоматически прописать чтобы эти вертикальные значения полей Edit умножались.

Это для значений 3 на 5 я знаю что Edit1, Edit10, Edit11 друг под другом, а если я сделаю 10 на 10 то как мне прописать чтобы автоматически определяло  такие же вертикальные элементы Edit и умножало?

10

Re: AHK: Работа с полями для ввода

Qweasd123 пишет:

2. Получается это элементы Edit1, Edit10, Edit11.

Нет, не получается.

teadrinker пишет:

Поля создаются слева направо и сверху вниз.

Запустите код в таком виде и сами определите закономерность изменения числа в названии переменной:

row := 3, col :=5

w := 50  ; ширина поля
h := 21  ; высота поля
a := 5   ; расстояние между колонками
b := 5   ; расстояние между рядами

Loop % row
{
   n := A_Index
   Loop % col
      Gui, Add, Edit, % "x" (A_Index = 1 ? 10 : "+" . a)
         . " y" (A_Index = 1 ? (n = 1 ? 10 : "+" . b) : "p")
         . " w" w " h" h
         . " vEdit" k := A_Index + (n - 1)*col, Edit%k%
}
Gui, Show
return

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

11

Re: AHK: Работа с полями для ввода

Спасибо! Очень помогли!

Еще вопросик, если допустим я добавляю поле Edit к прошлому полю в правую сторону:


Gui, Add, Edit,xp+40 yp wp hp

То как тут с переменной определиться?

12

Re: AHK: Работа с полями для ввода

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

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

13

Re: AHK: Работа с полями для ввода

Смотрите, есть у меня одно поле Edit. Далее нажимаю на кнопку и к полю Edit создается другое поле Edit ( правее ) и т.д. Как мне узнать значения переменных этих созданных через кнопку полей?

ButtonВправо:
{
Gui, Add, Edit,xp+40 yp wp hp 
return
}

14

Re: AHK: Работа с полями для ввода

Их нужно присваивать, а не узнавать. Читайте хелп.

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

15

Re: AHK: Работа с полями для ввода

Опции, задающие элементам управления действия и переменные

V: переменная. Ассоциирует переменную с элементом управления. Сразу же после буквы V задайте имя глобальной переменной (или локальную переменную ByRef, указывающую на глобальную переменную). Например: vMyEdit. Каждый раз при использовании команды Gui Submit данной переменной будет присвоено содержимое ее элемента управления. Если элемент управления не предназначен для ввода данных, например, элемент управления текст (Text) или рамка группы (GroupBox), ассоциация переменной с этим элементом управления все же может оказаться полезной, поскольку имя этой переменной будет служить в качестве уникального идентификатора элемента управления при работе с командами GuiControl и GuiControlGet. Примечание: команда Gui Submit не изменяет содержимое переменной, ассоциированной с элементом управления, тип которого не предназначен для ввода данных, таким, как текст (Text) или рамка группы (GroupBox).

Прочитал несколько раз и ничего не уяснил. Как все таки присвоить каждому новому полю Edit переменную?

16

Re: AHK: Работа с полями для ввода

Присваиваем контролу переменную MyEdit:

Gui, Add, Edit,xp+40 yp wp hp vMyEdit

Присваиваем переменные Edit1, Edit2 ... и т. д.:

Gui, Add, Button,, Вправо
Gui, Show, w300 h100
i := 1
return

ButtonВправо:
   Gui, Add, Edit, % "x+5 yp wp hp vEdit" i++
   return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

17

Re: AHK: Работа с полями для ввода

Добавил 4 поля Edit, ввел в них текст. Вывожу переменную %Edit2% и она пуста почему то

18

Re: AHK: Работа с полями для ввода

Каждый раз при использовании команды Gui Submit данной переменной будет присвоено содержимое ее элемента управления.

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

19

Re: AHK: Работа с полями для ввода

Тогда как присвоить содержимое введенного текста?

20

Re: AHK: Работа с полями для ввода

Qweasd123, вчитайтесь внимательно в предыдущий мой ответ .

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

21

Re: AHK: Работа с полями для ввода

Я туговат! Подскажите пожалуйста лучше кодом, почему не выводилось %Edit2%? Теория так скажем плохо мне дается, на практике лучше понимаю.

22

Re: AHK: Работа с полями для ввода

Все, разобрался с этими проблемами! Спасибо за помощь!

23 (изменено: Qweasd123, 2013-12-10 22:01:00)

Re: AHK: Работа с полями для ввода

teadrinker пишет:

Поля создаются слева направо и сверху вниз. В названиях переменных увеличивается на единицу число в конце, от Edit1 до Edit15..

Как сделать чтобы поля создавались всегда сверху вниз? Мне нужно чтобы каждое поле имело переменную по нарастующей сверху вниз, а не слева на право.

24

Re: AHK: Работа с полями для ввода

row := 3, col :=5

w := 40  ; ширина поля
h := 21  ; высота поля
a := 5   ; расстояние между колонками
b := 5   ; расстояние между рядами

Loop % col
{
   n := A_Index
   Loop % row
      Gui, Add, Edit, % "x" (n = 1 ? 10 : (A_Index = 1 ? "+" . a : "p"))
         . " y" (A_Index = 1 ? 10 : "+" . b)
         . " w" w " h" h
         . " vEdit" k := A_Index + (n - 1)*row
}

Gui, Add, Button, xp-10 y+5 w50, Hide
Gui, Show
return

GuiClose:
   ExitApp

ButtonHide:
   Loop % k
      GuiControl, Hide, Edit%A_Index%
   return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

25

Re: AHK: Работа с полями для ввода

Большое спасибо! А как сделать чтобы всему первому столбцу задавалась переменная AEdit1, AEdit2 и т.д...
Всему второму столбцу BEdit1, BEdit2 и т.д... Всему третьему CEdit1,CEdit2 и т.д...  ?

И всем столбцам по алфавиту.

26

Re: AHK: Работа с полями для ввода

Если поймёте принцип работы вышеприведённого скрипта, сможете поэкспериментировать над этим. Считайте домашним заданием.

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

27

Re: AHK: Работа с полями для ввода

teadrinker пишет:

Если поймёте принцип работы вышеприведённого скрипта, сможете поэкспериментировать над этим. Считайте домашним заданием.

Я понимаю что достал вас, но в том то и дело сравниваю 2 скрипта ( обозначение по горизонтали переменных и по вертикали ) и не понимаю.

Слово даю это последняя вещь которая мне нужна, помогите пожалуйста.

28

Re: AHK: Работа с полями для ввода

Qweasd123 пишет:

Слово даю это последняя вещь которая мне нужна, помогите пожалуйста.

Не зарекайтесь. Если не понятно что-то конкретное, спрашивайте.

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

29

Re: AHK: Работа с полями для ввода

teadrinker пишет:
Qweasd123 пишет:

Слово даю это последняя вещь которая мне нужна, помогите пожалуйста.

Не зарекайтесь. Если не понятно что-то конкретное, спрашивайте.

Мне бы пример для 2 столбцов. Например чтобы всем элементам 1 столбца задавалась переменная AEdit%A_Index%, а всем элементам 2 столбца переменная BEdit%A_Index%.

Да и вообще непонятно как задать так чтобы функция определяла то что наступил конец 1 столбца и наступает начало 2 столбца?

30

Re: AHK: Работа с полями для ввода

row := 3, col := 5

w := 40  ; ширина поля
h := 21  ; высота поля
a := 5   ; расстояние между колонками
b := 5   ; расстояние между рядами

CharacterCode := Asc("A") - 1

Loop % col
{
   n := A_Index
   Loop % row
   {
      Gui, Add, Edit, % "x" (n = 1 ? 10 : (A_Index = 1 ? "+" . a : "p"))
         . " y" (A_Index = 1 ? 10 : "+" . b)
         . " w" w " h" h
         . " v" (c := A_Index = 1 ? Chr(++CharacterCode) . "Edit" 
         . (m := 1) : Chr(CharacterCode) . "Edit" . ++m), % c   ; последний параметр "c" для демонстрации, можно убрать
      k := A_Index + (n - 1)*row
   }
}

Gui, Add, Button, xp-10 y+5 w50, Hide
Gui, Show
return

GuiClose:
   ExitApp

ButtonHide:
   Loop % k
      GuiControl, Hide, Edit%A_Index%
   return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

31

Re: AHK: Работа с полями для ввода

Благодарю! Очень помог! Но почему у меня не получается установить начальное значение координат X,Y ? Присваиваю им значение  X:=  12, Y:= 82 и не выходит.

32

Re: AHK: Работа с полями для ввода

Qweasd123 пишет:

Но почему у меня не получается установить начальное значение координат

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

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

33 (изменено: Qweasd123, 2013-12-14 23:12:26)

Re: AHK: Работа с полями для ввода

Спасибо! Тема с полями закрыта. Разобрался с вашей помощью и сделал все что мне нужно было)