exschedule - what's new
23.0.0.1 Mar 13, 2024
*NEW:   Undo-Redo support
*Added: AllowUndoRedo property enables or disables the Undo/Redo feature
*Added: CanUndo property retrieves a value that indicates whether the control can perform an Undo operation
*Added: CanRedo property retrieves a value that indicates whether the control can perform a Redo operation
*Added: Undo method performs the last Undo operation
*Added: Redo method redoes the next action in the control's Redo queue

22.0.0.4 Jan 17, 2024
*Added: The label of the date's header (HeaderDayLongLabel,  HeaderDayShortLabel property) is centered relative to the view, instead of the full date
*Fixed: The AttachTemplate method fails if using "handle" keyword on x64 version
*Fixed: Sometimes, the right-panel shows no dates if Calendar.Selection property is an expression (for instance, Calendar.Selection = "year(value)=2012")
*Fixed: The Layout property does not restore properly the widths of the groups

22.0.0.3 Oct 11, 2023
*Added: Update the samples to support x64 configuration (/COM version)
*Fixed: No control frame is shown in design-mode under MS Excel's spreadsheet
*Fixed: The expropertieslist/com fails if the user is trying to spy the control (x64 version only, AllowSpy property, browses the object by drag and drop)
*Fixed: The Group.Width property is ignored during the initialization procedure (for instance, you call the Width property right after adding a group)

22.0.0.2 Jul 19, 2023
*Added: TemplateDef/TemplatePut property allows defining inside variables for the Template feature ( available for /COM only, and useful to assign properties with multiple parameters, which is not supported in dBASE )
*Added: The UNTIL and COUNT rules can be used together within the Event.Repetitive property (RFC 5545)
*Fixed: The BySetPos rule ignores the occurrences within the first interval of dates. For instance "FREQ=WEEKLY;BYDAY=MO,SU;BYSETPOS=1;DTSTART=20120229;COUNT=4" returns "3/5/2012, 3/12/2012, 3/19/2012, 3/26/2012" while it should return "3/4/2012, 3/5/2012, 3/12/2012, 3/19/2012". The week Feb 27, Mar 4 contains Feb 27(Mo) and Mar 4(Su), but since Feb 27 is before Feb 29 (DTSTART) it is ignored, so  BYSETPOS=1 gets Mar 4(Su) (3/4/2012)

22.0.0.1 Mar 09, 2023
*NEW:   Ability to specify the size to show the icons within the control
*Added: ImageSize property specifies the size of the control' icons. By default, the ImageSize property is 16. The control's Images collection is cleared if the ImageSize property is changed, so it is recommended to set the ImageSize property before calling the Images method.
*Fixed: The Data.Files(i) property returns only the first letter of the file rather than the full name of the dragged file (/COM version)

21.0.0.3 Dec 01, 2022
*Added: New visual appearance for all internal icons to support high DPI resolution (100%, 125%, 150%, 175%, 200% and 300%)
*Fixed: The internal icons are stretched and look distorted when DPI scaling is not 100%
*Fixed: A GPF may occur on closing the form/window/dialog if one or more events are handled by AttachTemplate method

21.0.0.2 Aug 16, 2022
*Fixed: Clicking (Custom) property generates "Class Not Registered" error (Windows x64, 'Looking for object with CLSID:{7EBDAAE1-8120-11CF-899F-00AA00688B10}')
*Fixed: Prevents changing the time for all-day events, when user moves / resizes the event by drag and drop within the current time-scale
*Fixed: The Background (exToolTipForeColor) property does not apply to the tooltip's title

21.0.0.1 Apr 13, 2022
*NEW: Z-Events support (Standard .NET event patterns)
*Added: Every event of the control (/NET assembly) provides a Z-Event alternative, of "void OnEventRaised(object sender, EventArgs args)" type. The .NET convention is for an event (Z-event) signature to have a void return and 2 parameters. The first parameter is of type System.Object and is the sender of the event. The second parameter must be of type System.EventArgs or derived from System.EventArgs and contains data passed between sender and receiver. For instance, the "DblClick(object sender, short Shift, int X, int Y)" event is equivalent to "ZDblClick(object sender, ZDblClickArgs e)", where "ZDblClickArgs" type is derived from System.EventArgs and includes definitions for Shift, X and Y properties
*Fixed: "Warning: The <event-name> event is a .NET event that does not follow the .NET convention for event signatures (OpenEdge, ABL code)". To prevent this warning, under OpenEdge environment you must use the Z-event alternatives 

20.0.0.2 Feb 14, 2022
*Added: Background(exScheduleDayBackColorAlternate) property specifies the visual appearance for alternate days. By default the Background(exScheduleDayBackColorAlternate) property is zero, and so the option is ignored.
*Added: Background(exScheduleDayForeColorAlternate) property specifies the foreground color for alternate days. By default the Background(exScheduleDayForeColorAlternate) property is zero, and so the option is ignored.
*Fixed: Prevents showing the event's up or down arrows for single-date "all-day" events, while the control's time-scale display all-day events (AllDayEvent property)

20.0.0.1 Nov 22, 2021
*Added: PowerBuilder 21.0 sample
*Fixed: On some machines, the format keyword (within expression properties) provides more than 2 decimals for French(Canada) regional settings (for instance "12.3456 format ``" displays 12,3456 instead of 12,35)

19.0.0.1 Jun 21, 2021
*Added: Event.Client property gets the event's client rectangle as a safe array of [x,y,width,height] type, relative to the control's top-left corner (If the event is not visible, the [0,0,0,0] safe array is returned)
*Added: Sets or gets the control's Font property in design mode, for the /NET version
*Fixed: The BackColor/ForeColor properties of the /NET version are not serialized once the user changes in design mode (the control's background/foreground is set to the default value once the form is started)
*Fixed: The BackColor/ForeColor properties of the /NET version are not copied in design mode, when the user copies the control in design-mode using CTRL + C (copy) and CTRL + V (paste) combination

18.0.0.1 Feb 24, 2021
*Added: ExSchedule.pdf (include the control's documentation in PDF format)
*Added: The Images method supports the Microsoft ImageList ( mscomctl.ocx, MSComctlLib.ImageList type) object directly. Shortly, you can define the control's images by calling Images(ImageList1.Object). The ImageList1.Object returns the object of MSComctlLib.ImageList type. The Microsoft ImageList object is available for /COM on x86 and x64 machines (starting from Access 2016)
*Fixed: The "Do you want to save changes to the design of form ''? Yes, No, Cancel" message occurs in MS Access, every time the form is closed in design mode

17.0.0.1 Oct 26, 2020
*NEW:   Support for "FileGroupDescriptor" and "FileContents" clipboard format, or ability to accept messages or attachments by drag and drop from the MS Outlook application (or any other applications that use these clipboard format)
*Added: During the OLEDragDrop event the Data.Files.Count property returns the number of messages or attachments being dropped, while Data.Files(index) property returns the fully path-name of the file that contains the message or the attachment. The control automatically extracts the message/attachment's content to a temporarily file, as you would drop a file from Windows Explorer.

16.0.0.2 Sep 07, 2020
*Added: The NonworkingTime.GroupID property is not serialized in XML format, using the SaveXML/LoadXML methods

16.0.0.1 Jun 15, 2020
*Added: The Event.UserData property is not serialized in XML format, using the SaveXML/LoadXML methods
*Fixed: The Calendar.FirstVisibleDate and Calendar.LastVisibleDate properties may return the values before changing the selection, during the LayoutEndChanging(exCalendarDateChange) event
*Fixed: FormatAnchor(False) = vbNullString fails (vbNullString is a special VB constant that denotes a null string. The "" literal is an empty string)

15.0.0.1 Jan 27, 2020
*Update: License information

14.0.0.2 Aug 28, 2019
*Added: Ability to scroll the control's content using two-fingers on a touchpad (swipe up or down with two fingers, scrolls the control's up or down)
*Added: The LayoutStartChanging(exScheduleMoveGroup)/LayoutEndChanging(exScheduleMoveGroup) event occurs once the user change the group's position by drag and drop.
*Fixed: "The current version, supports ADO and DAO Recordsets. Make sure that the object is an ADO recordset, or a DAO recordset" error may occur if using ADO objects.
*Fixed: Prevents showing the "This application is about to initialize ActiveX controls that might be unsafe. If you trust the source of this file, select OK and the controls will be initialized using your current workspace settings." warning message while the control is running into MS Office forms or user-forms.

14.0.0.1 May 08, 2019
*NEW:   Ability to executes x-script code ( including events ), from a string, file or a safe array of bytes. This feature allows you to load the control's visual appearance and behavior, without having to write any line of code. The x-script code can save EBNs, icons, pictures into BASE64 encoded strings, and so everything can be put into a single file, that should be invoked by AttachTemplate method. This feature allows you to run any x-script code for any configuration of the component (/COM, /NET or /WPF). 
*Added: AttachTemplate method executes the giving x-script code, and attach events if found. The x-script code can contain handle keyword that defines a handler for the specified event. For instance, the AttachTemplate("handle Click() { print(Version) }") sends the control's Version property to the debugger for display. All you need is to open the DebugView tool, and click the control.
*Added: The control's Template page supports AttachTemplate so you can assign x-script code ( including events )  in design mode, and so the control's visual appearance and behavior is changed once the control is created at runtime (/COM version only). 
*Added: The non-working times are shows as they were added. Previously, the z-order is lost if the control adds multiple non-working times ( NonworkingTimes.Add method )

13.0.0.7 Mar 11, 2019
*Added: Shows the drop down group and tooltip panels to the nearest monitor relative to the cursor position.
*Fixed: Closes the control's drag and drop image when user drops data to any other control. For instance, a MessageBox during the target's OLEDragDrop event will keep showing the control's drag and drop picture ( Background(exDragDropAfter) property, /COM version )
*Fixed: Sometimes the user can't drop data to a target control ( OLEDragDrop event is not fired, or fired for the source control, /COM version )
*Fixed: An union non-working time is displayed if two separate non-working times overlap ( NonworkingTimes.Add method )

13.0.0.6 Feb 04, 2019
*NEW:   Multiple improvements for expression-like properties
*Added: a `like` b binary-operator compares the string a against the pattern b. The pattern b may contain wild-characters such as *, ?, # or [] and can have multiple patterns separated by space character. In order to have the space, or any other wild-character inside the pattern, it has to be escaped, or in other words it should be preceded by a \ character. For instance "value like `F*e`" matches all strings that start with F and ends on e, or "value like `a* b*`? indicates any strings that start with a or b character.
*Added: The 0x or 0X sequence proceed the hexa-representation of a number, in properties that support expressions. For instance, "value = 0x100" specifies whether the value is 256 ( 0x100 in hexa-representation ) 
*Added: `hex` a unary-operator converts the giving string from hexa-representation to a numeric value, or converts the giving numeric value to hexa-representation. For instance, hex(`FF`) returns 255, while the hex(255) or hex(0xFF) returns the `FF` string. The hex(hex(`FFFFFFFF`)) always returns `FFFFFFFF` string, as the second hex call converts the giving string to a number, and the first hex call converts the returned number to string representation (hexa-representation). 
*Added: a `bitand`, `bitor`, `bitxor` b binary/bitwise-operator computes the AND/OR/XOR operation on bits of a and b, and returns the unsigned value. For instance, 0x01001000 bitand 0x10111000 returns 0x00001000, 0x01001000 bitor 0x10111000 returns 0x11111000, 0x01110010 bitxor 0x10101010 returns 0x11011000.
*Added: a `bitshift` b, binary/bitwise-operator shifts every bit of a value to the left if b is negative, or to the right if b is positive, for b times, and returns the unsigned value. For instance, 128 bitshift 1 returns 64 ( dividing by 2 ) or 128 bitshift (-1) returns 256 ( multiplying by 2 )
*Added: `bitnot` x unary/bitwise-operator flips every bit of x, and returns the unsigned value. For instance, bitnot(0x00FF0000) returns 0xFF00FFFF.

13.0.0.5 Nov 22, 2018
*NEW:   Display a placeholder for missing icons, images in HTML captions.
*Added: The Key parameter of the HTMLPicture property is case insensitive, so you can display the picture using the insensitive key. For instance, <img>picA</img> is equivalent with <img>pica</img>, or <img>PICA</img> and so on.
*Added: The HTML caption shows a missing image placeholder for images whose source is missing. The missing placeholder displays the index of the icon being missing, or the key of the HTML picture being missing. 
*Fixed: Resizes the drop down popup / select arrow based on the current DPI settings.

13.0.0.4 Sep 12, 2018
*Fixed: The SelectAll method selects un-selectble events.
*Fixed: Prevents "Do you want to save ..." / "Save changes...' input box, when the user opens the form in design mode, and close it.
*Fixed: The NonworkingTimeFromPoint property returns nothing, if ShowNonworkingTime property is exHideNonworkingTime.
*Fixed: The NonworkingTimeFromPoint property returns the first NonworkingTime object, when the schedule displays multiple groups ( ShowGroupingEvents property is True )

13.0.0.3 Jul 19, 2018
*Added: Displays each All-Day event into the group's owner only, while the Event.GroupID points to an exiting group, and ShowGroupingEvents property is True ( Event.AllDayEvent property is True )
*Added: Displays All-Day events with invalid GroupID, on the entire day, while the ShowGroupingEvents property is True ( Event.AllDayEvent property is True, Event.GroupID property on -1 )
*Fixed: Clips the event's caption, label, picture, icons to the event's body.

13.0.0.2 May 09, 2018
*Added: `MIN` and `MAX` binary-operators to get the MIN and MAX value. For instance, the expression `value MIN 10 MAX 100` returns always a value between 10 and 100.
*Added: `sin`, `asin`, `cos`, `acos` unary-operators to get the associated trigonometric functions. For instance `2 * asin(1)` returns the value of PI
*Added: `sqrt` unary-operator returns the square root of the element, so sqrt(81) returns 9, as 9^2 is 81
*Added: date(`now`) unary-operator returns the current date-time ( as double ), while the date(``) returns the current date ( no time included )
 
13.0.0.1 Mar 26, 2018
*NEW:   Ability to re-evaluate the expressions of DefaultEventLongLabel, DefaultEventShortLabel, Event.LongLabel, Event.ShortLabel and so on, as HTML, if they are prefixed by the "<%=%>" sequence. Shortly, an expression that starts with "<%=%>" is evaluated and its result is displayed in HTML format. For instance, the DefaultEventLongLabel property on "<%=%><%=%5%><br><%=%256%>", forces the expression to be re-evaluated and to display the new caption by applying new HTML tags found. By default, the %5 indicates the event's Caption property, so if it contains HTML tags they will be applied as is, instead displaying them as plain text. Instead, if the DefaultEventLongLabel property "<%=%5%><br><%=%256%>" displays on the first line the Caption of the Event, and on the second line the event's Start and End margins in short format. In case the Caption property includes HTML tags they will not be applied, as they will be displayed as plain text.
*Fixed: The exCalendarBorderLineColor value of BackgroundPartEnum type switched from 22 to 26
*Fixed: The exCalendarCommentDate value of BackgroundPartEnum type switched from 23 to 27
*Fixed: Can't scroll the control if touching with fingers the buttons of the scroll bar.

12.2.0.4 Feb 26, 2018
*Added: Ability to display schedule events from different years in the same view ( previously the schedule chart can not display events from different years, on the same view ). For instance, if the user selects the first week of the year 2019, just events of the year 2018 are shown, not including the first days of the year 2019.
*Added: The Version property includes the SpecialBuild number of the assembly so it provides information like Major.Minor.Build.Revison.SpecialBuild.Type...
*Fixed: A GPF occurs if the application is started from design mode ( demo / evaluation / trial version only )
*Fixed: The ALT-GR + A, selects all text and insert the associated diacritic letter from the current installed language.

12.2.0.3 Dec 06, 2017
*Added: "Clear Visual Design" and "Edit Visual Design" are available for /NET version on design mode.
*Fixed: Can't select a word that contains accented(acute, circumflexm umlaut and dieresis) characters, if the user double clicks it, or using the CTRL + SHIFT + Right key.
*Fixed: Prevents a memory leak when loading icons, pictures, from BASE64 encoded strings (Images method, HTMLPicture picture).

12.2.0.2 Sep 27, 2017
*Added: VerticalScrollWheel property indicates the distance to scroll using the mouse wheel. By default, the VerticalScrollWheel property is 1, which indicates the control's font height. The VerticalScrollWheel property determines the the distance to scroll using the mouse wheel by multiplying the value with the height of the current font, if the value is positive, else if the value is negative it indicates a fixed distance.
*Added: AllowSelectCreateEvent property specifies whether the newly created event gets selected or highlighted ( for s short period of time, 1 second )
*Added: Background(exScheduleAllDayEventScrollBackColor) property specifies the visual appearance to put on the all-day events header, when it contains scrolling events.
*Fixed: Can't create new events right away, if the control's events selection is not empty ( create new events after second click )

12.2.0.1 Jul 12, 2017
*NEW:   Scroll support for All-Day Events
*Added: AllowAllDayEventScroll property gets or sets a value that specifies whether the all-day events header supports scrolling. The AllowAllDayEventScroll property can specify how many all-day events are shown in the header or if the all-day events can be scrolled using the mouse wheel.
*Added: LayoutStartChanging(exScheduleScrollAllDayEvent) / LayoutEndChanging(exScheduleScrollAllDayEvent) events notifies your application that the user scrolls the all-day events header
*Fixed: The the context's menu copy, paste, etc buttons are not size correctly, with the Windows set to Classic theme

12.1.0.4 May 24, 2017
*NEW:   Ability to customize the html edit's context menu
*Added: EditContextMenuItems property specifies the control's context menu, while editing the event
*Added: </solidline>, </upline>, </dotline> HTML tags ends the solid, up or dotted line
*Added: Prevents showing the ,.;!?'")}] characters at the beginning of a new line, when html text is word-wrapping.

12.1.0.3 Mar 29, 2017
*Added: Prevents scrolling the view when the user rolls the mouse wheel, and the AllowMoveSchedule property is exDisallow
*Fixed: Can't select a date in the control's calendar panel with the finger when touching the capacitive screen.
*Fixed: The last italic character of a HTML caption may be shown as clipped

12.1.0.2 Feb 15, 2017
*NEW:   PDF (Portable Document Format) Support, or ability to export directly the control's content to a PDF file
*NEW:   BMP, JPG, GIF, PNG, TIFF, EMF Support (  Ability to save the control's content to BMP, JPG, GIF, PNG, TIFF, EMF formats )
*Added: The CopyTo property copies the control's content to PDF format, if the extension of the File argument indicates a pdf extension. For instance, the CopyTo("c:\temp\snapshot.pdf") property saves the control's content in PDF format to snapshot.pdf. The control's content is serialized as it would have no scroll bars. The File argument could indicates more parameters separated by | character, in the following order: filename.pdf | paper size | margins | options where the filename indicates the name of the pdf to be saved, the paper size indicates the size of the paper to be used ( by default A4 paper, 8.27 in x 11.69 in ), margins defines the paper's margins ( by default, 0.5 in 0.5 in 0.5 in 0.5 in ) and options currently can be single which indicates that whole control is saved to a single paged PDF document. For instance, the CopyTo("c:\temp\snapshot.pdf|||single") exports the control's content to single page.
*Added: The CopyTo property copies the control's content to BMP, PNG, JPG, TIF or GIF format. Previously, the CopyTo property can save the control's content to EMF format only. The extension of the File argument indicates the graphical format to be saved. For instance, the CopyTo("c:\temp\snapshot.png") property saves the control's content in PNG format to snapshot.png. If File parameter provides an unknown extension, the control's content is saved in EMF format ( Enhanced Metafile Format ). The control's content is serialized as it would have no scroll bars.
*Fixed: Prevents showing the control's view in design mode, while running on FORTH system ( /COM version )

12.1.0.1 Jan 09, 2017
*NEW:   Recurrence Support according to RFC 5545 ( ICalendar Format )
*Added: Event.Repetitive property supports Recurrence expression as described on RFC 5545. The Events.Add(#8/5/1997 9:00:00 AM#,#8/5/1997 2:00:00 PM#).Repetitive = "FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1" adds a new event for last week day of each month, from 9:00 AM to 2:00 PM.
*Added: Calendar.ShowWeeks property specifies whether the calendar panel shows the week numbers.
*Added: Calendar.DisplayWeekNumberAs property specifies the way the control displays the week number ( Calendar.ShowWeeks property ). The exISO8601WeekNumber indicates that the first week has 4 January in it (ISO8601 specifications), while exSimpleWeekNumber indicates that the first week starts on January 1st.

12.0.0.4 Nov 09, 2016
*Fixed: The pictures of a disabled event are not visible or shown at a different position, while the cursor hovers the event. 
*Added: lfind binary-operator for format/expression. The a lfind b searches the first occurrence of the string b within string a, and returns -1 if not found, or the position of the result ( zero-index ). For instance, `ABCABC` lfind `D` returns -1, while  `ABCABC` lfind `C` returns 2.
*Added: rfind binary-operator for format/expression. The a rfind b searches the last occurrence of the string b within string a, and returns -1 if not found, or the position of the result ( zero-index ). For instance, `ABCABC` rfind `D` returns -1, while  `ABCABC` rfind `C` returns 5.
*Added: reverse unary-operator for format/expression. The reverse(a) reverses the order of the characters in the string a, For instance, the reverse("Mihai") returns "iahiM"
*Fixed: Prevents extending the B,I,U,S attributes (Type category) once A,G,O or S attribute is selected, in the context-menu of HTML editor.

12.0.0.3 Oct 05, 2016
*Added: The Version property for /NET or /WPF version returns more information about the component/assembly/file.
*Added: Background(exScheduleAllDayHeaderBackColor) property specifies the background color ( EBN color ) to be shown on the control's all heady header ( ShowAllDayHeader property is True )
*Fixed: An ICO file shows as 18x18 instead of 16x16 pixels if it is loaded using the HTMLPicture method.
*Fixed: The a mod b expression fails, if b is zero or negative.

12.0.0.2 Aug 10, 2016
*Fixed: In uniPaaS 1.9, can't use the CTRL+F2 key to access a specific program.
*Fixed: The calendar panel advances two months if the user clicks the left/right buttons
*Fixed: The Event.KnownProperty(exEventID) property may return a different identifier than DataField(exEventID) field of the current's DataSource recrodset.
*Fixed: The a mid b expression fails, if b expression is greater than the length of the a

12.0.0.1 Jun 22, 2016
*NEW:   Unlimited options to show any HTML text, images, colors, EBNs, patterns, frames anywhere on the pattern's background. Ability to draw additional EBN/Color/Text/Patterns/Images on the pattern, using the EBN String Format (create and run at runtime EBN objects)
*Added: Pattern.BackgroundExt property indicates additional colors, text, patterns, images that can be displayed on the pattern's background using the EBN string format. For instance, Pattern.BackgroundExt = "bottom[4,back=RGB(0,0,0)],top[4,back=RGB(0,0,0)]" draws a 4-pixels wide line aligned to the top and bottom sides of the pattern.
*Added: Serializes the Pattern.BackgroundExt in XML format, when using the SaveXML / LoadXML methods
*Added: The event's position on the schedule view is determined by the Event.KnownProperty(exEventID) property.

11.0.0.2 Apr 04, 2016
*NEW:   Ability to change the control's content menu visual appearance using EBN objects
*Added: Background(exContextMenuSelBackColor) property specifies the solid/EBN selection's background color in the control's context menu. The Background(exContextMenuSelBackColor) is valid while it is not zero.
*Added: Background(exContextMenuSelBorderColor) property specifies the solid color to show the selection in the control's context menu. The Background(exContextMenuSelBorderColor) is valid while it is not zero.
*Added: Background(exContextMenuSelForeColor) property specifies the selection's text foreground color in the control's context menu. The Background(exContextMenuSelForeColor) is valid while it is not zero.

11.0.0.1 Mar 07, 2016
*NEW:   WYSIWYG Built-In HTML Editor ( Event's ShortLabel, LongLabel or ExtraLabel allows HTML editing, while Caption or Repetitive plain text editing )
*Added: Background(exContextMenuAppearance) property indicates the visual appearance of the borders / inside of the control's context menu. For instance, Background(exContextMenuAppearance) = 0x2000000, indicates that the control's context menu shows the EBN (borders and client area) with the identifier 2 in the control's VisualAppearance collection. The Background(exContextMenuAppearance) is valid while it is not zero. 
*Added: Background(exContextMenuBackColor) property specifies the solid background color for the control's context menu. The Background(exContextMenuBackColor) is valid while it is not zero.
*Added: Background(exContextMenuForeColor) property specifies the text foreground color for the control's context menu. The Background(exContextMenuForeColor) is valid while it is not zero.

10.0.0.3 Jan 11, 2016
*Fixed: Prevents showing the today date when the control is refreshed in exhelper.
*Fixed: Rotating the mouse wheel scrolls the control's content by 1 pixel, if the control's ScrollBars property is 0 ( exNoScroll )
*Fixed: Sometimes the user still can create multi-days events, even if the AllowMultiDaysEvent property is False
*Fixed: An unhandled exception of type 'System.AccessViolationException' occurred when user presses the ALT+F4 key while editing a node ( /NET or /WPF version )
*Fixed: A Click event occurs right after DblClick event.
*Fixed: The Events.Remove does not remove the event giving its handle, on Windows 10 64-bit

10.0.0.2 Dec 21, 2015
*Added: Improves the way of scrolling the control's content while moving the objects outside of the control's client area, by drag and drop, and the control's margins are close to margins of the screen/monitor. 
*Added: The HeaderDayLongLabel property supports <=>EXPR as the HeaderDayShortLabel property
*Added: Auto-sizes the All-Day Header according to visible dates in the current view.
*Added: Limits the all-day events to the date's client view. 
*Fixed: The controls hangs up for a while if the user clicks contiguously any button on the control's scroll bars.

10.0.0.1 Nov 16, 2015
*NEW:   Windows 8.1 64-bit compatibility
*Added: The /COM 64-bit version is compatible with Microsoft Office Applications: Excel 2013, Access 2013,...
*Added: The /NET(/WPF) 64-bit version is compatible with Microsoft NET Framework 4, 4.5, 4.5.1, ...
*Fixed: Sometimes, the Events.Item(Handle) property returns nothing, if Handle parameter is of double/float type, instead returning the event giving its identifier. The Event.KnownProperty(exEventID) property specifies the event's identifier.
*Fixed: Prevents truncating the last selected date in the schedule view ( vertical scroll bar ) when the user changes programmatically the  DayViewHeight / DayViewWidth property

9.3.0.1 Sep 21, 2015
*NEW:   Ability to serialize the control's content as a text using the SaveXML method
*Added: The SaveXML method exports the control's content as a string, if the Destination parameter is a reference to a string. For instance, The syntax Dim s As String: G2antt1.SaveXML s: MsgBox (s), saves and displays the control's content in XML format as a string.
*Added: The LoadXML method loads the control's content from a string, previously saved using the SaveXML to a string.
*Added: Serializes the Event.BodyBackgroundExt
 in XML format, when using the SaveXML / LoadXML methods


9.2.0.1 Aug 31, 2015
*NEW:   Unlimited options to show any HTML text, images, colors, EBNs, patterns, frames anywhere on the event's background. Ability to draw additional EBN/Color/Text/Patterns/Images on the event, using the EBN String Format (create and run at runtime EBN objects)
*Added: Event.BodyBackgroundExt property indicates additional colors, text, patterns, images that can be displayed on the event's background using the EBN string format. For instance, Event.BackColorExt = "bottom[4,back=RGB(0,0,0)],top[4,back=RGB(0,0,0)]" draws a 4-pixels wide line aligned to the top and bottom sides of the event. The Event.BackColorExt = "bottom[10%+12,back=RGB(255,0,0),text=`<img>alert</img><b>Alert!`,align=0x11]" displays the alert picture and the Alert! caption as bold, on the RED background, on the bottom portion of the event (10%+12 pixels-wide from the object's client area). 
*Added: Event.BodyBackgroundExtValue(Index,Property) property gets or sets a value that indicates the value of giving property for the object with indicated index. This property has effect only if the BodyBackgroundExt property is set. The BodyBackgroundExtValue property allows you to change programmatically, the properties of the parts that composes the EBN object. For instance, Event.BodyBackgroundExtValue(0,exFrameColorExt) = RGB(255,0,0) draws a red frame around the root part of the object. For instance, you can use this property to change properties ( like colors ) of the EBN without having to assign a new EBN string format 
*Tip:   The EBN is a set of UI elements that are built as a tree where each element is anchored to its parent element. The BodyBackgroundExtValue property can change properties like: exBackColorExt (element's background color, including other EBN objects), exClientExt (position/size of the element), exAnchorExt (element's alignment relative to its parent), exTextExt (associates a HTML text on the element), exTextExtWordWrap (word wrapping of the elements text), exTextExtAlignment (alignment of the element's text), exPatternExt (pattern to be shown on the element), exPatternColorExt ( color of the pattern on the element ), exFrameColorExt (color to show the border-frame on the element), exFrameThickExt (shows a thick-frame around the element), exUserDataExt (associates an extra-data with the element)
*Tip:   The eXButtons's builder WYSWYG tool provides the To String field, that indicates the EBN string format that can be used by BodyBackColorExt/BodyBackColorExtValue properties.

9.1.0.2 June 10, 2015
*Added: Calendar.FitSelToView property specifies the list of additional dates to be shown on the schedule view, when Calendar.OnSelectDate property is exFitSelToView. Could be a numeric expression, a string of numbers separated by comma, or a one-dimensional safe array of values that indicates the increment to selected date to be added to view. For instance, the "-1,1" indicates that the view shows 2 additional dates beside the selected date, which is 1 day before and 1 day after the selected date.
*Fixed: The Event's KnownProperty(exEventID) property is not serialized in XML format ( LoadXML/SaveXML methods )
*Fixed: The FormatAnchor property has no effect.
*Fixed: "Visual C++ Runtime Error!" occurs if using the <fgcolor> or <bgcolor> with no indicating the color. Correct is <fgcolor RRGGBB>, instead <fgcolor>

9.1.0.1 Apr 29, 2015
*NEW:   Support for EBN 1002 version.
*Added: The EBN 1002 allows using skin objects with horizontal, vertical stretch and colorable/not-colorable parts of the EBNs.
*Added: ShowTimeScale property specifies whether the control's time scale is shown or hidden. For instance, if the user selects multiple dates, and the time-scale is not fit the control's view, the ShowTimeScale property returns False.
*Added: ShowViewCompact on exViewSingleColumn(2), indicates that the schedule view arranges all days to a single column (vertically).

9.0.0.1 Feb 29, 2015
*NEW:   Ability to lock the date header, so you can vertically scroll the timescale, while the date header is still visible on the control's top.
*Added: The exViewSingleRowLockHeader flag on ShowViewCompact property locks the chart's header position while user scrolls the time scale, so the schedule view arranges all days to a single row (horizontally)
*Fixed: The control's scroll bar is not updated while clicking contiguously any button on the control's scroll bars.
*Fixed: The HeaderDayLongLabel property is empty, instead of: "<|><%dddd%>, <%mmmm%> <%d%>, <%yyyy%><|><%dddd%>,<%mmmm%> <%d%>,<%yyyy%><|><%dddd%>, <%mmmm%> <%d%>,`<%yy%><|><%dddd%>, <%mmmm%> <%d%><|><%dddd%>, <%m3%> <%d%><|><%dddd%>, <%d%><|><%dddd%><|><%d3%><|><%d2%><|><%d1%>"
*Fixed: Rearranges the selected dates to fit the schedule view, when the control's calendar is shown or hidden, if the OnResizeControl property includes the exCalendarAutoHide, and the OnSelectDate property is exFitSelToView. 

8.3.0.2 Feb 09, 2015
*Added: Synchronize(Records) method synchronizes the events with the records, while the control is bounded to a recordset, using the DataSource property (/COM only). If no Records is specified, it synchronizes each change in the database and reflect to the control's content. If Records parameter is specified it should be a safe array of variant values, each value representing the bookmark for each record to be synchronized with the associated event. For instance, the Schedule1.Synchronize Array(Schedule1.DataSource.LastModified) updates the last modified record.
*Fixed: The time-scale does not display 12 hour format, even if the AM/PM indicator is included in the label.
*Fixed: The LongLabel property on "<%=(%3 ? '' : (time(%1) + ' ' ))%>"  & "some text" displays the event time when it is not an all-day event, Initially it works fine, but if the event is dragged to the all-day section of the day and back, the time is no longer shown.
*Fixed: Prevents selecting the event from the cursor once the OLE Drag and Drop operation ends ( /COM only ).
 
8.3.0.1 Dec 10, 2014
*NEW:   Ability to save/restore the control's layout/view
*Added: Layout property, saves or loads the control's layout. The control's layout includes the selection and browsing month in the calendar panel, the position, size of each time-scale, the size and position of each group, control's scroll bars, and so on. For instance, you can use the Layout property to store and restore the control's view when application exits, or when user starts the application.
*Added: ShowHighlightDateEnum.exHighlightGroupingEvents flag indicates that the highlight colors are shown based on the groups in the schedule panel.
*Added: -1 is ignored ( not shown ) as highlight color, if using in the HighlightDate property ( value or any value in the array )

8.2.0.5 Nov 19, 2014
*NEW:   Ability to highlight dates in the calendar/schedule panels, with one or more colors, using solid colors, EBN or gradient colors.
*Added: ShowHighlightDate property returns or sets a value that indicates whether the control shows the highlighted dates.
*Added: HighlightDate property highlights the specified date. The value could be a integer value that indicates the solid color or an EBN identifier. An one-dimensional safe array that contains a list of separate numbers, each number indicates the RGB/EBN color to mark the date. Also, it could be a string expression that specifies a list of numbers separated by comma. The number indicates the color to mark the date.
*Added: The Refresh method updates the visible events from associated records, when the control is connected to a data source. ( DataSource property )

8.2.0.4 Oct 15, 2014
*NEW:   Ability to show different non-working time for each group
*Added: The NonworkingTime.GroupID property specifies the identifier of the Group object where the current non-working interval is applied. The GroupID can be a numeric expression, a string expression that includes the list of identifiers separated by comma, or a one-dimensional safe array of numbers. The GroupID property may return empty value, so the non-working interval is applied to the entire date, a numeric value which indicates the identifier of Group objects where the non-working interval is applied, or a string expression if the current non-working time is applied to multiple Group objects.
*Added: The Event.KnownProperty(exEventDataSourceBookmark) property retrieves the event's bookmark that associates the event with a record in the data source ( DataSource property, available for /COM version )

8.2.0.3 Aug 27, 2014
*Added: The Background(exScheduleOLEDropPosition) property shows the group section ( ShowGroupingEvents property ) from the cursor, when OLE Drag and Drop operations are performed ( /COM only )
*Added: Ensures that the January 1st or MinDate is visible on the top-left corner, if the Calendar.AlignDate property is True. If False, the Calendar.Date can specify any date. 
*Fixed: The Event.ExtraLabel returns the Event.LongLabel value
*Fixed: The DefaultEventTooltip property has no effect.

8.2.0.2 May 26, 2014
*Added: Events.Item(Handle) property returns the event giving its identifier, if the Handle is of double/float type
. The Event.KnownProperty(exEventID) property specifies the event's identifier.

*Added: EventKnownPropertyEnum.exEventID specifies the event's unique identifier.
*Added: EventKnownPropertyEnum.exEventShortLabel defines the event's short label ( Event.ShortLabel property )
*Added: EventKnownPropertyEnum.exEventLongLabel defines the event's long label ( Event.LongLabel property )
*Added: EventKnownPropertyEnum.exEventExtraLabel defines the event's extra label ( Event.ExtraLabel property )

8.2.0.1 Apr 23, 2014
*NEW:   ADO/DAO support for the /COM version
*Added: ChangeEvent(Ev,Operation) event notifies your application when the event is added, removed or any of known properties (EventKnownPropertyEnum) are updated ( available for all versions ). The Ev parameter indicates the event being changed, while the Operation specifies the change operation it occurs ( like add, remove or update )
*Added: DataSource property retrieves or sets a value that indicates the data source for object.
*Added: DataField(EventKnownPropertyEnum) = Field property automatically updates / synchronizes the known property of the event with the associated data field and reverse.
*Added: Error(Error,Description) event notifies your application if any error occurs during ADO/DAO operations ( DataSource property ). For instance, if the control is trying to update a read-only DataSource.

8.1.0.2 Mar 28, 2014
*Added: The HTML tags are case insensitive, so the < b > is equivalent with < B >
*Added: Changes the date to display the scheduler, while OLE Drag and Drop hovers the calendar panel.
*Fixed: MS Access plays a beep, when the user presses the Backspace key on a edit type field.
*Fixed: In MS Access, can't use the CTRL+F4 key to close the current form.

8.1.0.1 Feb 11, 2014
*NEW:   OLE Drag and Drop support, or ability to drag and drop objects from/to another controls
*Added: OLEDropMode property returns or sets how a target component handles drop operations
*Added: OLEStartDrag event occurs when the OLEDrag method is called
*Added: OLEDragDrop event occurs when a source component is dropped onto a target component when the source component determines that a drop can occur.
*Added: OLESetData event occurs on a drag source when a drop target calls the GetData method and there is no data in a specified format in the OLE drag-and-drop DataObject.
*Added: OLEGiveFeedback event allows the drag source to specify the type of OLE drag-and-drop operation and the visual feedback.
*Added: OLEDragOver event occurs when one component is dragged over another
*Added: OLECompleteDrag event occurs when a source component is dropped onto a target component, informing the source component that a drag action was either performed or canceled
*Added: Background(exScheduleOLEDropPosition) property specifies the visual appearance on dropping position, when the component is implied to an OLE Drag and Drop operation. For instance, the Background(exScheduleOLEDropPosition) on -1, indicates that no position is shown during any OLE Drag and Drop events.
*Added: OLEDragDrop sample

8.0.0.2 Dec 11, 2013
*NEW:   Subscript and Superscript implementation in HTML captions, using the <off> HTML tag
*Added: <off>, </off> built-in HTML tags defines the vertical offset to display the elemenet, relative to the current position. This tag is inheritable. The <off pixels>, where, pixels indicates the vertical offset to be applied ). For instance, the following text displays a text with Subscript and Superscript such as: "Text <off 4>with subscript</off> <off -4>and superscript</off> support"
*Added: The <fgcolor=0000FF> and <fgcolor FF>, or <bgcolor=00FF00> and <bgcolor FF00>, so no = or full 6 hexa-digits are required to define the color to be applied
*Fixed: The <font> HTML tag is not overwritten when using inside another <font> tag
*Fixed: The parts of the line with different fonts in the HTML caption are vertically aligned ( instead aligning to the font's baseline ) if the line displays a picture or an icon using the <img> HTML tag.

8.0.0.1 Nov 11, 2013
*NEW:   Ability to detach the calendar panel, and place anywhere on your form.
*Added: Calendar.hWnd property retrieves the calendar's window handle.
*Added: Calendar.Parent property indicates the handle of the window that hosts the calendar panel.
*Added: Improves drastically the performance of the control when loading the events from XML or ADO/DAO tables.
*Fixed: Calling the Calendar.FirstVisibleDate or Calendar.LastVisibleDate during Form's Load event gets "Invalid procedure call or argument", runtime error

7.1.1.9 Oct 09, 2013
*NEW:   Scroll Extension which allows you to shrink the space used by control's scroll bars, and still using the scroll bars using the extension which shows up outside of the control's client area.
*Added: The ScrollPartEnum.exExtentThumbPart indicates the thumb-extension of the scroll bar. The ScrollPartVisible(Bar,exExtentThumbPart) on True enables the scroll bar extension.
*Added: Background(exVSThumbExt) specifies the visual appearance of the thumb-extension, for the vertical scroll bar. The similar values are exVSThumbExtP, exVSThumbExtD, exVSThumbExtH, when the thumb-extension is pressed, disabled or the cursor hovers it.
*Added: Background(exHSThumbExt) specifies the visual appearance of the thumb-extension, for the horizontal scroll bar. The similar values are exHSThumbExtP, exHSThumbExtD, exHSThumbExtH, when the thumb-extension is pressed, disabled or the cursor hovers it.
*Added: The LayoutStartChanging(exScheduleMove)/LayoutEndChanging(exScheduleMove) event occurs once the user rotates the mouse's wheel

7.1.1.8 Sep 23, 2013
*Added: ScrollButtonClick event. Occurs when the user clicks a button in the scrollbar.
*Added: ScrollPartVisible property. Indicates whether the specified scroll part is visible or hidden.
*Added: ScrollPartEnable property. Indicates whether the specified scroll part is enabled or disabled.
*Added: ScrollPartCaption property. Specifies the caption being displayed on the specified scroll part.
*Added: ScrollPartCaptionAlignment. Specifies the alignment of the caption in the part of the scroll bar.
*Added: ScrollToolTip property. Specifies the tooltip being shown when the user moves the scroll box.
*Added: ScrollFont property. Retrieves or sets the scrollbar's font.
*Added: ScrollButtonWidth property. Specifies the width of the button in the horizontal scrollbar.
*Added: ScrollButtonHeight property. Specifies the height of the button in the vertical scrollbar.
*Added: ScrollWidth property. Specifies the width of the vertical scrollbar.
*Added: ScrollHeight property. Specifies the height of the horizontal scrollbar.
*Added: ScrollThumbSize property. Specifies the size of the thumb in the scrollbar.
*Added: ScrollOrderParts(ScrollBar) property. Specifies the order of the buttons in the scroll bar.

7.1.1.7 Aug 19, 2013
*Added: Shows in front, the border that indicates the current selection of dates in the schedule view
*Change: The ShowViewCompact property is of ShowViewCompactEnum type, instead of Boolean type. 
*Change: ShowViewCompact on exViewCalendar(0,default), indicates that the schedule view arranges the days as they are shown in the calendar panel.
*Change: ShowViewCompact on exViewCalendarCompact(-1), indicates that the schedule view arranges the days as they are shown in the calendar panel, excepts that the first day of the month starts right after the last day of the previously month, or start to a new row.
*Change: ShowViewCompact on exViewSingleRow(1), indicates that the schedule view arranges all days to a single row.
*Fixed: Prevents showing the default appearance of the exVSUpper/exHSUpper/exVSLower/exHSLower, if the exVSBack/exHSBack is set

7.1.1.6 Jul 03, 2013
*Added: Calendar.HeaderDayLabel property specifies the HTML date-format to be shown on the calendar's header.
*Added: If no time scale visible ( TimeScale.Visible property is False), and the ShowAllDayHeader property is True, the schedule view handles only All-Day events.
*Added: The LayoutStartChanging(exLayoutExchangePanels)/LayoutEndChanging(exLayoutExchangePanels) event is fired once the user exchanges the panels by drag and drop.
*Added: By default, CTRL + Scroll, zoom in/zoom out the scheduler, if the AllowResizeSchedule property is not 0/exDisallow.

7.1.1.5 May 20, 2013
*NEW:   Ability to display the Year in Thai, Buddhist, Korean, ... format
*Added: The "<%loc_y%>" represents the Year only by the last digit, using current regional settings
*Added: The "<%loc_y%>" represents the Year only by the last two digits, using current regional settings. A leading zero is added for single-digit years.
*Added: The "<%loc_yyyy%>" represents the Year by a full four or five digits, depending on the calendar used. Thai Buddhist and Korean calendars have five-digit years. The "yyyy" pattern shows five digits for these two calendars, and four digits for all other supported calendars. Calendars that have single-digit or two-digit years, such as for the Japanese Emperor era, are represented differently. A single-digit year is represented with a leading zero, for example, "03". A two-digit year is represented with two digits, for example, "13". No additional leading zeros are displayed.

7.1.1.4 Apr 10, 2013
*NEW:   Ability to display All-Day events using a continued EBN, when it spreads on several days.
*Added: HeaderAllDayEventHeight property specifies the height of the All-Day events being displayed on the control's All-Day header.
*Added: Shows the event's next/prev signs with the same color as the event's body, if the Background(exScheduleEventContinuePrevWeek), Background(exScheduleEventContinueNextWeek),  Background(exScheduleEventContinuePrevDay) or Background(exScheduleEventContinueNextDay) points to EBN objects.
*Fixed: Sometimes, the next/prev continue icon is not shown for All-Day events, when the ShowAllDayHeader property is True

7.1.1.3 Mar 06, 2013
*Added: Calendar.Select(SelectCalendarDateEnum) method selects the current (focus) day, week, week day, month or year in the calendar panel. ( the toggle option is available such as Calendar.Select( exSelectWeek Or exSelectToggle ), selects or unselects the current week.
*Added: Group.Width property gets or sets the width of the current group.
*Added: The next week sign for All-Day events in the All-Day header shows at wrong position, if the Chart.FirstVisibleDaye is not exSunday.
*Fixed: In MS Access, can't handle the F2 key while the control has the focus.

7.1.1.2 Jan 21, 2013
*Added: ShowViewCompact property indicates whether the schedule view is compact, so the first day of the month starts right after the last day of the previously month, or start to a new row.
*Added: Previously, when viewing the schedule by week or month and the month ends during the week (July 31, Tuesday -> August 1, Wednesday), the days continue down as a new week 'row'. Now, if the ShowViewCompact property is True, the days continue on the same row, or next row, if not available. This option is valid if the schedule layout is 1 x 12, in other words, the month are vertically aligned one by one
*Added: The label for an All-Day event in the All-Day header is displayed when no time scale is displayed.
*Added: The label for an All-Day event in the All-Day header is displayed on the start of the event, as well on the beginning of each week.

7.1.1.1 Dec 17, 2012
*Added: An All-Day event that continues on multiple weeks display a continue icon to the end and / start of the week.
*Added: Background(exScheduleEventContinuePrevWeek) specifies the visual appearance of the sign that's shown when the current all-day event continues on the previously week.
*Added: Background(exScheduleEventContinueNextWeek) specifies the visual appearance of the sign that's shown when the current all-day event continues on the next week.
*Fixed: Displays in front, the All-Day events on the control's All-Day header ( ShowAllDayHeader property is True )

7.1.1.0 Oct 29, 2012
*NEW:   All-Day Header support, or an all-day event that stretches over multiple days can be displayed as a contiguously bar across those days
*Added: ShowAllDayHeader property specifies whether the control shows or hides the header for All-Day events. The Event.AllDayEvent property Indicates whether the event is an all day event.
*Added: AllowUpdateAllDayFlag property indicates if the All-Day flag for the events being moved using drop and drop are updated once the user drops the selection.
*Fixed: In MS Access, the control loses its data once the Visible property is set on False or when the control is hosted to a tab control, and user changes the pages.

7.1.0.3 Oct 10, 2012
*Added: Increases the performance of parsing HTML captions.
*Added: Calendar.FirstVisibleDate property retrieves the first visible date in the calendar panel.
*Added: Calendar.LastVisibleDate property retrieves the last visible date in the calendar panel.
*Fixed: Calling Events.Remove during the AnchorClick event fails.

7.1.0.2 Sep 12, 2012
*NEW:   New text decorations support for HTML captions, like outlined characters, shadow, ....
*Added: <gra>, </gra> built-in HTML tags define a gradient text ( the <gra> supports color, mode and blending, like <gra rrggbb;mode;blend>, where, rr/gg/bb represents the red/green/blue values of the ending color, 808080 if missing as gray, mode a value between 0 and 4, 1 if missing, and blend 0 or 1, 0 if missing )
*Added: <out>, </out> built-in HTML tags define a text to show with outlined characters ( the <out> supports color and width, like <out rrggbb;width>, where rr/gg/bb represents the red/green/blue values of the outline color, 808080 if missing as gray, width indicates the size of outline, 1 if missing.
*Added: <sha>, </sha> built-in HTML tags define a text with a shadow ( the <sha> supports color, width and offset, like <out rrggbb;width;offset>, where rr/gg/bb represents the red/green/blue values of the shadow color, 808080 if missing as gray, width indicates the size of shadow, 4 if missing, and offset indicates the offset from the origin to display the text's shadow, 2 if missing.

7.1.0.1 Aug 27, 2012
*NEW:   Print and Print-Preview support.
*Added: The Print.Options = "FitToPage=On" option ( of the exprint ) indicates that the schedule's content should fit to a single page.
*Added: The Print.Options = "Range=<expression>" option ( of the exprint ) indicates the range of date to be print and print-preview, where <expression> supports value keyword that indicates the date to be printed, and the <expression> supports all operators and predefined functions of Calendar.Selection property. For instance, Print.Options = "Range=month(value) in (6,7)" lists July and August of the browsing year.
*Added: EnsureVisible(Date) method ensures that the specified date fits the client area of the schedule view

7.0.0.2 Aug 03, 2012
*Added: Calendar.OnSelectDate property indicates the action that the control performs once the user selects a new date in the calendar panel.
*Added: DayViewWidth property indicates the width of the day's view in the schedule panel.
*Added: DayViewHeight property indicates the height of the day's view in the schedule panel.
*Added: DayViewOffsetX property indicates the horizontal scroll position of the schedule's view.
*Added: DayViewOffsetY property indicates the vertical scroll position of the schedule's view.

7.0.0.1 June 29, 2012
* Initial Release