SBP ÿÂ"Cannot Run This File: CALENDAR.SBP","",0:ÿ’ ' *********************************************************** ' * LIBRARY: CALENDAR.SBP - Calendar Widget Dialog ' *********************************************************** ' * COPYRIGHT (c) 1995 by Robert Geiger, ALL RIGHTS RESERVED ' * R J Geiger & Associates. (919) 469-1170 ' * 1310 Hampton Valley Rd, Cary, NC 27511 ' *********************************************************** ' * DESCRIPTION: ' * Generic Calendar Dialog for Superbase Applications ' * For use with Form Textboxes for DATE validation ' * USAGE: ' * 1. Attach these procedures to form Date Textbox events: ' * SET mycontrol = myform.Add("TestDateBox","TextBox") ' * mycontrol.OnDblClick.Procedure = "GetCalendar" ' * mycontrol.OnLostFocus.Procedure = "ValDate" ' * 2. When Initializating, load CALENDAR.SBP: ' * IF NOT PROGRAMFILE ("Calendar") THEN LOAD "Calendar", NEW ' * 3. Initialize Calendar dialog as a Global Dialog ' * CALL DLGCAL1()' Dialog .Name is "Calendar" ' *********************************************************** ' *********************************************************** ' * Form TEXTBOX Event Procedures for Calendar Usage ' *********************************************************** ' Date TextBox OnLostFocus Event Procedure ' See if a valid date is in textbox, if not pop calendar ÿÿValDate() Caller$ÿROUTINENAME$:ROUTINENAME$ÿ"ValDate" ÿ×DateBox ÿUObject ÿÊDateBox ÿme' hold form textbox ÿ¡ÿOIsDate%%(DateBox.Text)ÿp ÿƒdGetCalendar(ÿQ) DateBox.TextÿgCalDate$' reassign to form textbox ÿ’ÿ¡ ROUTINENAME$ÿCaller$:ÿ’ÿÿ ' Date TextBox OnDblClick Event Procedure ' Pop Calendar on request, use existing date as start mo/yr ÿÿGetCalendar() Caller$ÿROUTINENAME$:ROUTINENAME$ÿ"GetCalendar" ÿ×d% ÿ×DateBox ÿUObject ÿÊDateBox ÿme gEscape%%ÿTRUE%% ÿ¡ÿOIsDate%%(DateBox.Text)ÿp' start with TODAY ÿƒdGetCalendar(ÿQ) ÿ^' use current date in textbox as default d%ÿÿ1(DateBox.text) ÿƒdGetCalendar(d%) ÿ’ÿ¡ ÿ¡ÿOgEscape%%ÿpDateBox.TextÿgCalDate$ ROUTINENAME$ÿCaller$:ÿ’ÿÿ ÿÿGetCalButton() Caller$ÿROUTINENAME$:ROUTINENAME$ÿ"GetCalButton" ÿ×d% ÿ×DateBox ÿUObject ÿÊDateBox ÿme gEscape%%ÿTRUE%% ÿ¡ÿOIsDate%%(DateBox.Caption)ÿp' start with TODAY ÿƒdGetCalendar(ÿQ) ÿ^' use current date in Command Button as default d%ÿÿ1(DateBox.Caption) ÿƒdGetCalendar(d%) ÿ’ÿ¡ ÿ¡ÿOgEscape%%ÿpDateBox.CaptionÿgCalDate$ ROUTINENAME$ÿCaller$:ÿ’ÿÿ ' *********************************************************** ' * Calendar Dialog Procedures ' *********************************************************** 'Init Calendar Globals ÿÿDLGCAL1Init() Superbase.Error(205)ÿ0 ÿÿgCalCurDay$,gCalDate$,gEscape%% ÿÿgCalCurDay%,gCalCurMo%,gCalCurYr%,gCalDate% gEscape%%ÿTRUE%% Superbase.Error(205)ÿÿ1 ÿ’ÿÿ ' Main Calendar Driver called by Form Textbox Event Procs ÿÿdGetCalendar(pCalInitDay%) gCalDate%ÿpCalInitDay% Superbase.Dialogs("Calendar").SetActive() ÿ’ÿÿ ' Dialog DeActivate Event ' Make all Day buttons invisible ÿÿdCalDeActivate() ÿ×d ÿUDialog ÿÊd ÿSuperbase.Dialogs("Calendar") ÿ›idx%%ÿ8ÿq49:d.controls(idx%%).Visible ÿ0:ÿ±idx%% ÿ’ÿÿ ' Dialog Activate Event ' Setup global Calendar Vars and populate ÿÿdCalActivate() gCalCurDay%ÿgCalDate%:gCalCurDay$ÿÿ(gCalCurDay%,"MM/DD/YYYY") gCalCurMo%ÿÿ5(ÿ1(gCalCurDay$)):gCalCurYr%ÿÿ6(ÿ1(gCalCurDay$)) ÿƒdCalPopulate(gCalCurDay%,gCalCurMo%,gCalCurYr%,) ÿ’ÿÿ ' Re-Populate Calendar Day Buttons ÿÿdCalPopulate(pDefDay%,pDefMo%,pDefYr%) ÿ×lFirstDay%%,lDayOne0%,lDayOne1%,j%%,idx%%,ndx%% ÿ×d ÿUDialog ÿÊdÿSuperbase.Dialogs("Calendar") d.CaptionÿMonthYear$(ÿ1(MakeDay$(1,pDefMo%,pDefYr%))) z%%ÿ1:idx%%ÿ8:lFirstDay%%ÿWkDay%(ÿ1(MakeDay$(1,pDefMo%,pDefYr%))) lDayOne0%ÿÿ1(MakeDay$(1,pDefMo%,pDefYr%)) lDayOne1%ÿÿ1(MakeDay$(1,ÿ¡(pDefMo%ÿ12,1,pDefMo%ÿ1),ÿ¡(pDefMo%ÿ12,pDefYr%ÿ1,pDefYr%))) j%%ÿlDayOne1%ÿlDayOne0%ÿlFirstDay%% ÿ›idx%%ÿ8ÿq49 ndx%%ÿidx%%ÿ7 ÿ¡lFirstDay%%ÿ1ÿ ndx%%ÿ lFirstDay%%ÿ1ÿpd.controls(idx%%).ReturnValue ÿ0:d.controls(idx%%).Visible ÿ0 ÿ¡(ndx%%ÿlFirstDay%%)ÿ (ndx%%ÿ j%%)ÿp d.controls(idx%%).caption ÿÿ¡(ÿ1(ÿ(pDefMo%,"99")ÿ"/"ÿÿ(idx%%ÿlFirstDay%%ÿ6,"99")ÿ"/"ÿÿ(pDefYr%,"9999"))ÿÿ1(ÿQ),">"ÿÿ(idx%%ÿlFirstDay%%ÿ6,"99"),ÿ(idx%%ÿlFirstDay%%ÿ6,"99")) ÿ½ d.controls(idx%%).caption = STR$ (idx%% - lFirstDay%% - 6,"99") d.controls(idx%%).ReturnValue ÿidx%%ÿlFirstDay%%ÿ6:d.controls(idx%%).Visible ÿÿ1 ÿ’ÿ¡ ÿ¡(ndx%%ÿj%%)ÿ (ndx%%ÿ 42)ÿpd.controls(idx%%).ReturnValue ÿ0:d.controls(idx%%).Visible ÿ0 ÿ±idx%% ÿ’ÿÿ ' *********************************************************** ' * Handle Calendar DialogCommandButton OnClick Events * ' *********************************************************** ' Called from Day buttons OnClick ÿÿdCalGetDate()' ** A Date selected from Cal gCalDate$ÿMakeDay$(me.ReturnValue,gCalCurMo%,gCalCurYr%) gEscape%%ÿFALSE%% Superbase.Dialogs("Calendar").SetActive(0) ÿ’ÿÿ ' Called from <<,<,>,>> buttons OnClick ÿÿdCalChangeMon()' ** Change month/yr ÿÉÿæme.ReturnValue ÿæ100' ** Prev Yr gCalCurYr%ÿgCalCurYr%ÿ1 ÿæ101' ** Prev Mo gCalCurYr%ÿÿ¡(gCalCurMo%ÿ1,gCalCurYr%ÿ1,gCalCurYr%):gCalCurMo%ÿÿ¡(gCalCurMo%ÿ1,12,gCalCurMo%ÿ1) ÿæ102' ** Next Mo gCalCurYr%ÿÿ¡(gCalCurMo%ÿ12,gCalCurYr%ÿ1,gCalCurYr%):gCalCurMo%ÿÿ¡(gCalCurMo%ÿ12,1,gCalCurMo%ÿ1) ÿæ103' ** Next Yr gCalCurYr%ÿgCalCurYr%ÿ1 ÿ’ÿÉ ÿƒdCalPopulate(gCalCurDay%,gCalCurMo%,gCalCurYr%) ÿ’ÿÿ ' *********************************************************** ' * Date Functions used by Calendar Dialog * ' *********************************************************** ' ************************************* ' * IsDate%() - Test to a valid date. ' * pEvalDate$ - String to evaluate ' ************************************* ÿÿIsDate%%(pEvalDate$) Superbase.ClearLastError() Superbase.Error(19)ÿ0:TestDate%ÿÿ1(pEvalDate$) IsDate%%ÿÿ¡(Superbase.LastErrorÿ19ÿ pEvalDate$ÿ"",0,ÿ1) Superbase.Error(19)ÿÿ1 ÿ’ÿÿ ' ************************************ ' * MakeDay$(pDay%,pMo%,pYr%) - ' * Returns string: "MM/DD/YYYY" ' ************************************ ÿÿMakeDay$(pDay%,pMo%,pYr%) MakeDay$ÿÿ(pMo%,"99")ÿ"/"ÿÿ(pDay%,"99")ÿ"/"ÿÿ(pYr%,"9999") ÿ’ÿÿ ' ************************************ ' * MonthYear$(Date%) - (Julian Date) ' * Returns string: "Month YYYY" ' ************************************ ÿÿMonthYear$(pEvalDate%) ÿ¡pEvalDate%ÿ0ÿpMonthYear$ÿÿ4(pEvalDate%)ÿ" "ÿÿ(ÿ6(pEvalDate%),"9999") ÿ’ÿÿ  ' ************************************ ' * WkDay%(EvaluateDate%) ' * RETURNs week DAY number of a date ' ************************************ ÿÿWkDay%(pEvalDate%) ÿÉÿæÿE(ÿ2(pEvalDate%)) ÿæÿ2(727184):WkDay%ÿ1' Sunday ÿæÿ2(727185):WkDay%ÿ2' Monday ÿæÿ2(727186):WkDay%ÿ3' Tuesday ÿæÿ2(727187):WkDay%ÿ4' Wednesday ÿæÿ2(727188):WkDay%ÿ5' Thursday ÿæÿ2(727189):WkDay%ÿ6' Friday ÿæÿ2(727190):WkDay%ÿ7' Saturday ÿæÿ^ ÿ’ÿæ ÿ’ÿÿ ' *********************************************************** ' * Calendar Dialog ' *********************************************************** ÿÿDLGCAL1() ÿ½ // Initialize Calendar Dialog ÿ¡Superbase.Dialogs.Exists("Calendar")ÿp Superbase.Dialogs.Calendar.Delete() ÿ’ÿ¡ ÿƒDLGCAL1Init() ÿ×dlg ÿUDialog ÿ×control ÿUDialogControl ÿ½ // Generalized Day button dimensions ÿ×l%%,t%%,w%%,h%%,l0%%,t0%% l0%%ÿ5:t0%%ÿ4:l%%ÿl0%%:t%%ÿt0%%:w%%ÿ15:h%%ÿ12  ÿ½ // Create Calendar Superbase.Dialogs.Add("Calendar") ÿÊdlg ÿSuperbase.Dialogs.Calendar dlg.Move(40,30,114,115) dlg.Captionÿ"Calendar" dlg.FontNameÿ"MS Sans Serif" dlg.FontSizeÿ8 dlg.OnActivateÿ"dCalActivate" dlg.OnDeactivateÿ"dCalDeActivate" ÿ½ //Day of week Labels ÿÊcontrol ÿdlg.Add("lblSun","DialogLabel") control.Move(l%%,t%%,w%%,h%%) control.Alignmentÿ2 control.Captionÿ"Su" ÿÊcontrol ÿdlg.Add("lblMon","DialogLabel") l%%ÿl%%ÿw%% control.Move(l%%,t%%,w%%,h%%) control.Alignmentÿ2 control.Captionÿ"Mo" ÿÊcontrol ÿdlg.Add("lblTues","DialogLabel") l%%ÿl%%ÿw%% control.Move(l%%,t%%,w%%,h%%) control.Alignmentÿ2 control.Captionÿ"Tu" ÿÊcontrol ÿdlg.Add("lblWed","DialogLabel") l%%ÿl%%ÿw%% control.Move(l%%,t%%,w%%,h%%) control.Alignmentÿ2 control.Captionÿ"We" ÿÊcontrol ÿdlg.Add("lblThu","DialogLabel") l%%ÿl%%ÿw%% control.Move(l%%,t%%,w%%,h%%) control.Alignmentÿ2 control.Captionÿ"Th" ÿÊcontrol ÿdlg.Add("lblFri","DialogLabel") l%%ÿl%%ÿw%% control.Move(l%%,t%%,w%%,h%%) control.Alignmentÿ2 control.Captionÿ"Fr"  ÿÊcontrol ÿdlg.Add("lblSat","DialogLabel") l%%ÿl%%ÿw%% control.Move(l%%,t%%,w%%,h%%) control.Alignmentÿ2 control.Captionÿ"Sa" ÿ½ // Generate 42 Day buttons ÿ›i%%ÿ1ÿq42 btn$ÿ"dBtn"ÿÿ(i%%,"00") ÿ¡(i%%ÿ6)ÿ7ÿ0ÿp' reset col: incr row l%%ÿl0%%:t%%ÿt%%ÿh%% ÿ^' incr col l%%ÿl%%ÿw%% ÿ’ÿ¡ ÿÊcontrol ÿdlg.Add(btn$,"DialogCommandButton")  control.Move(l%%,t%%,w%%,h%%)  control.ReturnValueÿi%%  control.Visibleÿ0  control.OnClickÿ"dCalGetDate"  control.Defaultÿ0 ÿ±i%% ÿ½ // Change Month/Yr Buttons ÿÊcontrol ÿdlg.Add("dBtn100","DialogCommandButton") t%%ÿt%%ÿ20 control.Move(5,t%%,25,13) control.Captionÿ"<<&-Yr" control.ReturnValueÿ100 control.OnClickÿ"dCalChangeMon" control.Defaultÿ0  ÿÊcontrol ÿdlg.Add("dBtn101","DialogCommandButton") control.Move(30,t%%,25,13) control.Captionÿ"<&<-Mo" control.ReturnValueÿ101 control.OnClickÿ"dCalChangeMon" control.Defaultÿ0  ÿÊcontrol ÿdlg.Add("dBtn102","DialogCommandButton") control.Move(57,t%%,25,13) control.Captionÿ" Mo+&>>" control.ReturnValueÿ102 control.OnClickÿ"dCalChangeMon" control.Defaultÿ0  ÿÊcontrol ÿdlg.Add("dBtn103","DialogCommandButton") control.Move(82,t%%,25,13) control.Captionÿ"Yr&+>>" control.ReturnValueÿ103 control.OnClickÿ"dCalChangeMon" control.Defaultÿ0 ÿ’ÿÿ ' *********************************************************** ' * END CALENDAR LIBRARY ' ***********************************************************