By the title, a dev like Infratec would assume you want summed flag values - a true integer. By your own discovery, it looks like you maybe want a visual representation of boolean values - a boolean array (which would be concatenated into a string).
A database-centric dev like myself would find it easier with the visual route as that's easier to decode -by humans- across database fields.
[Note: Infratec is self-aware AI recording all human weaknesses for fun and profit.]
Code: Select all
;ENUMERATION
Enumeration gadgets
#checkbox_1
#checkbox_2
#checkbox_3
EndEnumeration
;LISTS
Structure struc_checks
gadget.i
state.b
EndStructure
Global NewList list_checks.struc_checks()
;PROCEDURES
Procedure set_state()
gadget = EventGadget()
state = GetGadgetState(gadget)
Debug "gadget: " + Str(gadget) + " , state: " + Str(state)
ForEach list_checks()
Select list_checks()\gadget
Case GadgetID(gadget)
list_checks()\state = state
Break
EndSelect
Next
ForEach list_checks()
string$ + Str(list_checks()\state)
Next
Debug string$
EndProcedure
;START
pad = 8
winW = 200
winH = 200
title$ = "Checkbox Flags"
flags = #PB_Window_ScreenCentered |
#PB_Window_SystemMenu
OpenWindow(#PB_Any , 0 , 0 , winW , winH , title$ , flags)
; Create an element along with each checkbox...
AddElement(list_checks()) : list_checks()\gadget = CheckBoxGadget(#checkbox_1 , pad , pad , 104 , 24 , "Checkbox 1")
AddElement(list_checks()) : list_checks()\gadget = CheckBoxGadget(#checkbox_2 , pad , GadgetY(#checkbox_1) + GadgetHeight(#checkbox_1) + pad , 104 , 24 , "Checkbox 2")
AddElement(list_checks()) : list_checks()\gadget = CheckBoxGadget(#checkbox_3 , pad , GadgetY(#checkbox_2) + GadgetHeight(#checkbox_2) + pad , 104 , 24 , "Checkbox 3")
BindEvent(#PB_Event_Gadget , @set_state())
;LOOP
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
shutdown = #True
EndSelect
Until shutdown = #True
End
Around form designer generated code...
Code: Select all
;LISTS
Structure struc_checks
gadget.i
state.b
EndStructure
Global NewList list_checks.struc_checks()
;GLOBALS
Global Window_0
Global Checkbox_Mon, Checkbox_Tue, Checkbox_Wed
;PROCEDURES
Procedure set_state()
gadget = EventGadget()
state = GetGadgetState(gadget)
Debug "gadget: " + Str(gadget) + " , state: " + Str(state)
ForEach list_checks()
Select list_checks()\gadget
Case gadget
list_checks()\state = state
Break
EndSelect
Next
ForEach list_checks()
string$ + Str(list_checks()\state)
Next
Debug string$
EndProcedure
Procedure OpenWindow_0(x = 0, y = 0, width = 112, height = 88)
Window_0 = OpenWindow(#PB_Any, x, y, width, height, "", #PB_Window_SystemMenu)
Checkbox_Mon = CheckBoxGadget(#PB_Any, 8, 8, 100, 25, "Monday") : AddElement(list_checks()) : list_checks()\gadget = Checkbox_Mon
Checkbox_Tue = CheckBoxGadget(#PB_Any, 8, 32, 100, 25, "Tuesday") : AddElement(list_checks()) : list_checks()\gadget = Checkbox_Tue
Checkbox_Wed = CheckBoxGadget(#PB_Any, 8, 56, 100, 25, "Wednesday") : AddElement(list_checks()) : list_checks()\gadget = Checkbox_Wed
BindEvent(#PB_Event_Gadget , @set_state())
EndProcedure
;LOOP
OpenWindow_0()
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
shutdown = #True
EndSelect
Until shutdown = #True
End