[Overview][Constants][Types][Classes][Procedures and functions][Index] | Reference for unit 'ComCtrls' (#lcl)

# TCustomTreeView

[Properties (by Name)] [Methods (by Name)] [Events (by Name)]

TCustomTreeView - ancestor class for TTreeView

## Declaration

Source position: comctrls.pp line 2389

`type TCustomTreeView = class(TCustomControl)`
`protected`
`FChangeTimer: TTimer;` |  | FChangeTimer - local variable to act as timer for changes
`FEditor: TEdit;`
`protected`
`class procedure WSRegisterClass; override;` |  | WSRegisterClass - Register this Class for the current Widget Set
`class function GetControlClassDefaultSize; override;`
`protected`
`procedure Added(); virtual;`
`procedure EditorEditingDone(); virtual;`
`procedure EditorKeyDown(); virtual;`
`procedure BeginAutoDrag; override;` |  | Start the AutoDrag process.
`procedure BeginEditing();`
`function DoDragMsg(); override;` |  | DoDragMsg generates system message to indicate object and position for dragging and returns Result of action
`function CanChange(); virtual;` |  | CanChange - returns True if a given TreeNode can be changed
`function CanCollapse(); virtual;` |  | CanCollapse returns True if a given TreeNode is able to be collapsed
`function CanEdit(); virtual;` |  | CanEdit - returns True if a Given TreeNode is allowed to be edited
`function CanExpand(); virtual;` |  | CanExpand - returns True if the specified TreeNode can be expanded
`function CreateNode; virtual;` |  | CreateNode - creates a new node in a TreeView and returns its content
`function CustomDraw(); virtual;` |  | CustomDraw - returns True if Custom Drawing is proceeding in the specified Rectangle
`function CustomDrawItem(); virtual;` |  | CustomDrawItem - returns True if Custom Image drawing is proceeding at the specified TreeNode
`function GetDragImages; override;` |  | Get the list of Images to be dragged - returned as a list
`function GetMaxLvl;` |  | GetMaxLvl - returns the maximum level of branching of the tree structure
`function GetMaxScrollLeft;` |  | GetMaxScrollLeft - returns maximal extent of scrolling to the left
`function GetMaxScrollTop;` |  | GetMaxScrollTop - returns the maximal extent of scrolling upwards
`function GetNodeAtInternalY();` |  | GetNodeAtInternalY - returns the node at the specified internal (ie relative) Y coordinate
`function GetNodeAtY();` |  | GetNodeAtY - returns the node at the specified (absolute) Y coordinate
`function GetNodeDrawAreaHeight;` |  | GetNodeDrawAreaHeight - returns the height for the area in which node is drawn
`function GetNodeDrawAreaWidth;` |  | GetNodeDrawAreaWidth - returns the width for the area in which node is drawn
`function IsCustomDrawn();` |  | IsCustomDrawn - returns True if the specified target node is custom drawn
`function IsNodeVisible();` |  | IsNodeVisible - returns True if the specified node is visible
`function IsNodeHeightFullVisible();` |  | IsNodeHeightFullVisible - returns True if the full height of the specified node is visible in the current view
`function IsInsertMarkVisible; virtual;` |  | IsInsertMarkVisible - returns True if an Insert mark is visible
`procedure Change(); virtual;` |  | Change - software emulation of the OnChange event
`procedure Collapse(); virtual;` |  | Collapse - software emulation of the OnCollapsed event
`procedure CreateWnd; override;` |  | CreateWnd - Creates the Window
`procedure Delete(); virtual;` |  | Delete - remove the specified node from the tree structure (software emulation of the OnDeletion event)
`procedure DestroyWnd; override;` |  | DestroyWnd - destroy the window for this control
`procedure DoEndDrag(); override;` |  | Invokes the OnEndDrag handler
`function DoMouseWheel(); override;` |  | DoMouseWheel - performs the action to deal with a movement of the mouse wheel; returns True if handled
`procedure DoPaint; virtual;` |  | DoPaint - perform the actual painting
`procedure DoPaintNode(); virtual;` |  | DoPaintNode - perform the actual painting of the specified node
`procedure DoStartDrag(); override;` |  | Invokes the OnStartDrag handler
`procedure DragOver(); override;` |  | Determines whether a drop is acceptable, using the OnDragOver handler.
`procedure EndEditing();` |  | EndEditing - finish editing
`procedure EnsureNodeIsVisible();` |  | EnsureNodeIsVisible - method to make sure specified node is visible
`procedure Expand(); virtual;` |  | Expand the specified node
`procedure GetImageIndex(); virtual;` |  | GetImageIndex - returns the index of the image associated with the specified node
`procedure GetSelectedIndex(); virtual;` |  | GetSelectedIndex - returns the index of the selected node
`procedure InitializeWnd; override;` |  | InitializeWnd - initialise the window for this control
`procedure KeyDown(); override;` |  | KeyDown - emulate the action of pressing the specified key (makes OnKeyDown respond)
`procedure Loaded; override;` |  | Loaded makes a number of checks, using client size if specified, and copying appropriate flags, fonts, text etc, makes list of child controls to notify them of any changes, then calls inherited Loaded
`procedure MouseDown(); override;` |  | MouseDown - a procedure that allows the programmer to simulate a mouse button being down over the control, and initiates the same Action as that associated with the OnMouseDown event
`procedure MouseMove(); override;` |  | MouseMove - a procedure that allows the programmer to simulate a mouse being moved over the control, and initiates the same Action as that associated with the OnMouseMove event
`procedure MouseUp(); override;` |  | MouseUp - a procedure that allows the programmer to simulate a mouse button being Up over the control, and initiates the same Action as that associated with the OnMouseUp event
`procedure Notification(); override;` |  | Notification - calls inherited Notification, then takes action depending on Operation
`procedure Paint; override;` |  | The default paint handler for the class
`procedure SetDragMode(); override;` |  | SetDragMode - specify the mode for dragging
`procedure SetOptions();` |  | SetOptions - specifies the options for the TreeView
`procedure UpdateDefaultItemHeight; virtual;` |  | UpdateDefaultItemHeight - brings the value of the default item height up-to-date
`procedure WndProc(); override;` |  | WndProc - message handler for the procedure of this window
`procedure UpdateInsertMark(); virtual;` |  | UpdateInsertMark - see if there is an insert mark at X,Y and put one in if necessary
`procedure DoSelectionChanged; virtual;` |  | DoSelectionChanged - perform the code required for a change in selection
`procedure WMHScroll(); message;` |  | WMHScroll - LCL Message for horizontal scroll
`procedure WMVScroll(); message;` |  | WMVScroll - LCL Message for Vertical scroll
`procedure WMLButtonDown(); message;` |  | Protected messages to system - when left mouse button is down
`procedure WMNotify(); message;` |  | WMNotify - LCL Notify message
`procedure WMSetFocus(); message;`
`procedure WMKillFocus(); message;`
`procedure Resize; override;` |  | Checks for changes and calls DoOnResize
`property AutoExpand: Boolean; [rw]` |  | AutoExpand - if True, the tree structure is automatically expanded when a node is selected
`property BorderStyle;`
`property HideSelection: Boolean; [rw]` |  | HideSelection - if True, the selected part of the tree is to be hidden
`property HotTrack: Boolean; [rw]` |  | HotTrack - the property whereby the item under the mouse pointer becomes emphasised
`property Images: TCustomImageList; [rw]` |  | Images - the ImageList to be used in association with the list of TreeNodes
`property Indent: Integer; [rw]` |  | Indent - the amount by which each successive level of branching is to be indented in the tree structure
`property Items: TTreeNodes; [rw]` |  | Items - the collection of TreeNodes that comprise the TreeView
`property MultiSelect: Boolean; [rw]`
`property OnAddition: TTVExpandedEvent; [rw]`
`property OnAdvancedCustomDraw: TTVAdvancedCustomDrawEvent; [rw]` |  | OnAdvancedCustomDraw - event handler for advanced custom drawing
`property OnAdvancedCustomDrawItem: TTVAdvancedCustomDrawItemEvent; [rw]` |  | OnAdvancedCustomDrawItem - event handleer for advanced custom drawing item
`property OnChange: TTVChangedEvent; [rw]` |  | OnChange - specialised event handler for a change in the TreeView
`property OnChanging: TTVChangingEvent; [rw]` |  | OnChanging - specialised event handler while TreeView is being changed
`property OnCollapsed: TTVExpandedEvent; [rw]` |  | OnCollapsed - specialised event handler when part of the tree is collapsed
`property OnCollapsing: TTVCollapsingEvent; [rw]` |  | OnCollapsing - specialised event handler while part of the tree is being collapsed
`property OnCompare: TTVCompareEvent; [rw]` |  | OnCompare - specialised event handler for comparisons within the TreeView
`property OnCreateNodeClass: TTVCreateNodeClassEvent; [rw]`
`property OnCustomCreateItem: TTVCustomCreateNodeEvent; [rw]` |  | OnCustomCreateItem - event handler for custom item creation
`property OnCustomDraw: TTVCustomDrawEvent; [rw]` |  | OnCustomDraw - event handler for custom drawing
`property OnCustomDrawItem: TTVCustomDrawItemEvent; [rw]` |  | OnCustomDrawItem - event handler for custom drawing item
`property OnDeletion: TTVExpandedEvent; [rw]` |  | OnDeletion - specialised event handler for deletion of node(s) from the tree
`property OnEdited: TTVEditedEvent; [rw]` |  | OnEdited - specialised event handler when the TreeView has been edited
`property OnEditing: TTVEditingEvent; [rw]` |  | OnEditing - specialised event handler while a TreeView is being edited
`property OnEditingEnd: TTVEditingEndEvent; [rw]`
`property OnExpanded: TTVExpandedEvent; [rw]` |  | OnExpanded - specialised event handler when a TreeView has been expanded
`property OnExpanding: TTVExpandingEvent; [rw]` |  | OnExpanding - specialised event handler while a TreeView is being expanded
`property OnGetImageIndex: TTVExpandedEvent; [rw]` |  | OnGetImageIndex - event handler for finding the index of an image
`property OnGetSelectedIndex: TTVExpandedEvent; [rw]` |  | OnGetSelectedIndex - event handler for finding index of selected item
`property OnSelectionChanged: TNotifyEvent; [rw]` |  | OnSelectionChanged - event handler for a change in the selection
`property ReadOnly: Boolean; [rw]` |  | ReadOnly - if True, the TreeView can only be observed, and not Written to or changed. Default False
`property RightClickSelect: Boolean; [rw]` |  | RightClickSelect - if True, a Right Click selects an Item. Default False
`property RowSelect: Boolean; [rw]` |  | RowSelect - if True, a row is selected
`property ScrolledLeft: Integer; [rw]` |  | ScrolledLeft - the position of the tree when fully scrolled to the left
`property ScrolledTop: Integer; [rw]` |  | ScrolledTop - th eposition of th etree when fully scrolled to the top
`property ShowButtons: Boolean; [rw]` |  | ShowButtons - if True, buttons are displayed
`property ShowLines: Boolean; [rw]` |  | ShowLines - show the connecting lines of the tree structure
`property ShowRoot: Boolean; [rw]` |  | ShowRoot - if True, the root of the tree structure is displayed
`property ShowSeparators: Boolean; [rw]` |  | ShowSeparators - if True, separators are shown between items
`property SortType: TSortType; [rw]` |  | SortType - the way the items are to be sorted: None, by Data, by Text or Both
`property StateImages: TCustomImageList; [rw]` |  | StateImages - the list of images to denote state of the tree (expanded, contracted etc)
`property ToolTips: Boolean; [rw]` |  | ToolTips - if True (default), pop-up tool tips are to be shown
`public`
`constructor Create(); override;` |  | Create - constructor for TCustomTreeView: calls inherited Create then sets defaults for style, size, etc
`destructor Destroy; override;` |  | Destroy - destructor for TCustomTreeView: frees images, nodes and links, then calls inherited Destroy
`function AlphaSort;` |  | If True, sort alphabetically
`procedure ConsistencyCheck;` |  | ConsistencyCheck - check that indexes of treenodes match those of images etc
`function CustomSort();` |  | CustomSort - if True, an external sorting method specified by SortProc is to be used
`function DefaultTreeViewSort();` |  | DefaultTreeViewSort - returns result of string comparison between names of Node1 and Node2
`procedure EraseBackground(); override;` |  | EraseBackground - remove all material from the background
`function GetHitTestInfoAt();` |  | GetHitTestInfoAt - returns the result of a hit test at the point (X, Y)
`function GetNodeAt();` |  | GetNodeAt - returns the TreeNode at position (X. Y)
`procedure GetInsertMarkAt();` |  | GetInsertMarkAt - find if there is an insert mark at the specified coordinates
`procedure SetInsertMark();` |  | SetInsertMark - place an Insert mark at the specified node in the tree
`procedure SetInsertMarkAt(); virtual;` |  | SetInsertMarkAt - place an insert mark at the specified coordinates
`procedure Invalidate; override;` |  | Render this control non-valid
`function IsEditing;` |  | IsEditing - returns True if editing is in progress
`procedure BeginUpdate;` |  | BeginUpdate - start the update of the display
`procedure EndUpdate;` |  | EndUpdate finishes updating the display
`procedure FullCollapse;` |  | FullCollapse - method to collapse the treeview fully, ie show just the root
`procedure FullExpand;` |  | FullExpand - method to expand the treeview fully, and show all the branches
`procedure LoadFromFile();` |  | LoadFromFile - load the data from the specified file
`procedure LoadFromStream();` |  | LoadFromStream - load data from the specified stream
`procedure SaveToFile();` |  | SaveToFile - saves the data to the specified file
`procedure SaveToStream();` |  | SaveToStream - save the data to the specified stream
`procedure WriteDebugReport();` |  | WriteDebugReport - used for debugging
`procedure LockSelectionChangeEvent;` |  | LockSelectionChangeEvent - if the selection has changed, lock its status
`procedure UnlockSelectionChangeEvent;` |  | UnlockSelectionChangeEvent - unlock a selection to allow it to be changed
`function GetFirstMultiSelected;` |  | GetFirstMultiSelected - returns the first node from a multiple selection
`function GetLastMultiSelected;`
`function SelectionVisible;` |  | SelectionVisible - returns True if a selection is visible
`procedure MakeSelectionVisible;` |  | MakeSelectionVisible - method for making a selection visible
`property BackgroundColor: TColor; [rw]` |  | BackgroundColor for the treeview
`property BorderWidth;` |  | Property to determine width of the window's border
`property BottomItem: TTreeNode; [rw]` |  | BottomItem - the last item on the list
`property DefaultItemHeight: Integer; [rw]` |  | DefaultItemHeight - default height for items on the list
`property DropTarget: TTreeNode; [rw]` |  | DropTarget - the target node for dropping a dragged item
`property ExpandSignType: TTreeViewExpandSignType; [rw]` |  | ExpandSignType - the symbols to denote whether a list is expanded or collapsed; default is plus or minus
`property InsertMarkNode: TTreeNode; [rw]` |  | InsertMarkNode - place a marker on the specified node
`property InsertMarkType: TTreeViewInsertMarkType; [rw]` |  | InsertMarkType - the type of marker to be inserted
`property KeepCollapsedNodes: Boolean; [rw]` |  | KeepCollapsedNodes - if True, the collapsed nodes are to be retained
`property MultiSelectStyle: TMultiSelectStyle; [rw]`
`property Options: TTreeViewOptions; [rw]` |  | The set of Options for displaying the tree view
`property ScrollBars: TScrollStyle; [rw]` |  | ScrollBars - the style of scroll bars for the treeview display
`property Selected: TTreeNode; [rw]` |  | The Selected tree nodes
`property SelectionColor: TColor; [rw]` |  | SelectionColor - the colour to be used for the selected nodes, to distinguish them from the others
`property SelectionCount: Cardinal; [r]`
`property Selections: TTreeNode; [r]`
`property SeparatorColor: TColor; [rw]` |  | SeparatorColor - the colour to be used for separators
`property TopItem: TTreeNode; [rw]` |  | TopItem - the first visible node of the tree
`property TreeLineColor: TColor; [rw]` |  | TreeLineColor - the colour to be used for the lines showing the tree structure
`property TreeLinePenStyle: TPenStyle; [rw]` |  | TreeLinePenStyle - the pen style for drawing lines on the tree
`property ExpandSignColor: TColor; [rw]` |  | ExpandSignColor - the colour to be used for the expand/collapse symbols
`published`
`property TabStop;` |  | Is the control in the sequence of controls accessed by successive presses of the Tab key?
`end;`

## Inheritance

`TCustomTreeView` |  | TCustomTreeView - ancestor class for TTreeView
`TCustomControl` |  | TCustomControl - a base class for many window controls
`TWinControl`
`TControl`
`TLCLComponent` |  | TLCLComponent - base class for LCL components
`TComponent,IUnknown,IInterfaceComponentReference`
`TPersistent`
`TObject`

## Description

TCustomTreeView - ancestor class for TTreeView, which displays a collection of items in a hierarchical tree form. This class defines many properties which are inherited by children classes, including loading the data from files or streams, saving to files or streams, updating, sorting alphabetically, editing, making visible or invisible, expanding or collapsing the tree display, and many more.

The latest version of this document can be found at lazarus-ccr.sourceforge.net .