186
How do I change the color to display the marked-dates (EBN-color)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Date := "01/17/2001"
		oCalendar:SelDate := "01/19/2001"
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:FixedCellWidth := 24
		oCalendar:FixedCellHeight := 24
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:VisualAppearance():Add(1,"gBFLBCJwBAEHhEJAAEhABE8GACAADACAxRDgMQBQKAAzQFAYbBlBaERiGQYIJhUAIIRZGMIlVBJNw1DCNIDAWCQCgkNA1STAcLySAAchhEAZAIhGQHfiGNoqRDMczxNBgARZE6QILkaYJAjuNgyTjAdC0NIkTBrIKQBomCTKMhqSI4UpVM6RCKoSx6GSuZ5GUYKegmY5lVpVVIxPZNGwHE6WJThGTpQiOWYDC4LTS2bS4AT7JabZ5nej4JoKb5EWzGN63fhMfSdKChYhqTDcLjrCZfWDXFoABY9RTJHrGb6tPAKMwOcQ2VLZQxyBKmKZHLSQMwzOwMbx2ZpkXZbF4XVbmX4TUyIdQyLSpMy3CaVXbTGw5VqWPZrXDLAAvG5dieEY6jacx5hsfh+G4K4ThudY1hOPgsCYX5lkQVg5DMXg+nqWgGkKDAsgKUYXj4CZxBKfJ9BoLoPE8e5pGkGgTi2IBAlAECAg")
		oCalendar:SetProperty("Background",187/*exMarkerColor*/,0x1000000)
		oCalendar:Events():Add(oCalendar:Date()):Marker := .T.
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
185
How do I change the color to display the marked-dates (solid-color)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Date := "01/17/2001"
		oCalendar:SelDate := "01/19/2001"
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:FixedCellWidth := 24
		oCalendar:FixedCellHeight := 24
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:SetProperty("Background",187/*exMarkerColor*/,0x7f0000ff)
		oCalendar:Events():Add(oCalendar:Date()):Marker := .T.
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
184
How do I change the color to display the marked-dates (line-color)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Date := "01/17/2001"
		oCalendar:SelDate := "01/19/2001"
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:FixedCellWidth := 24
		oCalendar:FixedCellHeight := 24
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:SetProperty("Background",187/*exMarkerColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oCalendar:Events():Add(oCalendar:Date()):Marker := .T.
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
183
ImageSize property on 32 (specifies the size of the control' icons)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ImageSize := 32
		oCalendar:Font():Size := 16
		oCalendar:FixedCellWidth := 72
		oCalendar:FixedCellHeight := 44
		oCalendar:Images("gBJJgBAIDAAEg4AEEKAD/hz/EMNh8TIRNGwAjEZAEXjAojKAjMLjABhkaABAk0plUrlktl0vmExmUzmk1m03nE5nU7nk9miAoE+oVDolFo1HpFJpU5h8Sf9OqFNqUOqNUqdPq9VrFWrlbr1QpdhAFAkFis1ntFptVrtkrpszrNvmVxqk3uVtm1kmF3sdBvF/wGBmV+j9BYGHwWJulfxdax2NyFdx2JlV6l9Nw7AAGZymdz2Cy2GxErvWcz9ivlwyV21cuxugwktzGIzmvwtl0+53U5y0a0Wazmmyu/3dCyOMyXHx/J5nIr9q3uyqnBxFN3G46ma4vb7mD2Ng4nZze00fDkHC7t7us2rOX5tguetpHRlmz4HVqnXk1PjHO+CMPo9MBMC+j2vC8j7wS8cFNI4kBo05UIvfCT/NsnsApU+0Fqg/T+oy/kPxC0sEQfErKQK96+w28UWRI8UGvO8sTLS9r2PWmsMJTDTask3CsIbIEQRA3shOXEEAO/GclJ9" +;
		"FEKrrA8FRbKMXRIlb0JxCkjS1LMswhCcvuel0cv26cSMa8Ufx+2sQwhEUoSXOCjSbLcnxjKc7sdKUVyq28NtVI71P9P7JxtQEapjQ6fzfM8zPfNE2PhIsLL63E40slk5y7N89LcyU9SvMb3SdUc6VJLj5VLVLfO/PS9KzNFHUa/0XyBD0dxlS9cxhMlTRSoNXypPErWDPyfNS+MwprRNO0FD8wVVZ1AI08URwVRjtJ1WCn21QkkUrXVLVPQS/XIkFgTxT9iONZ9xVTdq+L1eKg3kkF6Upe68XtfV51/MtrVjBlwYFL1ev8y1/P6/lyzzYl02wntj0RVFmS1Qa+M5as93QxEUW9e993rfmQ2+vy65M/mL1lhl/2bj2ByVduMtNhCJT9hdz41nN14Ld12Z9UjfI/oUAaGseiw6+uFLLhcVabJOS5RqOE0BHlZ5VnEr5fOMs3st+aa/bbRzrJGV51Y0b0DbqaWXZD90hIsPbjWu52+6Wyadpe66hhO+P/Xi" +;
		"oW5rD8ZbrUZuVg6n1dsE/cXmewu1m9PVwnd35/nueXho/NaJzmjc61W76esuT77eG8pTquy9TwWH8LEzG8RDfFalx3Gcfvna9rvG/cptGLd9tuI6TZOP5Fiqi99vea+X4VRcBq/JZZtVQ9cwSs5lsXE372+a9z7PbfB3VVqHyvMctLto8uob6eV0m/cD6MN2v+T33t6sBut42vdv2bJ8a997x2maFJfK+qArbGJPEKE+1qTflMsIdW/GCJX17KcT6/czr/X+u1g29B7j/4BQfWkkx4zIHisjhPCmE0K4SwtXM+d4BvHRwNZOoBph9IJvPek9d40FoMJxf691jj2ywQQcHEWET4XJwkTszlVqm2GokewxtBT1DpQjRxDN0rUVDNKdC3lb6tzNOwh6upMSSYfv4YBCl/bsn9PxiFCEo7SI6Obc9HeOrnY8x4jtHtdpN4GRbaorhsbu18Pph5CiHymI0RpSXGJ/z2oUOxYxG858AyiI+bfJtuTcG5yelBJy" +;
		"T8okhqFd4a5yxL0rvulYtKCsZiWxWkc1s1cRoxxwhA31DLE0mR9l9HqX8fJgTDmFMVH0MIsRzVYnwnMi1dyzmhLt2kS2pxIiU62Wj5ptQGlSYFakLonTUJNLKaM5WzlffEkuFkk5wTrhVO2eE7G6lJhxFFYUZ55zmn0WuBCD4pzhirFCKkbomsOoIYmZx5p90LoYWGPdD5g0QmJRKYxbZ6zYoVQ2jVGylSak7KSkFH6RSjpHKFuU+YMyNo5SulkC6I0vonTCitMXPoEpVS2H5FQfEqp2R1opIgAEkJISYARTCukOhmPNI5Ex/wzGHUsicMwA1LHgQ90Y/KpoQHAD+pB/R4NzIaMAB9Xaw1gqaAOsh/A/ptIkWUfhGK1kZH8RgH5GqvgArqRmt4AAPrTroRofBGADkqr6Rmu4D7CEaHARiwpJrEEZsXXwlVjyMWRsaRqwdkLGNBABZmytmyMnaINZqyVpLR2ftKAAAdd6h2osbaskdiq4EZtgSmyNcbVW" +;
		"RJNXe3AA7REar3b0stlAAXBtoRmvJGLjEYAHUWsFcwCD/rnaop9aEICMAPdK5hT6xpeuzdOtAgKuJeGfdq6ggEbkTvAP+p9UCHXrvKkcgIA==")
		oCalendar:DrawGridLine := 1/*SmallDots*/
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1
		oCalendar:Events():Add(oCalendar:Date()):Image := 1
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
182
ImageSize property on 16 (default) (specifies the size of the control' icons)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ImageSize := 16
		oCalendar:FixedCellWidth := 36
		oCalendar:FixedCellHeight := 22
		oCalendar:Images("gBJJgBAIDAAEg4ACEKAD/hz/EMNh8TIRNGwAjEZAEXjAojJAjMLjABAAgjUYkUnlUrlktl0vmExmUzmk1m03nE5nU7nkrQCAntBoVDolFo1HoM/ADAplLptImdMYFOqdSqlXq1QrVbrlGpVWsFNrNdnNjsk7pQAtNroFnt0sh8Yr9iulTuNxs1Eu8OiT/vsnsNVutXlk/oGGtVKxGLxWNtsZtN8iUYuNvy0Zvd+xNYwdwvl4p870GCqc8vOeuVttmp1knyOayWVy+WzN/ze1wOElenm+12WUz/Bv2/3UyyWrzeutux2GSyGP2dQ33C1ur3GD3M4zUNzHdlWjq/E3nGzVpjWv4HA7fRy/Tv2IrN8rPW6nZ3ve7mUlfu20Z8acvQyb+vY9jasYoDwMm+LytVBDqKG3z8O3Cb8P+mkAuY9cCQ2uL4KaxDKvkp8RNLEjqugnrwQo/UWPzFyeQw5sNLZFENrI4kOqU66pw8uzmOKvTqNqjULJvGL1JO48GtT" +;
		"GsbLdEL3scxLlyiw8dQeoUVxdLTtyKmUjwGlslRPJsnK1HbAKbKCrsQo8uQk/CeP44iaR/ATnTNPLvyxPU+z9P9AUDQVBowiofJXQ6Oo+kKMpIkjztE4TKn4P6JowfgPnwD5/nAjB8AOeAPo0eAA1IAFH07UhAIMpYAVIYFHqBUhwVjV1S1EtQAHxW65V0AZwAeuQAnwB5gAPYViEDVhwAHTQBkCjB4gOhwDmCyhH0sACAg==")
		oCalendar:DrawGridLine := 1/*SmallDots*/
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1
		oCalendar:Events():Add(oCalendar:Date()):Image := 1
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
181
Is it possible to view all events the control fires
PROCEDURE OnEvent(oCalendar,EventID)
	DevOut( Transform(oCalendar:EventParam(-2),"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:Event := {|EventID| OnEvent(oCalendar,EventID)} /*Notifies the application once the control fires an event.*/


	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
180
Recurrence: Every Monday (using 'value' format)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/29/1997")
			oEvent:Repetitive := "weekday(value) = 1"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
179
Recurrence: The 2nd to last weekday of the month

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/29/1997")
			oEvent:Repetitive := "FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
178
Recurrence: The 3rd instance into the month of one of Tuesday, Wednesday or Thursday, for the next 3 months

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/04/1997")
			oEvent:Repetitive := "FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
177
Recurrence: The last work day of the month

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:ShowWeeks := .T.
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("08/05/1997")
			oEvent:Repetitive := "FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
176
Recurrence: An example where the days generated makes a difference because of WKST (Sample 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 1/*Sunday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:ShowWeeks := .T.
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("08/05/1997")
			oEvent:Repetitive := "FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
175
Recurrence: An example where the days generated makes a difference because of WKST (Sample 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:ShowWeeks := .T.
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("08/05/1997")
			oEvent:Repetitive := "FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
174
Recurrence: Every four years, the first Tuesday after a Monday in November, forever (U.S. Presidential Election day)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1996"
		oEvent := oCalendar:Events():Add("11/05/1996")
			oEvent:Repetitive := "FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
173
Recurrence: The first Saturday that follows the first Sunday of the month, forever

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/13/1997")
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:Repetitive := "FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13"
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
172
Recurrence: Every Friday the 13th, forever

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/02/1997")
			oEvent:Repetitive := "FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
171
Recurrence: Every Thursday, but only during June, July, and August, forever

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("06/05/1997")
			oEvent:Repetitive := "FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
170
Recurrence: Every Thursday in March, forever

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("03/13/1997")
			oEvent:Repetitive := "FREQ=YEARLY;BYMONTH=3;BYDAY=TH"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
169
Recurrence: Monday of week number 20 (where the default start of the week is Monday), forever

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:ShowWeeks := .T.
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("05/12/1997")
			oEvent:Repetitive := "FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
168
Recurrence: Every 20th Monday of the year, forever

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("01/01/1997")
			oEvent:Repetitive := "FREQ=YEARLY;BYDAY=20MO"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
167
Recurrence: Every 3rd year on the 1st, 100th and 200th day for 10 occurrences

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("01/01/1997")
			oEvent:Repetitive := "FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
166
Recurrence: Every other year on January, February, and March for 10 occurrences

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("03/10/1997")
			oEvent:Repetitive := "FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
165
Recurrence: Yearly in June and July for 10 occurrences

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("06/10/1997")
			oEvent:Repetitive := "FREQ=YEARLY;COUNT=10;BYMONTH=6,7"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
164
Recurrence: Every Tuesday, every other month

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/02/1997")
			oEvent:Repetitive := "FREQ=MONTHLY;INTERVAL=2;BYDAY=TU"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
163
Recurrence: Every 18 months on the 10th thru 15th of the month for 10 occurrences

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/10/1997")
			oEvent:Repetitive := "FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14,15"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
162
Recurrence: Monthly on the first and last day of the month for 10 occurrences

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/03/1997")
			oEvent:Repetitive := "FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
161
Recurrence: Monthly on the 2nd and 15th of the month for 10 occurrences

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/02/1997")
			oEvent:Repetitive := "FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
160
Recurrence: Monthly on the third to the last day of the month, forever

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/28/1997")
			oEvent:Repetitive := "FREQ=MONTHLY;BYMONTHDAY=-3"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
159
Recurrence: Monthly on the second to last Monday of the month for 6 months

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/22/1997")
			oEvent:Repetitive := "FREQ=MONTHLY;COUNT=6;BYDAY=-2MO"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
158
Recurrence: Every other month on the 1st and last Sunday of the month for 10 occurrences

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/07/1997")
			oEvent:Repetitive := "FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
157
Recurrence: Monthly on the 1st Friday until December 24, 1997

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/05/1997")
			oEvent:Repetitive := "FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
156
Recurrence: Monthly on the 1st Friday for ten occurrences

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/05/1997")
			oEvent:Repetitive := "FREQ=MONTHLY;COUNT=10;BYDAY=1FR"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
155
Recurrence: Every other week on Tuesday and Thursday, for 8 occurrences

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 1/*Sunday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/02/1997")
			oEvent:Repetitive := "FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
154
Recurrence: Every other week on Monday, Wednesday and Friday until December 24, 1997, but starting on Tuesday, September 2, 1997

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 1/*Sunday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/02/1997")
			oEvent:Repetitive := "FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU;BYDAY=MO,WE,FR"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
153
Recurrence: Weekly on Tuesday and Thursday for 5 weeks

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 1/*Sunday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/02/1997")
			oEvent:Repetitive := "FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
152
Recurrence: Weekly on Tuesday and Thursday for 5 weeks

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/02/1997")
			oEvent:Repetitive := "FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
151
Recurrence: Every other day - forever

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/02/1997")
			oEvent:Repetitive := "FREQ=DAILY;INTERVAL=2"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
150
Recurrence: Daily until December 24, 1997

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/02/1997")
			oEvent:Repetitive := "FREQ=DAILY;UNTIL=19971224T000000Z"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
149
Recurrence: Daily for 10 occurrences

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:ShowMonthSelector := .F.
		oCalendar:MaxMonthX := 4
		oCalendar:MinMonthX := 4
		oCalendar:MinMonthY := 3
		oCalendar:MaxMonthY := 3
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 220,220,220 } )  , .F. ))
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:Date := "01/01/1997"
		oEvent := oCalendar:Events():Add("09/02/1997")
			oEvent:Repetitive := "FREQ=DAILY;COUNT=10"
			oEvent:Bold := .T.
			oEvent:SetProperty("ForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oEvent:BackgroundExt := "bottom[4,back=RGB(255,0,0)]"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
148
How can I show a single month

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1
		oCalendar:ShowTodayButton := .F.
		oCalendar:ShowMonthSelector := .F.
		oCalendar:ShowYearScroll := .F.
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:ShowWeeks := .T.
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
147
How can I display the week-number in ISO8601 format

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:DisplayWeekNumberAs := 0/*exISO8601WeekNumber*/
		oCalendar:Date := "01/01/2001"
		oCalendar:MinMonthX := 3
		oCalendar:MaxMonthX := oCalendar:MinMonthX()
		oCalendar:MinMonthY := 4
		oCalendar:MaxMonthY := oCalendar:MinMonthY()
		oCalendar:ShowWeeks := .T.
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
146
Can I include the month's number in the date header

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oAppearance

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "1,(" + CHR(34) + "" + CHR(34) + "[b=0],(" + CHR(34) + "" + CHR(34) + "[b=0]/24;2[b=0][bg=0x01000000]/" + CHR(34) + "" + CHR(34) + "[b=0]):24," + CHR(34) + "" + CHR(34) + "[b=0]):32,(" + CHR(34) + "" + CHR(34) + "[b=0],(" + CHR(34) + "" + CHR(34) + "[b=0]/24;3[b=0][bg=0x01000000]/" + CHR(34) + "" + CHR(34) + "[b=0]):24," + CHR(34) + "" + CHR(34) + "[b=0]):32"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/,"`<c><%month%> (` + (dateF(value) left 2) + `) <r><off -6><font ;6><%year%>`")
		oAppearance := oCalendar:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYIkWA5AiKEYoThCIxzTJ8aw3CKbYRAKCXfoUAJFP7Fc6ABJMBx3EyhZ89NDYEwTIKBahoehqIheEQyDSJNb2DCIahhMSEbKtCooDhGFpUWzLdxTJJVawHJoABjkS45PjEAJ+SBPUZVRRlFyfO7BKSjMKKXgkG4zABWVa1bC1FzxQ6mKykKQLQADDIDVZAeL3JTNCS5IyLLDtO77EqmZ5la7cUgRDj4AY7Ua+MzubBZaovOqDYzAey7TDWLRXFDNIzzTgQAyHHrETZHGqwJxMAEapYGqYpVi2HwzDuQ5oHKIQgggSSUGMOgdE4RhYDwJBVAwIQTH2UYhjQJBRAmZxuCEHZ3icJp5EgKxgAIVgCCQSQSEIBQkCAYhCAIJYKmKNIuFcTBIESPYEk6GBUm+" +;
		"BZOmOPgZgWYRTiYEwvEwaIEAAK4KnKOJrgmTpDjCbYJmKSI2CoOxihOLglCuAACioNg8COA4gmcOZOiidg+g+Dh4moOA8CMYokNmCoyiycQ8E8A4iE6D4OjOMgng8ZJjiITA8CSEouEcKwKkkLJyhQIoIkYU9LjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDZQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARVhnH4HQOYmxuCpF2MsecEQVBvGQCcIQug6itGQBoARAQ=")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
145
How can I display the previously/next month in the date header

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "2[b=0][bg=RGB(240,240,240)]:32,1,3[b=0][bg=RGB(240,240,240)]:32"
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"`<c>` + ( ( ((0:=((month(value) - 1) - 1) ) < 0 ? 11 : =:0 ) array `January February March April May June July August September October November December` split ` ` ) left 3 ) ")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"`<c>` + ( ( ((0:=((month(value) - 1) + 1) ) = 12 ? 0 : =:0 ) array `January February March April May June July August September October November December` split ` ` ) left 3 ) ")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
144
How can I display the year to a different position

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "6/(1,2[bg=RGB(196,196,196)]:32,3[bg=RGB(196,196,196)]:32)"
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/,"<c><%month%>")
		oCalendar:SetProperty("DateHeaderField",6/*exHeaderPrevYear+exHeaderPrevMonth*/,"<r><b><%year%>")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
143
Can I display some extra text/caption on the month's header

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "(" + CHR(34) + "<sha ;;0>calendar" + CHR(34) + "[a=17]/1),2:32,3:32"
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/,"<c><b><%month%>")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
142
How can I display no year on th month's header

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "1,2:32,3:32"
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/,"<c><b><%month%>")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
141
How can I arrange the month's header ( first and last month only, prev month, next, prev year, picture, ebn, expression)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oAppearance

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := " (( xmax * ymax ) = 1 ) ? `2[b=0][bg=0x01000000]:32,1,3[b=0][bg=0x01000000]:32` : ( ( x = 0 and y = 0 ) ? `2[b=0][bg=0x01000000]:32,1`: ( ( x = xmax - 1 and y = ymax - 1 ) ? `1,3[b=0][bg=0x01000000]:32`: `1` ) )"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/," ( ( ( month(value) = month(date(``) ) and ( year(value) = year(date(``) ) ) ) ) ? `<b><fgcolor=0000FF>` : `` ) + `<c><%month%></b> <off -6><font ;7><%year%>`")
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","left","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJUJJEIJUPDaMZkEANWACeJvMgBIwSGgXAaxGIQI6RMYAJBzFQQHYBeIzKQNYCpTIYAbwNQmMgAILNfAMEBKGYuAaIaxMGYDFD2ARVASRNBDNCeSAIDRCW7MAgDDDZDIAKbADgRVrfUCNiIAJJFJxEVxCMCCgI")
		oCalendar:SetProperty("HTMLPicture","right","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiJEJJEIJUHBPMbAARYUI0KKADJKEaDEpAVgAYjHYI8GSACgQb4AcRiGCPJgwNQIEzANIICaUUwpUDIBYjKIzBAsAZiWQ1QYABLZTKBAIATL2CUxXJdV8RABJIpOIiuIRgQUBA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",4/*exHeaderPrevYear*/,"<c><img>left</img>")
		oCalendar:SetProperty("DateHeaderField",5/*exHeaderNextYear*/,"<c><img>right</img>")
		oAppearance := oCalendar:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYIkWA5AiKEYoThCIxzTJ8aw3CKbYRAKCXfoUAJFP7Fc6ABJMBx3EyhZ89NDYEwTIKBahoehqIheEQyDSJNb2DCIahhMSEbKtCooDhGFpUWzLdxTJJVawHJoABjkS45PjEAJ+SBPUZVRRlFyfO7BKSjMKKXgkG4zABWVa1bC1FzxQ6mKykKQLQADDIDVZAeL3JTNCS5IyLLDtO77EqmZ5la7cUgRDj4AY7Ua+MzubBZaovOqDYzAey7TDWLRXFDNIzzTgQAyHHrETZHGqwJxMAEapYGqYpVi2HwzDuQ5oHKIQgggSSUGMOgdE4RhYDwJBVAwIQTH2UYhjQJBRAmZxuCEHZ3icJp5EgKxgAIVgCCQSQSEIBQkCAYhCAIJYKmKNIuFcTBIESPYEk6GBUm+" +;
		"BZOmOPgZgWYRTiYEwvEwaIEAAK4KnKOJrgmTpDjCbYJmKSI2CoOxihOLglCuAACioNg8COA4gmcOZOiidg+g+Dh4moOA8CMYokNmCoyiycQ8E8A4iE6D4OjOMgng8ZJjiITA8CSEouEcKwKkkLJyhQIoIkYU9LjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDZQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARVhnH4HQOYmxuCpF2MsecEQVBvGQCcIQug6itGQBoARAQ=")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
140
How can I arrange the month's header ( first month only, prev month, next, prev year, picture, ebn, expression)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oAppearance

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "( x = 0 and y = 0 ) ? `(2[b=0][bg=0x01000000]/3[b=0][bg=0x01000000]):32,1`: `1`"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/," ( ( ( month(value) = month(date(``) ) and ( year(value) = year(date(``) ) ) ) ) ? `<b><fgcolor=0000FF>` : `` ) + `<c><%month%> <%year%>`")
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","left","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJUJJEIJUPDaMZkEANWACeJvMgBIwSGgXAaxGIQI6RMYAJBzFQQHYBeIzKQNYCpTIYAbwNQmMgAILNfAMEBKGYuAaIaxMGYDFD2ARVASRNBDNCeSAIDRCW7MAgDDDZDIAKbADgRVrfUCNiIAJJFJxEVxCMCCgI")
		oCalendar:SetProperty("HTMLPicture","right","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiJEJJEIJUHBPMbAARYUI0KKADJKEaDEpAVgAYjHYI8GSACgQb4AcRiGCPJgwNQIEzANIICaUUwpUDIBYjKIzBAsAZiWQ1QYABLZTKBAIATL2CUxXJdV8RABJIpOIiuIRgQUBA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",4/*exHeaderPrevYear*/,"<c><img>left</img>")
		oCalendar:SetProperty("DateHeaderField",5/*exHeaderNextYear*/,"<c><img>right</img>")
		oAppearance := oCalendar:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYIkWA5AiKEYoThCIxzTJ8aw3CKbYRAKCXfoUAJFP7Fc6ABJMBx3EyhZ89NDYEwTIKBahoehqIheEQyDSJNb2DCIahhMSEbKtCooDhGFpUWzLdxTJJVawHJoABjkS45PjEAJ+SBPUZVRRlFyfO7BKSjMKKXgkG4zABWVa1bC1FzxQ6mKykKQLQADDIDVZAeL3JTNCS5IyLLDtO77EqmZ5la7cUgRDj4AY7Ua+MzubBZaovOqDYzAey7TDWLRXFDNIzzTgQAyHHrETZHGqwJxMAEapYGqYpVi2HwzDuQ5oHKIQgggSSUGMOgdE4RhYDwJBVAwIQTH2UYhjQJBRAmZxuCEHZ3icJp5EgKxgAIVgCCQSQSEIBQkCAYhCAIJYKmKNIuFcTBIESPYEk6GBUm+" +;
		"BZOmOPgZgWYRTiYEwvEwaIEAAK4KnKOJrgmTpDjCbYJmKSI2CoOxihOLglCuAACioNg8COA4gmcOZOiidg+g+Dh4moOA8CMYokNmCoyiycQ8E8A4iE6D4OjOMgng8ZJjiITA8CSEouEcKwKkkLJyhQIoIkYU9LjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDZQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARVhnH4HQOYmxuCpF2MsecEQVBvGQCcIQug6itGQBoARAQ=")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
139
How can I arrange the month's header ( all, left, right, prev month, next, prev year, picture, ebn)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oAppearance

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "(2[b=0][bg=0x01000000]/4[b=0][bg=0x01000000]):32,1,(3[b=0][bg=0x01000000]/5[b=0][bg=0x01000000]):32"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/," ( ( ( month(value) = month(date(``) ) and ( year(value) = year(date(``) ) ) ) ) ? `<b><fgcolor=0000FF>` : `` ) + `<c><%month%> <%year%>`")
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","left","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJUJJEIJUPDaMZkEANWACeJvMgBIwSGgXAaxGIQI6RMYAJBzFQQHYBeIzKQNYCpTIYAbwNQmMgAILNfAMEBKGYuAaIaxMGYDFD2ARVASRNBDNCeSAIDRCW7MAgDDDZDIAKbADgRVrfUCNiIAJJFJxEVxCMCCgI")
		oCalendar:SetProperty("HTMLPicture","right","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiJEJJEIJUHBPMbAARYUI0KKADJKEaDEpAVgAYjHYI8GSACgQb4AcRiGCPJgwNQIEzANIICaUUwpUDIBYjKIzBAsAZiWQ1QYABLZTKBAIATL2CUxXJdV8RABJIpOIiuIRgQUBA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",4/*exHeaderPrevYear*/,"<c><img>left</img>")
		oCalendar:SetProperty("DateHeaderField",5/*exHeaderNextYear*/,"<c><img>right</img>")
		oAppearance := oCalendar:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYIkWA5AiKEYoThCIxzTJ8aw3CKbYRAKCXfoUAJFP7Fc6ABJMBx3EyhZ89NDYEwTIKBahoehqIheEQyDSJNb2DCIahhMSEbKtCooDhGFpUWzLdxTJJVawHJoABjkS45PjEAJ+SBPUZVRRlFyfO7BKSjMKKXgkG4zABWVa1bC1FzxQ6mKykKQLQADDIDVZAeL3JTNCS5IyLLDtO77EqmZ5la7cUgRDj4AY7Ua+MzubBZaovOqDYzAey7TDWLRXFDNIzzTgQAyHHrETZHGqwJxMAEapYGqYpVi2HwzDuQ5oHKIQgggSSUGMOgdE4RhYDwJBVAwIQTH2UYhjQJBRAmZxuCEHZ3icJp5EgKxgAIVgCCQSQSEIBQkCAYhCAIJYKmKNIuFcTBIESPYEk6GBUm+" +;
		"BZOmOPgZgWYRTiYEwvEwaIEAAK4KnKOJrgmTpDjCbYJmKSI2CoOxihOLglCuAACioNg8COA4gmcOZOiidg+g+Dh4moOA8CMYokNmCoyiycQ8E8A4iE6D4OjOMgng8ZJjiITA8CSEouEcKwKkkLJyhQIoIkYU9LjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDZQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARVhnH4HQOYmxuCpF2MsecEQVBvGQCcIQug6itGQBoARAQ=")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
138
How can I arrange the month's header ( all, left, right, prev month, next, prev year, picture, ebn)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oAppearance

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "2[b=0][bg=0x01000000]:32,3[b=0][bg=0x01000000]:32,1,4[b=0][bg=0x01000000]:32,5[b=0][bg=0x01000000]:32"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/," ( ( ( month(value) = month(date(``) ) and ( year(value) = year(date(``) ) ) ) ) ? `<b><fgcolor=0000FF>` : `` ) + `<c><%month%> <%year%>`")
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","left","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJUJJEIJUPDaMZkEANWACeJvMgBIwSGgXAaxGIQI6RMYAJBzFQQHYBeIzKQNYCpTIYAbwNQmMgAILNfAMEBKGYuAaIaxMGYDFD2ARVASRNBDNCeSAIDRCW7MAgDDDZDIAKbADgRVrfUCNiIAJJFJxEVxCMCCgI")
		oCalendar:SetProperty("HTMLPicture","right","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiJEJJEIJUHBPMbAARYUI0KKADJKEaDEpAVgAYjHYI8GSACgQb4AcRiGCPJgwNQIEzANIICaUUwpUDIBYjKIzBAsAZiWQ1QYABLZTKBAIATL2CUxXJdV8RABJIpOIiuIRgQUBA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",4/*exHeaderPrevYear*/,"<c><img>left</img>")
		oCalendar:SetProperty("DateHeaderField",5/*exHeaderNextYear*/,"<c><img>right</img>")
		oAppearance := oCalendar:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYIkWA5AiKEYoThCIxzTJ8aw3CKbYRAKCXfoUAJFP7Fc6ABJMBx3EyhZ89NDYEwTIKBahoehqIheEQyDSJNb2DCIahhMSEbKtCooDhGFpUWzLdxTJJVawHJoABjkS45PjEAJ+SBPUZVRRlFyfO7BKSjMKKXgkG4zABWVa1bC1FzxQ6mKykKQLQADDIDVZAeL3JTNCS5IyLLDtO77EqmZ5la7cUgRDj4AY7Ua+MzubBZaovOqDYzAey7TDWLRXFDNIzzTgQAyHHrETZHGqwJxMAEapYGqYpVi2HwzDuQ5oHKIQgggSSUGMOgdE4RhYDwJBVAwIQTH2UYhjQJBRAmZxuCEHZ3icJp5EgKxgAIVgCCQSQSEIBQkCAYhCAIJYKmKNIuFcTBIESPYEk6GBUm+" +;
		"BZOmOPgZgWYRTiYEwvEwaIEAAK4KnKOJrgmTpDjCbYJmKSI2CoOxihOLglCuAACioNg8COA4gmcOZOiidg+g+Dh4moOA8CMYokNmCoyiycQ8E8A4iE6D4OjOMgng8ZJjiITA8CSEouEcKwKkkLJyhQIoIkYU9LjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDZQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARVhnH4HQOYmxuCpF2MsecEQVBvGQCcIQug6itGQBoARAQ=")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
137
How can I arrange the month's header ( left, right, prev month, next, prev year, picture, ebn)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oAppearance

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "(2[b=0][bg=0x01000000]/3[b=0][bg=0x01000000]):32,1,(4[b=0][bg=0x01000000]/5[b=0][bg=0x01000000]):32"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/," ( ( ( month(value) = month(date(``) ) and ( year(value) = year(date(``) ) ) ) ) ? `<b><fgcolor=0000FF>` : `` ) + `<c><%month%> <%year%>`")
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","left","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJUJJEIJUPDaMZkEANWACeJvMgBIwSGgXAaxGIQI6RMYAJBzFQQHYBeIzKQNYCpTIYAbwNQmMgAILNfAMEBKGYuAaIaxMGYDFD2ARVASRNBDNCeSAIDRCW7MAgDDDZDIAKbADgRVrfUCNiIAJJFJxEVxCMCCgI")
		oCalendar:SetProperty("HTMLPicture","right","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiJEJJEIJUHBPMbAARYUI0KKADJKEaDEpAVgAYjHYI8GSACgQb4AcRiGCPJgwNQIEzANIICaUUwpUDIBYjKIzBAsAZiWQ1QYABLZTKBAIATL2CUxXJdV8RABJIpOIiuIRgQUBA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",4/*exHeaderPrevYear*/,"<c><img>left</img>")
		oCalendar:SetProperty("DateHeaderField",5/*exHeaderNextYear*/,"<c><img>right</img>")
		oAppearance := oCalendar:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYIkWA5AiKEYoThCIxzTJ8aw3CKbYRAKCXfoUAJFP7Fc6ABJMBx3EyhZ89NDYEwTIKBahoehqIheEQyDSJNb2DCIahhMSEbKtCooDhGFpUWzLdxTJJVawHJoABjkS45PjEAJ+SBPUZVRRlFyfO7BKSjMKKXgkG4zABWVa1bC1FzxQ6mKykKQLQADDIDVZAeL3JTNCS5IyLLDtO77EqmZ5la7cUgRDj4AY7Ua+MzubBZaovOqDYzAey7TDWLRXFDNIzzTgQAyHHrETZHGqwJxMAEapYGqYpVi2HwzDuQ5oHKIQgggSSUGMOgdE4RhYDwJBVAwIQTH2UYhjQJBRAmZxuCEHZ3icJp5EgKxgAIVgCCQSQSEIBQkCAYhCAIJYKmKNIuFcTBIESPYEk6GBUm+" +;
		"BZOmOPgZgWYRTiYEwvEwaIEAAK4KnKOJrgmTpDjCbYJmKSI2CoOxihOLglCuAACioNg8COA4gmcOZOiidg+g+Dh4moOA8CMYokNmCoyiycQ8E8A4iE6D4OjOMgng8ZJjiITA8CSEouEcKwKkkLJyhQIoIkYU9LjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDZQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARVhnH4HQOYmxuCpF2MsecEQVBvGQCcIQug6itGQBoARAQ=")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
136
How can I arrange the month's header ( down, next, prev month, next, prev year, picture, ebn)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oAppearance

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "1/16;(2[bg=0x01808080],3[bg=0x01000000])[b=15],(4[bg=0x01808080],5[bg=0x01000000])[b=15]"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/," ( ( ( month(value) = month(date(``) ) and ( year(value) = year(date(``) ) ) ) ) ? `<b><fgcolor=0000FF>` : `` ) + `<c><%month%> <%year%>`")
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","left","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJUJJEIJUPDaMZkEANWACeJvMgBIwSGgXAaxGIQI6RMYAJBzFQQHYBeIzKQNYCpTIYAbwNQmMgAILNfAMEBKGYuAaIaxMGYDFD2ARVASRNBDNCeSAIDRCW7MAgDDDZDIAKbADgRVrfUCNiIAJJFJxEVxCMCCgI")
		oCalendar:SetProperty("HTMLPicture","right","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiJEJJEIJUHBPMbAARYUI0KKADJKEaDEpAVgAYjHYI8GSACgQb4AcRiGCPJgwNQIEzANIICaUUwpUDIBYjKIzBAsAZiWQ1QYABLZTKBAIATL2CUxXJdV8RABJIpOIiuIRgQUBA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",4/*exHeaderPrevYear*/,"<c><img>left</img>")
		oCalendar:SetProperty("DateHeaderField",5/*exHeaderNextYear*/,"<c><img>right</img>")
		oAppearance := oCalendar:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYIkWA5AiKEYoThCIxzTJ8aw3CKbYRAKCXfoUAJFP7Fc6ABJMBx3EyhZ89NDYEwTIKBahoehqIheEQyDSJNb2DCIahhMSEbKtCooDhGFpUWzLdxTJJVawHJoABjkS45PjEAJ+SBPUZVRRlFyfO7BKSjMKKXgkG4zABWVa1bC1FzxQ6mKykKQLQADDIDVZAeL3JTNCS5IyLLDtO77EqmZ5la7cUgRDj4AY7Ua+MzubBZaovOqDYzAey7TDWLRXFDNIzzTgQAyHHrETZHGqwJxMAEapYGqYpVi2HwzDuQ5oHKIQgggSSUGMOgdE4RhYDwJBVAwIQTH2UYhjQJBRAmZxuCEHZ3icJp5EgKxgAIVgCCQSQSEIBQkCAYhCAIJYKmKNIuFcTBIESPYEk6GBUm+" +;
		"BZOmOPgZgWYRTiYEwvEwaIEAAK4KnKOJrgmTpDjCbYJmKSI2CoOxihOLglCuAACioNg8COA4gmcOZOiidg+g+Dh4moOA8CMYokNmCoyiycQ8E8A4iE6D4OjOMgng8ZJjiITA8CSEouEcKwKkkLJyhQIoIkYU9LjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDZQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARVhnH4HQOYmxuCpF2MsecEQVBvGQCcIQug6itGQBoARAQ=")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
135
How can I arrange the month's header ( down, next, prev month, picture, ebn)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oAppearance

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "1/16;2[b=0][bg=0x01000000],3[b=0][bg=0x01000000]"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/," ( ( ( month(value) = month(date(``) ) and ( year(value) = year(date(``) ) ) ) ) ? `<b><fgcolor=0000FF>` : `` ) + `<c><%month%> <%year%>`")
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","left","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJUJJEIJUPDaMZkEANWACeJvMgBIwSGgXAaxGIQI6RMYAJBzFQQHYBeIzKQNYCpTIYAbwNQmMgAILNfAMEBKGYuAaIaxMGYDFD2ARVASRNBDNCeSAIDRCW7MAgDDDZDIAKbADgRVrfUCNiIAJJFJxEVxCMCCgI")
		oCalendar:SetProperty("HTMLPicture","right","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiJEJJEIJUHBPMbAARYUI0KKADJKEaDEpAVgAYjHYI8GSACgQb4AcRiGCPJgwNQIEzANIICaUUwpUDIBYjKIzBAsAZiWQ1QYABLZTKBAIATL2CUxXJdV8RABJIpOIiuIRgQUBA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",4/*exHeaderPrevYear*/,"<c><img>left</img>")
		oCalendar:SetProperty("DateHeaderField",5/*exHeaderNextYear*/,"<c><img>right</img>")
		oAppearance := oCalendar:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYIkWA5AiKEYoThCIxzTJ8aw3CKbYRAKCXfoUAJFP7Fc6ABJMBx3EyhZ89NDYEwTIKBahoehqIheEQyDSJNb2DCIahhMSEbKtCooDhGFpUWzLdxTJJVawHJoABjkS45PjEAJ+SBPUZVRRlFyfO7BKSjMKKXgkG4zABWVa1bC1FzxQ6mKykKQLQADDIDVZAeL3JTNCS5IyLLDtO77EqmZ5la7cUgRDj4AY7Ua+MzubBZaovOqDYzAey7TDWLRXFDNIzzTgQAyHHrETZHGqwJxMAEapYGqYpVi2HwzDuQ5oHKIQgggSSUGMOgdE4RhYDwJBVAwIQTH2UYhjQJBRAmZxuCEHZ3icJp5EgKxgAIVgCCQSQSEIBQkCAYhCAIJYKmKNIuFcTBIESPYEk6GBUm+" +;
		"BZOmOPgZgWYRTiYEwvEwaIEAAK4KnKOJrgmTpDjCbYJmKSI2CoOxihOLglCuAACioNg8COA4gmcOZOiidg+g+Dh4moOA8CMYokNmCoyiycQ8E8A4iE6D4OjOMgng8ZJjiITA8CSEouEcKwKkkLJyhQIoIkYU9LjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDZQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARVhnH4HQOYmxuCpF2MsecEQVBvGQCcIQug6itGQBoARAQ=")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
134
How can I arrange the month's header ( left, right center, next, prev month, picture, ebn)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oAppearance

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "2[b=0][bg=0x01000000],1,3[b=0][bg=0x01000000]"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/," ( ( ( month(value) = month(date(``) ) and ( year(value) = year(date(``) ) ) ) ) ? `<b><fgcolor=0000FF>` : `` ) + `<c><%month%> <%year%>`")
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","left","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJUJJEIJUPDaMZkEANWACeJvMgBIwSGgXAaxGIQI6RMYAJBzFQQHYBeIzKQNYCpTIYAbwNQmMgAILNfAMEBKGYuAaIaxMGYDFD2ARVASRNBDNCeSAIDRCW7MAgDDDZDIAKbADgRVrfUCNiIAJJFJxEVxCMCCgI")
		oCalendar:SetProperty("HTMLPicture","right","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiJEJJEIJUHBPMbAARYUI0KKADJKEaDEpAVgAYjHYI8GSACgQb4AcRiGCPJgwNQIEzANIICaUUwpUDIBYjKIzBAsAZiWQ1QYABLZTKBAIATL2CUxXJdV8RABJIpOIiuIRgQUBA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",4/*exHeaderPrevYear*/,"<c><img>left</img>")
		oCalendar:SetProperty("DateHeaderField",5/*exHeaderNextYear*/,"<c><img>right</img>")
		oAppearance := oCalendar:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYIkWA5AiKEYoThCIxzTJ8aw3CKbYRAKCXfoUAJFP7Fc6ABJMBx3EyhZ89NDYEwTIKBahoehqIheEQyDSJNb2DCIahhMSEbKtCooDhGFpUWzLdxTJJVawHJoABjkS45PjEAJ+SBPUZVRRlFyfO7BKSjMKKXgkG4zABWVa1bC1FzxQ6mKykKQLQADDIDVZAeL3JTNCS5IyLLDtO77EqmZ5la7cUgRDj4AY7Ua+MzubBZaovOqDYzAey7TDWLRXFDNIzzTgQAyHHrETZHGqwJxMAEapYGqYpVi2HwzDuQ5oHKIQgggSSUGMOgdE4RhYDwJBVAwIQTH2UYhjQJBRAmZxuCEHZ3icJp5EgKxgAIVgCCQSQSEIBQkCAYhCAIJYKmKNIuFcTBIESPYEk6GBUm+" +;
		"BZOmOPgZgWYRTiYEwvEwaIEAAK4KnKOJrgmTpDjCbYJmKSI2CoOxihOLglCuAACioNg8COA4gmcOZOiidg+g+Dh4moOA8CMYokNmCoyiycQ8E8A4iE6D4OjOMgng8ZJjiITA8CSEouEcKwKkkLJyhQIoIkYU9LjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDZQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARVhnH4HQOYmxuCpF2MsecEQVBvGQCcIQug6itGQBoARAQ=")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
133
How can I arrange the month's header (right up down, next, prev month, picture, ebn)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oAppearance

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "1,(2[b=0][bg=0x01000000]/3[b=0][bg=0x01000000]):32"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/," ( ( ( month(value) = month(date(``) ) and ( year(value) = year(date(``) ) ) ) ) ? `<b><fgcolor=0000FF>` : `` ) + `<c><%month%> <%year%>`")
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","left","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJUJJEIJUPDaMZkEANWACeJvMgBIwSGgXAaxGIQI6RMYAJBzFQQHYBeIzKQNYCpTIYAbwNQmMgAILNfAMEBKGYuAaIaxMGYDFD2ARVASRNBDNCeSAIDRCW7MAgDDDZDIAKbADgRVrfUCNiIAJJFJxEVxCMCCgI")
		oCalendar:SetProperty("HTMLPicture","right","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiJEJJEIJUHBPMbAARYUI0KKADJKEaDEpAVgAYjHYI8GSACgQb4AcRiGCPJgwNQIEzANIICaUUwpUDIBYjKIzBAsAZiWQ1QYABLZTKBAIATL2CUxXJdV8RABJIpOIiuIRgQUBA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",4/*exHeaderPrevYear*/,"<c><img>left</img>")
		oCalendar:SetProperty("DateHeaderField",5/*exHeaderNextYear*/,"<c><img>right</img>")
		oAppearance := oCalendar:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYIkWA5AiKEYoThCIxzTJ8aw3CKbYRAKCXfoUAJFP7Fc6ABJMBx3EyhZ89NDYEwTIKBahoehqIheEQyDSJNb2DCIahhMSEbKtCooDhGFpUWzLdxTJJVawHJoABjkS45PjEAJ+SBPUZVRRlFyfO7BKSjMKKXgkG4zABWVa1bC1FzxQ6mKykKQLQADDIDVZAeL3JTNCS5IyLLDtO77EqmZ5la7cUgRDj4AY7Ua+MzubBZaovOqDYzAey7TDWLRXFDNIzzTgQAyHHrETZHGqwJxMAEapYGqYpVi2HwzDuQ5oHKIQgggSSUGMOgdE4RhYDwJBVAwIQTH2UYhjQJBRAmZxuCEHZ3icJp5EgKxgAIVgCCQSQSEIBQkCAYhCAIJYKmKNIuFcTBIESPYEk6GBUm+" +;
		"BZOmOPgZgWYRTiYEwvEwaIEAAK4KnKOJrgmTpDjCbYJmKSI2CoOxihOLglCuAACioNg8COA4gmcOZOiidg+g+Dh4moOA8CMYokNmCoyiycQ8E8A4iE6D4OjOMgng8ZJjiITA8CSEouEcKwKkkLJyhQIoIkYU9LjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDZQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARVhnH4HQOYmxuCpF2MsecEQVBvGQCcIQug6itGQBoARAQ=")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
132
How can I arrange the month's header (left, next, prev month, picture, ebn)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oAppearance

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "(" + CHR(34) + "" + CHR(34) + "[b=0],(" + CHR(34) + "" + CHR(34) + "[b=0]/24;2[b=0][bg=0x01000000]/" + CHR(34) + "" + CHR(34) + "[b=0]):24," + CHR(34) + "" + CHR(34) + "[b=0]):32,(" + CHR(34) + "" + CHR(34) + "[b=0],(" + CHR(34) + "" + CHR(34) + "[b=0]/24;3[b=0][bg=0x01000000]/" + CHR(34) + "" + CHR(34) + "[b=0]):24," + CHR(34) + "" + CHR(34) + "[b=0]):32,1"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/," ( ( ( month(value) = month(date(``) ) and ( year(value) = year(date(``) ) ) ) ) ? `<b><fgcolor=0000FF>` : `` ) + `<c><%month%> <%year%>`")
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","left","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJUJJEIJUPDaMZkEANWACeJvMgBIwSGgXAaxGIQI6RMYAJBzFQQHYBeIzKQNYCpTIYAbwNQmMgAILNfAMEBKGYuAaIaxMGYDFD2ARVASRNBDNCeSAIDRCW7MAgDDDZDIAKbADgRVrfUCNiIAJJFJxEVxCMCCgI")
		oCalendar:SetProperty("HTMLPicture","right","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiJEJJEIJUHBPMbAARYUI0KKADJKEaDEpAVgAYjHYI8GSACgQb4AcRiGCPJgwNQIEzANIICaUUwpUDIBYjKIzBAsAZiWQ1QYABLZTKBAIATL2CUxXJdV8RABJIpOIiuIRgQUBA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",4/*exHeaderPrevYear*/,"<c><img>left</img>")
		oCalendar:SetProperty("DateHeaderField",5/*exHeaderNextYear*/,"<c><img>right</img>")
		oAppearance := oCalendar:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYIkWA5AiKEYoThCIxzTJ8aw3CKbYRAKCXfoUAJFP7Fc6ABJMBx3EyhZ89NDYEwTIKBahoehqIheEQyDSJNb2DCIahhMSEbKtCooDhGFpUWzLdxTJJVawHJoABjkS45PjEAJ+SBPUZVRRlFyfO7BKSjMKKXgkG4zABWVa1bC1FzxQ6mKykKQLQADDIDVZAeL3JTNCS5IyLLDtO77EqmZ5la7cUgRDj4AY7Ua+MzubBZaovOqDYzAey7TDWLRXFDNIzzTgQAyHHrETZHGqwJxMAEapYGqYpVi2HwzDuQ5oHKIQgggSSUGMOgdE4RhYDwJBVAwIQTH2UYhjQJBRAmZxuCEHZ3icJp5EgKxgAIVgCCQSQSEIBQkCAYhCAIJYKmKNIuFcTBIESPYEk6GBUm+" +;
		"BZOmOPgZgWYRTiYEwvEwaIEAAK4KnKOJrgmTpDjCbYJmKSI2CoOxihOLglCuAACioNg8COA4gmcOZOiidg+g+Dh4moOA8CMYokNmCoyiycQ8E8A4iE6D4OjOMgng8ZJjiITA8CSEouEcKwKkkLJyhQIoIkYU9LjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDZQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARVhnH4HQOYmxuCpF2MsecEQVBvGQCcIQug6itGQBoARAQ=")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
131
How can I arrange the month's header (left, right, next, prev month, picture, ebn)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oAppearance

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "(" + CHR(34) + "" + CHR(34) + "[b=0],(" + CHR(34) + "" + CHR(34) + "[b=0]/24;2[b=0][bg=0x01000000]/" + CHR(34) + "" + CHR(34) + "[b=0]):24," + CHR(34) + "" + CHR(34) + "[b=0]):32,1,(" + CHR(34) + "" + CHR(34) + "[b=0],(" + CHR(34) + "" + CHR(34) + "[b=0]/24;3[b=0][bg=0x01000000]/" + CHR(34) + "" + CHR(34) + "[b=0]):24," + CHR(34) + "" + CHR(34) + "[b=0]):32"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/," ( ( ( month(value) = month(date(``) ) and ( year(value) = year(date(``) ) ) ) ) ? `<b><fgcolor=0000FF>` : `` ) + `<c><%month%> <%year%>`")
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","left","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJUJJEIJUPDaMZkEANWACeJvMgBIwSGgXAaxGIQI6RMYAJBzFQQHYBeIzKQNYCpTIYAbwNQmMgAILNfAMEBKGYuAaIaxMGYDFD2ARVASRNBDNCeSAIDRCW7MAgDDDZDIAKbADgRVrfUCNiIAJJFJxEVxCMCCgI")
		oCalendar:SetProperty("HTMLPicture","right","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiJEJJEIJUHBPMbAARYUI0KKADJKEaDEpAVgAYjHYI8GSACgQb4AcRiGCPJgwNQIEzANIICaUUwpUDIBYjKIzBAsAZiWQ1QYABLZTKBAIATL2CUxXJdV8RABJIpOIiuIRgQUBA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",4/*exHeaderPrevYear*/,"<c><img>left</img>")
		oCalendar:SetProperty("DateHeaderField",5/*exHeaderNextYear*/,"<c><img>right</img>")
		oAppearance := oCalendar:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYIkWA5AiKEYoThCIxzTJ8aw3CKbYRAKCXfoUAJFP7Fc6ABJMBx3EyhZ89NDYEwTIKBahoehqIheEQyDSJNb2DCIahhMSEbKtCooDhGFpUWzLdxTJJVawHJoABjkS45PjEAJ+SBPUZVRRlFyfO7BKSjMKKXgkG4zABWVa1bC1FzxQ6mKykKQLQADDIDVZAeL3JTNCS5IyLLDtO77EqmZ5la7cUgRDj4AY7Ua+MzubBZaovOqDYzAey7TDWLRXFDNIzzTgQAyHHrETZHGqwJxMAEapYGqYpVi2HwzDuQ5oHKIQgggSSUGMOgdE4RhYDwJBVAwIQTH2UYhjQJBRAmZxuCEHZ3icJp5EgKxgAIVgCCQSQSEIBQkCAYhCAIJYKmKNIuFcTBIESPYEk6GBUm+" +;
		"BZOmOPgZgWYRTiYEwvEwaIEAAK4KnKOJrgmTpDjCbYJmKSI2CoOxihOLglCuAACioNg8COA4gmcOZOiidg+g+Dh4moOA8CMYokNmCoyiycQ8E8A4iE6D4OjOMgng8ZJjiITA8CSEouEcKwKkkLJyhQIoIkYU9LjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDZQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARVhnH4HQOYmxuCpF2MsecEQVBvGQCcIQug6itGQBoARAQ=")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
130
How can I arrange the month's header (right, next, prev month, picture, ebn)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oAppearance

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "1,(" + CHR(34) + "" + CHR(34) + "[b=0],(" + CHR(34) + "" + CHR(34) + "[b=0]/24;2[b=0][bg=0x01000000]/" + CHR(34) + "" + CHR(34) + "[b=0]):24," + CHR(34) + "" + CHR(34) + "[b=0]):32,(" + CHR(34) + "" + CHR(34) + "[b=0],(" + CHR(34) + "" + CHR(34) + "[b=0]/24;3[b=0][bg=0x01000000]/" + CHR(34) + "" + CHR(34) + "[b=0]):24," + CHR(34) + "" + CHR(34) + "[b=0]):32"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/," ( ( ( month(value) = month(date(``) ) and ( year(value) = year(date(``) ) ) ) ) ? `<b><fgcolor=0000FF>` : `` ) + `<c><%month%> <%year%>`")
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","left","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJUJJEIJUPDaMZkEANWACeJvMgBIwSGgXAaxGIQI6RMYAJBzFQQHYBeIzKQNYCpTIYAbwNQmMgAILNfAMEBKGYuAaIaxMGYDFD2ARVASRNBDNCeSAIDRCW7MAgDDDZDIAKbADgRVrfUCNiIAJJFJxEVxCMCCgI")
		oCalendar:SetProperty("HTMLPicture","right","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIBOZSI5CACuZwcdMRAhnIJNIMKWKPBb8MIFiIJOBILJzhQOYc7YYBY5vVBkiJEJJEIJUHBPMbAARYUI0KKADJKEaDEpAVgAYjHYI8GSACgQb4AcRiGCPJgwNQIEzANIICaUUwpUDIBYjKIzBAsAZiWQ1QYABLZTKBAIATL2CUxXJdV8RABJIpOIiuIRgQUBA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:SetProperty("DateHeaderField",4/*exHeaderPrevYear*/,"<c><img>left</img>")
		oCalendar:SetProperty("DateHeaderField",5/*exHeaderNextYear*/,"<c><img>right</img>")
		oAppearance := oCalendar:VisualAppearance()
			oAppearance:Add(1,"gBFLBCJwBAEHhEJAAEhABFgDg6AADACAxSDEMQBQKAAzQFAYbhgHCGAAGQaBUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYIkWA5AiKEYoThCIxzTJ8aw3CKbYRAKCXfoUAJFP7Fc6ABJMBx3EyhZ89NDYEwTIKBahoehqIheEQyDSJNb2DCIahhMSEbKtCooDhGFpUWzLdxTJJVawHJoABjkS45PjEAJ+SBPUZVRRlFyfO7BKSjMKKXgkG4zABWVa1bC1FzxQ6mKykKQLQADDIDVZAeL3JTNCS5IyLLDtO77EqmZ5la7cUgRDj4AY7Ua+MzubBZaovOqDYzAey7TDWLRXFDNIzzTgQAyHHrETZHGqwJxMAEapYGqYpVi2HwzDuQ5oHKIQgggSSUGMOgdE4RhYDwJBVAwIQTH2UYhjQJBRAmZxuCEHZ3icJp5EgKxgAIVgCCQSQSEIBQkCAYhCAIJYKmKNIuFcTBIESPYEk6GBUm+" +;
		"BZOmOPgZgWYRTiYEwvEwaIEAAK4KnKOJrgmTpDjCbYJmKSI2CoOxihOLglCuAACioNg8COA4gmcOZOiidg+g+Dh4moOA8CMYokNmCoyiycQ8E8A4iE6D4OjOMgng8ZJjiITA8CSEouEcKwKkkLJyhQIoIkYU9LjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDyaICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tEsHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +;
		"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMAAAkoTADmMLpIjISp+HSS4PgyMAADBzAHDSIoPCOUpWjObIKE8NJOHKIwPEaTprBsHpdjWLB9AieQ+DQYwQAAMR1EOZxWi+bx7HcWQ8msfRYnnDZQACRwxgwc5rGaMZPE0ZxqjWNZtgyRwAAyTZEnuXJzEyAx2kQcxNkye5cEy3cYAcANrGAIH4OAhx3gNGGPAfgIR8jBA4McBMARVhnH4HQOYmxuCpF2MsecEQVBvGQCcIQug6itGQBoARAQ=")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
129
Can I specify a different foreground color for the current month

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "1,2:32,3:32"
		oCalendar:SetProperty("DateHeaderField",1/*exHeaderDate*/," ( ( ( month(value) = month(date(``) ) and ( year(value) = year(date(``) ) ) ) ) ? `<b><fgcolor=0000FF>` : `` ) + `<c><%month%> <%year%>`")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
128
How do I change the +/- when using the custom format for month's header (with no background)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "1,2:32,3:32"
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
127
How do I change the +/- when using the custom format for month's header (with background)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "1,(" + CHR(34) + "" + CHR(34) + "[b=0],(" + CHR(34) + "" + CHR(34) + "[b=0]/24;2[b=0][bg=RGB(196,196,196)]/" + CHR(34) + "" + CHR(34) + "[b=0]):24," + CHR(34) + "" + CHR(34) + "[b=0]):32,(" + CHR(34) + "" + CHR(34) + "[b=0],(" + CHR(34) + "" + CHR(34) + "[b=0]/24;3[b=0][bg=RGB(196,196,196)]/" + CHR(34) + "" + CHR(34) + "[b=0]):24," + CHR(34) + "" + CHR(34) + "[b=0]):32"
		oCalendar:SetProperty("HTMLPicture","up","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiJZJJEIJUPDaMZkUAQGAOP4DRShOgvHIGQA0U5CbKzOIZYRIICzCaUX4PS4hRgEGg/QaKJLhGSESIIZoMfAMMIkKQzJxDDBJaCMaoQSABVhAXgQRBLRFdNhIB4QY4PfyUJB7AYAFo+DIWOb7LDdiIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("HTMLPicture","down","gCJKBOI4NBQaBQAhQNJJIIhShQACERCAIA0RD7zf5hiIEM5BJpBhSxR4LfhhAsRKZJIhBKg4J7tRjJBIAEAMAjzWIJba0E5rWQcWaBAoFR7oK4HewRZCMPiMUDLXRoS4PfjCQJrEhdaJ5ET4YIvTgOJ5kFSTKpkFaTKLEFqTGxyFgTIyuMgCeJaPwDSIKEhlCT5ZoWFT4iIAJJFJxEVxCMCCgIA=")
		oCalendar:SetProperty("DateHeaderField",2/*exHeaderPrevMonth*/,"<c><img>up</img>")
		oCalendar:SetProperty("DateHeaderField",3/*exHeaderNextMonth*/,"<c><img>down</img>")
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
126
How can I arrange the month's header (right, next, prev month)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:Appearance := 0/*None2*/
		oCalendar:SetProperty("Background",8/*exDateHeader*/,oCalendar:BackColor())
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2
		oCalendar:DrawGridLine := 0/*Solid*/
		oCalendar:WeekDays := "Su Mo Tu We Th Fr Sa"
		oCalendar:MarkToday := .T.
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellHeight := 32
		oCalendar:FixedCellWidth := 32
		oCalendar:DateHeaderFormat := "1,(" + CHR(34) + "" + CHR(34) + "[b=0],(" + CHR(34) + "" + CHR(34) + "[b=0]/24;2[b=0][bg=RGB(196,196,196)]/" + CHR(34) + "" + CHR(34) + "[b=0]):24," + CHR(34) + "" + CHR(34) + "[b=0]):32,(" + CHR(34) + "" + CHR(34) + "[b=0],(" + CHR(34) + "" + CHR(34) + "[b=0]/24;3[b=0][bg=RGB(196,196,196)]/" + CHR(34) + "" + CHR(34) + "[b=0]):24," + CHR(34) + "" + CHR(34) + "[b=0]):32"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
125
How do I display the week number according, so the January 1st is in the first week

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:FirstDay := 1/*Sunday*/
		oCalendar:DisplayWeekNumberAs := 1/*exSimpleWeekNumber*/
		oCalendar:ShowWeeks := .T.
		oCalendar:Date := "01/01/2016"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
124
How do I display the week number according to ISO8601 standard

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:DisplayWeekNumberAs := 0/*exISO8601WeekNumber*/
		oCalendar:ShowWeeks := .T.
		oCalendar:Date := "01/01/2016"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
123
Just seen the BackgroundExt property. Not sure what I can do with that

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent,oEvent1
	LOCAL oEvents

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:BeginUpdate()
		oCalendar:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellWidth := 48
		oCalendar:FixedCellHeight := 48
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1
		oCalendar:Date := "02/01/2014"
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:DrawGridLine := 2/*LargeDots*/
		oEvents := oCalendar:Events()
			oEvents:Add("02/03/2014"):BackgroundExt := "bottom[8,pattern=0x006,patterncolor=RGB(190,190,190),frame=RGB(0,0,0),framethick]"
			oEvents:Add("02/04/2014"):BackgroundExt := "bottom[100%,pattern=0x003,frame=RGB(0,0,0),framethick]"
			oEvents:Add("02/05/2014"):BackgroundExt := "top[8,pattern=0x006,patterncolor=RGB(190,190,190),frame=RGB(0,0,0),framethick]"
			oEvents:Add("02/10/2014"):BackgroundExt := "top[4](left[4],right[4],client),bottom[4](left[4],right[4],client),left[4],right[4],client(left[10%](top[90%,back=RGB(0,0,0)]),top[30%,back=RGB(254,217,102)],client[back=RGB(123,250,212)])"
			oEvents:Add("02/11/2014"):BackgroundExt := "left[33%,back=RGB(0,128,0)],left[33%,back=RGB(0,255,0)],client[back=RGB(255,128,128)]"
			oEvents:Add("02/12/2014"):BackgroundExt := "top[33%,back=RGB(0,128,0)],left[33%,back=RGB(0,255,0)],client[back=RGB(255,128,128)](top[50%,back=RGB(0,255,255)])"
			oEvents:Add("02/13/2014"):BackgroundExt := "bottom[12](left[75%,back=0x01000000]),none[(0,100%-22,100%,22),text=`<sha ;;0><font ;6>75%`,align=0x11]"
			oEvents:Add("02/14/2014"):BackgroundExt := "top[12](left[55%,back=0x01FEFEFE]),none[(0,0,100%,12),pattern=0x000,frame=RGB(0,255,0)],none[(0,0,100%,22),text=`<sha ;;0><font ;6>55%`,align=0x11]"
			oEvents:Add("02/17/2014"):BackgroundExt := "bottom[16,align=0x11,text=`<fgcolor 808080><font ;6>extra`]"
			oEvents:Add("02/18/2014"):BackgroundExt := "root[text=`<fgcolor 808080><font ;6>extra 2`,align=0x01](bottom[16,text=`<fgcolor 808080><font ;6>extra1`,align=0x21])"
			oEvent := oEvents:Add("02/19/2014")
				oEvent:BackgroundExt := "top[4](left[4],right[4],client),bottom[4](left[4],right[4],client),left[4],right[4],client[text=`<fgcolor 808080><font ;6><b>B`,align=0x22](client[text=`<fgcolor 808080><font ;6><b>A`,align=0x20](client[text=`<fgcolor 808080><font ;6><b>D`,align=0x00](client[text=`<fgcolor 808080><font ;6><b>C`,align=0x02](client))))"
				oEvent:Caption := "<sha ;;0><font ;12><fgcolor FF0000><b><%day%>"
			oEvents:Add("02/20/2014"):BackgroundExt := "root[text=`<fgcolor 808080><b>B`,align=0x22](client[text=`<fgcolor 808080><b>A`,align=0x20])"
			oEvent1 := oEvents:Add("02/21/2014")
				oEvent1:BackgroundExt := "root[align=0,wordwrap,text=`<font ;6>This is a long story to put on your date, to break the lines. `]"
				oEvent1:Caption := "<b><fgcolor FFFFFF><out 1;2><font ;18><%day%>"
		oCalendar:EndUpdate()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
122
How can I show a pattern over a date

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:AlignmentDay := 1/*CenterAlignment*/
		oCalendar:FixedCellWidth := 36
		oCalendar:FixedCellHeight := 36
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1
		oCalendar:Date := "02/01/2014"
		oCalendar:ShowNonMonthDays := .F.
		oCalendar:Events():Add("02/03/2014"):BackgroundExt := "bottom[8,pattern=0x006,patterncolor=RGB(190,190,190),frame=RGB(0,0,0),framethick]"
		oCalendar:Events():Add("02/04/2014"):BackgroundExt := "bottom[100%,pattern=0x006,patterncolor=RGB(190,190,190),frame=RGB(0,0,0),framethick]"
		oCalendar:Events():Add("02/05/2014"):BackgroundExt := "top[8,pattern=0x006,patterncolor=RGB(190,190,190),frame=RGB(0,0,0),framethick]"
		oCalendar:DrawGridLine := 2/*LargeDots*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
121
Can I use PNG picture files

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:SetProperty("HTMLPicture","pic1","c:\exontrol\images\card.png")
		oCalendar:AlignmentDay := 0/*LeftAlignment*/
		oCalendar:FixedCellWidth := 64
		oCalendar:FixedCellHeight := 48
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1
		oCalendar:Events():Add(oCalendar:Date()):Caption := "<sha><b><%day%></b></sha> <r><img>pic1</img>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
120
Is it possible to display a custom-size picture assigned to a date

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
		oCalendar:AlignmentDay := 0/*LeftAlignment*/
		oCalendar:FixedCellWidth := 64
		oCalendar:FixedCellHeight := 48
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1
		oCalendar:Events():Add(oCalendar:Date()):Caption := "<sha><b><%day%></b></sha> <r><img>pic1</img>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
119
How can I assign a caption and an icon to a date

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oCalendar:AlignmentDay := 0/*LeftAlignment*/
		oCalendar:FixedCellWidth := 48
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1
		oCalendar:Events():Add(oCalendar:Date()):Caption := "<sha><b><%day%></b></sha> <r><img>1</img><off -4><sha;;0><fgcolor FF0000><font ;6>ev</sha>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
118
How can I assign a caption to a date

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar
	LOCAL oEvent

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:AlignmentDay := 0/*LeftAlignment*/
		oCalendar:FixedCellWidth := 36
		oCalendar:AutoSize := 0/*exFixedSize*/
		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1
		oEvent := oCalendar:Events():Add(oCalendar:Date())
			oEvent:Caption := "<sha><b><%day%></b><r><off -4><sha;;0><fgcolor FF0000><font ;6>ev</sha></sha> 1"
			oEvent:Marker := .T.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
117
How do I align the day in the calendar control

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:AlignmentDay := 1/*CenterAlignment*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
116
How do I specify a different foreground color for weekday headers (S M T W T F S)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:SetProperty("Background",6/*exDaysHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oCalendar:SetProperty("Background",28/*exDaysHeaderForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
115
How does localization work

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:FirstDay := oCalendar:LocFirstDay()
		oCalendar:MonthNames := oCalendar:LocMonthNames()
		oCalendar:WeekDays := oCalendar:LocWeekDays()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
114
How can I change the control's Visual appearance

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:VisualDesign := "gBFLBWIgBAEHhEJAEGg6EhCDC0HA0IdT/iyAjAAdcWf8YQAAAcKkEThQCCsiAMRhQBkMHhgABEIBsILBQHRCOp0OhvNwgGM+AUImMHmcHms3nM7ns/GUtmEIB0IIc2GQgFo0q1VrAygI"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
113
How can I align the picture on the control's background

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:Picture := oCalendar:ExecuteTemplate("loadpicture(`c:\exontrol\images\card.png`)")
		oCalendar:PictureDisplay := 2/*UpperRight*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
112
Is it possible to place a picture on the control's background

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:Picture := oCalendar:ExecuteTemplate("loadpicture(`c:\exontrol\images\card.png`)")

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
111
Is it possible to specify the color or the visual appearance (EBN) for selected dates when the control has no focus

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oCalendar:SetProperty("Background",68/*exSelBackColorUnFocus*/,0x1000000)
		oCalendar:SetProperty("Background",69/*exSelForeColorUnFocus*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oCalendar:HideSelection := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
110
Is it possible to specify the color for selected dates when the control loses the focus

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:SetProperty("Background",68/*exSelBackColorUnFocus*/,AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
		oCalendar:SetProperty("Background",69/*exSelForeColorUnFocus*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oCalendar:HideSelection := .F.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
109
Can I change the visual appearance for the tooltip, using your EBN files

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:ToolTipDelay := 1
		oCalendar:ToolTipWidth := 364
		oCalendar:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oCalendar:SetProperty("Background",64/*exToolTipAppearance*/,0x1aa80f0)
		oCalendar:Events():Add(oCalendar:Date()):Comment := "This is a text that shows up when the cursor hovers the date"
		oCalendar:HideSelection := .T.

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
108
Can I change the color of the control's border (EBN files)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oCalendar:Appearance := 27966412/*0x1aabbc8+Etched*/

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
107
Is it possible to change the color for days that are not in the month

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:ShowNonMonthDays := .T.
		oCalendar:SetProperty("NonMonthDaysColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
106
How can I change the foreground color for non-working days

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:FirstDay := 2/*Monday*/
		oCalendar:SetProperty("NonworkingDaysForeColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
105
How do I change the appearance for the months

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:SetProperty("Background",8/*exDateHeader*/,AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,128 } )  , .F. ))
		oCalendar:SetProperty("Background",21/*exDateHeaderForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
104
How can I show the more months with its full size
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:MaxMonthX := 2
		oCalendar:MaxMonthY := 2

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
103
How can I show the calendar with its full size
#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:AutoSize := 1/*exFitClient*/
		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
102
How can I hide the separator above the Today button

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:SetProperty("Background",13/*exDateSeparatorBar*/,oCalendar:BackColor())

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
101
How do I limit the dates being displayed or selected

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oCalendar

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oCalendar := XbpActiveXControl():new( oForm:drawingArea )
	oCalendar:CLSID  := "Exontrol.Calendar.1" /*{D8F4D09C-3FD1-4479-ABA3-4F195C20050C}*/
	oCalendar:create(,, {10,60},{610,370} )

		oCalendar:MaxMonthX := 1
		oCalendar:MaxMonthY := 1
		oCalendar:ShowYearScroll := .F.
		oCalendar:MinDate := "01/01/2001"
		oCalendar:MaxDate := "01/31/2001"
		oCalendar:Date := "01/01/2001"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN