已解决——有关数组信息的获取
本帖最后由 levinfish 于 2014-3-4 22:06 编辑整理了一个简单的代码,请高手们看一下。
问题有两个:
1. 如何快速的得到数组的二维信息。
我自己试了几种方法,可以得到数组$array[$i][$j]的$i和$j的值,但是感觉比较复杂,就是想看看有没有什么函数之类,直接就能得到二维信息。
按理说,数组是自己定义的,autoit应该保存了这方面的信息吧,方便随时调用。
2. 因为按钮组是随机生成的,如何在case的判定行里面,包含所有的按钮。
Case $array To $array[$array-1](第一列的所有按钮),$array To $array[$array-1](第二列的所有按钮)
如果生成了三列按钮,则上述语句未包含所有已生成的按钮,如果生成了一列按钮,上述判定语句溢出,程序出错
#include <EditConstants.au3>
#Include <GuiStatusBar.au3>
#include <GUIConstantsEx.au3>
#include <GUIConstantsEx.au3>
#include <file.au3>
#include <array.au3>
#include <WindowsConstants.au3>
#include <GuiTab.au3>
#include <date.au3>
#include <ButtonConstants.au3>
#include <GuiButton.au3>
#include <Misc.au3>
Mygui()
Func Mygui()
;====================================================================================================================
;================================================定义变量==========================================================
;====================================================================================================================
Dim $array,$i,$j,$a,$b
;====================================================================================================================
;================================================生成界面==========================================================
;====================================================================================================================
$guiparent=GUICreate("测试", 1200, 600)
GUISetBkColor(0x00E0FFFF)
For $i=1 To Random(1,6,1)
For $j=1 To Random(2,8,1)
$array[$i][$j]=GUICtrlCreateButton('按钮',50+($i-1)*180,50+($j-1)*60,160,50)
Next
$array[$i][$j]=GUICtrlCreateButton('添加',50+($i-1)*180,50+($j-1)*60,160,50)
$array[$i]=$j
Next
GUISetState()
;====================================================================================================================
;================================================执行部分==========================================================
;====================================================================================================================
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $array To $array[$array-1],$array To $array[$array-1];问题1所在位置。
myfunc($i,$j);$i,$j代表数组的位置,例如如果是$array,就把1和5作为参数传递给一个自定义函数
EndSwitch
WEnd
EndFunc
;====================================================================================================================
;================================================自定义函数==========================================================
;====================================================================================================================
Func myfunc($a , $b)
EndFunc
楼主是不是自己把自己弄糊涂了,你到底想想做什么?
控件ID可能未知,但其存储所用的变量名不是由你设定吗?
按钮的定义名字?那不是控件的文本文字吗?
建议你直接放上代码,配合它来表述问题吧! 这次连伪代码都省了… 好的 我整理一下代码。 Dim $aId, $ix = 3, $i, $j, $a, $b
$guiparent = GUICreate("测试", 1200, 600)
For $i = 1 To Random(1, 6, 1)
For $j = 1 To Random(2, 8, 1)
$aId[$ix] = $i
$aId[$ix] = $j
$aId[$ix] = GUICtrlCreateButton('按钮' & $i & '-' & $j, 50 + ($i - 1) * 180, 50 + ($j - 1) * 60, 160, 50)
$ix += 1
Next
Next
GUISetState()
While 1
$msg = GUIGetMsg()
Switch $msg
Case -3
Exit
Case 3 To $aId[$ix - 1]
myfunc($aId[$msg], $aId[$msg])
EndSwitch
WEnd
Func myfunc($a, $b)
MsgBox(0, $a, $b)
EndFunc ;==>myfunc
完美解决,afan大神,收我为徒吧。
页:
[1]