增量变量定义

时间:2011-09-20 08:14:13

标签: arrays variables checkbox autoit

我想自动定义递增变量名。

所以不要这样:

$Var1 = 'This is variable one :P'
$Var2 = 'This is variable two :P'

我想要这个(伪代码):

For $i = 1 to UBound($People)-1     
    **$var[$i]** = GUICtrlCreateCheckbox($var[$i], 24, $y, 200, 17) 
    $y = $y + 25 
Next

有谁知道怎么做?

代码应该生成与数组中定义的一样多的复选框,每个复选框都应该有自己的变量。

2 个答案:

答案 0 :(得分:2)

您正在寻找Assign功能!

看看这个例子:

For $i = 1 To 5
    Assign('var' & $i, $i);
Next

然后您可以使用以下方法访问这些变量:

MsgBox(4096, "My dynamic variables", $var1)
MsgBox(4096, "My dynamic variables", $var3)
MsgBox(4096, "My dynamic variables", $var5)

显然,var2var3也可以使用:)

编辑为了清楚起见,如果你做得恰当,你本来要做的就是将这些值存储在数组中 - 这是此类事情的最佳方法。 p>

答案 1 :(得分:0)

  

所以不要这样:

$Var1 = 'This is variable one :P'
$Var2 = 'This is variable two :P'
     

我想要这个(伪代码):

For $i = 1 to UBound($People)-1   
    **$var[$i]** = GUICtrlCreateCheckbox($var[$i], 24, $y, 200, 17) 
    $y = $y + 25 
Next
     

有谁知道如何做到这一点?

根据Documentation - Intro - Arrays

  

Array是一个包含一系列数据元素的变量。此变量中的每个元素都可以通过索引号访问,该索引号与数组中元素的位置相关 - 在AutoIt中,Array的第一个元素始终是元素[0]。数组元素以定义的顺序存储,可以进行排序。

动态复选框创建示例,为单个阵列分配多个checkbox-control标识符(未经测试,无错误检查):

#include <GUIConstantsEx.au3>

Global Const $g_iBoxStartX = 25
Global Const $g_iBoxStartY = 25
Global Const $g_iBoxWidth  = 100
Global Const $g_iBoxHeight = 15
Global Const $g_iBoxSpace  = 0
Global Const $g_iBoxAmount = Random(2, 20, 1)
Global Const $g_iBoxTextEx = $g_iBoxAmount -1
Global Const $g_sBoxTextEx = 'Your text here.'

Global Const $g_iWindDelay = 50
Global Const $g_iWinWidth  = $g_iBoxWidth * 2
Global Const $g_iWinHeight = ($g_iBoxStartY * 2) + ($g_iBoxHeight * $g_iBoxAmount) + ($g_iBoxSpace * $g_iBoxAmount)
Global Const $g_sWinTitle  = 'Example'

Global       $g_hGUI
Global       $g_aID

Main()

Func Main()

    $g_hGUI = GUICreate($g_sWinTitle, $g_iWinWidth, $g_iWinHeight)
    $g_aID  = GUICtrlCreateCheckboxMulti($g_iBoxStartX, $g_iBoxStartY, $g_iBoxWidth, $g_iBoxHeight, $g_iBoxSpace, $g_iBoxAmount)

    GUICtrlSetData($g_aID[$g_iBoxTextEx], $g_sBoxTextEx)
    GUISetState(@SW_SHOW, $g_hGUI)

    While Not (GUIGetMsg() = $GUI_EVENT_CLOSE)

        Sleep($g_iWindDelay)

    WEnd

    Exit
EndFunc

Func GUICtrlCreateCheckboxMulti(Const $iStartX, Const $iStartY, Const $iWidth, Const $iHeight, Const $iSpace, Const $iAmount, Const $sTextTpl = 'Checkbox #%s')
    Local $iYPosCur = 0
    Local $sTextCur = ''
    Local $aID[$iAmount]

    For $i1 = 0 To $iAmount -1

        $iYPosCur = $iStartY + ($iHeight * $i1) + ($iSpace * $i1)
        $sTextCur = StringFormat($sTextTpl, $i1 +1)
        $aID[$i1] = GUICtrlCreateCheckbox($sTextCur, $iStartX, $iYPosCur, $iWidth, $iHeight)

    Next

    Return $aID
EndFunc
  • GUICtrlCreateCheckboxMulti()演示
    • 数组声明($aID[$iAmount]
    • For...To...Step...Next -loop($aID[$i1] = ...)中分配数组元素。
  • Main()演示了对单个元素的选择(使用GUICtrlSetData()更改其文字)。
  • 根据需要调整常量($g_iBoxAmount等。)。