69:
How do I encode data as ICalendar format

OleObject oICalendar,var_Component,var_Component1,var_Component2

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content
	var_Component1 = var_Component.Components.Add("VCALENDAR")
		var_Component1.Properties.Add("VERSION","2.1").Parameters.Add("UNICODE",oICalendar.toICalendar(true,2))
		var_Component1.Properties.Add("TEXT","This is just a bit of text to be encoded.")
		var_Component1.Properties.Add("BINARY",oICalendar.toICalendar("This is just a bit of text to be encoded.",1))
		var_Component2 = var_Component1.Components.Add("VEVENT")
			var_Component2.Properties.Add("DTSTART",2001-01-01)
			var_Component2.Properties.Add("DTEND",DateTime(2001-01-02,10:00:00))
MessageBox("Information",string( oICalendar.Save() ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( "AsArray: " ))
MessageBox("Information",string( String(oICalendar.RecurRange("DTSTART=19970310;FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3",2001-01-01,2002-01-01)) ))
MessageBox("Information",string( "AsString: " ))
MessageBox("Information",string( String(oICalendar.RecurRangeAsString("DTSTART=19970310;FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3",2001-01-01,2002-01-01)) ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( "FREQ: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",0)) ))
MessageBox("Information",string( "DTSTART: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",1)) ))
MessageBox("Information",string( "UNTIL: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",2)) ))
MessageBox("Information",string( "COUNT: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",3)) ))
MessageBox("Information",string( "INTERVAL: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",4)) ))
MessageBox("Information",string( "WKST: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",14)) ))
MessageBox("Information",string( "BYDAY: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",8)) ))
MessageBox("Information",string( "BYMONTHDAY: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",9)) ))
MessageBox("Information",string( "BYYEARDAY: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",10)) ))
MessageBox("Information",string( "BYWEEKNO: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",11)) ))
MessageBox("Information",string( "BYMONTH: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",12)) ))
MessageBox("Information",string( "BYSETPOS: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",13)) ))
MessageBox("Information",string( "BYHOUR: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",7)) ))
MessageBox("Information",string( "BYMINUTE: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",6)) ))
MessageBox("Information",string( "BYSECOND: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",5)) ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( "1.A) SyntaxError: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-1)) ))
MessageBox("Information",string( "1.B) SyntaxErrorInfo: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",-2)) ))
MessageBox("Information",string( "2.A) SyntaxError: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("FREQ=DAILY;BYDAY=MO",-1)) ))
MessageBox("Information",string( "2.B) SyntaxErrorInfo: " ))
MessageBox("Information",string( String(oICalendar.RecurPartValue("FREQ=DAILY;BYDAY=MO",-2)) ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( "1. If negative, the expression is incorrect" ))
MessageBox("Information",string( String(oICalendar.RecurCheck("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",2015-12-05)) ))
MessageBox("Information",string( "2. If negative, the expression is incorrect" ))
MessageBox("Information",string( String(oICalendar.RecurCheck("junk",2001-01-01)) ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(2015-12-05) ))
MessageBox("Information",string( String(oICalendar.RecurCheck("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",2015-12-05)) ))
MessageBox("Information",string( String(2015-12-07) ))
MessageBox("Information",string( String(oICalendar.RecurCheck("DTSTART=20151205;FREQ=DAILY;BYDAY=MO",2015-12-07)) ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970904;FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3",12)) ))

61:
Recur: The last work day of the month

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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)

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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)

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970902T090000;FREQ=MINUTELY;INTERVAL=90;COUNT=4",12)) ))

56:
Recur: Every 15 minutes for 6 occurrences

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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)

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970913T090000;FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13",12)) ))

52:
Recur: Every Friday the 13th, forever

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970902T090000;FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13",12)) ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970605T090000;FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8",12)) ))

50:
Recur: Every Thursday in March, forever

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970512T090000;FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO",12)) ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970101T090000;FREQ=YEARLY;BYDAY=20MO",12)) ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970310T090000;FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3",12)) ))

45:
Recur: Yearly in June and July for 10 occurrences

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970610T090000;FREQ=YEARLY;COUNT=10;BYMONTH=6,7",12)) ))

44:
Recur: Every Tuesday, every other month

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970928T090000;FREQ=MONTHLY;BYMONTHDAY=-3",12)) ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970907T090000;FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU",12)) ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970905T090000;FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR",12)) ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970905T090000;FREQ=MONTHLY;COUNT=10;BYDAY=1FR",12)) ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970902T090000;FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH",12)) ))

32:
Recur: Weekly on Tuesday and Thursday for 5 weeks

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970902T090000;FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH",12)) ))

31:
Recur: Every other day - forever

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970902T090000;FREQ=DAILY;INTERVAL=2",12)) ))

30:
Recur: Daily until December 24, 1997

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970902T090000;FREQ=DAILY;UNTIL=19971224T000000Z",12)) ))

29:
Recur: Daily for 10 occurrences

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( String(oICalendar.RecurAllAsString("DTSTART=19970902T090000;FREQ=DAILY;COUNT=10",12)) ))

28:
How can I add a property of UTC offset type

OleObject oICalendar,var_Component

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("UTCOffset","+0100")
MessageBox("Information",string( oICalendar.Save() ))

27:
How can I add a property of URI type

OleObject oICalendar,var_Component

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("URI","http://www.exontrol.com")
MessageBox("Information",string( oICalendar.Save() ))

26:
How can I add a property of time type

OleObject oICalendar,var_Component,var_Property

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Time1",DateTime(1899-12-30,12:00:00))
	var_Component.Properties.Add("Time2",oICalendar.toICalendar(0.5,12))
	var_Property = var_Component.Properties.Add("Time3")
		var_Property.Value = 0.5
		var_Property.Type = 12
MessageBox("Information",string( oICalendar.Save() ))

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

OleObject oICalendar,var_Component,var_Property

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Text1","A1")
	var_Component.Properties.Add("Text2",oICalendar.toICalendar("A1",11))
	var_Property = var_Component.Properties.Add("Text3")
		var_Property.Value = "A1"
		var_Property.Type = 11
MessageBox("Information",string( oICalendar.Save() ))

24:
How can I find properties of recurence type

OleObject oICalendar,p,var_Component
any i

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Recur","FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=SA,SU")
p = oICalendar.Root.Properties.Item("Recur")
i = oICalendar.toICalendar(p.Value,p.GuessType)
MessageBox("Information",string( "icalendar:" ))
MessageBox("Information",string( String(i) ))
MessageBox("Information",string( "all:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"")) ))
MessageBox("Information",string( "FREQ:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"FREQ")) ))
MessageBox("Information",string( "UNTIL:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"UNTIL")) ))
MessageBox("Information",string( "COUNT:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"COUNT")) ))
MessageBox("Information",string( "INTERVAL:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"INTERVAL")) ))
MessageBox("Information",string( "BYSECOND:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"BYSECOND")) ))
MessageBox("Information",string( "BYMINUTE:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"BYMINUTE")) ))
MessageBox("Information",string( "BYHOUR:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"BYHOUR")) ))
MessageBox("Information",string( "BYDAY:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"BYDAY")) ))
MessageBox("Information",string( "BYMONTHDAY:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"BYMONTHDAY")) ))
MessageBox("Information",string( "BYYEARDAY:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"BYYEARDAY")) ))
MessageBox("Information",string( "BYWEEKNO:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"BYWEEKNO")) ))
MessageBox("Information",string( "BYMONTH:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"BYMONTH")) ))
MessageBox("Information",string( "BYSETPOS:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"BYSETPOS")) ))
MessageBox("Information",string( "WKST:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"WKST")) ))

23:
How can I add a property of recurrence type

OleObject oICalendar,var_Component

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Recur","FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU")
MessageBox("Information",string( oICalendar.Save() ))

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

OleObject oICalendar,p,var_Component
any i

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Period",oICalendar.valuesToICalendar("Start=#1/1/2001#;Duration=1",9))
p = oICalendar.Root.Properties.Item("Period")
i = oICalendar.toICalendar(p.Value,p.GuessType)
MessageBox("Information",string( "icalendar:" ))
MessageBox("Information",string( String(i) ))
MessageBox("Information",string( "all:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"")) ))
MessageBox("Information",string( "start:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"Start")) ))
MessageBox("Information",string( "end:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"End")) ))
MessageBox("Information",string( "duration:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"Duration")) ))
MessageBox("Information",string( "weeks:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"W")) ))
MessageBox("Information",string( "days:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"D")) ))
MessageBox("Information",string( "hour:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"H")) ))
MessageBox("Information",string( "min:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"M")) ))
MessageBox("Information",string( "sec:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"S")) ))

21:
How can I add a property of period type

OleObject oICalendar,var_Component

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Period1",oICalendar.valuesToICalendar("Start=#1/1/2001#;Duration=1",9))
	var_Component.Properties.Add("Period2",oICalendar.valuesToICalendar("Start=#1/1/2001#;End=#1/2/2001#",9))
	var_Component.Properties.Add("Period3",oICalendar.valuesToICalendar("Duration=1;End=#1/2/2001#",9))
MessageBox("Information",string( oICalendar.Save() ))

20:
How can I add a property of integer type

OleObject oICalendar,var_Component,var_Property

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Integer1",1)
	var_Component.Properties.Add("Integer2",oICalendar.toICalendar(1,8))
	var_Property = var_Component.Properties.Add("Integer3")
		var_Property.Value = 1
		var_Property.Type = 8
MessageBox("Information",string( oICalendar.Save() ))

19:
How can I add a property of float type

OleObject oICalendar,var_Component,var_Property

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Float1",1.5)
	var_Component.Properties.Add("Float2",oICalendar.toICalendar(1.5,7))
	var_Property = var_Component.Properties.Add("Float3")
		var_Property.Value = 1.5
		var_Property.Type = 7
MessageBox("Information",string( oICalendar.Save() ))

18:
How do I get the type of the property

OleObject oICalendar,var_Component,var_Property,var_Property1,var_Property2

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Duration1",oICalendar.toICalendar(2.5,6))
	var_Property = var_Component.Properties.Add("Duration2")
		var_Property.Value = 2.5
		var_Property.Type = 6
var_Property1 = oICalendar.Root.Properties.Item("Duration1")
	MessageBox("Information",string( var_Property1.Name ))
	MessageBox("Information",string( "Guess" ))
	MessageBox("Information",string( String(var_Property1.GuessType) ))
	MessageBox("Information",string( var_Property1.Name ))
	MessageBox("Information",string( "Type" ))
	MessageBox("Information",string( String(var_Property1.Type) ))
var_Property2 = oICalendar.Root.Properties.Item("Duration2")
	MessageBox("Information",string( var_Property2.Name ))
	MessageBox("Information",string( "Guess" ))
	MessageBox("Information",string( String(var_Property2.GuessType) ))
	MessageBox("Information",string( var_Property2.Name ))
	MessageBox("Information",string( "Type" ))
	MessageBox("Information",string( String(var_Property2.Type) ))

17:
How can I get values of the duration iCalendar format

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

MessageBox("Information",string( "all:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar("P1D",6,"")) ))
MessageBox("Information",string( "duration:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar("P1D",6,"Duration")) ))

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

OleObject oICalendar,p,var_Component
any i

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Duration",oICalendar.toICalendar(3.325,6))
p = oICalendar.Root.Properties.Item("Duration")
i = oICalendar.toICalendar(p.Value,p.GuessType)
MessageBox("Information",string( "icalendar:" ))
MessageBox("Information",string( String(i) ))
MessageBox("Information",string( "all:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"")) ))
MessageBox("Information",string( "duration:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"Duration")) ))
MessageBox("Information",string( "weeks:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"W")) ))
MessageBox("Information",string( "days:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"D")) ))
MessageBox("Information",string( "hour:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"H")) ))
MessageBox("Information",string( "min:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"M")) ))
MessageBox("Information",string( "sec:" ))
MessageBox("Information",string( String(oICalendar.valuesFromICalendar(String(i),p.GuessType,"S")) ))

15:
How can I add a property of duration type

OleObject oICalendar,var_Component,var_Property

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Duration1",oICalendar.toICalendar(2.5,6))
	var_Property = var_Component.Properties.Add("Duration2")
		var_Property.Value = 2.5
		var_Property.Type = 6
	var_Component.Properties.Add("Duration3",oICalendar.valuesToICalendar("D=2;H=12",6))
MessageBox("Information",string( oICalendar.Save() ))

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

OleObject oICalendar,var_Component,var_Property

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("DateTime1",DateTime(2001-01-01,12:00:00))
	var_Component.Properties.Add("DateTime2",oICalendar.toICalendar(2001-01-01,5))
	var_Property = var_Component.Properties.Add("DateTime3")
		var_Property.Value = 2001-01-01
		var_Property.Type = 5
MessageBox("Information",string( oICalendar.Save() ))

13:
How can I add a property of date type

OleObject oICalendar,var_Component,var_Property

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Date1",2001-01-01)
	var_Component.Properties.Add("Date2",oICalendar.toICalendar(2001-01-01,4))
	var_Property = var_Component.Properties.Add("Date3")
		var_Property.Value = 2001-01-01
		var_Property.Type = 4
MessageBox("Information",string( oICalendar.Save() ))

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

OleObject oICalendar,var_Component,var_Property

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("caladdress1","mailto:support@exontrol.com")
	var_Component.Properties.Add("caladdress2",oICalendar.toICalendar("mailto:support@exontrol.com",3))
	var_Property = var_Component.Properties.Add("caladdress3")
		var_Property.Value = "mailto:support@exontrol.com"
		var_Property.Type = 3
MessageBox("Information",string( oICalendar.Save() ))

11:
How can I add a property of boolean type

OleObject oICalendar,var_Component,var_Property

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Boolean1",true)
	var_Component.Properties.Add("Boolean2",oICalendar.toICalendar("TRUE",2))
	var_Property = var_Component.Properties.Add("Boolean3")
		var_Property.Value = 0
		var_Property.Type = 2
MessageBox("Information",string( oICalendar.Save() ))

10:
How can I add a property of binary type

OleObject oICalendar,var_Component,var_Property

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.Content.Components.Add("VCALENDAR")
	var_Component.Properties.Add("Binary1",oICalendar.toICalendar("This is a bit of text converted to binary",1))
	var_Property = var_Component.Properties.Add("Binary2")
		var_Property.Value = "This is a bit of text converted to binary"
		var_Property.Type = 1
MessageBox("Information",string( oICalendar.Save() ))

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

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

oICalendar.Load("BEGIN:VCALENDAR\r\nVERSION:2.0\r\nEND:VCALENDAR")
MessageBox("Information",string( oICalendar.Root.Name ))
MessageBox("Information",string( String(oICalendar.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

/*begin event AddComponent(oleobject NewComponent) - Occurs when a new component is added.*/
/*
	MessageBox("Information",string( String(NewComponent) ))
*/
/*end event AddComponent*/

/*begin event AddProperty(oleobject NewPropery) - Occurs when a new property is added.*/
/*
	MessageBox("Information",string( String(NewPropery) ))
*/
/*end event AddProperty*/

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

oICalendar.FireEvents = true
oICalendar.Load("BEGIN:VCALENDAR\r\nVERSION:2.0\r\nEND:VCALENDAR")

7:
How can I add a property with parameters

OleObject oICalendar,var_Component,var_Properties

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.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",2001-01-01)
MessageBox("Information",string( oICalendar.Save() ))

6:
How can I load iCalendar from a string

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

oICalendar.Load("BEGIN:VCALENDAR\r\nVERSION:2.0\r\nEND:VCALENDAR")
MessageBox("Information",string( oICalendar.Content.Components.Item(0).Name ))

5:
How can I add VEVENT objects

OleObject oICalendar,var_Component,var_Properties,var_Properties1,var_Properties2

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.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",2001-01-01)
		var_Properties1.Add("DTEND",2001-01-02)
		var_Properties1.Add("SUMMARY","First Party")
	var_Properties2 = var_Component.Components.Add("VEVENT").Properties
		var_Properties2.Add("DTSTART",2001-01-04)
		var_Properties2.Add("DTEND",2001-01-05)
		var_Properties2.Add("SUMMARY","Second Party")
MessageBox("Information",string( oICalendar.Save() ))

4:
How can I save the control's content to iCalendar format, as a file
OleObject oICalendar,var_Component,var_Properties,var_Properties1

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.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",2001-01-01)
		var_Properties1.Add("DTEND",2001-01-02)
		var_Properties1.Add("SUMMARY","Bastille Day Party")
oICalendar.SaveFile("c:/temp/test.ical")

3:
How can I load the iCalendar format from a file

OleObject oICalendar

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

oICalendar.LoadFile("c:/temp/test.ical")
MessageBox("Information",string( String(oICalendar.Content.Components.Item("VCALENDAR").Properties.Item("PRODID").Value) ))

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

OleObject oICalendar,var_Component,var_Properties,var_Properties1

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Component = oICalendar.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",2001-01-01)
		var_Properties1.Add("DTEND",2001-01-02)
		var_Properties1.Add("SUMMARY","Bastille Day Party")
MessageBox("Information",string( oICalendar.Save() ))

1:
How can I generate a VCALENDAR object

OleObject oICalendar,var_Properties

oICalendar = CREATE OLEObject
oICalendar.ConnectToNewObject("Exontrol.ICalendar.1")

var_Properties = oICalendar.Content.Components.Add("VCALENDAR").Properties
	var_Properties.Add("Version","2.0")
	var_Properties.Add("PRODID","-//hacksw/handcal//NONSGML v1.0//EN")
MessageBox("Information",string( oICalendar.Save() ))