exsurface - what's new
20.0.0.1 Mar 13, 2024
*Added: DPI-Aware Support
*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: Only the element from the cursor is moved by drag and drop (even more elements are being selection), while the control's AllowMoveDescendents property is False

19.1.0.5 Jan 15, 2024
*Fixed: Sometimes, the FitToClient() method does not zoom the control's content to fit its content
*Fixed: The Link.CustomPath property (XML attribute as well) is not properly restored on computers with regional settings other the English (United States)
*Fixed: Clicking (Custom) property generates "Class Not Registered" error (Windows x64, 'Looking for object with CLSID:{7EBDAAE1-8120-11CF-899F-00AA00688B10}')

19.1.0.4 Sep 27, 2023
*Fixed: The FitToClient method does not work if the Coord property is exCartesian + exAllowPositiveOnly, and Zoom property is different than 100% 
*Fixed: Can't scroll to origin while the Coord property is exCartesian + exAllowPositiveOnly, and Zoom property is different than 100% 
*Fixed: The lines of the link between objects/elements are not shown contiguously if the link's width is greater than 4

19.1.0.3 Jul 19, 2023
*Added: PositionToPoint(x,y) method converts the surface position to screen coordinates
*Added: PointToPosition(x,y) method converts the screen coordinates to surface position
*Fixed: Shows the link's arrow more accurate when the link's width is greater than 1 (LinksWidth property, Link.Width property)

19.1.0.2 Feb 27, 2023
*NEW:   Cartesian coordinates
*Added: Coord property specifies the type of coordinates the elements display within the surface. For instance, Coord property on exCartesian | exAllowPositiveOnly shows only positive Cartesian coordinates (only the right-up panel relative to origin is displayed). The exAllowPositiveOnly flag prevents element with negative values when the user moves the elements/pools by drag and drop.
*Fixed: Prevents showing the link's arrow smaller when multiple links are connected to the same element (ShowLinks property includes exShowExtendedLinks flag)

19.1.0.1 Dec 05, 2022
*NEW:   Ability to arrange orthogonally the link's path by drag and drop the control-points
*Added: LinkControlPointEnum.exOrthoArrange flag specifies that the user can arrange orthogonally the link's path by drag and drop the link's control- points. For instance, AllowLinkControlPoint on LinkControlPointEnum.exOrthoArrange Or LinkControlPointEnum.exMiddleControlPoint Or LinkControlPointEnum.exControlPoint Or LinkControlPointEnum.exEndControlPoint Or LinkControlPointEnum.exStartControlPoint indicates that the focused link displays all control-points (including the start/end control-points) and it can be orthogonally arranged once the user drag and drop a control-point. The link can be orthogonally arranged only if its path includes orthogonally lines (vertical or horizontal lines). If the LinkControlPointEnum.exOrthoArrange flag is missing the user can freely arrange the link by drag and drop any of its control-points.
*Fixed: Simplifies (removing the duplicate neighbor control-points, reducing the contiguously orthogonal lines, removing the loop once a control-point coincide with another) the link's path while it is customized by drag and drop only

19.0.0.1 Aug 16, 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 

18.0.0.5 Mar 14, 2022
*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)

18.0.0.4 Jan 17, 2022
*Fixed: The caption of the link is not placed adequately when you design a custom path for the link (AllowLinkControlPoint, Link.AllowControlPoint, Link.CustomPath property)
*Fixed: The ID parameter of the Arrange method is ignored
*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

18.0.0.3 Nov 24, 2021
*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: Can't delete the pool over a link of exLinkDirect type

18.0.0.2 oct 18, 2021
*Added: ExSurface.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 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 Aug 23, 2021
*NEW:   OLE Drag and Drop support (/COM only)
*Added: OLEDropMode property specifies how the component handles drop operations.
*Added: The OLEStartDrag event occurs when the OLEDrag method is called.
*Added: The OLEDragDrop event occurs when a source component is dropped onto a target component when the source component determines that a drop can occur.
*Added: The OLEDragOver event occurs when one component is dragged over another.
*Added: The OLEGiveFeedback event allows the drag source to specify the type of OLE drag-and-drop operation and the visual feedback.
*Added: The 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: The 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.

17.0.0.2 May 24, 2021
*Added: Documentation for eXSurface/JS (http://exontrol.com/rhelp.jsp?product=exsurface&config=/js)
*Added: Allows cross-links for all type of links (a cross-point is defined by intersection of a horizontal with a vertical line). Previously, the cross-points are shown for exLinkRectangular type only
*Added: Serializes the link's CustomPath property to XML format, using the SaveXML/LoadXML methods
*Added: Fires the LayoutStartChanging(exLinkControlPoint) / LayoutEndChanging(exLinkControlPoint) events as soon as user starts / ends changing the link's control points

17.0.0.1 Mar 17, 2021
*NEW:   Ability to customize the path of any link, by drag and drop the link's control points
*Added: The AllowLinkControlPoint property indicates the control points of the link, the user can use to customize the link's path. The property is applied to all links (unless the Link.AllowControlPoint property indicates a different value). For instance, exStartControlPoint | exEndControlPoint specifies that the user can change only the start/end position of the link. The exStartControlPoint and exEndControlPoint points are marked with black squares and defines the link's control points to change the link's start (Link.StartPos property) and end (Link.EndPos property) position. The exControlPoint points are marked black circles and  defines the corners of the link's path. You can remove a  exControlPoint points by dragging to another, so intermediate exControlPoint points are removed. You can move all control points of the link at once, if SHIFT key is pressed. The exMiddleControlPoint points are marked with gray circles, and are displayed between two exControlPoint points, to let the use add new exControlPoint points, to redefine the link's path. 
*Added: The Link.AllowControlPoint property defines the control points for an individual link, the user can use to customize the link. The AllowControlPoint property is similar with the control's AllowLinkControlPoint property, excepts that it is applied to a link only. For instance, exNoControlPoint specifies that the link displays no control points, so the user can not customize the link's path.
*Added: The Link.CustomPath property specifies the link's custom path, as a string of x,y proportions separated by comma. The CustomPath property contains the proportions of link's control-points, as a "x,y,x,y,x,y,...". The x, y are proportions of link's control-points relative to the start/end points of the link. The 0,0 indicates the link's start point, while 1,1 indicates the link's end point. For instance, "0.5,0,0.5,1" defines the link to go from start (0,0) to (0.5,0), then (0.5,1), and finally to the end (1,1)

16.0.0.4 Jan 27, 2021
*Added: Converts the ID and UserData properties of the Link object to integers (if conversion is possible), while using the LoadXML method
*Fixed: FormatAnchor(False) = vbNullString fails (vbNullString is a special VB constant that denotes a null string. The "" literal is an empty string)

16.0.0.3 Dec 09, 2020
*Fixed: The caption of a straight-link is not visible while the link is shown horizontally or vertically (Link.ShowLinkType = exLinkStraight)
*Fixed: The LinkFromPoint method returns wrong straight-link (Link.ShowLinkType = exLinkStraight)
*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.

16.0.0.2 Oct 26, 2020
*NEW:   CopyTo support, or ability to export the control's content to EMF, BMP, JPG, PNG, TIF or PDF format
*Added: CopyTo method exports the control's content to EMF, BMP, JPG, PNG, TIF or PDF format. For instance, the CopyTo("image.png") generates the PNG graphics from the control's content. For instance, the CopyTo("shot.pdf|33.11 in x 46.81 in|0 0 0 0|single") exports the control's content to an A0 single PDF page, with no margins
*Added: Ability to zoom the control's content using two-fingers on a touchpad (swipe up or down with two fingers, scrolls the control's up or down)

16.0.0.1 Sep 7, 2020
*NEW:   Radical improvements for the layout the Arrange method generates
*Added: By default, the DefArrange(exDefArrangeDX), DefArrange(exDefArrangeDY) property is 36 pixels.
*Fixed: The Arrange method may generate different layout/arrangement for different input-elements

15.0.0.2 Jun 22, 2020
*NEW:   Redefine the way the control shows round-links, for a better look
*Fixed: A straight-horizontal or vertical link may be shown as solid, even the link's type is dashed or dotted, while the link is displayed as round (ShowLinksType is -1)
*Fixed: Can't select multiple elements if pressing the ALT key while dragging ( AllowSelectObjectRect property ).

15.0.0.1 Apr 27, 2020
*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). 
*Fixed: The Arrange method often causes a lockup of the control, as soon as there are sub-items somewhere (Elements.Insert)

14.1.0.3 Feb 12, 2020
*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.

14.1.0.2 Nov 13, 2019
*NEW:   Reserve-Neighbors support
*Added: The AllowMoveNeighbors property indicates whether the neighbor elements are shifted once the selection is moved or resized, so they won't intersect the dragging objects.
*Added: Improvements of the Arrange method, if the chart includes multiple input-elements ( elements with no incoming links, re-arranging the input elements ).
*Fixed: Resizing multiple elements, moves non-focusing elements ( AllowResizeSelection property )

14.1.0.1 Sep 16, 2019
*NEW:   Ability to compact the layout of the elements, once the Arrange method is performed.
*Added: DefArrange(exDefArrangeCompact) property of boolean type, specifies whether the elements should be compacted, during the Arrange operation. By default, the DefArrange(exDefArrangeCompact) property is True, which indicates that the Arrange method automatically compacts the layout of the elements. Set the DefArrange(exDefArrangeCompact) property on False, to prevent compacting the elements during the Arrange method. The DefArrange call has effect prior to Arrange method only.
*Fixed: Redesigning the alignment of the elements ( Arrange method ), so the full area does not get enlarger than initial layout. 
*Fixed: Resizes the drop down popup / select arrow based on the current DPI settings.

14.0.0.4 May 22, 2019
*Added: The StartPos property of the Link, determines the direction where the element is arranged by the Arrange method for horizontal/vertical layout. For instance, if the link's StartPos is 0 ( LeftAlignment ), the start element of the link will be arranged to the left of the end element, and if StartPos property is 2 ( RightAlignment ), the end element goes to the right side of the start element.
*Fixed: Sometimes, the DefArrange(exDefArrangeDX) / DefArrange(exDefArrangeDY) property is applied twice, when Arrange method is performed.
*Fixed: The cross-links change the drawing order, when user moves the surface ( ShowLinksWidth, ShowLinksStyle or ShowLinksColor property is used, cross-link flicker )
*Fixed: Sometimes, the elements get overlapped when Arrange method is performed.

14.0.0.3 Feb 25, 2019
*Added: Link.StartPos / Link.EndPos property supports new values like UpAlignment(3), which indicates that the link starts / ends always on the top side of the element, and DownAlignment(4), which indicates that the link always starts / ends on the bottom side of the element.
*Fixed: Updates automatically the toolbar's caption once the user changes the value in a drop down panel. For instance, having the ToolBarCaption(1003) property on  "Right-Left\r\nRight-Left#1\r\nLeft-Right#2\r\nBottom-Top#3\r\nTop-Bottom#4", once the user selects the forth value in the drop down, the toolbar displays the Top-Bottom, and so on.   
*Fixed: Can't change the Element.Caption property during the AddElement event.
*Fixed: The Element.BringToFront/SendToBack methods brings the contained control in front, or sends it to the back (element's Type is exElementHostControl or exElementHostWindow)

14.0.0.2 Dec 12, 2018
*NEW:   Display a placeholder for missing icons, images in HTML captions.
*Added: Extends the distance between links when ShowLinks property includes the exShowExtendedLinks, based on the LinksWidth property.
*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. 

14.0.0.1 Oct 22, 2018
*NEW:   Cross/Junction/Intersection Links Support
*Added: The ShowExtendedLinksEnum.exShowCrossLinksRect flag in ShowLinks property, expands the junction / intersection of two or more links, with a rectangle that cross the links.
*Added: The ShowExtendedLinksEnum.exShowCrossLinksTriangle flag in ShowLinks property, expands the junction / intersection of two or more links, with a triangle that cross the links.
*Added: The ShowExtendedLinksEnum.exShowCrossLinksRect and ShowExtendedLinksEnum.exShowCrossLinksTriangle flags in ShowLinks property, expands the junction / intersection of two or more links, with a rectangle for horizontal links, and a triangle for vertical links ( mixed ).

13.0.0.6 Aug 23, 2018
*Added: The Version property includes the SpecialBuild number of the assembly so it provides information like Major.Minor.Build.Revison.SpecialBuild.Type...
*Fixed: A link may show to a different position from a page to another, if using exShowExtendedLinks flag in the ShowLinks property ( Print and Print-Preview )
*Fixed: The ALT-GR + A, selects all text and insert the associated diacritic letter from the current installed language.

13.0.0.5 Jul 23, 2018
*Added: DefArrange(exDefArrangeAlign) property specifies the alignment of the elements relative to incomming/outgoing elements during the Arrange operation. The DefArrange(exDefArrangeAlign) property is applied to elements that allow alignment, not all the elements will be aligned.
*Added: The Handle parameter of Images method can be a string that specifies the ICO file to be loaded. The ICO file format is an image file format for computer icons in Microsoft Windows. ICO files contain one or more small images at multiple sizes and color depths, such that they may be scaled appropriately. For instance, Images("e:\working\sync.ico") method  adds the sync.ico file to the control's Images collection.
*Added: The expression properties support `dpi`, `dpix` and `dpiy` constants that returns the current DPI setting on x/y scale. For instance, the "value * dpi" returns the value if the DPI setting is 100%, or value * 1.5 in case, the DPI setting is 150%

13.0.0.4 Feb 12, 2018
*NEW:   Support for EBN 1003, 1004 version.
*Added: EBN 1003 implements Colorable Region Support which defines a portion/region of the EBN object where the color of the EBN is applied. For instance, at runtime the identifier 0x1FF0000 applies blue color to all colorable parts that compose the EBN object. The EBN color is not applied to not-colorable portions of the EBNs.
*Added: The exClientExt attribute of the EBN/BackgroundExt/BackgroundExtValue supports DPI values, if the number is followed by a D character. For instance, if the DPI scaling is 100%, the 16d is 16, while for a 150% DPI scaling, the 16d is 24. In other words, "top[4,back=RGB(0,0,255)]", draws a blue line on the top side of the object's background, of 4-pixels wide, no matter of DPI scaling, while "top[4D,back=RGB(0,0,255)]", draws the line of 4-pixels wide if DPI scaling is 100%, or 6-pixels wide if DPI scaling is 150% )
*Added: The coordinates of the CP clause of the Skin parameter of VisualAppearance.Add method can be followed by a D character, which indicates the value according to the current DPI settings. For instance, "CP:1 -2 -2 2 2", copies the EBN with the identifier 1, and displays it on a 2-pixels wider rectangle no matter of the DPI settings, while "CP:1 -2D -2D 2D 2D" displays it on a 2-pixels wider rectangle if DPI settings is 100%, and on on a 3-pixels wider rectangle if DPI settings is 150%.

13.0.0.3 Nov 08, 2017
*Added: Allow to link an element to itself.
*Fixed: The LinkFromPoint property returns no link, if the ShowLinksType property is exLinkStraight
*Fixed: Prevents a memory leak when loading icons, pictures, from BASE64 encoded strings (Images method, HTMLPicture picture).

13.0.0.2 Jun 07, 2017
*Fixed: A GPF may occur if calling Links.Remove method during the AddLink event
*Fixed: The flow of elements, is slightly moving to a different position when calling the Arrange method on a different element ( AlignObjectsToGridLines property is not zero ).
*Fixed: Prevents overlapping the elements with no incoming elements.

13.0.0.1 May 03, 2017
*NEW:   Auto-Arrange support, or ability to automatically arrange horizontally or vertically the elements on the surface based on their relations, so they won't intersect one with another as much as possible
*Added: Arrange( ID ) method arranges the elements starting from element with the specified ID. If missing, all linked-elements are arranged
*Added: DefArrange(exDefArrangeDir) property specifies whether the an horizontal ot vertical arrangement should be applied.
*Added: DefArrange(exDefArrangeDX) and DefArrange(exDefArrangeDY) properties specifies the distance in pixels between two elements, when Arrange method is performed.

12.1.0.2 Mar 20, 2017
*Fixed: It is safe to remove objects ( elements or links ) during events
*Fixed: The Element.AutoSize property returns 1, instead -1(True)
*Fixed: A GPF occurs if the application is started from design mode ( demo / evaluation / trial version only )

12.1.0.1 Feb 14, 2017
*Added: "Clear Visual Design" and "Edit Visual Design" are available for /NET version on design mode.
*Fixed: The element is hidden if any link that points to it is closed. Currently, the element is hidden only if all links pointing to it are closed. ( ExpandLinkedElements property )
*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.

12.0.1.0 Jan 23, 2017
*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 )

12.0.0.9 Dec 05, 2016
*Fixed: The pictures of a disabled element are not visible or shown at a different position, while the cursor hovers the element. 
*Fixed: Prevents showing the control's view in design mode, while running on FORTH system ( /COM version )
*Fixed: The the context's menu copy, paste, etc buttons are not size correctly, with the Windows set to Classic theme

12.0.0.8 Oct 17, 2016
*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: Ensures that the control's context menu fits the screen ( prevents showing partially )

12.0.0.7 Aug 10, 2016
*Added: Background(exToolBarButtonUpBackColor) property specifies the visual appearance of the toolbar's button while it is up
*Added: Background(exToolBarButtonUpForeColor) property specifies the foreground color of the toolbar's button while it is up.
*Added: Background(exToolBarButtonDownBackColor) property specifies the visual appearance of the toolbar's button while it is down
*Added: Background(exToolBarButtonDownForeColor) property specifies the foreground color of the toolbar's button while it is down
*Added: Background(exToolBarButtonHotBackColor) property specifies the visual appearance of the toolbar's button while the cursor hovers it
*Added: Background(exToolBarButtonHotForeColor) property specifies the foreground color of the toolbar's button while the cursor hovers it

12.0.0.6 May 25, 2016
*Added: Background(exToolBarAppearance) property specifies the visual appearance of the surface's toolbar panel.
*Added: Background(exToolBarBackColor) property specifies the background color of the surface's toolbar panel.
*Added: Background(exToolBarForeColor) property specifies the foreground color of the surface's toolbar panel.
*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.
*Fixed: Can not change the foreground colors for few objects of the control using the its Visual Designer.

12.0.0.5 Mar 02, 2016
*Added: The Version property for /NET or /WPF version returns more information about the component/assembly/file.
*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.
*Fixed: The a mid b expression fails, if b expression is greater than the length of the a

12.0.0.4 Dec 23, 2015
*NEW:   Fit-To-Client support
*Added: FitToClient method, resizes or/and moves the entire chart to fit the control's client area.
*Added: The LayoutStartChanging(exSurfaceZoom) / LayoutEndChanging(exSurfaceZoom) events are fired while calling the FitToClient method.
*Added: The descendents nodes/elements are moved automatically once the user resizes the focusing node/selection. ( AllowMoveDescendents  property is True )

12.0.0.3 Oct 26, 2015
*NEW:   Ability to customize the html edit's context menu
*Added: EditContextMenuItems property specifies the control's context menu, while editing the element
*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.
*Fixed: The last italic character of a HTML caption may be shown as clipped

12.0.0.2 Aug 10, 2015
*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.

12.0.0.1 May 06, 2015
*NEW:   WYSIWYG Built-In HTML Editor
*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.

11.0.0.1 Feb 18, 2015
*Added: Support for ActiveX over the /NET Framework ( ActiveX control written in C#, VB/NET, Regasm - Assembly Registration Tool, CSActiveX) 
*Fixed: Can't scroll the control if touching with fingers the buttons of the scroll bar.

10.0.0.3 Dec 10, 2014
*Added: Serializes the Element.Padding to XML format, when using the SaveXML / LoadXML methods
*Fixed: Prevents identifiers of the same value but different types. For instance 4 and "4" will be 4.
*Fixed: An unhandled exception of type 'System.AccessViolationException' occurred when user presses the ALT+F4 key while editing a node ( /NET or /WPF version )

10.0.0.2 Nov 19, 2014
*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. 
*Fixed: The element's tooltip is not shown if the user hovers again the object, if previously its tooltip was automatically hidden by elapsing the time specified by the ToolTipPopDelay property.
*Fixed: The show message is shown on the debugger ( dbgview ), when the tooltip is about to be shown.
*Fixed: The controls hangs up for a while if the user clicks contiguously any button on the control's scroll bars.
*Fixed: The control's scroll bar is not updated while clicking contiguously any button on the control's scroll bars.

10.0.0.1 Sep 17, 2014
*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 64-bit version is compatible with Microsoft NET Framework 4, 4.5, 4.5.1, ...
*Added: /WPF version

9.0.0.2 Jun 11, 2014
*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.
*Fixed: Can't start moving the surface on Windows 8 64-bit system.

9.0.0.1 Feb 13, 2014
*NEW:   Unlimited options to show any HTML text, images, colors, EBNs, patterns, frames anywhere on the element's background. Ability to draw additional EBN/Color/Text/Patterns/Images on the element, using the EBN String Format (create and run at runtime EBN objects)
*Added: Element.BackgroundExt property indicates additional colors, text, patterns, images that can be displayed on the element's background using the EBN string format. For instance, Element.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 element. The Element.BackgroundExt = "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 element (10%+12 pixels-wide from the object's client area). 
*Added: Element.BackgroundExtValue(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 BackgroundExt property is set. The BackgroundExtValue property allows you to change programmatically, the properties of the parts that composes the EBN object. For instance, BackgroundExtValue(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 BackgroundExtValue 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 BackgroundExt/BackgroundExtValue properties.

8.0.0.1 Jan 09, 2014
* Initial Release