找回密码
 加入
搜索
查看: 1936|回复: 11

[AU3基础] [已解决]如何分组判断复选框是否有被选中

[复制链接]
发表于 2019-9-7 09:19:36 | 显示全部楼层 |阅读模式
本帖最后由 dnvplj 于 2019-9-7 10:42 编辑

请问各位朋友,我的问题是:
1、如何以组判断复选框是否有被选中(3个复选框以下为 1 组,包括3个)。
2、如有复选框被选中的就写入配置文件,第1组写入的值为 1 ,第二组写入的值为 2 ,以此类推,否则,写入 0 。
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Opt("MustDeclareVars", 1)

Local $Form1 = GUICreate("分组判断复选框是否有选中", 615, 438, 192, 124)
Local $Button1 = GUICtrlCreateButton("查看", 408, 230, 81, 33)
Local $Chec = _Chec()

_Main()
Exit

Func _Main()
        
        GUISetState(@SW_SHOW)
        Local $nMsg
        While 1
                $nMsg = GUIGetMsg()
                Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                                Exit
                        Case $Button1
                                _UBound()
                EndSwitch
        WEnd
EndFunc   ;==>_Main

Func _Chec()

        Local $Chec[9], $i = 1
        For $i = 1 To 8
                $Chec[$i] = GUICtrlCreateCheckbox('Checkbox ' & $i, 100, 5 + 40 * $i, 120, 25)
        Next
        Return $Chec
EndFunc   ;==>_Chec

Func _UBound()
        
        For $i = 1 To UBound($Chec, 1) - 1
                If GUICtrlRead($Chec[$i]) = 1 Then
                        MsgBox(0, "提示", "我这组有被选中 !")
                        IniWrite(@ScriptDir & "\Soft.ini", $i, "Count", "?");以组为单位写入,第一组写入值为 1 ,第二组写入值为 2 ,以此类推
                Else
                        MsgBox(0, "提示", "我这组没被选中 !")
                        IniWrite(@ScriptDir & "\Soft.ini", $i, "Count", "?");以组为单位写入 0
                EndIf
        Next
EndFunc   ;==>_UBound


发表于 2019-9-7 10:00:55 | 显示全部楼层
GUICreate("分组判断复选框是否有选中", 615, 438, -1, -1)
Global $Button1 = GUICtrlCreateButton("查看", 408, 230, 81, 33)
Global $Chec = _Chec()
GUISetState()
_Main()

Func _Main()
        Local $nMsg
        While 1
                $nMsg = GUIGetMsg()
                Switch $nMsg
                        Case -3
                                Exit
                        Case $Button1
                                _UBound()
                EndSwitch
        WEnd
EndFunc   ;==>_Main

Func _Chec()
        Local $Chec[9], $i
        For $i = 1 To 8
                $Chec[$i] = GUICtrlCreateCheckbox('Checkbox ' & $i, 100, 5 + 40 * $i, 120, 25)
        Next
        Return $Chec
EndFunc   ;==>_Chec

Func _UBound()
        Local $nC = UBound($Chec)
        For $i = 1 To $nC - 1 Step 3
                If GUICtrlRead($Chec[$i]) = 1 Or ($nC > $i + 1 And GUICtrlRead($Chec[$i + 1]) = 1) Or ($nC > $i + 2 And GUICtrlRead($Chec[$i + 2]) = 1) Then
                        MsgBox(0, "提示", Floor($i / 3) + 1 & " 组有被选中 !")
                        IniWrite(@ScriptDir & "\Soft.ini", Floor($i / 3) + 1, "Count", "1");以组为单位写入,第一组写入值为 1 ,第二组写入值为 2 ,以此类推
                Else
                        MsgBox(0, "提示", Floor($i / 3) + 1 & " 组没被选中 !")
                        IniWrite(@ScriptDir & "\Soft.ini", Floor($i / 3) + 1, "Count", "0");以组为单位写入 0
                EndIf
        Next
EndFunc   ;==>_UBound

点评

前来学习一下,支持了  发表于 2019-9-11 08:31

评分

参与人数 1金钱 +40 收起 理由
dnvplj + 40 很给力!

查看全部评分

 楼主| 发表于 2019-9-7 10:15:31 | 显示全部楼层

非常感谢afan大,每次都是你帮我解决问题。
 楼主| 发表于 2019-9-7 10:25:44 | 显示全部楼层

afan大,能否在帮改下,如第一组有被选中的话“值”就写“1”,第二组有被选中的话就写”2“,以此类推,否则,就写入”0“,添麻烦了。
发表于 2019-9-7 10:25:47 | 显示全部楼层
dnvplj 发表于 2019-9-7 10:15
非常感谢afan大,每次都是你帮我解决问题。

因为你的提问方式很好,彬彬有礼,代码整理得在重现问题的前提下很简洁。
发表于 2019-9-7 10:28:40 | 显示全部楼层
dnvplj 发表于 2019-9-7 10:25
afan大,能否在帮改下,如第一组有被选中的话“值”就写“1”,第二组有被选中的话就写”2“,以此类推, ...

我现在是将字段名写为组名(而非你的1-8个组名),有一个选中即值为1
 楼主| 发表于 2019-9-7 10:29:34 | 显示全部楼层
afan 发表于 2019-9-7 10:25
因为你的提问方式很好,彬彬有礼,代码整理得在重现问题的前提下很简洁。

谢谢afan大,因本人基础太差,总是给你添麻烦。
 楼主| 发表于 2019-9-7 10:34:33 | 显示全部楼层
afan 发表于 2019-9-7 10:28
我现在是将字段名写为组名(而非你的1-8个组名),有一个选中即值为1

解决了,谢谢afan大提示。
发表于 2019-9-7 10:36:42 | 显示全部楼层
dnvplj 发表于 2019-9-7 10:34
解决了,谢谢afan大提示。

不客气~ 举手之劳
发表于 2019-9-8 19:23:02 | 显示全部楼层
学习学习。 学习学习。
发表于 2019-9-12 10:24:38 | 显示全部楼层
也想知道,也想知道
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-25 09:44 , Processed in 0.081725 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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