Maintaining checkbox states
Tidbits from the community
Liberty Basic 4
New Alternate Forum
Using the Tsunami Database
Wizard Framework
Links to LB Sites
Update on 10th Anniversary Contest
Extracting Icons And Saving Them As Bitmaps
Applying Symbolic Logic
QuadClicks
Simple Math For Moving Objects
Event Driven Programming - Part 2
The Beginners Series - Part 1
A user asked the Liberty Basic group during the month of
December the following question:
"I've been trying to write some simple code in a modal dialog window,
but for some reason my checkboxes do not remain checked."
You are not maintaining the state of the checkboxes between successive
displays. Each time you create your window (by invoking that section of code)
it is a new thing. It does not KNOW what should be checked because you have not
told it.
Specifically you have not checked it.
What you must do is create a variable (or set of variables) that holds the state of each of the check boxes. Initialize these at the beginning of your code so that they are set to the default settings.
When you initialize your dialog window you will have to check (or uncheck) each box based on the given state of the variable.
if your variable is set to a "1" for instance then you will need
to "set"
the checkbox using the following command:
print #handle.ext, "set"
However if the variable is set to a "0" (zero) then you know that the state is unchecked so issue a command to "reset" the checkbox. Use the following command:
print #handle.ext, "reset"
Here is a demo of the procedure:
'Demo of checkbox operation
'maintain status of checkboxes between seperate
'events displaying the dialog window containing them.
'by Brad Moore, 2002
'written for LB3.x
'released into the public domain.
True = 1 : False = 0
'set the default settings for the check buttons here
cb1 = 0
cb2 = 0
cb3 = 0
cb4 = 0
cb5 = 0
[InitColors]
ForegroundColor$ = "Black"
BackgroundColor$ = "Buttonface"
TexteditorColor$ = "White"
TextboxColor$ = "White"
ComboboxColor$ = "White"
ListboxColor$ = "White"
[WindowSetup]
NoMainWin
WindowWidth = 295
WindowHeight = 132
UpperLeftX = Int((DisplayWidth-WindowWidth)/2)
UpperLeftY = Int((DisplayHeight-WindowHeight)/2)
[ControlSetup]
Button #main.reg, "Register my thoughts about LB",_
[reg],UL, 15, 15, 255, 30
Button #main.quit, "I am all done...",_
[quit],UL, 15, 55, 255, 30
Open "Just for fun" For Dialog As #main
Print #main, "trapclose [quit]"
Print #main, "font ms_sans_serif 10"
[loop]
Wait
[quit]
Close #main
End
[reg]
GoTo [cb.showWin]
'-----------------------------------------------------------
' Show the Sub-window: How Great is LB?
[cb.showWin]
WindowWidth = 237
WindowHeight = 268
UpperLeftX = Int((DisplayWidth-WindowWidth)/2)
UpperLeftY = Int((DisplayHeight-WindowHeight)/2)
Statictext #cbtest.st1, "Liberty Basic is:", _
15, 15, 169, 25
Button #cbtest.ok, "OK",[ok],_
UL, 105, 200, 105, 25
Checkbox #cbtest.cb1, "Easy to Use",[cb1.set],_
[cb1.reset], 35, 40, 165, 30
Checkbox #cbtest.cb2, "Very affordable",[cb2.set],_
[cb2.reset], 35, 70, 165, 30
Checkbox #cbtest.cb3, "Less Filling",[cb3.set],_
[cb3.reset], 35, 100, 165, 30
Checkbox #cbtest.cb4, "Carls Great Achievment",[cb4.set],_
[cb4.reset], 35, 130, 175, 30
Checkbox #cbtest.cb5, "Great Tasting",[cb5.set],_
[cb5.reset], 35, 160, 175, 30
Open "How Great is LB?" For Dialog As #cbtest
Print #cbtest, "trapclose [cb.closewin]"
Print #cbtest, "font ms_sans_serif 10"
Print #cbtest.st1, "!font times_roman 14 bold"
'set each of the check boxes base on value of
'the variables used to track status of the
'checkboxes
If cb1 = 1 Then
Print #cbtest.cb1, "set"
Else
Print #cbtest.cb1, "reset"
End If
If cb2 = 1 Then
Print #cbtest.cb2, "set"
Else
Print #cbtest.cb2, "reset"
End If
If cb3 = 1 Then
Print #cbtest.cb3, "set"
Else
Print #cbtest.cb3, "reset"
End If
If cb4 = 1 Then
Print #cbtest.cb4, "set"
Else
Print #cbtest.cb4, "reset"
End If
If cb5 = 1 Then
Print #cbtest.cb5, "set"
Else
Print #cbtest.cb5, "reset"
End If
[cb.loop]
Wait
[cb.closewin]
Close #cbtest
GoTo [loop]
[ok]
Close #cbtest
GoTo [loop]
'for each set or reset event - change the value of
'the variables tracking status of the checkboxes
[cb1.set]
cb1 = 1
GoTo [cb.loop]
[cb1.reset]
cb1 = 0
GoTo [cb.loop]
[cb2.set]
cb2 = 1
GoTo [cb.loop]
[cb2.reset]
cb2 = 0
GoTo [cb.loop]
[cb3.set]
cb3 = 1
GoTo [cb.loop]
[cb3.reset]
cb3 = 0
GoTo [cb.loop]
[cb4.set]
cb4 = 1
GoTo [cb.loop]
[cb4.reset]
cb4 = 0
GoTo [cb.loop]
[cb5.set]
cb5 = 1
GoTo [cb.loop]
[cb5.reset]
cb5 = 0
GoTo [cb.loop]
Maintaining checkbox states
Tidbits from the community
Liberty Basic 4
New Alternate Forum
Using the Tsunami Database
Wizard Framework
Links to LB Sites
Update on 10th Anniversary Contest
Extracting Icons And Saving Them As Bitmaps
Applying Symbolic Logic
QuadClicks
Simple Math For Moving Objects
Event Driven Programming - Part 2
The Beginners Series - Part 1