*-------------------------------------------------------------------------------------------------------------------------------------------------------- * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- *< FOXBIN2PRG: Version="1.21" SourceFile="_calendar.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * * DEFINE CLASS _calendar AS control *< CLASSDATA: Baseclass="control" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="Shape2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Shape1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="txtToday" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="txtMonth" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="txtYear" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday1_1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday1_2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday1_3" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday1_4" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday1_5" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday1_6" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday1_7" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblDayName2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblDayName3" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblDayName4" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblDayName5" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblDayName6" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblDayName7" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lblDayName1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday2_1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday2_2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday2_3" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday2_4" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday2_5" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday2_6" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday2_7" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday3_1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday3_2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday3_3" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday3_4" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday3_5" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday3_6" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday3_7" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday4_1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday4_2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday4_3" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday4_4" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday4_5" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday4_6" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday4_7" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday5_1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday5_2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday5_3" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday5_4" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday5_5" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday5_6" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday5_7" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday6_1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday6_2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday6_3" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday6_4" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday6_5" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday6_6" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_lblday6_7" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="imgLeft" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="imgRight" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="imgUp" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="imgDown" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="shpToday" UniqueID="" Timestamp="" /> * *m: dayclick *m: firstdayoftheweek_assign *m: language_assign *m: monthclick *m: redraw *m: todayclick *m: valuechanged *m: value_assign *m: yearclick *p: cdayname1 && Sunday *p: cdayname2 && Monday *p: cdayname3 && Tuesday *p: cdayname4 && Wednesday *p: cdayname5 && Thursday *p: cdayname6 && Friday *p: cdayname7 && Saturday *p: day *p: firstdayoftheweek && 1 - Sunday, 2 - Monday *p: language *p: month *p: monthnames *p: notherscolour && RGB(196,196,255) *p: nsunday *p: nsundaycolour && RGB(255,128,128) *p: old_lbl *p: showtips && Specifies if ToolTips are shown for the controls on the specified Form object or the specified ToolBar object. *p: todaystring *p: value && Specifies the current state of a control. *p: year *p: _memberdata && XML Metadata for customizable properties * HIDDEN _memberdata PROTECTED old_lbl * BackColor = 255,255,255 BorderColor = 0,0,0 BorderWidth = 2 cdayname1 = cdayname2 = cdayname3 = cdayname4 = cdayname5 = cdayname6 = cdayname7 = day = 0 firstdayoftheweek = Height = 168 language = EN month = 0 monthnames = Name = "_calendar" notherscolour = 16762052 nsunday = nsundaycolour = 8421631 old_lbl = .F. showtips = .F. todaystring = value = {} Width = 168 year = 0 _memberdata = * ADD OBJECT '_lblday1_1' AS _lblday WITH ; ForeColor = 255,128,128, ; Left = 17, ; Name = "_lblday1_1", ; Top = 46 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday1_2' AS _lblday WITH ; Left = 37, ; Name = "_lblday1_2", ; Top = 46 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday1_3' AS _lblday WITH ; Left = 57, ; Name = "_lblday1_3", ; Top = 46 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday1_4' AS _lblday WITH ; Left = 77, ; Name = "_lblday1_4", ; Top = 46 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday1_5' AS _lblday WITH ; Left = 97, ; Name = "_lblday1_5", ; Top = 46 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday1_6' AS _lblday WITH ; Left = 117, ; Name = "_lblday1_6", ; Top = 46 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday1_7' AS _lblday WITH ; Left = 137, ; Name = "_lblday1_7", ; Top = 46 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday2_1' AS _lblday WITH ; ForeColor = 255,128,128, ; Left = 17, ; Name = "_lblday2_1", ; Top = 61 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday2_2' AS _lblday WITH ; Left = 37, ; Name = "_lblday2_2", ; Top = 61 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday2_3' AS _lblday WITH ; Left = 57, ; Name = "_lblday2_3", ; Top = 61 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday2_4' AS _lblday WITH ; Left = 77, ; Name = "_lblday2_4", ; Top = 61 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday2_5' AS _lblday WITH ; Left = 97, ; Name = "_lblday2_5", ; Top = 61 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday2_6' AS _lblday WITH ; Left = 117, ; Name = "_lblday2_6", ; Top = 61 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday2_7' AS _lblday WITH ; Left = 137, ; Name = "_lblday2_7", ; Top = 61 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday3_1' AS _lblday WITH ; ForeColor = 255,128,128, ; Left = 17, ; Name = "_lblday3_1", ; Top = 76 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday3_2' AS _lblday WITH ; Left = 37, ; Name = "_lblday3_2", ; Top = 76 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday3_3' AS _lblday WITH ; Left = 57, ; Name = "_lblday3_3", ; Top = 76 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday3_4' AS _lblday WITH ; Left = 77, ; Name = "_lblday3_4", ; Top = 76 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday3_5' AS _lblday WITH ; Left = 97, ; Name = "_lblday3_5", ; Top = 76 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday3_6' AS _lblday WITH ; Left = 117, ; Name = "_lblday3_6", ; Top = 76 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday3_7' AS _lblday WITH ; Left = 137, ; Name = "_lblday3_7", ; Top = 76 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday4_1' AS _lblday WITH ; ForeColor = 255,128,128, ; Left = 17, ; Name = "_lblday4_1", ; Top = 91 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday4_2' AS _lblday WITH ; Left = 37, ; Name = "_lblday4_2", ; Top = 91 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday4_3' AS _lblday WITH ; Left = 57, ; Name = "_lblday4_3", ; Top = 91 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday4_4' AS _lblday WITH ; Left = 77, ; Name = "_lblday4_4", ; Top = 91 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday4_5' AS _lblday WITH ; Left = 97, ; Name = "_lblday4_5", ; Top = 91 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday4_6' AS _lblday WITH ; Left = 117, ; Name = "_lblday4_6", ; Top = 91 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday4_7' AS _lblday WITH ; Left = 137, ; Name = "_lblday4_7", ; Top = 91 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday5_1' AS _lblday WITH ; ForeColor = 255,128,128, ; Left = 17, ; Name = "_lblday5_1", ; Top = 106 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday5_2' AS _lblday WITH ; Left = 37, ; Name = "_lblday5_2", ; Top = 106 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday5_3' AS _lblday WITH ; Left = 57, ; Name = "_lblday5_3", ; Top = 106 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday5_4' AS _lblday WITH ; Left = 77, ; Name = "_lblday5_4", ; Top = 106 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday5_5' AS _lblday WITH ; Left = 97, ; Name = "_lblday5_5", ; Top = 106 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday5_6' AS _lblday WITH ; Left = 117, ; Name = "_lblday5_6", ; Top = 106 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday5_7' AS _lblday WITH ; Left = 137, ; Name = "_lblday5_7", ; Top = 106 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday6_1' AS _lblday WITH ; ForeColor = 255,128,128, ; Left = 17, ; Name = "_lblday6_1", ; Top = 121 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday6_2' AS _lblday WITH ; Left = 37, ; Name = "_lblday6_2", ; Top = 121 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday6_3' AS _lblday WITH ; Left = 57, ; Name = "_lblday6_3", ; Top = 121 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday6_4' AS _lblday WITH ; Left = 77, ; Name = "_lblday6_4", ; Top = 121 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday6_5' AS _lblday WITH ; Left = 97, ; Name = "_lblday6_5", ; Top = 121 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday6_6' AS _lblday WITH ; Left = 117, ; Name = "_lblday6_6", ; Top = 121 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT '_lblday6_7' AS _lblday WITH ; Left = 137, ; Name = "_lblday6_7", ; Top = 121 *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="label" /> ADD OBJECT 'imgDown' AS image WITH ; Height = 7, ; Left = 153, ; MousePointer = 15, ; Name = "imgDown", ; Picture = cal_arrow_down.png, ; Stretch = 0, ; Top = 16, ; Width = 11 *< END OBJECT: BaseClass="image" /> ADD OBJECT 'imgLeft' AS image WITH ; Height = 16, ; Left = 4, ; MousePointer = 15, ; Name = "imgLeft", ; Picture = cal_arrow_left.png, ; Top = 7, ; Width = 16 *< END OBJECT: BaseClass="image" /> ADD OBJECT 'imgRight' AS image WITH ; Height = 16, ; Left = 93, ; MousePointer = 15, ; Name = "imgRight", ; Picture = cal_arrow_right.png, ; Top = 7, ; Width = 16 *< END OBJECT: BaseClass="image" /> ADD OBJECT 'imgUp' AS image WITH ; Height = 7, ; Left = 153, ; MousePointer = 15, ; Name = "imgUp", ; Picture = cal_arrow_up.png, ; Stretch = 0, ; Top = 7, ; Width = 11 *< END OBJECT: BaseClass="image" /> ADD OBJECT 'lblDayName1' AS label WITH ; Alignment = 2, ; BackStyle = 0, ; Caption = "M", ; FontBold = .T., ; FontName = "Tahoma", ; FontSize = 8, ; ForeColor = 255,128,128, ; Height = 15, ; Left = 18, ; Name = "lblDayName1", ; Top = 31, ; Width = 14 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblDayName2' AS label WITH ; Alignment = 2, ; BackStyle = 0, ; Caption = "S", ; FontBold = .T., ; FontName = "Tahoma", ; FontSize = 8, ; ForeColor = 196,196,255, ; Height = 15, ; Left = 38, ; Name = "lblDayName2", ; Top = 31, ; Width = 14 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblDayName3' AS label WITH ; Alignment = 2, ; BackStyle = 0, ; Caption = "S", ; FontBold = .T., ; FontName = "Tahoma", ; FontSize = 8, ; ForeColor = 196,196,255, ; Height = 15, ; Left = 58, ; Name = "lblDayName3", ; Top = 31, ; Width = 14 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblDayName4' AS label WITH ; Alignment = 2, ; BackStyle = 0, ; Caption = "R", ; FontBold = .T., ; FontName = "Tahoma", ; FontSize = 8, ; ForeColor = 196,196,255, ; Height = 15, ; Left = 78, ; Name = "lblDayName4", ; Top = 31, ; Width = 14 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblDayName5' AS label WITH ; Alignment = 2, ; BackStyle = 0, ; Caption = "K", ; FontBold = .T., ; FontName = "Tahoma", ; FontSize = 8, ; ForeColor = 196,196,255, ; Height = 15, ; Left = 98, ; Name = "lblDayName5", ; Top = 31, ; Width = 14 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblDayName6' AS label WITH ; Alignment = 2, ; BackStyle = 0, ; Caption = "J", ; FontBold = .T., ; FontName = "Tahoma", ; FontSize = 8, ; ForeColor = 196,196,255, ; Height = 15, ; Left = 118, ; Name = "lblDayName6", ; Top = 31, ; Width = 14 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lblDayName7' AS label WITH ; Alignment = 2, ; BackStyle = 0, ; Caption = "S", ; FontBold = .T., ; FontName = "Tahoma", ; FontSize = 8, ; ForeColor = 196,196,255, ; Height = 15, ; Left = 138, ; Name = "lblDayName7", ; Top = 31, ; Width = 14 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'Shape1' AS shape WITH ; BackColor = 196,196,255, ; Height = 28, ; Left = 1, ; Name = "Shape1", ; Top = 1, ; Width = 166 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'Shape2' AS shape WITH ; BackColor = 196,196,255, ; Height = 28, ; Left = 1, ; Name = "Shape2", ; Top = 139, ; Width = 166 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'shpToday' AS shape WITH ; BackStyle = 0, ; BorderStyle = 0, ; Height = 28, ; Left = 2, ; MousePointer = 15, ; Name = "shpToday", ; Top = 140, ; Width = 164 *< END OBJECT: BaseClass="shape" /> ADD OBJECT 'txtMonth' AS textbox WITH ; Alignment = 2, ; BackStyle = 0, ; BorderStyle = 0, ; FontBold = .T., ; FontName = "Tahoma", ; FontSize = 8, ; ForeColor = 255,255,255, ; Height = 23, ; Left = 2, ; MousePointer = 1, ; Name = "txtMonth", ; SpecialEffect = 1, ; Themes = .F., ; Top = 5, ; Value = , ; Width = 112 *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'txtToday' AS textbox WITH ; Alignment = 2, ; BackStyle = 0, ; BorderStyle = 0, ; FontBold = .T., ; FontName = "Tahoma", ; FontSize = 8, ; ForeColor = 62,62,255, ; Height = 23, ; Left = 4, ; MousePointer = 1, ; Name = "txtToday", ; SpecialEffect = 1, ; Themes = .F., ; Top = 143, ; Value = , ; Width = 160 *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'txtYear' AS textbox WITH ; Alignment = 1, ; BackStyle = 0, ; BorderStyle = 0, ; FontBold = .T., ; FontName = "Tahoma", ; FontSize = 8, ; ForeColor = 255,255,255, ; Height = 23, ; Left = 111, ; MousePointer = 1, ; Name = "txtYear", ; SpecialEffect = 1, ; Themes = .F., ; Top = 5, ; Value = , ; Width = 42 *< END OBJECT: BaseClass="textbox" /> PROCEDURE dayclick ENDPROC PROCEDURE firstdayoftheweek_assign Lparameters vNewVal *To do: Modify this routine for the Assign method With This .FirstDayOfTheWeek = m.vNewVal .lblDayName1.ForeColor = .notherscolour .lblDayName2.ForeColor = .notherscolour .lblDayName3.ForeColor = .notherscolour .lblDayName4.ForeColor = .notherscolour .lblDayName5.ForeColor = .notherscolour .lblDayName6.ForeColor = .notherscolour .lblDayName7.ForeColor = .notherscolour Do Case Case .FirstDayOfTheWeek = 1 && Sunday .lblDayName1.ForeColor = .nsundaycolour .nsunday = 1 .lblDayName1.Caption = .cdayname1 .lblDayName2.Caption = .cdayname2 .lblDayName3.Caption = .cdayname3 .lblDayName4.Caption = .cdayname4 .lblDayName5.Caption = .cdayname5 .lblDayName6.Caption = .cdayname6 .lblDayName7.Caption = .cdayname7 Case .FirstDayOfTheWeek = 2 && Monday .lblDayName7.ForeColor = .nsundaycolour .nsunday = 7 .lblDayName1.Caption = .cdayname2 .lblDayName2.Caption = .cdayname3 .lblDayName3.Caption = .cdayname4 .lblDayName4.Caption = .cdayname5 .lblDayName5.Caption = .cdayname6 .lblDayName6.Caption = .cdayname7 .lblDayName7.Caption = .cdayname1 Case .FirstDayOfTheWeek = 3 && Tuesday .lblDayName6.ForeColor = .nsundaycolour .nsunday = 6 .lblDayName1.Caption = .cdayname3 .lblDayName2.Caption = .cdayname4 .lblDayName3.Caption = .cdayname5 .lblDayName4.Caption = .cdayname6 .lblDayName5.Caption = .cdayname7 .lblDayName6.Caption = .cdayname1 .lblDayName7.Caption = .cdayname2 Case .FirstDayOfTheWeek = 4 && Wednesday .lblDayName5.ForeColor = .nsundaycolour .nsunday = 5 .lblDayName1.Caption = .cdayname4 .lblDayName2.Caption = .cdayname5 .lblDayName3.Caption = .cdayname6 .lblDayName4.Caption = .cdayname7 .lblDayName5.Caption = .cdayname1 .lblDayName6.Caption = .cdayname2 .lblDayName7.Caption = .cdayname3 Case .FirstDayOfTheWeek = 5 && Thursday .lblDayName4.ForeColor = .nsundaycolour .nsunday = 4 .lblDayName1.Caption = .cdayname5 .lblDayName2.Caption = .cdayname6 .lblDayName3.Caption = .cdayname7 .lblDayName4.Caption = .cdayname1 .lblDayName5.Caption = .cdayname2 .lblDayName6.Caption = .cdayname3 .lblDayName7.Caption = .cdayname4 Case .FirstDayOfTheWeek = 6 && Friday .lblDayName3.ForeColor = .nsundaycolour .nsunday = 3 .lblDayName1.Caption = .cdayname6 .lblDayName2.Caption = .cdayname7 .lblDayName3.Caption = .cdayname1 .lblDayName4.Caption = .cdayname2 .lblDayName5.Caption = .cdayname3 .lblDayName6.Caption = .cdayname4 .lblDayName7.Caption = .cdayname5 Otherwise && Saturday .lblDayName2.ForeColor = .nsundaycolour .nsunday = 2 .lblDayName1.Caption = .cdayname7 .lblDayName2.Caption = .cdayname1 .lblDayName3.Caption = .cdayname2 .lblDayName4.Caption = .cdayname3 .lblDayName5.Caption = .cdayname4 .lblDayName6.Caption = .cdayname5 .lblDayName7.Caption = .cdayname6 Endcase Endwith ENDPROC PROCEDURE Init LPARAMETERS tdValue WITH this .nsundaycolour = RGB(255,128,128) .notherscolour = RGB(196,196,255) IF VARTYPE(m.tdValue) == 'D' .Value = m.tdValue ELSE .Value = DATE() ENDIF .Language = .Language .Redraw() ENDWITH ENDPROC PROTECTED PROCEDURE language_assign LPARAMETERS vNewVal WITH this .Language = m.vNewVal IF .Language == 'RO' .cDayName1 = 'D' .cDayName2 = 'L' .cDayName3 = 'M' .cDayName4 = 'M' .cDayName5 = 'J' .cDayName6 = 'V' .cDayName7 = 'S' .MonthNames = "Ianuarie Februarie Martie Aprilie Mai Iunie Iulie August Septembrie Octombrie Noiembrie Decembrie" .TodayString = "Azi" .FirstDayOfTheWeek = 2 ELSE .cDayName1 = 'S' .cDayName2 = 'M' .cDayName3 = 'T' .cDayName4 = 'W' .cDayName5 = 'T' .cDayName6 = 'F' .cDayName7 = 'S' .MonthNames = "January February March April May June July August September October November December" .TodayString = "Today" .FirstDayOfTheWeek = 1 ENDIF .Redraw() ENDWITH ENDPROC PROCEDURE monthclick ENDPROC PROCEDURE MouseEnter LPARAMETERS nButton, nShift, nXCoord, nYCoord IF this.Enabled this.ShowTips = thisform.ShowTips thisform.ShowTips = .T. ENDIF ENDPROC PROCEDURE MouseLeave LPARAMETERS nButton, nShift, nXCoord, nYCoord IF this.Enabled thisform.ShowTips = this.ShowTips ENDIF ENDPROC PROCEDURE redraw WITH this FOR EACH m.loCtl IN .Controls IF UPPER(m.loCtl.Class) == '_LBLDAY' m.loCtl.ToolTipText = '' m.loCtl.Visible = .F. ENDIF ENDFOR *!* IF !USED('holiday') *!* USE holiday IN 0 *!* ENDIF *!* m.lcSelect = SELECT() *!* SELECT holiday *!* SET ORDER TO TAG hdate m.lnMonth = MONTH(.Value) m.lnYear = YEAR(.Value) m.lnDay = DAY(.Value) m.lnLastDay = GOMONTH(.Value, 1) - .Value m.ldToday = DATE() m.lnToday = DAY(m.ldToday) .txtMonth.Value = GETWORDNUM(.MonthNames, m.lnMonth) .txtYear.Value = TRANSFORM(m.lnYear) m.lcDates = DTOS(m.ldToday) IF .Language == 'EN' .txtToday.Value = .TodayString + ": " + SUBSTR(m.lcDates,5,2)+'/'+RIGHT(m.lcDates,2)+'/'+LEFT(m.lcDates,4) ELSE .txtToday.Value = .TodayString + ": " + RIGHT(m.lcDates,2)+'-'+SUBSTR(m.lcDates,5,2)+'-'+LEFT(m.lcDates,4) ENDIF m.lnWeek = 1 m.ldDate = EVALUATE("{^"+TRANSFORM(LEFT(DTOS(.Value),6)+"01", "@R 9999-99-99")+"}") FOR m.lnDays = 1 TO m.lnLastDay m.ldCurDate = m.ldDate + (m.lnDays-1) m.lnDow = DOW(m.ldCurDate,.firstdayoftheweek) m.loLbl = EVALUATE("this._lblday" + TRANSFORM(m.lnWeek) + "_" + TRANSFORM(m.lnDow)) m.loLbl.Visible = .T. m.loLbl.Caption = TRANSFORM(m.lnDays) IF m.lnDays == m.lnDay m.loLbl.BackColor = This.notherscolour m.loLbl.ForeColor = RGB(255, 255, 255) ELSE m.loLbl.BackColor = RGB(255, 255, 255) *!* IF SEEK (m.ldCurDate) *!* m.loLbl.ForeColor = RGB(255, 128, 128) *!* IF .Language == 'EN' *!* m.loLbl.ToolTipText = ALLTRIM(holiday.hdescen) *!* ELSE *!* m.loLbl.ToolTipText = ALLTRIM(holiday.hdesc) *!* ENDIF *!* ELSE IF m.lnDow = This.nSunday m.loLbl.ForeColor = This.nsundaycolour ELSE m.loLbl.ForeColor = RGB(0, 0, 0) ENDIF *!* ENDIF ENDIF IF m.ldCurDate == m.ldToday m.loLbl.BackColor = This.nsundaycolour m.loLbl.ForeColor = RGB(255, 255, 255) ENDIF IF m.lnDow == 7 m.lnWeek = m.lnWeek + 1 ENDIF ENDFOR *!* IF !EMPTY(m.lcSelect) *!* SELECT (lcSelect) *!* ENDIF *!* IF USED('holiday') *!* USE IN holiday *!* ENDIF ENDWITH ENDPROC PROCEDURE todayclick ENDPROC PROCEDURE valuechanged ENDPROC HIDDEN PROCEDURE value_assign LPARAMETERS vNewVal WITH this .Value = m.vNewVal .Day = DAY(m.vNewVal) .Month = MONTH(m.vNewVal) .Year = YEAR(m.vNewVal) .ValueChanged() ENDWITH ENDPROC PROCEDURE yearclick ENDPROC PROCEDURE imgDown.MouseDown LPARAMETERS nButton, nShift, nXCoord, nYCoord IF m.nButton == 1 WITH this.Parent IF .Year > 1900 .Value = GOMONTH(.Value, -12) .Redraw() .YearClick() ENDIF ENDWITH ENDIF ENDPROC PROCEDURE imgDown.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDPROC PROCEDURE imgLeft.MouseDown LPARAMETERS nButton, nShift, nXCoord, nYCoord IF m.nButton == 1 WITH this.Parent IF .Enabled .Value = GOMONTH(.Value, -1) .Redraw() .MonthClick() ENDIF ENDWITH ENDIF ENDPROC PROCEDURE imgLeft.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord IF this.Parent.Enabled this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDIF ENDPROC PROCEDURE imgRight.MouseDown LPARAMETERS nButton, nShift, nXCoord, nYCoord IF m.nButton == 1 WITH this.Parent IF .Enabled .Value = GOMONTH(.Value, 1) .Redraw() .MonthClick() ENDIF ENDWITH ENDIF ENDPROC PROCEDURE imgRight.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord IF this.Parent.Enabled this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDIF ENDPROC PROCEDURE imgUp.MouseDown LPARAMETERS nButton, nShift, nXCoord, nYCoord IF m.nButton == 1 WITH this.Parent IF .Year < 2099 .Value = GOMONTH(.Value, 12) .Redraw() .YearClick() ENDIF ENDWITH ENDIF ENDPROC PROCEDURE imgUp.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDPROC PROCEDURE lblDayName1.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDPROC PROCEDURE lblDayName2.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDPROC PROCEDURE lblDayName3.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDPROC PROCEDURE lblDayName4.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDPROC PROCEDURE lblDayName5.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDPROC PROCEDURE lblDayName6.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDPROC PROCEDURE lblDayName7.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDPROC PROCEDURE Shape1.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord IF this.Parent.Enabled this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDIF ENDPROC PROCEDURE Shape2.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord IF this.Parent.Enabled this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDIF ENDPROC PROCEDURE shpToday.MouseDown LPARAMETERS nButton, nShift, nXCoord, nYCoord IF m.nButton == 1 WITH this.Parent IF .Enabled .Value = DATE() .Redraw() .TodayClick() ENDIF ENDWITH ENDIF ENDPROC PROCEDURE shpToday.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord IF this.Parent.Enabled this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDIF ENDPROC PROCEDURE txtMonth.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord IF this.Parent.Enabled this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDIF ENDPROC PROCEDURE txtMonth.When RETURN .F. ENDPROC PROCEDURE txtToday.When RETURN .F. ENDPROC PROCEDURE txtYear.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord IF this.Parent.Enabled this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDIF ENDPROC PROCEDURE txtYear.When RETURN .F. ENDPROC ENDDEFINE DEFINE CLASS _calpopup AS form *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="Timer1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Calendar" UniqueID="" Timestamp="" /> * *m: form_deactivate *m: form_moved *m: form_resize *m: hideform *m: language_assign *m: showform *p: idletime *p: is_formshow *p: language *p: lastactivity *p: odatepicker *p: oform *p: shadowed *p: _memberdata && XML Metadata for customizable properties *p: _originalvalue * * BorderStyle = 0 Caption = "" Closable = .F. ControlBox = .F. DoCreate = .T. Height = 168 idletime = 50 is_formshow = .F. KeyPreview = .T. language = RO lastactivity = .F. Left = 0 MaxButton = .F. MinButton = .F. Name = "_calpopup" odatepicker = .F. oform = .F. shadowed = .T. ShowInTaskBar = .F. TitleBar = 0 Top = 0 Width = 168 _memberdata = _originalvalue = {} * ADD OBJECT 'Calendar' AS _calendar WITH ; Left = 0, ; Name = "Calendar", ; Top = 0, ; Shape2.Name = "Shape2", ; Shape1.Name = "Shape1", ; txtToday.Name = "txtToday", ; txtMonth.Name = "txtMonth", ; txtYear.Name = "txtYear", ; _lblday1_1.Name = "_lblday1_1", ; _lblday1_2.Name = "_lblday1_2", ; _lblday1_3.Name = "_lblday1_3", ; _lblday1_4.Name = "_lblday1_4", ; _lblday1_5.Name = "_lblday1_5", ; _lblday1_6.Name = "_lblday1_6", ; _lblday1_7.Name = "_lblday1_7", ; lblDayName2.Name = "lblDayName2", ; lblDayName3.Name = "lblDayName3", ; lblDayName4.Name = "lblDayName4", ; lblDayName5.Name = "lblDayName5", ; lblDayName6.Name = "lblDayName6", ; lblDayName7.Name = "lblDayName7", ; lblDayName1.Name = "lblDayName1", ; _lblday2_1.Name = "_lblday2_1", ; _lblday2_2.Name = "_lblday2_2", ; _lblday2_3.Name = "_lblday2_3", ; _lblday2_4.Name = "_lblday2_4", ; _lblday2_5.Name = "_lblday2_5", ; _lblday2_6.Name = "_lblday2_6", ; _lblday2_7.Name = "_lblday2_7", ; _lblday3_1.Name = "_lblday3_1", ; _lblday3_2.Name = "_lblday3_2", ; _lblday3_3.Name = "_lblday3_3", ; _lblday3_4.Name = "_lblday3_4", ; _lblday3_5.Name = "_lblday3_5", ; _lblday3_6.Name = "_lblday3_6", ; _lblday3_7.Name = "_lblday3_7", ; _lblday4_1.Name = "_lblday4_1", ; _lblday4_2.Name = "_lblday4_2", ; _lblday4_3.Name = "_lblday4_3", ; _lblday4_4.Name = "_lblday4_4", ; _lblday4_5.Name = "_lblday4_5", ; _lblday4_6.Name = "_lblday4_6", ; _lblday4_7.Name = "_lblday4_7", ; _lblday5_1.Name = "_lblday5_1", ; _lblday5_2.Name = "_lblday5_2", ; _lblday5_3.Name = "_lblday5_3", ; _lblday5_4.Name = "_lblday5_4", ; _lblday5_5.Name = "_lblday5_5", ; _lblday5_6.Name = "_lblday5_6", ; _lblday5_7.Name = "_lblday5_7", ; _lblday6_1.Name = "_lblday6_1", ; _lblday6_2.Name = "_lblday6_2", ; _lblday6_3.Name = "_lblday6_3", ; _lblday6_4.Name = "_lblday6_4", ; _lblday6_5.Name = "_lblday6_5", ; _lblday6_6.Name = "_lblday6_6", ; _lblday6_7.Name = "_lblday6_7", ; imgLeft.Height = 16, ; imgLeft.Name = "imgLeft", ; imgLeft.Width = 16, ; imgRight.Height = 16, ; imgRight.Name = "imgRight", ; imgRight.Width = 16, ; imgUp.Height = 7, ; imgUp.Name = "imgUp", ; imgUp.Width = 11, ; imgDown.Height = 7, ; imgDown.Name = "imgDown", ; imgDown.Width = 11, ; shpToday.Name = "shpToday" *< END OBJECT: ClassLib="_calendar.vcx" BaseClass="control" /> ADD OBJECT 'Timer1' AS timer WITH ; Enabled = .F., ; Height = 23, ; Interval = 50, ; Left = 154, ; Name = "Timer1", ; Top = 154, ; Width = 23 *< END OBJECT: BaseClass="timer" /> PROCEDURE Deactivate thisform.HideForm() ENDPROC PROCEDURE form_deactivate ENDPROC PROCEDURE form_moved ENDPROC PROCEDURE form_resize ENDPROC PROCEDURE hideform #define GCL_STYLE (-26) #define CS_DROPSHADOW 0x00020000 WITH this IF .is_formshow .Timer1.Enabled = .F. .is_formshow = .F. UNBINDEVENTS(.oForm, "Resize", this, "HideForm") DECLARE LONG ReleaseCapture IN WIN32API AS API_ReleaseCapture API_ReleaseCapture() .Visible = .F. IF .Shadowed DECLARE LONG GetClassLong IN WIN32API AS API_GetClassLong LONG, LONG DECLARE LONG SetClassLong IN WIN32API AS API_SetClassLong LONG, LONG, LONG m.lnStyle = API_GetClassLong(.HWnd, GCL_STYLE) API_SetClassLong(.HWnd, GCL_STYLE, BITAND(m.lnStyle, BITNOT(CS_DROPSHADOW))) ENDIF .oDatePicker.SetFocus() .Release() ENDIF ENDWITH ENDPROC PROCEDURE Init LPARAMETERS toObject, toForm WITH this .Name = SYS(2015) .oDatePicker = m.toObject .oForm = m.toForm .Calendar.Value = IIF(EMPTY(m.toObject.Value), DATE(), m.toObject.Value) ._OriginalValue = m.toObject.Value .Language = .Language ENDWITH ENDPROC PROCEDURE KeyPress LPARAMETERS nKeyCode, nShiftAltCtrl m.llRelease = .F. WITH thisform DO CASE CASE m.nKeyCode == 27 m.llRelease = .T. .oDatePicker.Value = ._OriginalValue CASE m.nKeyCode == 13 m.llRelease = .T. ENDCASE IF m.llRelease .HideForm() ENDIF ENDWITH ENDPROC HIDDEN PROCEDURE language_assign LPARAMETERS vNewVal WITH this .Language = m.vNewVal .Calendar.Language = m.vNewVal ENDWITH ENDPROC PROCEDURE showform LPARAMETERS x, y DECLARE LONG SetWindowPos IN WIN32API AS API_SetWindowPos LONG, LONG, LONG, LONG, LONG, LONG, LONG DECLARE LONG ClientToScreen IN WIN32API AS API_ClientToScreen LONG, STRING @ DECLARE LONG SetWindowLongA IN WIN32API AS API_SetWindowLong LONG, LONG, LONG DECLARE LONG GetWindowLongA IN WIN32API AS API_GetWindowLong LONG, LONG DECLARE LONG SetParent IN WIN32API AS API_SetParent LONG, LONG DECLARE LONG SetFocus IN WIN32API AS API_SetFocus LONG DECLARE LONG SetCapture IN WIN32API AS API_SetCapture LONG #define SWP_SHOWWINDOW 0x0040 #define GWL_EXSTYLE (-20) #define WS_EX_TOOLWINDOW 0x00000080 #define WS_EX_APPWINDOW 0x00040000 #define WS_EX_TOPMOST 0x8 #define GCL_STYLE (-26) #define CS_DROPSHADOW 0x00020000 WITH thisform ACTIVATE WINDOW (.Name) IN WINDOW (.oForm.Name) NOSHOW m.lhWnd = .hWnd m.lStyle = API_GetWindowLong(m.lhWnd, GWL_EXSTYLE) m.lStyle = BITAND(BITOR(m.lStyle, WS_EX_TOOLWINDOW), BITNOT(WS_EX_APPWINDOW)) API_SetWindowLong(m.lhWnd, GWL_EXSTYLE, m.lStyle) m.lParentHWnd = .oForm.hWnd m.lqPt = BINTOC(x, '4RS')+BINTOC(y, '4RS') API_ClientToScreen(m.lParentHWnd, @lqPt) x = CTOBIN(SUBSTR(m.lqPt, 1, 4), '4RS') y = CTOBIN(SUBSTR(m.lqPt, 5, 4), '4RS') IF ((x + .Width) > SYSMETRIC(1)) x = SYSMETRIC(1) - .Width - 2 ENDIF IF ((y + .Height) > SYSMETRIC(2)) y = y - .Height - this.oDatePicker.Height + 2 ENDIF IF .Shadowed DECLARE LONG GetClassLong IN WIN32API AS API_GetClassLong LONG, LONG DECLARE LONG SetClassLong IN WIN32API AS API_SetClassLong LONG, LONG, LONG m.lnStyle = API_GetClassLong(m.lhWnd, GCL_STYLE) API_SetClassLong(m.lhWnd, GCL_STYLE, BITOR(m.lnStyle, CS_DROPSHADOW)) ENDIF API_SetParent(m.lhWnd, 0) API_SetWindowPos(m.lhWnd, 0, x, y, .Width, .Height, SWP_SHOWWINDOW) .Visible = .T. .ZOrder(0) .AlwaysOnTop = .T. API_SetFocus(m.lhWnd) API_SetCapture(m.lhWnd) .is_formshow = .T. BINDEVENT(.oForm, "Resize", this, "HideForm") .LastActivity = SECONDS() .Timer1.Enabled = .T. ENDWITH ENDPROC PROCEDURE Calendar.Click thisform.LastActivity = SECONDS() ENDPROC PROCEDURE Calendar.dayclick WITH thisform .oDatePicker.Value = this.Value .oDatePicker.SetFocus() .HideForm() ENDWITH ENDPROC PROCEDURE Calendar.monthclick WITH thisform .oDatePicker.Value = this.Value ENDWITH ENDPROC PROCEDURE Calendar.MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord thisform.LastActivity = SECONDS() ENDPROC PROCEDURE Calendar.todayclick WITH thisform .oDatePicker.Value = this.Value .HideForm() ENDWITH ENDPROC PROCEDURE Calendar.valuechanged thisform.LastActivity = SECONDS() ENDPROC PROCEDURE Calendar.yearclick WITH thisform .oDatePicker.Value = this.Value ENDWITH ENDPROC PROCEDURE Timer1.Timer #define VK_LBUTTON 0x01 #define VK_RBUTTON 0x02 #define VK_MBUTTON 0x04 DECLARE LONG GetAsyncKeyState IN WIN32API AS API_GetAsyncKeyState LONG IF BITAND(API_GetAsyncKeyState(VK_LBUTTON), 0x8000) != 0 OR ; BITAND(API_GetAsyncKeyState(VK_RBUTTON), 0x8000) != 0 OR ; BITAND(API_GetAsyncKeyState(VK_MBUTTON), 0x8000) != 0 DECLARE LONG GetCursorPos IN WIN32API AS API_GetCursorPos STRING @ DECLARE LONG GetWindowRect IN WIN32API AS API_GetWindowRect LONG, STRING @ m.lqPos = REPLICATE(0h00, 8) API_GetCursorPos(@lqPos) m.lnX = CTOBIN(LEFT(m.lqPos, 4), '4RS') m.lnY = CTOBIN(RIGHT(m.lqPos, 4), '4RS') m.lqRect = REPLICATE(0h00, 16) API_GetWindowRect(thisform.HWnd, @lqRect) m.lnLeft = CTOBIN(SUBSTR(m.lqRect, 1, 4), '4RS') m.lnTop = CTOBIN(SUBSTR(m.lqRect, 5, 4), '4RS') m.lnRight = CTOBIN(SUBSTR(m.lqRect, 9, 4), '4RS') m.lnBottom = CTOBIN(SUBSTR(m.lqRect, 13, 4), '4RS') IF !BETWEEN(m.lnX, m.lnLeft, m.lnRight) OR !BETWEEN(m.lnY, m.lnTop, m.lnBottom) this.Enabled = .F. thisform.HideForm() ENDIF ELSE IF thisform.IdleTime > 0 m.lnSeconds = SECONDS() - thisform.LastActivity IF m.lnSeconds >= thisform.IdleTime this.Enabled = .F. thisform.HideForm() ENDIF ENDIF ENDIF ENDPROC ENDDEFINE DEFINE CLASS _datepicker AS control *< CLASSDATA: Baseclass="control" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="txtDate" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="cmdPick" UniqueID="" Timestamp="" /> * *m: controlsource_assign *m: loadcalendar *m: value_access *m: value_assign *p: controlsource && Specifies the source of data to which an object is bound. *p: idletime *p: language *p: opopup *p: value && Specifies the current state of a control. *p: _memberdata && XML Metadata for customizable properties * HIDDEN _memberdata PROTECTED opopup * BorderWidth = 0 controlsource = Height = 23 idletime = 50 language = EN Name = "_datepicker" opopup = .F. value = {} Width = 98 _memberdata = * ADD OBJECT 'cmdPick' AS commandbutton WITH ; BackColor = 255,255,255, ; Caption = "", ; Height = 21, ; Left = 76, ; Name = "cmdPick", ; Picture = caldropdown.bmp, ; SpecialEffect = 2, ; TabStop = .F., ; Top = 1, ; Width = 21 *< END OBJECT: BaseClass="commandbutton" /> ADD OBJECT 'Text1' AS textbox WITH ; Height = 23, ; Left = 0, ; Name = "Text1", ; TabStop = .F., ; Top = 0, ; Width = 98 *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'txtDate' AS textbox WITH ; Alignment = 3, ; Format = "K", ; Height = 23, ; Left = 0, ; Name = "txtDate", ; Top = 0, ; Value = {}, ; Width = 76 *< END OBJECT: BaseClass="textbox" /> HIDDEN PROCEDURE controlsource_assign LPARAMETERS vNewVal WITH this .ControlSource = m.vNewVal .txtDate.ControlSource = m.vNewVal ENDWITH ENDPROC PROCEDURE Init WITH this .txtDate.ControlSource = .ControlSource ENDWITH ENDPROC PROCEDURE loadcalendar this.oPopup = CREATEOBJECT("_calpopup", this, thisform) IF !ISNULL(this.oPopup) this.oPopup.IdleTime = this.IdleTime this.oPopup.Language = this.Language * this.oPopup.ShowForm(this.Left, this.Top + this.Height - 1) this.oPopup.ShowForm(OBJTOCLIENT(this, 2), OBJTOCLIENT(this,1) + this.Height - 1) ENDIF ENDPROC HIDDEN PROCEDURE value_access WITH this RETURN .txtDate.Value ENDWITH ENDPROC HIDDEN PROCEDURE value_assign LPARAMETERS vNewVal WITH this .txtDate.Value = m.vNewVal ENDWITH ENDPROC PROCEDURE cmdPick.Click this.Parent.LoadCalendar() ENDPROC PROCEDURE Text1.When RETURN .F. ENDPROC PROCEDURE txtDate.Init WITH this IF EMPTY(.Value) .Value = DATE() ENDIF ENDWITH ENDPROC ENDDEFINE DEFINE CLASS _lblday AS label *< CLASSDATA: Baseclass="label" Timestamp="" Scale="Pixels" Uniqueid="" /> * Alignment = 2 BackColor = 255,255,255 Caption = "00" FontName = "Tahoma" FontSize = 8 Height = 15 Name = "_lblday" Width = 15 * PROCEDURE Click WITH this.Parent IF .Enabled .Value = EVALUATE("{^"+TRANSFORM(LEFT(DTOS(.Value),6)+ALLTRIM(this.Caption), "@R 9999-99-99")+"}") .Redraw() .DayClick() ENDIF ENDWITH ENDPROC PROCEDURE MouseDown LPARAMETERS nButton, nShift, nXCoord, nYCoord IF m.nButton == 1 IF this.Parent.Enabled this.BorderStyle = 1 ENDIF ENDIF ENDPROC PROCEDURE MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord IF this.Parent.Enabled this.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) ENDIF ENDPROC PROCEDURE MouseUp LPARAMETERS nButton, nShift, nXCoord, nYCoord IF m.nButton == 1 IF this.Parent.Enabled this.BorderStyle = 0 ENDIF ENDIF ENDPROC ENDDEFINE