Что нового

[Элементы GUI] работа с checkbox

andreitrane

Новичок
Сообщения
141
Репутация
3
надо сделать чтобы если выделена checkbox, к $checkprov присваивалась функция, а если выделено несколько checkboxов, то к $checkprov присвоилось несколько функций, которые будут идти по порядку, даже если выделены не все checkboxы, например 1, 3, 4
такой код не работает
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 174, 116, 192, 124)
$Checkbox1 = GUICtrlCreateCheckbox("1", 8, 8, 73, 33)
$Checkbox2 = GUICtrlCreateCheckbox("2", 8, 40, 65, 25)
$Checkbox3 = GUICtrlCreateCheckbox("3", 8, 64, 65, 25)
$Checkbox4 = GUICtrlCreateCheckbox("4", 8, 88, 57, 25)
$Button1 = GUICtrlCreateButton("Button1", 88, 32, 73, 33)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
			$ch1 = GUICtrlRead($Checkbox1)
			if $ch1 = 1 then $checkprov = _1()

			$ch2 = GUICtrlRead($Checkbox2)
			if $ch2 = 1 then $checkprov = _2()

			$ch3 = GUICtrlRead($Checkbox3)
			if $ch3 = 1 then $checkprov = _3()

			$ch4 = GUICtrlRead($Checkbox4)
			if $ch4 = 1 then $checkprov = _4()

Case $Button1
Global $checkprov

	EndSwitch
WEnd

Func _1()
	MsgBox(0, "f", "1")
EndFunc
Func _2()
	MsgBox(0, "f", "2")
EndFunc
Func _3()
	MsgBox(0, "f", "3")
EndFunc
Func _4()
	MsgBox(0, "f", "4")
	EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
andreitrane
Попробуйте так:
Код:
#include <GUIConstantsEx.au3>
$fYes = False
#region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 174, 116, 192, 124)
$Checkbox1 = GUICtrlCreateCheckbox("1", 8, 8, 73, 33)
$Checkbox2 = GUICtrlCreateCheckbox("2", 8, 40, 65, 25)
$Checkbox3 = GUICtrlCreateCheckbox("3", 8, 64, 65, 25)
$Checkbox4 = GUICtrlCreateCheckbox("4", 8, 88, 57, 25)
$Button1 = GUICtrlCreateButton("Button1", 88, 32, 73, 33)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			If GUICtrlRead($Checkbox1) = $GUI_CHECKED Then
				$fYes = True
				_1()
			EndIf
			If GUICtrlRead($Checkbox2) = $GUI_CHECKED Then
				$fYes = True
				_2()
			EndIf
			If GUICtrlRead($Checkbox3) = $GUI_CHECKED Then
				$fYes = True
				_3()
			EndIf
			If GUICtrlRead($Checkbox4) = $GUI_CHECKED Then
				$fYes = True
				_4()
			EndIf
			If Not $fYes Then
				MsgBox(16, 'Error', 'Вы ничего не выбрали')
			EndIf
	EndSwitch
WEnd

Func _1()
	MsgBox(0, "f", "1")
EndFunc   ;==>_1
Func _2()
	MsgBox(0, "f", "2")
EndFunc   ;==>_2
Func _3()
	MsgBox(0, "f", "3")
EndFunc   ;==>_3
Func _4()
	MsgBox(0, "f", "4")
EndFunc   ;==>_4
 
Верх