Как зациклить элементы редактирования Ahk GUI? - PullRequest
0 голосов
/ 04 июня 2019

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

#SingleInstance Force
#NoEnv
#include config.ahk
SetWorkingDir %A_ScriptDir%
SetBatchLines -1

i := 20
Loop 10 {
    Gui Add, Edit, x%i% y100 w30 h20, 0
    i := i+70
}

Gui Add, Button, x275 y450 w80 h23 default, Start


Gui Show, w650 h531, Window
Return

GuiEscape:
GuiClose:
    ExitApp

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

1 Ответ

1 голос
/ 04 июня 2019

Вам нужно будет дать каждому редактору уникальное имя, и вы можете делать это динамически с циклом, как вам нравится. Примерно так будет работать:

Gui Add, Edit, x%i% y100 w30 h20 vEditName%A_Index% , 0

Каждое редактирование будет сохранять свое значение в диапазоне от EditName1 до EditName44. Оттуда вы можете просмотреть их и сохранить в массиве или в любом другом месте.


Разная, нерелевантная информация:

Ах, да, это был веселый вызов и для меня. Для компании, в которой я работал, я создал графический интерфейс для управления блоком редакции на чертежах Inventor. Было четыре ряда повторяющихся элементов управления, поэтому я хотел создать и разместить эти динамически - подобно тому, что вы хотите сделать. Если хотите, я могу опубликовать код для GUI-части. Example GUI Редактировать: Добавлен код для вышеуказанного GUI
Я удалил всю функциональность, но приведенный ниже код создаст графический интерфейс.

nRevW := 25 , nDescW := 400 , nDateW := 75 , nByW := 60
aPE := [] , nCt := 0
Gui , New , ToolWindow , Rev. Block Info. Import/Export Update
Gui , Margin , 3
Gui , Add , Text , xm+35 section w%nRevW% center , REV.
Gui , Add , Text , ys w%nDescW% center , REVISION DESCRIPTION
Gui , Add , Text , ys w%nDateW% center , DATE
Gui , Add , Text , ys w%nByW% center , CHK'D.
Loop , 4
{
    nMasterIndex := A_Index
    Loop , 4
        nVarNo%A_Index% := 4 * (nMasterIndex - 1) + A_Index
    Gui , Add , Text , xm section , Line %nMasterIndex%:
    Gui , Add , Edit , xm+35 ys w%nRevW% Center vvEdit%nVarNo1%
    If A_Index = 1
        Gui , Add , ComboBox , ys w%nDescW% vvEdit%nVarNo2% , PRELIMINARY|ISSUED FOR CHECKING & PRICING|ISSUED FOR CONSTRUCTION
    Else
        Gui , Add , Edit , ys w%nDescW% vvEdit%nVarNo2%
    Gui , Add , Edit , ys w%nDateW% Center vvEdit%nVarNo3%
    Gui , Add , Edit , ys w%nByW% Center vvEdit%nVarNo4%
    Gui , Add , Button , ys-1 w15 -TabStop vvImport%nMasterIndex% ggIELine , I
    Gui , Add , Button , x+0 ys-1 w15 -TabStop vvExport%nMasterIndex% ggIELine , E
}
Gui , Font , S7
Gui , Add , Text , xm section , Usage notes:`nMiddle-click date field to put current date.`nMiddle-click "Line [No.]:" text to clear line.
Gui , Font , S14
Gui , Add , Button , x+115 ys w75 -TabStop ggIE , Import
Gui , Add , Button , x+1 ys w75 -TabStop ggIE , Export
Gui , Add , Button , x+1 ys w140 -TabStop ggUpdate Default , Update
Gui , Add , Button , x+2 ys w30 -TabStop ggShiftUp , ▲
Gui , Show
Return

gIELine:
gIE:
gShiftUp:
gUpdate:
Return
...