当开始接触到GUI编程后, 新手朋友们慢慢地就会碰到此类问题:是否能批量地创建某一种控件呢?
比如, 我要创建10 个按钮控件, 如果是一个一个创建, 敲代码不是问题, 排列及调整按钮位置才是最大的问题!
答案是肯定的.
有两种方法可达到目的: 1, 用数组. 优点是易于理解, 引用控件变量名方便. 缺点是: 如果控件数目未知, 数组下标则不能确定, 必须正确处理保证数组下标不越界!
2, 用Assign函数. 优点是不用特意去计算控件数目. 缺点是引用控件变量名麻烦, 代码不易理解.
具体看下面示例吧.
Opt('guioneventmode', 1)
$form = GUICreate('两种批量创建按钮的方式', 300, 250)
GUISetOnEvent(-3, '_exit')
Local $button[5]
For $j = 0 To 4
$button[$j] = GUICtrlCreateButton('按钮' & $j+1, 45, 25+$j*45, 75, 28)
GUICtrlSetOnEvent(-1, '_clicks')
Next
For $j = 1 To 5
Assign('button' & $j, GUICtrlCreateButton('按钮' & $j+5, 175, 25+($j-1)*45, 75, 28))
GUICtrlSetOnEvent(-1, '_clicks')
Next
GUISetState()
While 1
Sleep(100)
WEnd
Func _exit()
Exit
EndFunc
Func _clicks()
Local $t = GUICtrlRead(@GUI_CtrlId)
Local $var = ''
For $i = 0 To 4
If $button[$i] = @GUI_CtrlId Then $var = '$button[' & $i & ']'
If Eval('button' & $i+1) = @GUI_CtrlId Then $var = '$button' & $i+1
Next
MsgBox(0, '按钮点击测试', '按钮ID:' & @TAB & @GUI_CtrlId & @CR &'按钮变量名:' & @TAB & $var & @CR & '按钮名称:' &@TAB & $t, '', $form)
EndFunc
有别的见解或问题请跟帖交流, 谢谢! |