123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777 |
- $PBExportHeader$uo_calendar.sru
- $PBExportComments$日历控件用户对象
- forward
- global type uo_calendar from userobject
- end type
- type cb_ok from commandbutton within uo_calendar
- end type
- type cb_exit from commandbutton within uo_calendar
- end type
- type em_year from editmask within uo_calendar
- end type
- type pb_ok from picturebutton within uo_calendar
- end type
- type pb_ddlb from picturebutton within uo_calendar
- end type
- type dw_cal from datawindow within uo_calendar
- end type
- type ddlb_month from dropdownlistbox within uo_calendar
- end type
- end forward
- global type uo_calendar from userobject
- integer width = 887
- integer height = 820
- long backcolor = 80263328
- long tabtextcolor = 33554432
- event ue_close ( )
- cb_ok cb_ok
- cb_exit cb_exit
- em_year em_year
- pb_ok pb_ok
- pb_ddlb pb_ddlb
- dw_cal dw_cal
- ddlb_month ddlb_month
- end type
- global uo_calendar uo_calendar
- type variables
- Int ii_Day, ii_Month, ii_Year
- String is_old_column
- String is_DateFormat
- end variables
- forward prototypes
- public function integer days_in_month (integer month, integer year)
- public subroutine enter_day_numbers (integer ai_start_day_num, integer ai_days_in_month)
- public function int get_month_number (string as_month)
- public function integer unhighlight_column (string as_column)
- public subroutine set_date (date ad_date)
- public subroutine set_date_format (string as_date_format)
- public subroutine draw_month (integer year, integer month)
- public subroutine init_cal (date ad_start_date)
- public function integer highlight_column (string as_column)
- end prototypes
- event ue_close();closewithreturn(parent,string(id_date_selected,'yyyymmdd')) //userself
- end event
- public function integer days_in_month (integer month, integer year);//Most cases are straight forward in that there are a fixed number of
- //days in 11 of the 12 months. February is, of course, the problem.
- //In a leap year February has 29 days, otherwise 28.
- Integer li_DaysInMonth, li_Days[12] = {31,28,31,30,31,30,31,31,30,31,30,31}
- // Get the number of days per month for a non leap year.
- li_DaysInMonth = li_Days[Month]
- // Check for a leap year.
- If Month = 2 Then
- // If the year is a leap year, change the number of days.
- // Leap Year Calculation:
- // Year divisible by 4, but not by 100, unless it is also divisible by 400
- If ( (Mod(Year,4) = 0 And Mod(Year,100) <> 0) Or (Mod(Year,400) = 0) ) Then
- li_DaysInMonth = 29
- End If
- End If
- //Return the number of days in the relevant month
- Return li_DaysInMonth
- end function
- public subroutine enter_day_numbers (integer ai_start_day_num, integer ai_days_in_month);Int li_count, li_daycount
- //Blank the columns before the first day of the month
- For li_count = 1 to ai_start_day_num
- dw_cal.SetItem(1,li_count,"")
- Next
- //Set the columns for the days to the String of their Day number
- For li_count = 1 to ai_days_in_month
- //Use li_daycount to find which column needs to be set
- li_daycount = ai_start_day_num + li_count - 1
- dw_cal.SetItem(1,li_daycount,String(li_count))
- Next
- //Move to next column
- li_daycount = li_daycount + 1
- //Blank remainder of columns
- For li_count = li_daycount to 42
- dw_cal.SetItem(1,li_count,"")
- Next
- //If there was an old column turn off the highlight
- unhighlight_column (is_old_column)
- is_old_column = ''
- end subroutine
- public function int get_month_number (string as_month);Int li_month_number
- CHOOSE CASE as_month
- CASE "Jan"
- li_month_number = 1
- CASE "Feb"
- li_month_number = 2
- CASE "Mar"
- li_month_number = 3
- CASE "Apr"
- li_month_number = 4
- CASE "May"
- li_month_number = 5
- CASE "Jun"
- li_month_number = 6
- CASE "Jul"
- li_month_number = 7
- CASE "Aug"
- li_month_number = 8
- CASE "Sep"
- li_month_number = 9
- CASE "Oct"
- li_month_number = 10
- CASE "Nov"
- li_month_number = 11
- CASE "Dec"
- li_month_number = 12
- END CHOOSE
- return li_month_number
- end function
- public function integer unhighlight_column (string as_column);//If the highlight is on the column set the border of the column back to normal
- string ls_return
- If as_column <> '' then
- ls_return = dw_cal.Modify(as_column + ".border=0")
- If ls_return <> "" then
- MessageBox("Modify",ls_return)
- Return -1
- End if
- End If
- Return 1
- end function
- public subroutine set_date (date ad_date);
- end subroutine
- public subroutine set_date_format (string as_date_format);// Set the format.
- is_DateFormat = as_date_format
- // Set the date with the new format.
- If Not isnull(id_date_selected) then
- set_date (id_date_selected)
- End If
- end subroutine
- public subroutine draw_month (integer year, integer month);Int li_FirstDayNum, li_cell, li_daysinmonth
- Date ld_firstday
- String ls_month, ls_cell, ls_return
- //Set Pointer to an Hourglass and turn off redrawing of Calendar
- SetPointer(Hourglass!)
- SetRedraw(dw_cal,FALSE)
- //Set Instance variables to arguments
- ii_month = month
- ii_year = year
- //check in the instance day is valid for month/year
- //back the day down one if invalid for month ie 31 will become 30
- Do While Date(ii_year,ii_month,ii_day) = Date(00,1,1)
- ii_day --
- Loop
- //Work out how many days in the month
- li_daysinmonth = days_in_month(ii_month,ii_year)
- //Find the date of the first day in the month
- ld_firstday = Date(ii_year,ii_month,1)
- //Find what day of the week this is
- li_FirstDayNum = DayNumber(ld_firstday)
- //Set the first cell
- li_cell = li_FirstDayNum + ii_day - 1
- //If there was an old column turn off the highlight
- unhighlight_column (is_old_column)
- //Set the Title
- ls_Month = string(ii_Year)
- em_year.text = ls_month
- ddlb_month.text = string(ii_month,'00')
- //Enter the day numbers into the datawindow
- enter_day_numbers(li_FirstDayNum,li_daysinmonth)
- //Define the current cell name
- ls_cell = 'cell'+string(li_cell)
- //Highlight the current date
- highlight_column (ls_cell)
- //Set the old column for next time
- //is_old_column = ls_cell
- //Reset the pointer and Redraw
- SetPointer(Arrow!)
- dw_cal.SetRedraw(TRUE)
- end subroutine
- public subroutine init_cal (date ad_start_date);Int li_FirstDayNum, li_Cell, li_DaysInMonth
- String ls_Year, ls_Month, ls_Return, ls_Cell
- Date ld_FirstDay
- //Insert a row into the script datawindow
- dw_cal.InsertRow(0)
- //Set the variables for Day, Month and Year from the date passed to
- //the function
- ii_Month = Month(ad_start_date)
- ii_Year = Year(ad_start_date)
- ii_Day = Day(ad_start_date)
- //Find how many days in the relevant month
- li_daysinmonth = days_in_month(ii_month, ii_year)
- //Find the date of the first day of this month
- ld_FirstDay = Date(ii_Year, ii_month, 1)
- //What day of the week is the first day of the month
- li_FirstDayNum = DayNumber(ld_FirstDay)
- //Set the starting "cell" in the datawindow. i.e the column in which
- //the first day of the month will be displayed
- li_Cell = li_FirstDayNum + ii_Day - 1
- //Set the Title of the calendar with the Month and Year
- //ls_Month = get_month_string(ii_Month) + " " + string(ii_Year)
- ls_Month = string(ii_Year)
- em_year.text = ls_month
- ddlb_month.text = string(ii_month,'00')
- //Enter the numbers of the days
- enter_day_numbers(li_FirstDayNum, li_DaysInMonth)
- dw_cal.SetItem(1,li_cell,String(Day(ad_start_date)))
- //Define the first Cell as a string
- ls_cell = 'cell'+string(li_cell)
- //Display the first day in bold (or 3D)
- highlight_column (ls_cell)
- //Set the instance variable i_old_column to hold the current cell, so
- //when we change it, we know the old setting
- is_old_column = ls_Cell
- end subroutine
- public function integer highlight_column (string as_column);//Highlight the current column/date
- int li_days
- li_days = integer(mid(as_column,5))
- if li_days > 28 then
- do until isdate(em_year.text + '-' + ddlb_month.text + '-' + dw_cal.getitemstring(1,li_days))
- li_days --
- loop
- end if
- choose case li_days
-
- case 1
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell1.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell1.y) - 5)
- case 2
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell2.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell2.y) - 5)
- case 3
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell3.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell3.y) - 5)
- case 4
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell4.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell4.y) - 5)
- case 5
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell5.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell5.y) - 5)
- case 6
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell6.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell6.y) - 5)
- case 7
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell7.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell7.y) - 5)
- case 8
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell8.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell8.y) - 5)
- case 9
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell9.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell9.y) - 5)
- case 10
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell10.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell10.y) - 5)
- case 11
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell11.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell11.y) - 5)
- case 12
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell12.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell12.y) - 5)
- case 13
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell13.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell13.y) - 5)
- case 14
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell14.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell14.y) - 5)
- case 15
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell15.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell15.y) - 5)
- case 16
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell16.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell16.y) - 5)
- case 17
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell17.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell17.y) - 5)
- case 18
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell18.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell18.y) - 5)
- case 19
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell19.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell19.y) - 5)
- case 20
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell20.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell20.y) - 5)
- case 21
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell21.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell21.y) - 5)
- case 22
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell22.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell22.y) - 5)
- case 23
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell23.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell23.y) - 5)
- case 24
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell24.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell24.y) - 5)
- case 25
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell25.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell25.y) - 5)
- case 26
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell26.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell26.y) - 5)
- case 27
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell27.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell27.y) - 5)
- case 28
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell28.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell28.y) - 5)
- case 29
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell29.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell29.y) - 5)
- case 30
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell30.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell30.y) - 5)
- case 31
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell31.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell31.y) - 5)
- case 32
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell32.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell32.y) - 5)
- case 33
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell33.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell33.y) - 5)
- case 34
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell34.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell34.y) - 5)
- case 35
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell35.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell35.y) - 5)
- case 36
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell36.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell36.y) - 5)
- case 37
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell37.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell37.y) - 5)
- case 38
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell38.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell38.y) - 5)
- case 39
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell39.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell39.y) - 5)
- case 40
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell40.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell40.y) - 5)
- case 41
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell41.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell41.y) - 5)
- case 42
- dw_cal.object.p_sel.x = string(long(dw_cal.object.cell42.x) - 5)
- dw_cal.object.p_sel.y = string(long(dw_cal.object.cell42.y) - 5)
- end choose
- ii_day = integer(dw_cal.getitemstring(1,li_days))
- id_date_selected = date(ii_year, ii_month, ii_Day)
- is_old_column = 'cell' + string(li_days)
- Return 1
- end function
- event constructor;id_date_selected = today()
- end event
- on uo_calendar.create
- this.cb_ok=create cb_ok
- this.cb_exit=create cb_exit
- this.em_year=create em_year
- this.pb_ok=create pb_ok
- this.pb_ddlb=create pb_ddlb
- this.dw_cal=create dw_cal
- this.ddlb_month=create ddlb_month
- this.Control[]={this.cb_ok,&
- this.cb_exit,&
- this.em_year,&
- this.pb_ok,&
- this.pb_ddlb,&
- this.dw_cal,&
- this.ddlb_month}
- end on
- on uo_calendar.destroy
- destroy(this.cb_ok)
- destroy(this.cb_exit)
- destroy(this.em_year)
- destroy(this.pb_ok)
- destroy(this.pb_ddlb)
- destroy(this.dw_cal)
- destroy(this.ddlb_month)
- end on
- type cb_ok from commandbutton within uo_calendar
- integer x = 379
- integer y = 684
- integer width = 233
- integer height = 92
- integer taborder = 60
- integer textsize = -9
- integer weight = 400
- fontcharset fontcharset = ansi!
- fontpitch fontpitch = variable!
- fontfamily fontfamily = swiss!
- string facename = "Arial"
- string text = "确定"
- end type
- event clicked;parent.postevent('ue_close')
- end event
- type cb_exit from commandbutton within uo_calendar
- integer x = 631
- integer y = 684
- integer width = 233
- integer height = 92
- integer taborder = 50
- integer textsize = -9
- integer weight = 400
- fontcharset fontcharset = ansi!
- fontpitch fontpitch = variable!
- fontfamily fontfamily = swiss!
- string facename = "Arial"
- string text = "取消"
- end type
- event clicked;parent.postevent('ue_close')
- init_cal(today())
- end event
- type em_year from editmask within uo_calendar
- integer x = 37
- integer y = 24
- integer width = 302
- integer height = 84
- integer taborder = 20
- integer textsize = -9
- integer weight = 400
- fontcharset fontcharset = gb2312charset!
- fontpitch fontpitch = fixed!
- fontfamily fontfamily = modern!
- string facename = "新宋体"
- long textcolor = 16711680
- borderstyle borderstyle = stylelowered!
- string mask = "####"
- boolean autoskip = true
- boolean spin = true
- double increment = 1
- string minmax = "1900~~2999"
- end type
- event other;if (lparam = 33554433) and (em_year.text <> string(ii_year)) then
- draw_month ( integer(em_year.text), integer(ddlb_month.text) )
- end if
- end event
- type pb_ok from picturebutton within uo_calendar
- integer x = 1207
- integer y = 744
- integer width = 91
- integer height = 72
- integer taborder = 40
- integer textsize = -8
- integer weight = 400
- fontcharset fontcharset = ansi!
- fontpitch fontpitch = variable!
- fontfamily fontfamily = swiss!
- string facename = "Arial"
- string text = "ok"
- boolean default = true
- alignment htextalign = left!
- vtextalign vtextalign = vcenter!
- end type
- event clicked;
- parent.postevent('ue_close')
- end event
- type pb_ddlb from picturebutton within uo_calendar
- integer x = 910
- integer y = 744
- integer width = 91
- integer height = 80
- integer taborder = 50
- integer textsize = -8
- integer weight = 400
- fontpitch fontpitch = variable!
- fontfamily fontfamily = swiss!
- string facename = "MS Sans Serif"
- string picturename = "ddlb.bmp"
- alignment htextalign = left!
- end type
- event clicked;
- //Works as a toggle, if the DropDown is visible, make it invisible
- //otherwise make it visible
- date ld_date
- If dw_cal.visible then
- dw_cal.visible = FALSE
- else
- //Reset the datawindow
- reset(dw_cal)
- // If there is already a date in the edit box then make this the
- // current date in the calendar, otherwise use today
- If ii_day = 0 Then ii_day = 1
- ld_date = date(ii_year, ii_month, ii_day) // This line used for debugging
- init_cal(date(ii_year, ii_month, ii_day))
- dw_cal.visible = TRUE
- dw_cal.setfocus()
- End If
- end event
- type dw_cal from datawindow within uo_calendar
- event ue_dwnkey pbm_dwnkey
- integer width = 1385
- integer height = 668
- integer taborder = 10
- string dataobject = "d_calendar"
- borderstyle borderstyle = stylelowered!
- end type
- event ue_dwnkey;long ll_cell
- If keydown(keyRightArrow!) and keydown(keyControl!) then
- if long(ddlb_month.text) >= 12 then
- em_year.text = string(long(em_year.text) + 1)
- ddlb_month.text = '1'
- else
- ddlb_month.text = string(long(ddlb_month.text) + 1)
- end if
- draw_month ( integer(em_year.text), integer(ddlb_month.text) )
- return
- Elseif keydown(keyLeftArrow!) and keydown(keyControl!) then
- if long(ddlb_month.text) <= 1 then
- em_year.text = string(long(em_year.text) - 1)
- ddlb_month.text = '12'
- else
- ddlb_month.text = string(long(ddlb_month.text) - 1)
- end if
- draw_month ( integer(em_year.text), integer(ddlb_month.text) )
- return
- elseif keydown(keyupArrow!) and keydown(keyControl!) then
- em_year.text = string(long(em_year.text) + 1)
- draw_month ( integer(em_year.text), integer(ddlb_month.text) )
- return
- elseif keydown(keydownArrow!) and keydown(keyControl!) then
- em_year.text = string(long(em_year.text) - 1)
- draw_month ( integer(em_year.text), integer(ddlb_month.text) )
- return
- End If
- if keydown(keyupArrow!) then
- ll_cell = long(mid(is_old_column,5)) - 7
- if ll_cell > 0 then
- if getitemstring(1,ll_cell) <> "" then
- highlight_column("cell" + string(ll_cell))
- ii_day = integer(getitemstring(1,ll_cell))
- id_date_selected = date(ii_year, ii_month, ii_Day)
- end if
- end if
- end if
- if keydown(keydownArrow!) then
- ll_cell = long(mid(is_old_column,5)) + 7
- if ll_cell < 42 then
- if getitemstring(1,ll_cell) <> "" then
- highlight_column("cell" + string(ll_cell))
- ii_day = integer(getitemstring(1,ll_cell))
- id_date_selected = date(ii_year, ii_month, ii_Day)
- end if
- end if
- end if
- if keydown(keyleftArrow!) then
- ll_cell = long(mid(is_old_column,5)) - 1
- if ll_cell > 0 then
- if getitemstring(1,ll_cell) <> "" then
- highlight_column("cell" + string(ll_cell))
- ii_day = integer(getitemstring(1,ll_cell))
- id_date_selected = date(ii_year, ii_month, ii_Day)
- end if
- end if
- end if
- if keydown(keyrightArrow!) then
- ll_cell = long(mid(is_old_column,5)) + 1
- if ll_cell < 42 then
- if getitemstring(1,ll_cell) <> "" then
- highlight_column("cell" + string(ll_cell))
- ii_day = integer(getitemstring(1,ll_cell))
- id_date_selected = date(ii_year, ii_month, ii_Day)
- end if
- end if
- end if
- if keydown(keyenter!) then
- parent.postevent('ue_close')
- end if
- end event
- event clicked;String ls_clickedcolumn, ls_clickedcolumnID
- String ls_day, ls_return
- string ls_col_name
- //Return if click was not on a valid dwobject, depending on what was
- //clicked, dwo will be null or dwo.name will be "datawindow"
- If IsNull(dwo) Then Return
- If Pos(dwo.name, "cell") = 0 Then Return
- //Find which column was clicked on and return if it is not valid
- ls_clickedcolumn = dwo.name
- ls_clickedcolumnID = dwo.id
- If ls_clickedcolumn = '' Then Return
- //Set Day to the text of the clicked column. Return if it is an empty column
- ls_day = dwo.primary[1]
- If ls_day = "" then Return
- //Convert to a number and place in Instance variable
- ii_day = Integer(ls_day)
- //If the highlight was on a previous column (is_old_column <> '')
- //set the border of the old column back to normal
- unhighlight_column (is_old_column)
- //Highlight chosen day/column
- dw_cal.object.p_sel.x = string(long(dwo.x) - 5)
- dw_cal.object.p_sel.y = string(long(dwo.y) - 5)
- //Set the old column for next time
- is_old_column = ls_clickedcolumn
- //Return the chosen date into the SingleLineEdit in the chosen format
- id_date_selected = date(ii_year, ii_month, ii_Day)
- ////parent.postevent('ue_close')
- end event
- event doubleclicked;String ls_day
- //Return if click was not on a valid dwobject, depending on what was
- //clicked, dwo will be null or dwo.name will be "datawindow"
- If IsNull(dwo) Then Return
- If Pos(dwo.name, "cell") = 0 Then Return
- //Set the Day to the chosen column
- ls_day = dwo.primary[1]
- if ls_day ='' then return
- //Return the chosen date into the SingleLineEdit in the chosen format
- ii_day = Integer(ls_day)
- id_date_selected = date(ii_year, ii_month, ii_Day)
- set_date (id_date_selected)
- parent.postevent('ue_close')
-
- end event
- type ddlb_month from dropdownlistbox within uo_calendar
- event mousemove pbm_mousemove
- integer x = 443
- integer y = 24
- integer width = 229
- integer height = 704
- integer taborder = 40
- boolean bringtotop = true
- integer textsize = -9
- integer weight = 400
- fontcharset fontcharset = gb2312charset!
- fontpitch fontpitch = variable!
- string facename = "宋体"
- long textcolor = 16711680
- boolean sorted = false
- boolean vscrollbar = true
- string item[] = {"01","02","03","04","05","06","07","08","09","10","11","12"}
- borderstyle borderstyle = stylelowered!
- end type
- event other;//If (lparam = 33554433) And (ddlb_month.Text <> String(ii_month)) THEN
- // draw_month ( Integer(em_year.Text), Integer(ddlb_month.Text) )
- //END IF
- //
- end event
- event selectionchanged;
- //if (lparam = 33554433) and (ddlb_month.text <> string(ii_month)) then
- //draw_month ( integer(em_year.text), integer(ddlb_month.text) )
- //end if
- if(ddlb_month.text <> string(ii_month)) then
- draw_month ( integer(em_year.text), integer(ddlb_month.text) )
- end if
- end event
|