[已解决]Switch case 数组出错找不到原因
本帖最后由 3131210 于 2018-12-7 12:33 编辑源码看附件。
遇到的问题如下:
1.账号1-7的启动按钮全部失效
2.在账号8的账号密码框随便输入 然后账号8打勾,也会执行【启动】按钮代码里面的功能
实在找不出问题的原因了,还是说case不能这样用吗?
把上面红 紫框内的代码换成这样 执行就没问题了,可以告诉下是什么原因吗
本帖最后由 3131210 于 2018-12-7 01:44 编辑
#include <GUIConstants.au3>
Global $Num = 8, $a[$Num], $b[$Num]
$MyForm = GUICreate('', 400, 350)
For $i = 0 To $Num - 1
$a[$i] = GUICtrlCreateButton('按钮A' & $i, 100, 45 + $i * 24, 50, 22)
$b[$i] = GUICtrlCreateButton('按钮B' & $i, 200, 45 + $i * 24, 50, 22)
Next
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $a To $a[$Num - 1]
MsgBox(0, 0, '按钮a' & $nMsg)
Case $b To $b[$Num - 1]
MsgBox(0, 0, '按钮b' & $nMsg)
EndSwitch
WEnd
这里的代码 也是有问题 是不是创建的控件ID必须连续这样才不会出错
如果不连续,有没有办法 定义一个数组,创建控件的同时将控件ID写入二维数组,相同功能的控件ID写入同一列,比如所有的checkbox放入第一列,所有的button放入第二列,在case someone to someone 时,使用__ArraySearch搜索数组,根据结果确定执行功能。
不明白,可以看http://www.autoit3.cn/thread-55890-1-1.html 也可以分开创建,就没这些问题了
Global $Num = 8, $aA[$Num], $aB[$Num]
$MyForm = GUICreate('', 400, 350)
For $i = 0 To $Num - 1
$aA[$i] = GUICtrlCreateButton('按钮A' & $i, 100, 45 + $i * 24, 50, 22)
Next
For $i = 0 To $Num - 1
$aB[$i] = GUICtrlCreateButton('按钮B' & $i, 200, 45 + $i * 24, 50, 22)
Next
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $aA To $aA[$Num - 1]
MsgBox(0, 0, '按钮A' & $nMsg - $aA)
Case $aB To $aB[$Num - 1]
MsgBox(0, 0, '按钮B' & $nMsg - $aB)
EndSwitch
WEnd tubaba 发表于 2018-12-7 08:50
定义一个数组,创建控件的同时将控件ID写入二维数组,相同功能的控件ID写入同一列,比如所有的checkbox放入 ...
#include <GUIConstants.au3>
Global $Row = 8, $Col = 3, $a[$Row], $b[$Row], $c[$Row], $d[$Row], $e[$Row], $f[$Row], $ButtonArray[$Row][$Col]
$MyForm = GUICreate('', 400, 350)
For $i = 0 To $Row - 1
$a[$i] = GUICtrlCreateButton('A - ' & $i + 1, 10, 45 + $i * 24, 40, 22)
$ButtonArray[$i] = $a[$i]
$d[$i] = GUICtrlCreateButton(Random(1, 1000, 1), 60, 45 + $i * 24, 40, 22) ;扰乱
$b[$i] = GUICtrlCreateButton('B - ' & $i + 1, 110, 45 + $i * 24, 40, 22)
$ButtonArray[$i] = $b[$i]
$e[$i] = GUICtrlCreateButton(Random(1, 1000, 1), 160, 45 + $i * 24, 40, 22) ;扰乱
$c[$i] = GUICtrlCreateButton('C - ' & $i + 1, 210, 45 + $i * 24, 40, 22)
$ButtonArray[$i] = $c[$i]
$f[$i] = GUICtrlCreateButton(Random(1, 1000, 1), 260, 45 + $i * 24, 40, 22) ;扰乱
Next
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ButtonArray To $ButtonArray[$Row - 1][$Col - 1]
ArraySearch($nMsg)
EndSwitch
WEnd
Func ArraySearch($nMsg)
For $i = 0 To $Row - 1
For $j = 0 To $Col - 1
If $ButtonArray[$i][$j] = $nMsg Then
ButtonArrayBase($i, $j)
EndIf
Next
Next
EndFunc ;==>ArraySearch
Func ButtonArrayBase($Row, $Col)
Switch $Col
Case 0 ;A列
MsgBox('控件ID:' & $ButtonArray[$Row][$Col], 0, '第六列数字为:' & GUICtrlRead($ButtonArray[$Row][$Col] + 5))
Case 1 ;B列
MsgBox('控件ID:' & $ButtonArray[$Row][$Col], 0, '第四列数字为:' & GUICtrlRead($ButtonArray[$Row][$Col] + 1))
Case 2 ;C列
MsgBox('控件ID:' & $ButtonArray[$Row][$Col], 0, '第二列数字为:' & GUICtrlRead($ButtonArray[$Row][$Col] - 3))
EndSwitch
EndFunc ;==>ButtonArrayBase
看了,很好 问题解决了 楼主模拟器是用什么识别?大漠吗?还是抓点 为什么会想到模拟器?玩暗黑2的
页:
[1]