找回密码  加入

AUTOIT CN

搜索
查看: 106|回复: 11

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

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

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

  1. #include <ButtonConstants.au3>
  2. #include <GUIConstantsEx.au3>
  3. #include <WindowsConstants.au3>

  4. Opt("MustDeclareVars", 1)

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

  8. _Main()
  9. Exit

  10. Func _Main()
  11.         
  12.         GUISetState(@SW_SHOW)
  13.         Local $nMsg
  14.         While 1
  15.                 $nMsg = GUIGetMsg()
  16.                 Switch $nMsg
  17.                         Case $GUI_EVENT_CLOSE
  18.                                 Exit
  19.                         Case $Button1
  20.                                 _UBound()
  21.                 EndSwitch
  22.         WEnd
  23. EndFunc   ;==>_Main

  24. Func _Chec()

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

  31. Func _UBound()
  32.         
  33.         For $i = 1 To UBound($Chec, 1) - 1
  34.                 If GUICtrlRead($Chec[$i]) = 1 Then
  35.                         MsgBox(0, "提示", "我这组有被选中 !")
  36.                         IniWrite(@ScriptDir & "\Soft.ini", $i, "Count", "?");以组为单位写入,第一组写入值为 1 ,第二组写入值为 2 ,以此类推
  37.                 Else
  38.                         MsgBox(0, "提示", "我这组没被选中 !")
  39.                         IniWrite(@ScriptDir & "\Soft.ini", $i, "Count", "?");以组为单位写入 0
  40.                 EndIf
  41.         Next
  42. EndFunc   ;==>_UBound
复制代码



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

  6. Func _Main()
  7.         Local $nMsg
  8.         While 1
  9.                 $nMsg = GUIGetMsg()
  10.                 Switch $nMsg
  11.                         Case -3
  12.                                 Exit
  13.                         Case $Button1
  14.                                 _UBound()
  15.                 EndSwitch
  16.         WEnd
  17. EndFunc   ;==>_Main

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

  25. Func _UBound()
  26.         Local $nC = UBound($Chec)
  27.         For $i = 1 To $nC - 1 Step 3
  28.                 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
  29.                         MsgBox(0, "提示", Floor($i / 3) + 1 & " 组有被选中 !")
  30.                         IniWrite(@ScriptDir & "\Soft.ini", Floor($i / 3) + 1, "Count", "1");以组为单位写入,第一组写入值为 1 ,第二组写入值为 2 ,以此类推
  31.                 Else
  32.                         MsgBox(0, "提示", Floor($i / 3) + 1 & " 组没被选中 !")
  33.                         IniWrite(@ScriptDir & "\Soft.ini", Floor($i / 3) + 1, "Count", "0");以组为单位写入 0
  34.                 EndIf
  35.         Next
  36. EndFunc   ;==>_UBound
复制代码

点评

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

评分

1

查看全部评分

 楼主| 发表于 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 ( Autoit8.com )谷歌 百度

GMT+8, 2019-9-21 06:37 , Processed in 0.062501 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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