- Offizieller Beitrag
Wenn man wirklich eine größere Anzahl Checkboxen verwalten möchte, bietet sich zum Bsp. solche Lösung an:
Spoiler anzeigen
; Muster Checkbox-Bearbeitung
; Ziel: einfache Abfrage, welche CB aktiviert sind
#include <GUIConstants.au3>
Opt('GUIOnEventMode', 1)
Opt("MustDeclareVars", 1)
Global $bCheckAll, $bUnCheckAll, $GUI, $i, $str
Global $arCB[20][2] ; Array für Handle und Dual-Wert der CB
For $i = 0 To UBound($arCB) -1
$arCB[$i][1] = 2^$i ; Zuweisung eindeutiger Wert
Next
Global $Checked = 0 ; Variable nimmt Status ALLER Checkboxen in einem Wert auf,
; Startstatus für alle: UNCHECKED
Global $w = 500, $h = 20*30+40, $l = (@DesktopWidth-$w)/2, $t = (@DesktopHeight-$h)/2
Global $top = -10
$GUI = GUICreate('Test Checkbox', $w, $h, $l, $t)
GUISetOnEvent($GUI_EVENT_CLOSE, '_Ende')
For $i = 0 To UBound($arCB) -1
$top += 30
$arCB[$i][0] = GUICtrlCreateCheckbox('CheckBox_' & $i+1, 40, $top, 120)
GUICtrlSetOnEvent(-1, '_ClickCB')
Next
$bCheckAll = GUICtrlCreateButton('Alle markieren', 250, 20, 150, 21)
GUICtrlSetOnEvent(-1, '_CheckAll')
$bUnCheckAll = GUICtrlCreateButton('Markierung aufheben', 250, 50, 150, 21)
GUICtrlSetOnEvent(-1, '_UnCheckAll')
GUISetState()
While 1
Sleep(100)
WEnd
Func _Ende()
Exit
EndFunc
Func _ClickCB()
For $i = 0 To UBound($arCB) -1
If $arCB[$i][0] = @GUI_CtrlId Then
$Checked = BitXOR($Checked, $arCB[$i][1])
_ReadCB()
ExitLoop
EndIf
Next
EndFunc
Func _CheckAll()
For $i = 0 To UBound($arCB) -1
If Not BitAND($Checked, $arCB[$i][1]) Then
GUICtrlSetState($arCB[$i][0], $GUI_CHECKED)
$Checked = BitXOR($Checked, $arCB[$i][1])
EndIf
Next
_ReadCB()
EndFunc
Func _UnCheckAll()
For $i = 0 To UBound($arCB) -1
If BitAND($Checked, $arCB[$i][1]) Then
GUICtrlSetState($arCB[$i][0], $GUI_UNCHECKED)
$Checked = BitXOR($Checked, $arCB[$i][1])
EndIf
Next
_ReadCB()
EndFunc
Func _ReadCB() ; Fkt. dient nur zur Ausgabe, welche CB markiert sind
Local $str = 'Markiert: '
For $i = 0 To UBound($arCB) -1
If BitAND($Checked, $arCB[$i][1]) Then $str &= $i+1 & ', '
Next
WinSetTitle($GUI, '', StringTrimRight($str, 2))
EndFunc