如何遍历ahk gui编辑元素?

时间:2019-06-03 22:34:21

标签: autohotkey

我需要明显通过循环创建的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

我可以将一个edit元素的值存储在全局变量中,并在只有一个框的情况下使用它。如果使用循环,则无法将值存储在变量中。

1 个答案:

答案 0 :(得分:1)

您需要为每个“编辑”赋予一个唯一的名称,并且您可以根据需要通过循环动态地执行此操作。这样的事情会起作用:

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

然后,每个编辑将其值存储在EditName1EditName44中。从那里,您可以遍历这些内容并将其存储在数组中或任何您想做的事情。


其他无关信息:

是的,这对我来说也是一个有趣的挑战。对于我曾经工作过的公司,我创建了一个GUI来操纵其Inventor工程图上的修订版。有四行重复的控件,所以我想动态地创建放置-与您想要的类似。如果您愿意,我可以发布GUI部分的代码。 Example GUI 编辑: 为上述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