[已解决]如何分组判断复选框是否有被选中
本帖最后由 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, $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
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, $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
afan 发表于 2019-9-7 10:00
非常感谢afan大,每次都是你帮我解决问题。 afan 发表于 2019-9-7 10:00
afan大,能否在帮改下,如第一组有被选中的话“值”就写“1”,第二组有被选中的话就写”2“,以此类推,否则,就写入”0“,添麻烦了。 dnvplj 发表于 2019-9-7 10:15
非常感谢afan大,每次都是你帮我解决问题。
因为你的提问方式很好,彬彬有礼,代码整理得在重现问题的前提下很简洁。 dnvplj 发表于 2019-9-7 10:25
afan大,能否在帮改下,如第一组有被选中的话“值”就写“1”,第二组有被选中的话就写”2“,以此类推, ...
我现在是将字段名写为组名(而非你的1-8个组名),有一个选中即值为1 afan 发表于 2019-9-7 10:25
因为你的提问方式很好,彬彬有礼,代码整理得在重现问题的前提下很简洁。
谢谢afan大,因本人基础太差,总是给你添麻烦。 afan 发表于 2019-9-7 10:28
我现在是将字段名写为组名(而非你的1-8个组名),有一个选中即值为1
解决了,谢谢afan大提示。 dnvplj 发表于 2019-9-7 10:34
解决了,谢谢afan大提示。
不客气~ 举手之劳 学习学习。 学习学习。 也想知道,也想知道
页:
[1]