2011-09-20 86 views
3

我想自動定義增量變量名稱。增量變量定義

因此,不是這樣的:

$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

您在尋找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也得以利用:)

編輯:爲了清楚起見,如果你做得很好,你會怎麼做,是否存儲這些val在數組中 - 這是這類事情的最佳方法。

+0

@DemonWareXT「_您正在尋找'Assign'功能!_」是不是要避免(「_so而不是this_」)? – user4157124

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

數組是包含一系列數據元素的變量。此變量中的每個元素都可以通過索引號訪問,該索引號與數組內的元素位置相關 - 在AutoIt中,數組的第一個元素始終爲元素[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中的數組元素 - 迴路($aID[$i1] = ...)。
  • Main()演示選擇單個元素(使用GUICtrlSetData()更改其文本)。
  • 根據需要調整常量($g_iBoxAmount等)。