Brent Site Admin
Joined: 01 Jul 2005 Posts: 800
|
Posted: Jan 20th, 2009, 7:28am Post subject: [BETA DEMO] RB Date picker widget |
|
|
I thought it would be nice to have a simple way to request a date in Run BASIC. The code below is the result. It does most of what I want to do. The major limiting factors that I encountered are:- Unable to RELOAD list boxes - prevents the SetLang from working after the LISTBOX is created
- Unable to REDIM to resize the y$() array to allow varying year ranges
Even with its current limitations, I hope someone finds it useful.
Code: | ' TestDatePicker
run "DatePicker",#dp
'- #dp SetDate(2,29,2004)
render #dp
button #b,"Validate",[validate]
wait
[validate]
print
print #dp GetDate$();" is ";
if #dp IsValid() then print "valid" else print "invalid"
end |
Code: | ' DatePicker - a simple date picker/validator
' By Brent D. Thorn, 1/2009
' PUBLIC DOMAIN
Global #m, #d, #y
Global YEARCOUNT: YEARCOUNT = 100
Dim m$(12)
Dim d$(31)
Dim y$(YEARCOUNT)
Call Init
ListBox #m, m$(), 1
ListBox #d, d$(), 1
ListBox #y, y$(), 1
Sub Init
r = SetLang("en")
For d = 1 To 31
d$(d) = Str$(d)
Next
year = Val(Date$("yyyy/mm/dd"))
For y = 1 To YEARCOUNT
y$(y) = Str$(year - y + 1)
Next
End Sub
Function SetLang( lang$ )
Select Case lang$
Case "es" 'Spanish
m$(0) = "Mes": d$(0) = "Día": y$(0) = "Año"
m$(1) = "Ene": m$(2) = "Feb": m$(3) = "Mar"
m$(4) = "Abr": m$(5) = "May": m$(6) = "Jun"
m$(7) = "Jul": m$(8) = "Ago": m$(9) = "Sep"
m$(10) = "Oct": m$(11) = "Nov": m$(12) = "Dic"
Case Else 'English
m$(0) = "Month": d$(0) = "Day": y$(0) = "Year"
m$(1) = "Jan": m$(2) = "Feb": m$(3) = "Mar"
m$(4) = "Apr": m$(5) = "May": m$(6) = "Jun"
m$(7) = "Jul": m$(8) = "Aug": m$(9) = "Sep"
m$(10) = "Oct": m$(11) = "Nov": m$(12) = "Dec"
End Select
End Function
Function IsValid()
m = Month()
d = Day()
y = Year()
If m * d * y Then
Select Case m
Case 2
leap = ((y Mod 4 = 0) And ((y Mod 100 > 0) Or (y Mod 400 = 0)))
IsValid = (d <= 28 + leap)
Case 4, 6, 9, 11
IsValid = (d <= 30)
Case Else
IsValid = 1
End Select
End If
End Function
Function Month()
msel$ = #m Selection$()
For Month = 0 To 12
If msel$ = m$(Month) Then Exit For
Next
End Function
Function Day()
Day = Val(#d Selection$())
End Function
Function Year()
Year = Val(#y Selection$())
End Function
Function GetDate$()
GetDate$ = Str$(Month())+"/"+Str$(Day())+"/"+Str$(Year())
End Function
Function SetDate( m, d, y )
#m Select(m$(m))
#d Select(Str$(d))
#y Select(Str$(y))
End Function |
_________________ Brent |
|