找回密码
 加入
搜索
查看: 1700|回复: 2

[GUI管理] 如何用一个统一的办法代替这不确定数量的控件点击事件

[复制链接]
发表于 2016-12-4 22:02:50 | 显示全部楼层 |阅读模式
Case $nMsg = $LabelA[1] Or $nMsg = $LabelB[1] Or $nMsg = $Icon[1]
                      If BitAND(GUICtrlRead($Checkbox[1]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[1],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[1],$GUI_CHECKED)
                      EndIf         
        Case $nMsg = $LabelA[2] Or $nMsg = $LabelB[2] Or $nMsg = $Icon[2]
                      If BitAND(GUICtrlRead($Checkbox[2]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[2],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[2],$GUI_CHECKED)
                      EndIf       
        Case $nMsg = $LabelA[3] Or $nMsg = $LabelB[3] Or $nMsg = $Icon[3]
                      If BitAND(GUICtrlRead($Checkbox[3]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[3],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[3],$GUI_CHECKED)
                      EndIf                   
        Case $nMsg = $LabelA[4] Or $nMsg = $LabelB[4] Or $nMsg = $Icon[4]
                      If BitAND(GUICtrlRead($Checkbox[4]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[4],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[4],$GUI_CHECKED)
                      EndIf                   
        Case $nMsg = $LabelA[5] Or $nMsg = $LabelB[5] Or $nMsg = $Icon[5]
                      If BitAND(GUICtrlRead($Checkbox[5]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[5],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[5],$GUI_CHECKED)
                      EndIf                   
        Case $nMsg = $LabelA[6] Or $nMsg = $LabelB[6] Or $nMsg = $Icon[6]
                      If BitAND(GUICtrlRead($Checkbox[6]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[6],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[6],$GUI_CHECKED)
                      EndIf                   
        Case $nMsg = $LabelA[7] Or $nMsg = $LabelB[7] Or $nMsg = $Icon[7]
                      If BitAND(GUICtrlRead($Checkbox[7]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[7],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[7],$GUI_CHECKED)
                      EndIf                   
        Case $nMsg = $LabelA[8] Or $nMsg = $LabelB[8] Or $nMsg = $Icon[8]
                      If BitAND(GUICtrlRead($Checkbox[8]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[8],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[8],$GUI_CHECKED)
                      EndIf                   
        Case $nMsg = $LabelA[9] Or $nMsg = $LabelB[9] Or $nMsg = $Icon[9]
                      If BitAND(GUICtrlRead($Checkbox[9]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[9],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[9],$GUI_CHECKED)
                      EndIf                   
        Case $nMsg = $LabelA[10] Or $nMsg = $LabelB[10] Or $nMsg = $Icon[10]
                      If BitAND(GUICtrlRead($Checkbox[10]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[10],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[10],$GUI_CHECKED)
                      EndIf                   
        Case $nMsg = $LabelA[11] Or $nMsg = $LabelB[11] Or $nMsg = $Icon[11]
                      If BitAND(GUICtrlRead($Checkbox[11]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[11],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[11],$GUI_CHECKED)
                          EndIf         
        Case $nMsg = $LabelA[12] Or $nMsg = $LabelB[12] Or $nMsg = $Icon[12]
                      If BitAND(GUICtrlRead($Checkbox[12]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[12],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[12],$GUI_CHECKED)
                      EndIf                   
        Case $nMsg = $LabelA[13] Or $nMsg = $LabelB[13] Or $nMsg = $Icon[13]
                      If BitAND(GUICtrlRead($Checkbox[13]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[13],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[13],$GUI_CHECKED)
                      EndIf
        Case $nMsg = $LabelA[14] Or $nMsg = $LabelB[14] Or $nMsg = $Icon[14]
                      If BitAND(GUICtrlRead($Checkbox[14]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[14],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[14],$GUI_CHECKED)
                      EndIf


上面代码倒是可行,但是如果控件数量继续增多的话,岂不是代码无限循环了,有精简的办法吗
发表于 2016-12-10 16:24:01 | 显示全部楼层
本帖最后由 q410225 于 2016-12-10 16:31 编辑

如果这个格式没问题的话
可以定义一个变量
local $i=1
while $i<111111111
Case $nMsg = $LabelA[$i] Or $nMsg = $LabelB[$i] Or $nMsg = $Icon[$i]
                      If BitAND(GUICtrlRead($Checkbox[$i]),$GUI_CHECKED) Then
                             GUIctrlSetState($Checkbox[$i],$GUI_UNCHECKED)
                          Else
                             GUIctrlSetState($Checkbox[$i],$GUI_CHECKED)
                      EndIf
$i+=1
wend
这样就没问题了
发表于 2016-12-11 16:53:04 | 显示全部楼层
试一下,我也遇到这个问题
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-26 19:12 , Processed in 0.078351 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表