Тема: AHK: Работа с полями для ввода
Возникли проблемы с такой задачей - после ввода количества строк и столбцов нужно создать такое количество строк и столбцов элементов Edit, и потом скрыть их.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Возникли проблемы с такой задачей - после ввода количества строк и столбцов нужно создать такое количество строк и столбцов элементов Edit, и потом скрыть их.
Qweasd123, в составленном вами тексте отсутствует внутренняя логика. Непонятно, что и куда вводится, что такое столбцы в Edit, что и где нужно создать и скрыть.
Попробую по другому объяснить. Нужно создать определенное количество элементов Edit ( поля для ввода ). Например я ввел создать 5 элементов Edit по горизонтали, и 4 по вертикали.
В общем главная задача - создание определенного количество элементов Edit ( полей для ввода ) по горизонтали и по вертикали, а потом нажатием на кнопку эти Поля для ввода скрыть.
Теперь понятно. А в чём затруднения?
Теперь понятно. А в чём затруднения?
Получается только создание определенного количества элементов Edit. Допустим если нажали на кнопку то добавили 3 элемента Edit. А выбрать допустим "Создать N элементов Edit по горизонтали, и N1 по вертикали" то тут уже не определенное количество а другое.
С этим и проблема, незнаю как сделать так чтобы создавать столько элементов какое я пожелаю нужным.
Да и проблема не могу никак скрыть именно поле Edit, а не все окно.
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Большое спасибо! А как мне теперь с переменными каждого поля Edit разобраться? Как допустим среди этих всех строк и столбцов перемножить именно значения столбцов?
Поля создаются слева направо и сверху вниз. В названиях переменных увеличивается на единицу число в конце, от Edit1 до Edit15. Что значит "перемножить именно значения столбцов" опять непонятно.

На рисунке выше я выделил элементы Edit которые нужно умножить. Допустим в 1 элемент я ввел 5, ниже ввел 3, в самый нижний 2. Получается это элементы Edit1, Edit10, Edit11.
Но как мне автоматически прописать чтобы эти вертикальные значения полей Edit умножались.
Это для значений 3 на 5 я знаю что Edit1, Edit10, Edit11 друг под другом, а если я сделаю 10 на 10 то как мне прописать чтобы автоматически определяло такие же вертикальные элементы Edit и умножало?
2. Получается это элементы Edit1, Edit10, Edit11.
Нет, не получается.
Поля создаются слева направо и сверху вниз.
Запустите код в таком виде и сами определите закономерность изменения числа в названии переменной:
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Спасибо! Очень помогли!
Еще вопросик, если допустим я добавляю поле Edit к прошлому полю в правую сторону:
Gui, Add, Edit,xp+40 yp wp hpТо как тут с переменной определиться?
Опять же не понимаю, в чём проблема. Название ассоциированной переменной может быть любым из допустимых, не зависимо от положения контрола.
Смотрите, есть у меня одно поле Edit. Далее нажимаю на кнопку и к полю Edit создается другое поле Edit ( правее ) и т.д. Как мне узнать значения переменных этих созданных через кнопку полей?
ButtonВправо:
{
Gui, Add, Edit,xp+40 yp wp hp
return
}Их нужно присваивать, а не узнавать. Читайте хелп.
Опции, задающие элементам управления действия и переменные
V: переменная. Ассоциирует переменную с элементом управления. Сразу же после буквы V задайте имя глобальной переменной (или локальную переменную ByRef, указывающую на глобальную переменную). Например: vMyEdit. Каждый раз при использовании команды Gui Submit данной переменной будет присвоено содержимое ее элемента управления. Если элемент управления не предназначен для ввода данных, например, элемент управления текст (Text) или рамка группы (GroupBox), ассоциация переменной с этим элементом управления все же может оказаться полезной, поскольку имя этой переменной будет служить в качестве уникального идентификатора элемента управления при работе с командами GuiControl и GuiControlGet. Примечание: команда Gui Submit не изменяет содержимое переменной, ассоциированной с элементом управления, тип которого не предназначен для ввода данных, таким, как текст (Text) или рамка группы (GroupBox).Прочитал несколько раз и ничего не уяснил. Как все таки присвоить каждому новому полю Edit переменную?
Присваиваем контролу переменную 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Добавил 4 поля Edit, ввел в них текст. Вывожу переменную %Edit2% и она пуста почему то
Каждый раз при использовании команды Gui Submit данной переменной будет присвоено содержимое ее элемента управления.
Тогда как присвоить содержимое введенного текста?
Qweasd123, вчитайтесь внимательно в предыдущий мой ответ
.
Я туговат!
Подскажите пожалуйста лучше кодом, почему не выводилось %Edit2%? Теория так скажем плохо мне дается, на практике лучше понимаю.
Все, разобрался с этими проблемами! Спасибо за помощь!
Поля создаются слева направо и сверху вниз. В названиях переменных увеличивается на единицу число в конце, от Edit1 до Edit15..
Как сделать чтобы поля создавались всегда сверху вниз? Мне нужно чтобы каждое поле имело переменную по нарастующей сверху вниз, а не слева на право.
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Большое спасибо! А как сделать чтобы всему первому столбцу задавалась переменная AEdit1, AEdit2 и т.д...
Всему второму столбцу BEdit1, BEdit2 и т.д... Всему третьему CEdit1,CEdit2 и т.д... ?
И всем столбцам по алфавиту.
Если поймёте принцип работы вышеприведённого скрипта, сможете поэкспериментировать над этим. Считайте домашним заданием.
Если поймёте принцип работы вышеприведённого скрипта, сможете поэкспериментировать над этим. Считайте домашним заданием.
Я понимаю что достал вас, но в том то и дело сравниваю 2 скрипта ( обозначение по горизонтали переменных и по вертикали ) и не понимаю.
Слово даю это последняя вещь которая мне нужна, помогите пожалуйста.
Слово даю это последняя вещь которая мне нужна, помогите пожалуйста.
Не зарекайтесь.
Если не понятно что-то конкретное, спрашивайте.
Qweasd123 пишет:Слово даю это последняя вещь которая мне нужна, помогите пожалуйста.
Не зарекайтесь.
Если не понятно что-то конкретное, спрашивайте.
Мне бы пример для 2 столбцов. Например чтобы всем элементам 1 столбца задавалась переменная AEdit%A_Index%, а всем элементам 2 столбца переменная BEdit%A_Index%.
Да и вообще непонятно как задать так чтобы функция определяла то что наступил конец 1 столбца и наступает начало 2 столбца?
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Благодарю! Очень помог! Но почему у меня не получается установить начальное значение координат X,Y ? Присваиваю им значение X:= 12, Y:= 82 и не выходит.
Но почему у меня не получается установить начальное значение координат
Это от того, что в коде как следует не разобрался. Здесь нужно понять, где именно они задаются, и почитать, как вообще задаются координаты для контролов.
Спасибо! Тема с полями закрыта. Разобрался с вашей помощью и сделал все что мне нужно было)
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться