WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Samples

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Date Range Selection


Author: chrislegarth Date: Thursday, April 19, 2007 07:49 AM

I have found this code very useful for myself so I though I'd post it for everyone.

It's a dynamic dialog with two calendar controls. The code sets minimum and maximum possible dates and will not let you select an end date before the start date or a start date after the end date.

GoSub AppFunctions

firstdate = "2007:01:01:00:00:00"
lastdate = "2007:06:30:00:00:00"

MyDialogFormat=`WWWDLGED,6.1`

MyDialogCaption="Date Range Selection"
MyDialogX=9999
MyDialogY=9999
MyDialogWidth=322
MyDialogHeight=108
MyDialogNumControls=013
MyDialogProcedure=`DialogProc`
MyDialogFont=`DEFAULT`
MyDialogTextColor=`DEFAULT`
MyDialogBackground=`DEFAULT,DEFAULT`
MyDialogConfig=0

MyDialog001=`279,091,036,012,PUSHBUTTON,DEFAULT,"Exit",0,5,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog002=`003,009,096,078,CALENDAR,calStartDate,DEFAULT,DEFAULT,1,DEFAULT,DEFAULT`
MyDialog003=`103,009,096,078,CALENDAR,calEndDate,DEFAULT,DEFAULT,2,DEFAULT,DEFAULT`
MyDialog004=`003,001,030,008,STATICTEXT,DEFAULT,"Start Date:",DEFAULT,99,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog005=`103,001,030,008,STATICTEXT,DEFAULT,"End Date:",DEFAULT,99,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog006=`201,009,044,008,STATICTEXT,DEFAULT,"Minimum Date:",DEFAULT,6,1024,DEFAULT,DEFAULT,DEFAULT`
MyDialog007=`201,031,044,008,STATICTEXT,DEFAULT,"Start Date:",DEFAULT,6,1024,DEFAULT,DEFAULT,DEFAULT`
MyDialog008=`201,055,044,008,STATICTEXT,DEFAULT,"End Date:",DEFAULT,6,1024,DEFAULT,DEFAULT,DEFAULT`
MyDialog009=`201,079,044,008,STATICTEXT,DEFAULT,"Maximum Date:",DEFAULT,6,1024,DEFAULT,DEFAULT,DEFAULT`
MyDialog010=`247,009,068,008,VARYTEXT,lblMinDate,DEFAULT,DEFAULT,99,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog011=`247,031,068,008,VARYTEXT,lblStartDate,DEFAULT,DEFAULT,99,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog012=`247,055,068,008,VARYTEXT,lblEndDate,DEFAULT,DEFAULT,99,DEFAULT,DEFAULT,DEFAULT,DEFAULT`
MyDialog013=`247,079,068,008,VARYTEXT,lblMaxDate,DEFAULT,DEFAULT,99,DEFAULT,DEFAULT,DEFAULT,DEFAULT`

ButtonPushed=Dialog("MyDialog")
Exit

:AppFunctions
but_MyDlg_Exit = 1
cal_MyDlg_calStartDate = 2
cal_MyDlg_calEndDate = 3
stx_MyDlg_StartDate = 4
stx_MyDlg_EndDate = 5
stx_MyDlg_MinimumDate = 6
stx_MyDlg_StartDate = 7
stx_MyDlg_EndDate = 8
stx_MyDlg_MaximumDate = 9
vtx_MyDlg_lblMinDate = 10
vtx_MyDlg_lblStartDate = 11
vtx_MyDlg_lblEndDate = 12
vtx_MyDlg_lblMaxDate = 13

#DefineSubRoutine DialogProc(dlghandle,ControlType,ControlID,res4,res5)
Switch ControlType
   Case 0
      DialogProcOptions(dlghandle, 1, 0) ;TIMER
      DialogProcOptions(dlghandle, 2, 1) ;BUTTON
      DialogProcOptions(dlghandle, 3, 0) ;RADIOBUTTON
      DialogProcOptions(dlghandle, 4, 0) ;CHECKBOX
      DialogProcOptions(dlghandle, 5, 0) ;TEXTBOX
      DialogProcOptions(dlghandle, 6, 0) ;FILELISTBOX
      DialogProcOptions(dlghandle, 7, 0) ;ITEMLISTBOX
      DialogProcOptions(dlghandle, 8, 0) ;DROPDOWNLIST
      DialogProcOptions(dlghandle, 9, 1) ;CALENDAR
      DialogProcOptions(dlghandle, 10, 0) ;SPINNER
      DialogProcOptions(dlghandle, 11, 0) ;CLOSE
      DialogProcOptions(dlghandle, 12, 0) ;FILELISTBOX DOUBLE-CLICK
      DialogProcOptions(dlghandle, 13, 0) ;ITEMLISTBOX DOUBLE-CLICK
      DialogControlSet(dlghandle, cal_MyDlg_calStartDate, 7, firstdate)
      DialogControlSet(dlghandle, cal_MyDlg_calEndDate, 7, lastdate)
      DialogControlSet(dlghandle, vtx_MyDlg_lblMinDate, 4, firstdate)
      DialogControlSet(dlghandle, vtx_MyDlg_lblStartDate, 4, firstdate)
      DialogControlSet(dlghandle, vtx_MyDlg_lblEndDate, 4, lastdate)
      DialogControlSet(dlghandle, vtx_MyDlg_lblMaxDate, 4, lastdate)
      break;
   Case 2
      Switch ControlID
         Case but_MyDlg_Exit
            Exit
            Break
      EndSwitch
      Return -2
      Break
   Case 9
      Switch controlid
         Case cal_MyDlg_calStartDate
            Switch @TRUE
               Case DialogControlGet(dlghandle, cal_MyDlg_calStartDate, 7) < firstdate
                  DialogControlSet(dlghandle, cal_MyDlg_calStartDate, 7, firstdate)
                  Break
               Case DialogControlGet(dlghandle, cal_MyDlg_calStartDate, 7) >= DialogControlGet(dlghandle, cal_MyDlg_calEndDate, 7)
                  DialogControlSet(dlghandle, cal_MyDlg_calStartDate, 7, TimeSubtract(DialogControlGet(dlghandle, cal_MyDlg_calEndDate, 7), "0000:00:01:00:00:00"))
                  Break
            EndSwitch
            Break
         Case cal_MyDlg_calEndDate
            Switch @TRUE
               Case DialogControlGet(dlghandle, cal_MyDlg_calEndDate, 7) > lastdate
                  DialogControlSet(dlghandle, cal_MyDlg_calEndDate, 7, lastdate)
                  Break
               Case DialogControlGet(dlghandle, cal_MyDlg_calEndDate, 7) <= DialogControlGet(dlghandle, cal_MyDlg_calStartDate, 7)
                  DialogControlSet(dlghandle, cal_MyDlg_calEndDate, 7, TimeAdd(DialogControlGet(dlghandle, cal_MyDlg_calStartDate, 7), "0000:00:01:00:00:00"))
                  Break
            EndSwitch
            Break
      EndSwitch
      DialogControlSet(dlghandle, vtx_MyDlg_lblStartDate, 4, DialogControlGet(dlghandle, cal_MyDlg_calStartDate, 7))
      DialogControlSet(dlghandle, vtx_MyDlg_lblEndDate, 4, DialogControlGet(dlghandle, cal_MyDlg_calEndDate, 7))
      Break
EndSwitch
Return -1
#EndSubRoutine
Return

Article ID:   W17398
File Created: 2008:04:10:15:09:16
Last Updated: 2008:04:10:15:09:16