Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.
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