69
How do I encode data as ICalendar format

local var_Component,var_Component1,var_Component2 as IComponent

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content
	var_Component1 := var_Component:Components:Add("VCALENDAR")
		var_Component1:Properties:Add("VERSION","2.1"):Parameters:Add("UNICODE",oDCOCX_Exontrol1:[toICalendar,true,exPropertyTypeBoolean])
		var_Component1:Properties:Add("TEXT","This is just a bit of text to be encoded.")
		var_Component1:Properties:Add("BINARY",oDCOCX_Exontrol1:[toICalendar,"This is just a bit of text to be encoded.",exPropertyTypeBinary])
		var_Component2 := var_Component1:Components:Add("VEVENT")
			var_Component2:Properties:Add("DTSTART",SToD("20010101"))
			var_Component2:Properties:Add("DTEND",SToD("20010102 10:00:00"))
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

68
How do I get the occurrences between giving start/end margins


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( "AsArray: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurRange,"DTSTART=19970310;FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3",SToD("20010101"),SToD("20020101")]) ))
OutputDebugString(String2Psz( "AsString: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurRangeAsString,"DTSTART=19970310;FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3",SToD("20010101"),SToD("20020101")]) ))

67
How do I get the value of specified part in the recurrence expression


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( "FREQ: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurFREQ]) ))
OutputDebugString(String2Psz( "DTSTART: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurDTSTART]) ))
OutputDebugString(String2Psz( "UNTIL: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurUNTIL]) ))
OutputDebugString(String2Psz( "COUNT: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurCOUNT]) ))
OutputDebugString(String2Psz( "INTERVAL: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurINTERVAL]) ))
OutputDebugString(String2Psz( "WKST: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurWKST]) ))
OutputDebugString(String2Psz( "BYDAY: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurBYDAY]) ))
OutputDebugString(String2Psz( "BYMONTHDAY: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurBYMONTHDAY]) ))
OutputDebugString(String2Psz( "BYYEARDAY: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurBYYEARDAY]) ))
OutputDebugString(String2Psz( "BYWEEKNO: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurBYWEEKNO]) ))
OutputDebugString(String2Psz( "BYMONTH: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurBYMONTH]) ))
OutputDebugString(String2Psz( "BYSETPOS: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurBYSETPOS]) ))
OutputDebugString(String2Psz( "BYHOUR: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurBYHOUR]) ))
OutputDebugString(String2Psz( "BYMINUTE: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurBYMINUTE]) ))
OutputDebugString(String2Psz( "BYSECOND: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",exRecurBYSECOND]) ))

66
How do I check if the recurrence expression is syntactically correct (method 2)


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( "1.A) SyntaxError: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",exRecurSyntaxError]) ))
OutputDebugString(String2Psz( "1.B) SyntaxErrorInfo: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",exRecurSyntaxErrorInfo]) ))
OutputDebugString(String2Psz( "2.A) SyntaxError: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"FREQ=DAILY;BYDAY=MO",exRecurSyntaxError]) ))
OutputDebugString(String2Psz( "2.B) SyntaxErrorInfo: " ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurPartValue,"FREQ=DAILY;BYDAY=MO",exRecurSyntaxErrorInfo]) ))

65
How do I check if the recurrence expression is syntactically correct (method 1)


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( "1. If negative, the expression is incorrect" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurCheck,"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",SToD("20151205")]) ))
OutputDebugString(String2Psz( "2. If negative, the expression is incorrect" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurCheck,"junk",SToD("20010101")]) ))

64
How do I check if a specified date match the giving recurrence


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(SToD("20151205")) ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurCheck,"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",SToD("20151205")]) ))
OutputDebugString(String2Psz( AsString(SToD("20151207")) ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurCheck,"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",SToD("20151207")]) ))

63
Recur: The 2nd to last weekday of the month


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970929;FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2",12]) ))

62
Recur: The 3rd instance into the month of one of Tuesday, Wednesday or Thursday, for the next 3 months


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970904;FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3",12]) ))

61
Recur: The last work day of the month


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970805;FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1",12]) ))

60
Recur: An example where the days generated makes a difference because of WKST (Sample 2)


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",12]) ))

59
Recur: An example where the days generated makes a difference because of WKST (Sample 1)


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO",12]) ))

58
Recur: Every 20 minutes from 9:00 AM to 4:40 PM every day


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40",12]) ))

57
Recur: Every hour and a half for 4 occurrences


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=MINUTELY;INTERVAL=90;COUNT=4",12]) ))

56
Recur: Every 15 minutes for 6 occurrences


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=MINUTELY;INTERVAL=15;COUNT=6",12]) ))

55
Recur: Every 3 hours from 9:00 AM to 5:00 PM on a specific day


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z",12]) ))

54
Recur: Every four years, the first Tuesday after a Monday in November, forever (U.S. Presidential Election day)


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19961105T090000;FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8",12]) ))

53
Recur: The first Saturday that follows the first Sunday of the month, forever


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970913T090000;FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13",12]) ))

52
Recur: Every Friday the 13th, forever


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13",12]) ))

51
Recur: Every Thursday, but only during June, July, and August, forever


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970605T090000;FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8",12]) ))

50
Recur: Every Thursday in March, forever


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970313T090000;FREQ=YEARLY;BYMONTH=3;BYDAY=TH",12]) ))

49
Recur: Monday of week number 20 (where the default start of the week is Monday), forever


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970512T090000;FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO",12]) ))

48
Recur: Every 20th Monday of the year, forever


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970101T090000;FREQ=YEARLY;BYDAY=20MO",12]) ))

47
Recur: Every 3rd year on the 1st, 100th and 200th day for 10 occurrences


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970101T090000;FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200",12]) ))

46
Recur: Every other year on January, February, and March for 10 occurrences


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970310T090000;FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3",12]) ))

45
Recur: Yearly in June and July for 10 occurrences


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970610T090000;FREQ=YEARLY;COUNT=10;BYMONTH=6,7",12]) ))

44
Recur: Every Tuesday, every other month


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=MONTHLY;INTERVAL=2;BYDAY=TU",12]) ))

43
Recur: Every 18 months on the 10th thru 15th of the month for 10 occurrences


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970910T090000;FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14,15",12]) ))

42
Recur: Monthly on the first and last day of the month for 10 occurrences


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970930T090000;FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1",12]) ))

41
Recur: Monthly on the 2nd and 15th of the month for 10 occurrences


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15",12]) ))

40
Recur: Monthly on the third to the last day of the month, forever


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970928T090000;FREQ=MONTHLY;BYMONTHDAY=-3",12]) ))

39
Recur: Monthly on the second to last Monday of the month for 6 months


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970922T090000;FREQ=MONTHLY;COUNT=6;BYDAY=-2MO",12]) ))

38
Recur: Every other month on the 1st and last Sunday of the month for 10 occurrences


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970907T090000;FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU",12]) ))

37
Recur: Monthly on the 1st Friday until December 24, 1997


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970905T090000;FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR",12]) ))

36
Recur: Monthly on the 1st Friday for ten occurrences


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970905T090000;FREQ=MONTHLY;COUNT=10;BYDAY=1FR",12]) ))

35
Recur: Every other week on Tuesday and Thursday, for 8 occurrences


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH",12]) ))

34
Recur: Every other week on Monday, Wednesday and Friday until December 24, 1997, but starting on Tuesday, September 2, 1997


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU;BYDAY=MO,WE,FR",12]) ))

33
Recur: Weekly on Tuesday and Thursday for 5 weeks


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH",12]) ))

32
Recur: Weekly on Tuesday and Thursday for 5 weeks


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH",12]) ))

31
Recur: Every other day - forever


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=DAILY;INTERVAL=2",12]) ))

30
Recur: Daily until December 24, 1997


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=DAILY;UNTIL=19971224T000000Z",12]) ))

29
Recur: Daily for 10 occurrences


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[RecurAllAsString,"DTSTART=19970902T090000;FREQ=DAILY;COUNT=10",12]) ))

28
How can I add a property of UTC offset type

local var_Component as IComponent

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("UTCOffset","+0100")
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

27
How can I add a property of URI type

local var_Component as IComponent

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("URI","http://www.exontrol.com")
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

26
How can I add a property of time type

local var_Component as IComponent
local var_Property as IProperty

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Time1",SToD("18991230 12:00:00"))
	var_Component:Properties:Add("Time2",oDCOCX_Exontrol1:[toICalendar,0.5,exPropertyTypeTime])
	var_Property := var_Component:Properties:Add("Time3",nil)
		var_Property:Value := 0.5
		var_Property:Type := exPropertyTypeTime
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

25
How can I add a property of text/string type

local var_Component as IComponent
local var_Property as IProperty

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Text1","A1")
	var_Component:Properties:Add("Text2",oDCOCX_Exontrol1:[toICalendar,"A1",exPropertyTypeText])
	var_Property := var_Component:Properties:Add("Text3",nil)
		var_Property:Value := "A1"
		var_Property:Type := exPropertyTypeText
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

24
How can I find properties of recurence type

local var_Component as IComponent
local p as IProperty
local i as USUAL

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Recur","FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=SA,SU")
p := oDCOCX_Exontrol1:Root:Properties:[Item,"Recur"]
i := oDCOCX_Exontrol1:[toICalendar,p:Value,p:GuessType]
OutputDebugString(String2Psz( "icalendar:" ))
OutputDebugString(String2Psz( AsString(i) ))
OutputDebugString(String2Psz( "all:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,""]) ))
OutputDebugString(String2Psz( "FREQ:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"FREQ"]) ))
OutputDebugString(String2Psz( "UNTIL:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"UNTIL"]) ))
OutputDebugString(String2Psz( "COUNT:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"COUNT"]) ))
OutputDebugString(String2Psz( "INTERVAL:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"INTERVAL"]) ))
OutputDebugString(String2Psz( "BYSECOND:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"BYSECOND"]) ))
OutputDebugString(String2Psz( "BYMINUTE:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"BYMINUTE"]) ))
OutputDebugString(String2Psz( "BYHOUR:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"BYHOUR"]) ))
OutputDebugString(String2Psz( "BYDAY:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"BYDAY"]) ))
OutputDebugString(String2Psz( "BYMONTHDAY:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"BYMONTHDAY"]) ))
OutputDebugString(String2Psz( "BYYEARDAY:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"BYYEARDAY"]) ))
OutputDebugString(String2Psz( "BYWEEKNO:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"BYWEEKNO"]) ))
OutputDebugString(String2Psz( "BYMONTH:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"BYMONTH"]) ))
OutputDebugString(String2Psz( "BYSETPOS:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"BYSETPOS"]) ))
OutputDebugString(String2Psz( "WKST:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"WKST"]) ))

23
How can I add a property of recurrence type

local var_Component as IComponent

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Recur","FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU")
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

22
How can I find the duration in weeks, days, hours, minutes, seconds from a property of duration type

local var_Component as IComponent
local p as IProperty
local i as USUAL

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Period",oDCOCX_Exontrol1:[valuesToICalendar,"Start=#1/1/2001#;Duration=1",exPropertyTypePeriod])
p := oDCOCX_Exontrol1:Root:Properties:[Item,"Period"]
i := oDCOCX_Exontrol1:[toICalendar,p:Value,p:GuessType]
OutputDebugString(String2Psz( "icalendar:" ))
OutputDebugString(String2Psz( AsString(i) ))
OutputDebugString(String2Psz( "all:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,""]) ))
OutputDebugString(String2Psz( "start:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"Start"]) ))
OutputDebugString(String2Psz( "end:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"End"]) ))
OutputDebugString(String2Psz( "duration:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"Duration"]) ))
OutputDebugString(String2Psz( "weeks:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"W"]) ))
OutputDebugString(String2Psz( "days:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"D"]) ))
OutputDebugString(String2Psz( "hour:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"H"]) ))
OutputDebugString(String2Psz( "min:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"M"]) ))
OutputDebugString(String2Psz( "sec:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"S"]) ))

21
How can I add a property of period type

local var_Component as IComponent

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Period1",oDCOCX_Exontrol1:[valuesToICalendar,"Start=#1/1/2001#;Duration=1",exPropertyTypePeriod])
	var_Component:Properties:Add("Period2",oDCOCX_Exontrol1:[valuesToICalendar,"Start=#1/1/2001#;End=#1/2/2001#",exPropertyTypePeriod])
	var_Component:Properties:Add("Period3",oDCOCX_Exontrol1:[valuesToICalendar,"Duration=1;End=#1/2/2001#",exPropertyTypePeriod])
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

20
How can I add a property of integer type

local var_Component as IComponent
local var_Property as IProperty

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Integer1",1)
	var_Component:Properties:Add("Integer2",oDCOCX_Exontrol1:[toICalendar,1,exPropertyTypeInteger])
	var_Property := var_Component:Properties:Add("Integer3",nil)
		var_Property:Value := 1
		var_Property:Type := exPropertyTypeInteger
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

19
How can I add a property of float type

local var_Component as IComponent
local var_Property as IProperty

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Float1",1.5)
	var_Component:Properties:Add("Float2",oDCOCX_Exontrol1:[toICalendar,1.5,exPropertyTypeFloat])
	var_Property := var_Component:Properties:Add("Float3",nil)
		var_Property:Value := 1.5
		var_Property:Type := exPropertyTypeFloat
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

18
How do I get the type of the property

local var_Component as IComponent
local var_Property,var_Property1,var_Property2 as IProperty

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Duration1",oDCOCX_Exontrol1:[toICalendar,2.5,exPropertyTypeDuration])
	var_Property := var_Component:Properties:Add("Duration2",nil)
		var_Property:Value := 2.5
		var_Property:Type := exPropertyTypeDuration
var_Property1 := oDCOCX_Exontrol1:Root:Properties:[Item,"Duration1"]
	OutputDebugString(String2Psz( var_Property1:Name ))
	OutputDebugString(String2Psz( "Guess" ))
	OutputDebugString(String2Psz( AsString(var_Property1:GuessType) ))
	OutputDebugString(String2Psz( var_Property1:Name ))
	OutputDebugString(String2Psz( "Type" ))
	OutputDebugString(String2Psz( AsString(var_Property1:Type) ))
var_Property2 := oDCOCX_Exontrol1:Root:Properties:[Item,"Duration2"]
	OutputDebugString(String2Psz( var_Property2:Name ))
	OutputDebugString(String2Psz( "Guess" ))
	OutputDebugString(String2Psz( AsString(var_Property2:GuessType) ))
	OutputDebugString(String2Psz( var_Property2:Name ))
	OutputDebugString(String2Psz( "Type" ))
	OutputDebugString(String2Psz( AsString(var_Property2:Type) ))

17
How can I get values of the duration iCalendar format


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
OutputDebugString(String2Psz( "all:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,"P1D",exPropertyTypeDuration,""]) ))
OutputDebugString(String2Psz( "duration:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,"P1D",exPropertyTypeDuration,"Duration"]) ))

16
How can I find the duration in weeks, days, hours, minutes, seconds from a property of duration type

local var_Component as IComponent
local p as IProperty
local i as USUAL

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Duration",oDCOCX_Exontrol1:[toICalendar,3.325,exPropertyTypeDuration])
p := oDCOCX_Exontrol1:Root:Properties:[Item,"Duration"]
i := oDCOCX_Exontrol1:[toICalendar,p:Value,p:GuessType]
OutputDebugString(String2Psz( "icalendar:" ))
OutputDebugString(String2Psz( AsString(i) ))
OutputDebugString(String2Psz( "all:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,""]) ))
OutputDebugString(String2Psz( "duration:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"Duration"]) ))
OutputDebugString(String2Psz( "weeks:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"W"]) ))
OutputDebugString(String2Psz( "days:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"D"]) ))
OutputDebugString(String2Psz( "hour:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"H"]) ))
OutputDebugString(String2Psz( "min:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"M"]) ))
OutputDebugString(String2Psz( "sec:" ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:[valuesFromICalendar,AsString(i),p:GuessType,"S"]) ))

15
How can I add a property of duration type

local var_Component as IComponent
local var_Property as IProperty

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Duration1",oDCOCX_Exontrol1:[toICalendar,2.5,exPropertyTypeDuration])
	var_Property := var_Component:Properties:Add("Duration2",nil)
		var_Property:Value := 2.5
		var_Property:Type := exPropertyTypeDuration
	var_Component:Properties:Add("Duration3",oDCOCX_Exontrol1:[valuesToICalendar,"D=2;H=12",exPropertyTypeDuration])
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

14
How can I add a property of date-time type

local var_Component as IComponent
local var_Property as IProperty

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("DateTime1",SToD("20010101 12:00:00"))
	var_Component:Properties:Add("DateTime2",oDCOCX_Exontrol1:[toICalendar,SToD("20010101"),exPropertyTypeDateTime])
	var_Property := var_Component:Properties:Add("DateTime3",nil)
		var_Property:Value := SToD("20010101")
		var_Property:Type := exPropertyTypeDateTime
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

13
How can I add a property of date type

local var_Component as IComponent
local var_Property as IProperty

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Date1",SToD("20010101"))
	var_Component:Properties:Add("Date2",oDCOCX_Exontrol1:[toICalendar,SToD("20010101"),exPropertyTypeDate])
	var_Property := var_Component:Properties:Add("Date3",nil)
		var_Property:Value := SToD("20010101")
		var_Property:Type := exPropertyTypeDate
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

12
How can I add a property of Calendar User Address type

local var_Component as IComponent
local var_Property as IProperty

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("caladdress1","mailto:support@exontrol.com")
	var_Component:Properties:Add("caladdress2",oDCOCX_Exontrol1:[toICalendar,"mailto:support@exontrol.com",exPropertyTypeCalAddress])
	var_Property := var_Component:Properties:Add("caladdress3",nil)
		var_Property:Value := "mailto:support@exontrol.com"
		var_Property:Type := exPropertyTypeCalAddress
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

11
How can I add a property of boolean type

local var_Component as IComponent
local var_Property as IProperty

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Boolean1",true)
	var_Component:Properties:Add("Boolean2",oDCOCX_Exontrol1:[toICalendar,"TRUE",exPropertyTypeBoolean])
	var_Property := var_Component:Properties:Add("Boolean3",nil)
		var_Property:Value := 0
		var_Property:Type := exPropertyTypeBoolean
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

10
How can I add a property of binary type

local var_Component as IComponent
local var_Property as IProperty

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Component:Properties:Add("Binary1",oDCOCX_Exontrol1:[toICalendar,"This is a bit of text converted to binary",exPropertyTypeBinary])
	var_Property := var_Component:Properties:Add("Binary2",nil)
		var_Property:Value := "This is a bit of text converted to binary"
		var_Property:Type := exPropertyTypeBinary
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

9
How can I access the root element of the iCalendar format


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
oDCOCX_Exontrol1:Load("BEGIN:VCALENDAR\r\nVERSION:2.0\r\nEND:VCALENDAR")
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Root:Name ))
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:Root:Properties:[Item,"Version"]:Value) ))

8
How can I get notified once the control loads a new component, property, when using Load or LoadFile methods

METHOD OCX_Exontrol1AddComponent(NewComponent) CLASS MainDialog
	// AddComponent event - Occurs when a new component is added.
	OutputDebugString(String2Psz( AsString(NewComponent) ))
RETURN NIL

METHOD OCX_Exontrol1AddProperty(NewPropery) CLASS MainDialog
	// AddProperty event - Occurs when a new property is added.
	OutputDebugString(String2Psz( AsString(NewPropery) ))
RETURN NIL


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
oDCOCX_Exontrol1:FireEvents := true
oDCOCX_Exontrol1:Load("BEGIN:VCALENDAR\r\nVERSION:2.0\r\nEND:VCALENDAR")

7
How can I add a property with parameters

local var_Component as IComponent
local var_Properties as IProperties

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Properties := var_Component:Components:Add("VEVENT"):Properties
		var_Properties:Add("SUMMARY","Company Holiday Party"):Parameters:Add("LANGUAGE","en-US")
		var_Properties:Add("DATE",SToD("20010101"))
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

6
How can I load iCalendar from a string


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
oDCOCX_Exontrol1:Load("BEGIN:VCALENDAR\r\nVERSION:2.0\r\nEND:VCALENDAR")
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Content:Components:[Item,0]:Name ))

5
How can I add VEVENT objects

local var_Component as IComponent
local var_Properties,var_Properties1,var_Properties2 as IProperties

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Properties := var_Component:Properties
		var_Properties:Add("Version","2.0")
		var_Properties:Add("PRODID","-//hacksw/handcal//NONSGML v1.0//EN")
	var_Properties1 := var_Component:Components:Add("VEVENT"):Properties
		var_Properties1:Add("DTSTART",SToD("20010101"))
		var_Properties1:Add("DTEND",SToD("20010102"))
		var_Properties1:Add("SUMMARY","First Party")
	var_Properties2 := var_Component:Components:Add("VEVENT"):Properties
		var_Properties2:Add("DTSTART",SToD("20010104"))
		var_Properties2:Add("DTEND",SToD("20010105"))
		var_Properties2:Add("SUMMARY","Second Party")
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

4
How can I save the control's content to iCalendar format, as a file
local var_Component as IComponent
local var_Properties,var_Properties1 as IProperties

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Properties := var_Component:Properties
		var_Properties:Add("Version","2.0")
		var_Properties:Add("PRODID","-//hacksw/handcal//NONSGML v1.0//EN")
	var_Properties1 := var_Component:Components:Add("VEVENT"):Properties
		var_Properties1:Add("DTSTART",SToD("20010101"))
		var_Properties1:Add("DTEND",SToD("20010102"))
		var_Properties1:Add("SUMMARY","Bastille Day Party")
oDCOCX_Exontrol1:SaveFile("c:/temp/test.ical")

3
How can I load the iCalendar format from a file


oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
oDCOCX_Exontrol1:LoadFile("c:/temp/test.ical")
OutputDebugString(String2Psz( AsString(oDCOCX_Exontrol1:Content:Components:[Item,"VCALENDAR"]:Properties:[Item,"PRODID"]:Value) ))

2
How do I export the control's content to iCalendar format

local var_Component as IComponent
local var_Properties,var_Properties1 as IProperties

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Component := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR")
	var_Properties := var_Component:Properties
		var_Properties:Add("Version","2.0")
		var_Properties:Add("PRODID","-//hacksw/handcal//NONSGML v1.0//EN")
	var_Properties1 := var_Component:Components:Add("VEVENT"):Properties
		var_Properties1:Add("DTSTART",SToD("20010101"))
		var_Properties1:Add("DTEND",SToD("20010102"))
		var_Properties1:Add("SUMMARY","Bastille Day Party")
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))

1
How can I generate a VCALENDAR object

local var_Properties as IProperties

oDCOCX_Exontrol1 := IICalendar{"Exontrol.ICalendar.1"}
var_Properties := oDCOCX_Exontrol1:Content:Components:Add("VCALENDAR"):Properties
	var_Properties:Add("Version","2.0")
	var_Properties:Add("PRODID","-//hacksw/handcal//NONSGML v1.0//EN")
OutputDebugString(String2Psz( oDCOCX_Exontrol1:Save() ))