Jump to content

Ms Calendar Object


xroot
 Share

Recommended Posts

Here is a calendar with the MS Calendar control (mscal.ocx).
If you don't have the control I found it here: http://www.fontstuff.com/mailbag/qvba01.htm

I used the "Shell.Explorer" object to dump the MS Calendar control into.
Click any day to get the date.
Very basic stuff, please read the help file for any info on the control.

Tested on Win 7/64 and IE 11.

Func I_Quit()
    Exit
EndFunc



Func Cal_Click()
    MsgBox(4160,"Date Clicked!",$cal.month & "/" & $cal.day & "/" & $cal.year,2)
    $cal.month = @MON
    $cal.day   = @MDAY
    $cal.year  = @YEAR
    WinActivate($hWnd)
EndFunc



HotKeySet("{ESC}","I_Quit")

local $W = 500,$H = 400
global $hWnd     = GuiCreate("ms_Calendar",$W,$H)
local  $shellObj = ObjCreate("Shell.Explorer")
GUICtrlCreateObj($shellObj,0,0,$W,$H)

$shellObj.navigate("about:blank")

While $shellObj.busy
    Sleep(10)
WEnd



local $doc  = $shellObj.document
local $body = $doc.body

global $cal = $doc.createElement("object")
With $cal

    .style.position = "absolute"
    .style.left     = 0
    .style.top      = 0
    .style.width    = $W
    .style.height   = $H
    .classid = "clsid:8E27C92B-1264-101C-8A2F-040224009C02"  ;msCalendar object mscal.ocx  found here:-> http://www.fontstuff.com/mailbag/qvba01.htm

    $body.appendChild($cal)                                  ;must be after classid for cal properties to work
    .titlefont.size = 22
    .titlefont.bold = True
    .dayfont.size   = 12
    .dayfont.bold   = True
    .dayfontcolor   = 0x0000ff  ;red
    .gridfont.size  = 14
    .gridfont.bold  = True
    .gridfontcolor  = 0xff0000  ;blue
    .gridcelleffect = 0
    .backcolor      = 0xb7d5ee  ;bisque
EndWith



ObjEvent($cal.Object,"Cal_")

GuiSetState()

While GUIGetMsg() <> -3
    Sleep(10)
WEnd

 

msCalendar.png

Link to comment
Share on other sites

Some help:

Events          Description
AfterUpdate     Occurs after the user moves to a new date in the Calendar control and after the calendar has been refreshed.
BeforeUpdate    Occurs after the user moves to a new date in the Calendar control but before the calendar has been refreshed.
Click           Occurs when the user clicks a date in the Calendar control.
DblClick        Occurs when the user double-clicks a date in the Calendar control.
KeyDown         Occurs when the user presses a key while the Calendar control has the focus.
KeyPress        Occurs when the user presses and releases an ANSI key while the Calendar control has the focus.
KeyUp           Occurs when the user releases a key while the Calendar control has the focus.
NewMonth        Occurs when the Calendar control date changes to a new month.
NewYear         Occurs when the Calendar control date changes to a new year.

Method          Description
AboutBox        Displays the version and copyright information.
NextDay         Increments the value of the Calendar control by one day.
NextMonth       Increments the value of the Calendar control by one month.
NextWeek        Increments the value of the Calendar control by one week.
NextYear        Increments the value of the Calendar control by one year.
PreviousDay     Decrements the value of the Calendar control by one day.
PreviousMonth   Decrements the value of the Calendar control by one month.
PreviousWeek    Decrements the value of the Calendar control by one week.
PreviousYear    Decrements the value of the Calendar control by one year.
Refresh         Repaints the calendar.
Today           Sets the current date to today's date.

Property            Description
BackColor           The background color for the Calendar control.
Day                 The currently selected day of the month.
DayFont             The font used to display the days of the week in the Calendar control.
DayFontColor        The color used to display the days of the week.
DayLength           The format used to display days of the week.
FirstDay            The first day of the week that appears in the Calendar control.
GridCellEffect      The effect used to display the calendar.
GridFont            The font used to display the days of the month in the grid.
GridFontColor       The color of the font used to display the days of the month.
GridLinesColor      The gridline color for a Calendar control whose GridCellEffect property is set to Flat (0).
Month               The month currently displayed in a Calendar control.
MonthLength         The format used to display months of the year.
ShowDateSelectors   The visibility of the month and year date selectors.
ShowDays            The visibility of the days of the week.
ShowHorizontalGrid  The visibility of the horizontal gridlines for a Calendar control whose GridCellEffect property is set to Flat.
ShowTitle           The visibility of the month/year title.
ShowVerticalGrid    The visibility of the vertical gridlines for a Calendar control whose GridCellEffect property is set to Flat.
TitleFont           The font used to display the month/year title above the calendar grid.
TitleFontColor      The color to use when displaying the month/year title.
Value               The date value that corresponds to the selected date in the Calendar control.
ValueIsNull         The appearance of the current date as highlighted or not highlighted.
Year                The currently selected year.

 

Follow the link to my code contribution ( and other things too ).
FAQ - Please Read Before Posting.
autoit_scripter_blue_userbar.png

Link to comment
Share on other sites

Some CleanUp, ..

#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7

#cs
    https://www.autoitscript.com/forum/topic/179631-ms-calendar-object/

    Calendar Control Reference
    https://technet.microsoft.com/en-us/library/ee692611.aspx

    Calendar Control for All Office versions - including Office 2010 64 bit
    https://sites.google.com/site/e90e50/calendar-control-class
#ce


; Error monitoring. This will trap all COM errors while alive.
; This particular object is declared as local, meaning after the function returns it will not exist.
Global $oErrorHandler = ObjEvent("AutoIt.Error", "_ErrFunc")

HotKeySet("{ESC}", "I_Quit")

Local $W = 500, $H = 400
Global $hWnd = GUICreate("ms_Calendar", $W, $H)
Local $shellObj = ObjCreate("Shell.Explorer")
GUICtrlCreateObj($shellObj, 0, 0, $W, $H)

$shellObj.navigate("about:blank")

While $shellObj.busy
    Sleep(10)
WEnd

Local $oDocument = $shellObj.document
Local $oBody = $oDocument.body

Global $oCalendar = $oDocument.createElement("object")
With $oCalendar

    With $oCalendar.style
        .position = "absolute"
        .left = 0
        .top = 0
        .width = $W
        .height = $H
    EndWith

    .classid = "clsid:8E27C92B-1264-101C-8A2F-040224009C02" ;msCalendar object mscal.ocx  found here:-> http://www.fontstuff.com/mailbag/qvba01.htm

    $oBody.appendChild($oCalendar) ;must be after classid for cal properties to work

    .titlefont.size = 22
    .titlefont.bold = True
    .dayfont.size = 12
    .dayfont.bold = True
    .dayfontcolor = 0x0000ff ;red
    .gridfont.size = 14
    .gridfont.bold = True
    .gridfontcolor = 0xff0000 ;blue
    .gridcelleffect = 0
    .backcolor = 0xb7d5ee ;bisque
EndWith

ObjEvent($oCalendar.Object, "Cal_")

GUISetState()

While GUIGetMsg() <> -3
    Sleep(10)
WEnd

Func I_Quit()
    Exit
EndFunc   ;==>I_Quit


Func Cal_Click()
    MsgBox(4160, "Date Clicked!", $oCalendar.month & "/" & $oCalendar.day & "/" & $oCalendar.year, 2)
    $oCalendar.month = @MON
    $oCalendar.day = @MDAY
    $oCalendar.year = @YEAR
    WinActivate($hWnd)
EndFunc   ;==>Cal_Click

; User's COM error function. Will be called if COM error occurs
Func _ErrFunc($oError)
    ; Do anything here.
    ConsoleWrite(@ScriptName & " (" & $oError.scriptline & ") : ==> COM Error intercepted !" & @CRLF & _
            @TAB & "err.number is: " & @TAB & @TAB & "0x" & Hex($oError.number) & @CRLF & _
            @TAB & "err.windescription:" & @TAB & $oError.windescription & @CRLF & _
            @TAB & "err.description is: " & @TAB & $oError.description & @CRLF & _
            @TAB & "err.source is: " & @TAB & @TAB & $oError.source & @CRLF & _
            @TAB & "err.helpfile is: " & @TAB & $oError.helpfile & @CRLF & _
            @TAB & "err.helpcontext is: " & @TAB & $oError.helpcontext & @CRLF & _
            @TAB & "err.lastdllerror is: " & @TAB & $oError.lastdllerror & @CRLF & _
            @TAB & "err.scriptline is: " & @TAB & $oError.scriptline & @CRLF & _
            @TAB & "err.retcode is: " & @TAB & "0x" & Hex($oError.retcode) & @CRLF & @CRLF)
EndFunc   ;==>_ErrFunc

 

Edited by mLipok

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...