excascadetree - what's new
16.0.0.5 Mar 27, 2024
*Added: Aligns the check-box, icon and caption of the item to the right, within the drop down filter window, if control's RightToLeft property is True
*Fixed: Can't type SPACE within the edit field of the drop down column's filter (Column.DisplayFilterPattern property)
*Fixed: The control may show empty portion if horizontal-scrolling to the end, while using expanded/collapsed columns.

16.0.0.4 Jan 29, 2024
*Fixed: The Visual Studio 2022 (64-bit IDE) crashes if you try to place the /NET assembly in the form (design mode)
*Fixed: A GPF may occur on closing the form/window/dialog if one or more events are handled by AttachTemplate method
*Fixed: Sometimes, the last character of a centered or right-aligned caption gets partially displayed in Print and Print Preview

16.0.0.3 Oct 23, 2023
*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: Clicking (Custom) property generates "Class Not Registered" error (Windows x64, 'Looking for object with CLSID:{7EBDAAE1-8120-11CF-899F-00AA00688B10}')

16.0.0.2 Oct 02, 2023
*Added: The Background(exTreeLinesColor) method defines the color to show the tree-lines (connecting lines from the parent to the children)
*Fixed: The FilterBarBackColor property does not support EBN objects (The last 7 bits in the high significant byte of the color to indicates the identifier of the skin being used. Use the Add method to add new skins to the control. If you need to remove the skin appearance from a part of the control you need to reset the last 7 bits in the high significant byte of the color being applied to the background's part)
*Fixed: The Background (exToolTipForeColor) property does not apply to the tooltip's title

16.0.0.1 Jul 21, 2023
*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 

15.0.0.2 Mar 13, 2023
*Added: GridLinesStyleEnum.exGridlinesGeometric flag. The control's gridlines are drawn using a geometric pen. A geometric pen can have any width and can have any of the attributes of a brush, such as dithers and patterns (a cosmetic pen can only be a single pixel wide and must be a solid color, but cosmetic pen are generally faster than geometric pens.
*Fixed: A GPF may occur if re-loading data using expandable columns (Column.ExpandColumns property)
*Fixed: Expand/collapse glyphs are DPI aware

15.0.0.1 Dec 21, 2022
*NEW:   Show the column's drop down filter bar button differently, while the column has a filter applied
*Added: The Background(exHeaderFilterBarActive) property specifies the visual appearance of the drop down filter bar button, while filter is applied to the column
*Added: PowerBuilder 21.0 sample

14.0.0.3 Sep 19, 2022
*Added: The expression properties supports `bias` constant that defines the difference, in minutes, between Coordinated Universal Time (UTC) and local time. For example, Middle European Time (MET, GMT+01:00) has a time zone bias of "-60" because it is one hour ahead of UTC. Pacific Standard Time (PST, GMT-08:00) has a time zone bias of "+480" because it is eight hours behind UTC. For instance, date(value - bias/24/60) converts the UTC time to local time, or date(date('now') + bias/24/60) converts the current local time to UTC time
*Fixed: The Column.Def(exHeaderPaddingRight) property causes the pointer-cursor not to be shown while cursor hovers the column's drop-down filter button (Column.DisplayFilterButton property)
*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)

14.0.0.2 May 04, 2022
*Added: View.RemoveSelection or Items.RemoveSelection method removes the selected items (including the descendents)
*Fixed: All columns part of the ExpandColumns property get hidden once a column gets removed
*Fixed: The expanded/collapsed columns are not shown properly after a new column

14.0.0.1 Feb 23, 2022
*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

13.0.0.4 Jan 05, 2022
*Fixed: The master cell gets hovered while the mouse cursor hovers the button of a split-cell. (Items.SplitCell, Background(exCursorHoverCellButton) property)
*Fixed: Sometimes, the column's partial-check feature does not work correctly (Column.PartialCheck, Column.Def(exCellHasCheckBox))
*Fixed: Improves the conversion of the string to date, while using Regional settings (Windows System) for date like ddd.dd.mm.yyyy (Su.15.02.2021)

13.0.0.3 Nov 29, 2021
*Fixed: The locked-items are displayed normally only when the cursor hovers them else they are shown bolder (ShowLockedItems property, Items.LockedItemCount property)
*Fixed: Sometimes, the CellButtonClick event is not fired ( for instance, click outside the button's caption)
*Fixed: The Column.Def(exCellButtonAutoWidth) property has no effect for HTML buttons (Column.Def(exCellValueFormat) is exHTML)

13.0.0.2 Nov 01, 2021
*Added: FilterBarVisibleEnum.exFilterBarTop (0x2000) flag aligns the control's filter-bar to the top of the control. The filter-bar is displayed right-below the control's header-bar. By default, the control's filter-bar is aligned to the bottom  (FilterBarPromptVisible property)
*Added: The frame around the the focus cell gets inflated based on Column.Def(exCellPaddingLeft), Column.Def(exCellPaddingRight), Column.Def(exCellPaddingTop), Column.Def(exCellPaddingBottom) (ShowFocusRect property, Background(exShowFocusRect))
*Fixed: The vertical grid lines overrides the frame around the focus cell (ShowFocusRect property, DrawGridLines property)

13.0.0.1 Sep 20, 2021
*Added: ExCascadeTree.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: Sometimes, the column's partial-check feature does not work correctly (Column.PartialCheck, Column.Def(exCellHasCheckBox))

12.0.1.0 Aug 18, 2021
*Added: The column is not clickable while the Column.AllowSort and Column.AllowDragging properties are false (also prevents changing the column's background color while cursor hovers a non-clickable column, Background(exCursorHoverColumn) property)
*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
*Fixed: The control's sort-bar displays no columns, if the SortBarColumnWidth property is positive (indicates the maximum width to display the column within the control's sort bar)

12.0.0.9 May 19, 2021
*Added: The Items.CellMerge(Item,Column) supports a string value that holds the list of identifiers separated by comma. For instance, Items.CellMerge(Item,0) = "1,2,3", specifies that the cell on column 0, merges with cells of columns 1, 2, 3. The syntax is equivalent with Items.CellMerge(Item,0) = 1; Items.CellMerge(Item,0) = 2; Items.CellMerge(Item,0) = 3;
*Fixed: Scolls the control's header on the fly, when user scrolls the control's content by drag and drop (AutoDrag property on exAutoDragScroll)
*Fixed: The column is not visible anymore, once you ungroup it (remove it from the control's sort/group bar), after the control's layout/arrangement has been restored using the Layout property (SortBarVisible, AllowGroupBy property)

12.0.0.8 Mar 15, 2021
*Added: The state of the newly inserted child-item is automatically set on 1, if the column-partial check feature is enabled and the parent-item's state is 1 (Items.CellState, Column.PartialCheck)
*Fixed: The HeaderSingleLine property is ignored if the control's header displays multiple levels of columns (Column.LevelKey property)
*Fixed: The vertical-scroll bar is not shown/hidden once the column gets resized (Def(exCellSingleLine) property)

12.0.0.7 Jan 18, 2021
*Added: The Description(exFilterBarExclude) allows ex-html format (ability to replace the "Exclude" field with your custom ex-html string)
*Fixed: The Items.ItemHasChildren property returns 1, instead of True(-1) value
*Fixed: FormatAnchor(False) = vbNullString fails (vbNullString is a special VB constant that denotes a null string. The "" literal is an empty string)

12.0.0.6 Nov 25, 2020
*Added: Improves the speed to scroll/display the control on 4K applications.
*Added: The 0x200(exGridLinesGeometric) flag draws the grid lines using a geometric pen (geometric pens are generally slower than cosmetic pens)
*Fixed: Scrolling is slower if the control displays grid-lines (DrawGridLines property)

12.0.0.5 Sep 30, 2020
*NEW:   Ability to sort by state or cell's image
*Added: The Column.SortType property supports exSortByState (0x20) (the column gets sorted by cell's state (checked, unchecked) rather than cell's caption). For instance, Column.SortType = exSortByState(0x20), sorts the column based on the cell's state. The Items.CellState property specifies the cell's state.
*Added: The Column.SortType property supports exSortByImage (0x30), the column gets sorted by cell's image rather than cell's caption. For instance, Column.SortType = exSortByImage(0x30), sorts the column based on the cell's image. The Items.CellImage property retrieves or sets a value that indicates the index of icon to display in the cell.

12.0.0.4 Aug 03, 2020
*Added: The option "Roll the mouse wheel to scroll" of Window's mouse & touchpad settings specifies the number of items to vertically scroll. Previously, scrolling vertical with the mouse wheel takes 3 items at a time
*Fixed: The Items.CellHasButton property returns 1, instead of -1 (equivalent of True, /COM version)
*Fixed: A GPF may occur if the control is re-created with expandable-columns (Column.ExpandColumns)

12.0.0.3 Jun 08, 2020
*Fixed: Shows the top-horizontal grid-line for the first bottom-locked item, if the control's DrawGridLines property is exRowLines
*Fixed: The scroll bar's thumb minimum-size is equivalent with the size of the size of scroll's buttons. In other words, the size of the scroll's buttons specify the thumb minimum-size. Previously, the thumb's minimum-size was 6-pixels.
*Fixed: Any expression that includes the "in" operator fails.

12.0.0.2 Apr 15, 2020
*Added: FilterPromptEnum.exFilterPromptWords Or FilterPromptEnum.exFilterPromptStartWith filters for items that starts with the exactly the word (not partially).
*Added: FilterPromptEnum.exFilterPromptWords Or FilterPromptEnum.exFilterPromptEndWith filters for items that starts with the exactly the word (not partially).
*Added: FilterPromptEnum.exFilterPromptCaseSensitive Or FilterPromptEnum.exFilterPromptPattern filter items using the giving pattern (case-sensitive). For instance, "a*" filters for all items that starts with lowercase "a"
*Fixed: The FilterPromptEnum.exFilterPromptEndWith flag of FilterBarPromptType property filters more items than it should.

12.0.0.1 Feb 19, 2020
*NEW:   Multiple improvements for expandable-columns ( Column.ExpandColumns property )
*Fixed: The Column.Visible property is ignored, if the column is being displayed by another expandable column (Column.ExpandColumns property). For instance, Column.Visible property on False, hides all child-columns
*Fixed: The Column.Expanded property on False is ignored while adding a column
*Fixed: Prevents splitting the expanded-column, when user drag and drop the column to a new position

11.0.0.5 Dec 09, 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)
*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.

11.0.0.4 Sep 18, 2019
*Added: Prevents resizing an item with Items.ItemAllowSizing property on True, while Items.ItemMinHeight and Items.ItemMaxHeight provides no range ( for instance are both are equal ). In the same manner the resize-cursor does not shows up once the cursor hovers the resize part of the item.
*Fixed: The Items.ItemMaxHeight property on 0, is ignored while the item contains a cell with Items.CellSingleLine property on False.
*Fixed: The Items.ItemMinHeight and Items.ItemMaxHeight properties are ignored if resizing all items, using the ItemsAllowSizing property on exResizeAllItems.
*Fixed: The control shows the dragging column in black, even the control's header shows the columns in white (ForeColorHeader property)

11.0.0.3 Jun 12, 2019
*Fixed: Sometimes, the user can't scroll to the last item, if the last scrollable item is partially visible.
*Fixed: Can't move the column to be the last-visible column, while all columns are visible (ColumnAutoResize property on False)
*Fixed: Move slightly the last partially visible column, changes its position.
*Fixed: Dropping the column after the last visible column, ends up one-column to the right after the dropped position.

11.0.0.2 Apr 01, 2019
*Added: lpad keyword (available for properties that support expressions) , as a lpad b, pads the value of a to the left with b padding pattern. For instance, FormatColumn = "((1 apos ``) lpad `0000`) + `. ` + value" displays the cell's content including the position of the row, padded to left with 4-zero (if required)
*Added: rpad keyword (available for properties that support expressions), as a rpad b, pads the value of a to the right with b padding pattern. For instance, 12 lpad "____" generates the string "12__".
*Added: concat keyword (available for properties that support expressions), as a concat b concatenates the a (as string) for b times. For instance, "x" concat 5, generates the string "xxxxx"
*Fixed: "Not a valid bookmark.", "Record is deleted." error may be fired, when the control's DataSource property points to an ADODB.Recrodset, whose Requery method has been invoked. When the control is notified that a Requery, Filter has been performed on the control's DataSource, all items are cleared, and new one are inserted by re-iterating the recordset source.

11.0.0.1 Jan 14, 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). 
*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 the ADO objects.

10.0.0.5 Nov 05, 2018
*NEW:   Ability to wraps the cell's caption on line break only
*Added: The Items.CellSingleLine property specifies whether the cell's caption is displayed on single-line, or wraps around the words or line breaks. Previously, the Items.CellSingleLine property was of Boolean type, while currently it is of CellSingleLineEnum type. For instance, Items.CellSingleLine() = exCaptionBreakWrap indicates that the cell's caption is displayed on new lines when line break is found ( <br> for HTML captions or \r\n sequence ). Also, the option is valid if you specify the Column.Def(exCellSingleLine) property.
*Fixed: The Items.SelectableItem property returns 1 instead of -1 / True value.
*Fixed: The Items.SelectItem property returns 1 instead of -1 / True value.

10.0.0.4 Aug 29, 2018
*Fixed: The EnsureVisibleItem method does not vertically scroll the control's content, if previously the control's list has been sorted ( Column.SortOrder property, Layout property, ... )
*Fixed: The user can't resize the last locked-column that fit's the control's client area, if it wider (CountLockedColumns property)
*Fixed: The control scrolls more columns, if locked columns are visible and the user do horizontal page scrolling by clicking the horizontal scroll bar's background. ( CountLockedColumns property )
*Fixed: Prevents re-grouping the items when a column does not change it's position in the control's SortBar/GroupBy bar. Prevents changing the column's sorting position when the user drags the column's header in a few pixels. ( SortBarVisible property )

10.0.0.3 May 16, 2018
*Added: Shows the drop down filter and tooltip panels to the nearest monitor relative to the cursor position.
*Added: The Background(exColumnsPositionSign) specifies the visual appearance for the position sign between columns, when the user changes the position of the column by drag and drop. By default, the Background(exColumnsPositionSign) property is 0, which indicates that the default position sign is shown when the user change the column's position by drag and drop.
*Added: Expands or collapses the entire selection if the user clicks any +/- glitch, presses Left/Right/+ or- key inside the selection, while the CTRL is pressed. This option is valid, while the control's SingleSel property is False.
*Fixed: The Items.ItemHeight property sets the height using DPI conversion.

10.0.0.2 Apr 25, 2018
*Added: Clicking the cascade column's split bar while SHIFT + CTRL key combination is pressed, divides the client area in equal parts/views ( refine the FitCascadeColumns property )
*Fixed: The x64 version may returns the error "The recordset must support the bookmarks. ( Supports( adBookmark ) = True )", when control's DataSource property uses a accdb file
*Fixed: Sometimes, can't select by drag items if the View.ColumnAutoResize property is False
*Fixed: The Items.ItemMinHeight and ItemMaxHeight properties are DPI compatible.

10.0.0.1 Jan 22, 2018
* Initial Release