如何 Case批量生成的button控件
各位好,今天想请教下关于如何case批量生成button的问题,如源码
尝试过的方法:之前有看到过A大发表关于 鼠标移动上去 标签控件变色的的方法。 AdlibRegister + GUIGetCursorInfo 实现,所以抄了一下,发现不行。不知道如何在 Case上写表达式。当我鼠标移动上去之后,通过 返回的元素 我能知道当前我鼠标位置上的控件的ID,再然后思路就断了。
目前主要难点: 不会使用case 涵盖所有这样的Button。 若Case $Button[$i] 也只能是最后一个 $i 生成的button有用。
想要达到的目的: 我点击每一个button 都能执行相同的操作, 比如点击任意一个button都显示 Msgbox(0,0,1)
还请有遇到过类似情况的前辈指点。
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 615, 437, 192, 124)
Local $Button
Local $i =1
Do
$Button[$i] = GUICtrlCreateButton("Button1", 312, 68+40*$i, 105, 25)
$i +=1
Until $i = 9
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
zqjares 发表于 2018-10-20 16:27
感谢A大的指导,非常有用,但是也存在了问题。把难度升级一下, 我也是第一次知道Case可以 加to ,我理解 ...
用事件模式,更简单
Opt('GUIOnEventMode', 1)
GUICreate('', 400)
GUISetOnEvent(-3, '_Exit')
Local $Button, $Checkbox, $i = 1
For $i = 1 To 8
$Button[$i] = GUICtrlCreateButton('Button ' & $i, 50, 5 + 40 * $i, 120, 25)
GUICtrlSetOnEvent(-1, '_Test')
$Checkbox[$i] = GUICtrlCreateCheckbox('Button ' & $i, 250, 5 + 40 * $i, 120, 25)
Next
GUISetState(@SW_SHOW)
While 1
Sleep(1000)
WEnd
Func _Exit()
Exit
EndFunc ;==>_Exit
Func _Test()
MsgBox(0, '', GUICtrlRead(@GUI_CtrlId))
EndFunc ;==>_Test GUICreate('', 220)
Local $Button, $i = 1
Do
$Button[$i] = GUICtrlCreateButton('Button ' & $i, 50, 5 + 40 * $i, 120, 25)
$i += 1
Until $i = 9
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button To $Button
MsgBox(0, '', GUICtrlRead($nMsg))
EndSwitch
WEnd afan 发表于 2018-10-20 15:14
GUICreate('', 220)
Local $Button, $i = 1
Do
感谢A大的指导,非常有用,但是也存在了问题。把难度升级一下, 我也是第一次知道Case可以 加to ,我理解为这样的话就是 比如 控件范围是 10~49那么这其中的所有控件都受控制。而不仅限于 Button控件。
如修改过后的 源码:这样子 Checkbox的控件也会执行跟 button一样的动作,可否只有button控件执行呢。
GUICreate('', 400)
Local $Button, $i = 1
Local $Checkbox, $i = 1
Do
$Button[$i] = GUICtrlCreateButton('Button ' & $i, 50, 5 + 40 * $i, 120, 25)
$Checkbox[$i] = GUICtrlCreateCheckbox('Button ' & $i, 250, 5 + 40 * $i, 120, 25)
$i += 1
Until $i = 9
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button To $Button
MsgBox(0, '', GUICtrlRead($nMsg))
EndSwitch
WEnd 可以搜索A大的文章,有一个批量按钮自动排列创建的帖子。
页:
[1]