Virtual Treeview Changelog

What's new in Virtual Treeview 8.0.1

Jan 20, 2024
  • Columns EndUpdate and duplicate position.
  • (Minor Refinements) Added missing units into uses list.
  • How to get lighter/finer GridLines; GridLineColor not used.

New in Virtual Treeview 8.0 (Nov 29, 2023)

  • These breaking changes are a result of pull request #1041:
  • Simple types, enums and constants have been extracted to the unit VirtualTrees.Types. In case you get a compiler error undeclared identifier, it is usually sufficient to add the unit VirtualTrees.Types to the uses clause. This breaking change will be frequently encountered. For enum you can also turn them into scoped enums.
  • The property TVTHeader.Treeview is now of type TCustomControl, you need to cast it e.g. like TVirtualStringTree(Header.TreeView) in case you get an undeclared identifier compiler error in this context.
  • The control TVirtualDrawTree has been extracted to its own unit VirtualTrees.DrawTree. In case you get a compiler error undeclared identifier TVirtualDrawTree add the unit VirtualTrees.DrawTree to the uses clause in the interface section.
  • TVTHeaderAddPopupItemEvent sender parameter changed to TObject (due to circular references).
  • TVTHeaderPopup: TColumnChangeEvent Sender parameter changed to TObject.
  • There are a few other breaking changes:
  • tsUpdating has been removed from, Use function IsUpdating() instead. See issue #1015.
  • The property DropTargetHelperSupported and its getter have been removed from the IVTDragManager interface, see issue #1138.
  • The flag TVTAutoOption.toAutoChangeScale no longer controls if dpi-scaling takes places, this now happens automatically like in all other VCL controls. If this flag is set, the default node height and the header height are now automatically scaled according to the used font. See issue #1206.
  • The property LineStyle now applies to the tree lines only and is accordingly documented. This fixes issues with VCL theming when drawing grid lines. See issue #1202.
  • The official support for RAD Studio XE3 - XE8 has been dropped #1169. Users of these versions of RAD Studio should stay with V7.x.
  • The official support for Windows classic mode has been dropped #1173.

New in Virtual Treeview 7.6.5 (May 3, 2023)

  • Error when closing the window/application (2) - V7_stable
  • Lines with different bg colors
  • Issue with default color properties saving into dfm
  • AV while scrolling with scrollbuttons in themed app
  • Removed copied code from TVclStyleScrollBarsHook for 10.4 and later

New in Virtual Treeview 7.6.4 (Mar 16, 2023)

  • Memory corruption due to invalid column position in DFM file
  • Changing SortDirection works in 32bit, but not in 64bit
  • Mass check-state manipulations take very long if Accessiblity is used
  • TBaseVirtualTree.WMNCDestroy() may (re)create window handle
  • Column text does not get translated
  • ToRestoreSelection won't work for items selected with Shift+click
  • C++ Builder 10.3 and later project files

New in Virtual Treeview 7.6.3 (Dec 29, 2022)

  • Bugs fixed:
  • Vertical scrollbar position not updated during scrolling when a theme is used
  • Columname text with € sign display wrongly in Delphi collection editor
  • Integer overflow in ScaleNodeHeights
  • Possible duplicate counted selection when selecting items in the OnAddToSelection event handler
  • Enhancements:
  • Problematic behavior of TBaseVirtualTree.ReinitNode
  • EmptyListMessage: Increase padding and make padding dpi-aware

New in Virtual Treeview 7.6.2 (May 25, 2022)

  • Fixed:
  • Causes side effects when doing custom painting Bug
  • Can't focus empty tree since upgrade to v7.6.1 Bug
  • Selection not properly updated after changing font style Bug
  • Drop target font color is wrong Bug
  • Alt + left-click + mouse-move behavior differs from Windows Explorer Open for Discussion
  • Access Violation when VCLStyles enabled Bug
  • Mouse cursor indicates a column width change, but starts a selection or a drag operation
  • Cannot compile V7_stable in earlier version

New in Virtual Treeview 7.2.1 (Mar 8, 2019)

  • ComputeNodeHeight does not calculate properly for column 0
  • Occasional EConvertError in TBaseVirtualTree.GetTextInfo() because Font is nil
  • Severe bug in latest release - basic functionality is broken
  • Fixed scrollbar problem with VCL style.

New in Virtual Treeview 7.2 (Feb 18, 2019)

  • Bugs:
  • Double click does not work because of a hint
  • Wrong checkbox position in header on secondary scaled monitor
  • UpdateNextNodeToSelect() may select a node that is being deleted
  • Possible exception with a multiple monitor setup with different dpi scalings
  • Text color of a selected node does not adapt to the high contrast mode in Windows when using toUseExplorerTheme
  • TBaseVirtualTree.ChangeScale() can cause AV because of destroyed objects
  • Autoscale only changes node height in nodes visible on screen
  • Regression - Erratic behaviour of scroll bas with Vcl Styles
  • Fixed colors in GetColor
  • Enhancements:
  • Do not fire OnChange event with nil if selection changes
  • GetChildCount does not check if children were initialized
  • Remove global imagelist "NodeImages"
  • Programatic selection of node should always happen without timers
  • Proposal: change the color number in TVTColors to enum

New in Virtual Treeview 7.0 (Jul 23, 2018)

  • The support for Windows XP/2003 has been dropped (issue #707). This means:
  • We did not intentionally break XP support.
  • We do no longer test on Windows XP/2003
  • We may accept pull request for XP support if the code quality is sufficient.
  • We recommend to use the V6 branch on Windows XP
  • BREAKING CHANGE: Removed property TBaseVirtualTree.HintAnimation. Issue #730.
  • BREAKING CHANGE: Renamed unit "VTHeaderPopup" to "VirtualTrees.HeaderPopup"
  • Renamed unit "VTAccessibility" to "VirtualTrees.Accessibility"
  • Renamed unit "VTAccessibilityFactory" to "VirtualTrees.AccessibilityFactory"
  • Fixed issue #804: Remove MMXAvailable and related stuff
  • Fixed issue #736: TVTDragManager.GetDataObject() should not use TVTDataObject in case the OnCreateDataObject event handler returned nil
  • Fixed issue #745: Pressing SPACE should change the check-state of all selected nodes
  • Fixed Issue #369: Centralize Left Content Margin calculation
  • Pull Request #800: Fixed an incorrect calculation of the string edit link height.
  • Pull request #796: Fixed a bug where hints of type hmTooltip had incorrect (random) position when when HitPosition was not hiOnItemLabel.
  • Fixed issue #796: Utility images are not DPI Scaled
  • Fixed issue #794: ScrollIntoView() by column centers column also when center is false
  • Fixed issue #789: Issues with toHideSelection
  • Fixed issue #792: "Invalid window handle" when using styles
  • Fixed issue #788: Wrong logic in GetEffectiveColor. coStyleColor has been added to DefaultColumnOptions.
  • Fixed issue #783: TVirtualTreeColumns.HandleClick() may trigger sorting twice
  • Fixed issue #781: "~" not working on German keyboard
  • Fixed issue #779: Overlay Images with Index < 15 not drawn when OnGetImageIndexEx is used
  • Fixed issue #777: Margin is applied right of tree lines, but should be applied left of them.
  • Pull request #776: ScrollIntoView centers horizontally enen without Columns defined
  • Fixed issue #764: When toAlwaysSelectNode is on, no node is auto-selected after the tree is cleared.
  • Fixed issue #769: GetImageSize Fails if kind ikState and not assigned(StateImages)
  • Fixed issue #766: Incorrect HotTrack with Touch-Scrolling
  • Pull request #761: Add TBaseVirtualTree.OnAddHeaderPopupItem event and 'Size Column to Fit' menu item to TVTHeaderPopupMenu.
  • Fixed issue #760: TVirtualTreeColumns.GetFirstVisibleColumn() cause AV if called between BeginUpdate() and EndUpdate()
  • Fixed issue #759: TBaseVirtualTree.InitNode() overrides check state of top level nodes set in OnInitNode event handler
  • Fixed issue #757: Header popup menu opens twice
  • Fixed issue #758: The OnColumnVisibilityChanged event is not always fired
  • Fixed issue #754: TBaseVirtualTree.InternalAddToSelection() may cause access violation. Thx@nminkov for the patch.
  • Fixed issue #753: TVirtualTreeColumns.EndUpdate() resets column order
  • Fixed issue #752: HandleDrawSelection() does not correctly take horizontal scroll position into account
  • Fixed issue #750: Plus/Minus sizes are not scaled in DPI aware applications
  • Fixed issue #748: Per Monitor Dpi Scaling - Scrollbar Not Correct after Dpi Change
  • Enhancement #735: Add event that is fired when a check state is needed.
  • Fixed issue #743: Ugly drawing of selection in report mode when VCL Styles are used
  • Fixed issue #742: TVTHeader.ParentFont should be True by default
  • Fixed issue #740: TVTHeaderPopupMenu should not delete menu items added at designtime
  • Fixed issue #739: TVTHeader should use a popup menu if assigned
  • Fixed issue #738: Deadlock on application close in ReleaseThreadReference
  • Fixed issue #737: Export problem when OnBeforeNodeExport is not assigned
  • Fixed issue #723: Turn event OnAfterNodeExport into a procedure. This is a BREAKING CHNAGE.
  • Fixed issue #734: DefaultText property ignored
  • Fixed issue #724: Error when reading "old" streams
  • Fixed issue #397: Horizontal autoscroll on focus does not properly scroll node into view if column width is larger than client width
  • Fixed issue #727: Header not repainted after loading from stream
  • Fixed issue #726: Incorrect header hot painting
  • Fixed issue #722: Simplify custom header drawing while keeping default drawing
  • Fixed issue #467: Multi level checkboxes and BeginUpdate/EndUpdate issue
  • Fixed issue #391: Change property HotNode: Add a setter
  • Fixed issue #767: Remove type TOldVTOption and ReadOldOptions()
  • Removed flag toDisableAutoscrollOnFocus from default configuration of a new Virtual TreeView to achieve a more common behavior with default properties.
  • poResizeToFitItem is now set by default in TVTHeaderPopupMenu.Options

New in Virtual Treeview 6.7 (Nov 9, 2017)

  • Fixed issue #714: Integer overflow in TBaseVirtualTree's InternalAddFromStream
  • Fixed issue #500: Issue with node selection "from code" for disabled nodes with toLevelSelectConstraint option
  • Fixed issue #499: Incorrect behavior with toLevelSelectConstraint and ctrl+A
  • Fixed issue #649: Cell navigation problems with toAutoSpanColumns for left and right keys
  • Fixed issue #712: Strange behaviour of AutoFitColumns
  • Fixed issue #718: Shift + Rght-Click should not extend selection
  • Fixed issue #706: Integer overflow in DetermineScrollDirections when timeGetTime wraps
  • Fixed issue #407: TVirtualDrawTree.InvalidateNode does not clear vsHeightMeasured
  • Enhancement #669: Create sample project for C++ Builder
  • Enhancement #708: New option toSyncCheckboxesWithSelection improves multi-selection for touch UI that synchonizes selection and check-state
  • Fixed issue #717: The option toUseExplorerTheme does not draw lines in place of buttons removed by toAutoHideButtons
  • Fixed issue #716: Tab key navigation does not work properly with Auto Span Columns
  • Fixed issue #720: A review of all Demos is needed to fix GetText, GetHint, etc to assign in DFM instead of assigning in FormCreat

New in Virtual Treeview 5.3.0 (Nov 9, 2017)

  • Fix for issue #159 (Cursor missing in edit with non-standard DPI): Ensuring a minimum size of the edit control
  • Fixed issue #403: Declare TVTGetNodeProc as reference to procedure (for D2009+)
  • Fixed issue #402: TVTEdit.CNCommand discard all notification except EN_UPDATE due to missing inherited
  • Corrected fix for issue #376 (Incorrect selection paint when toGridExtensions is included in the MiscOptions)
  • Fixed issue #401: OnNodeClick event doesn't trigger in some case, coFixed set for a column
  • Modified #316 (concerning r498). The fix for #316 will only be applied in case toMultiSelect is set.If toMultiSelect is not set we can start a drag anywhere in the row.
  • ContentToHTML() and ContentToRTF() now return a string of type RawByteString. Because the generated strings are pre-encoded in UTF-8, the previous type AnsiString caused problems in Delphi 2009+ e.g. when this string was written using the VCL TStreamWriter class.
  • The helper class TBufferedAnsiString therefore uses RywByteString now as type too.
  • Fixed issue #399: EditDelay not working
  • Fixed issue #400: AltGr+A does not behave as expected for foreign keyboard layouts in VTEdit
  • Fixed issue #388: VirtualStringTree with toFixedIndent causes range check error
  • Edit box when editing a node in a tree with toFixedIndent now has the correct indent
  • Fixed issue #392: Now ensuring that MeasureItemHeight() is only called from the main thread.
  • Fixed #383: Clear vsHasChildren for a node without children even if the children count didn't change.
  • Fixed #377: Wrong font (size, etc) in TargetCanvas in MeasureItem for first node
  • Fixed issue #398 (hoAutoResize causes DFM designer to be modified after loading) by calling TControl.Updating()/Updated() in AdjustAutoSize()
  • Preventing possible AV in TBaseVirtualTree.FontChanged()
  • Fixed 32Bit Integer overflows in Win64 build in TBufferedAnsiString.