From Lazarus wiki
Revision as of 11:11, 5 May 2021 by ArminLinder (talk | contribs) (Replaced broken link with link to the new project repository on GIT)
Jump to navigationJump to search

Deutsch (de) English (en) español (es) français (fr) polski (pl)


VirtualTreeview is a TTreeView control built from ground up.

Its main characteristics are :

  • it is extremely fast. Adding one million nodes takes only ~700 milliseconds
  • very small memory foot print. by only allocating about 60 bytes per node
  • optimized for high speed access. It takes as few as 0.5 seconds to traverse one million nodes
  • Multiselection is supported
  • Drawing the entire tree to a bitmap or the printer is supported
  • fixed background image can be used
  • Hot style for nodes is supported
  • Nodes can have individual heights
  • Sorting via compare callback
  • Support for unicode
  • Multiple columns are supported
  • ... and many more

This component was designed for cross-platform applications.



Author: Mike Lischke
Old LCL Port: Joerg Thaler,Christian Ulrich
New LCL Port: Luiz Américo


LGPL or Mozilla Public Licence 1.1


See the project releases page

Note that v5.5.3.1 is included in Lazarus v2.0+, there is not need for a separate download.


You can checkout the source code from GitHub

It's possible to use both Subversion and Git clients


svn co

Replace lazarus_v5 by lazarus_v4 or lazarus_master to get a different version. For more info how to use Subversion, see GitHub help


git clone

Bug report / Feature request


For patches / pull requests, here. Newcomers to GitHub may want to read the help

Change Log

  • 02/06/2016 - 4.8.7 R4 and 5.5.3 R1 - First release of 5x branch + moved to GitHub
  • 20/10/2012 - 4.8.7 LCL R2 - Compatibility with Lazarus 1.0 + 64 bit support
  • 18/02/2011 - 4.8.7 LCL R1 - Sync with 4.8 branch + misc fixes
  • 11/02/2010 - 4.8.6 - First stable release of the new port

Dependencies / System Requirements

Versions 4.x or 5.x

  • Lazarus 1.6 or newer
  • fpc 2.6.4 or newer
  • LCL Extensions 0.6 or newer

Version 6.x (lazarus_master branch)

  • Lazarus 1.6 or newer
  • fpc 3.1 (trunk) or newer
  • LCL Extensions 0.6 or newer


  • If new to Lazarus, read Install Packages
  • Lazarus v2.0: The lclextensions and virtualtreeview packages are contained in the standard distribution of Lazarus because they are needed by the OnlinePackageManager. Go to "Package" > "Install/uninstall packages", select "virtualtreeview_package" in the right list, click "Install selection", then "Save and rebuild IDE".
  • Lazarus v2.2+ (or trunk): Like above, but the package and all units have been renamed to have a "laz." prefix, e.g. "laz.virtualtreeview_package" instead of "virtualtreeview_package" and "laz.virtualtrees" instead of "virtualtrees". The names of the registered components also begin with "Laz", e.g. "TLazVirtualStringTree" instead of "TVirtualStringTree". This was made to avoid a naming conflict when the user wants to install another version of VTV in addition to the built-in one.
  • Lazarus before v2.0, or VTV version other than v5.5.3.1 (in Laz v2.0 you will have to uninstall the built-in version first):
    • Download the LCL Extensions package and extract it to a directory (lazarus\components\lclextensions or other of your preference).
    • Download the Virtual Treeview package and extract it to a directory (lazarus\components\virtualtreeview or other of your preference).
    • Open lclextensions_package.lpk in LCL Extensions directory and click "Use / Add to project"
    • Open virtualtreeview_package.lpk in Virtual Treeview and click "Use / Install". Rebuild the IDE.


Can be found at the project GIT repository [1] (see subdirectory Help to find a help file in .chm format).

Example code can be found here: VirtualTreeview Example for Lazarus and in the Demos subdirectory of the GIT.

See also