<?xml version="1.0" encoding="UTF-8"?>
<fpdoc-descriptions>
  <package name="LazControls">

    <module name="TreeFilterEdit">
      <short>Implements a control used to filter an associated TTreeView control.</short>
      <descr>
        <file>treefilteredit.pas</file> contains classes and other types used to implement a control used to filter an associated TTreeView control. This file is part of the <file>LazControls</file> package.
      </descr>

      <element name="TTreeFilterEdit">
        <short>Filter for an associated TreeView control.</short>
        <descr>
          <p>
            This control has 2 different operation modes. One mode maintains and filters sub-items of root-nodes in a tree. The other mode filters the whole tree using the  TreeNode.Visible property for each of the nodes.
          </p>
          <p>
            <b>Mode 1</b>: Sub-branches under root nodes Items for each branch are maintained in a TTreeFilterBranch class instance.
          </p>
          <p>
            <b>Mode 2</b>: A whole tree When no branches are defined (no calls made to GetBranch), the TreeFilterEdit control filters the whole tree automatically. It uses each TreeNode's Visible property to show/hide it.
          </p>
        </descr>
      </element>

      <element name="TTreeFilterEdit.FilteredTreeview">
        <short>The associated TreeView.</short>
      </element>

      <element name="TTreeFilterEdit.SelectionList">
        <short>List of selected items. They are restored after filtering.</short>
      </element>

      <element name="TTreeFilterEdit.ShowDirHierarchy">
        <short>
          When a filtered text is a directory name, it is split and shown as a tree structure.
        </short>
        <descr>
          <p>
            This has effect only in the "sub-branches" mode. The "whole tree" mode uses the existing tree nodes as is and only changes their visibility.
          </p>
        </descr>
      </element>

      <element name="TTreeFilterEdit.ExpandAllInitially">
        <short>Tree branches are expanded also initially.</short>
        <descr>
          <p>
            The branches are expanded in any case when the tree is filtered and matches are found. This setting only affects the initial state.
          </p>
        </descr>
      </element>

      <element name="TTreeFilterEdit.OnGetImageIndex">
        <short>ImageIndex can be queried while filtering based on the node data.</short>
      </element>

      <element name="TTreeFilterEdit.GetExistingBranch">
        <short>Get an existing branch for a given tree-node, or Nil if there is none.</short>
        <descr>
          <p>
            This can be used only with the "sub-branches" mode.
          </p>
        </descr>
      </element>

      <element name="TTreeFilterEdit.GetCleanBranch">
        <short>Get a new or existing branch with data cleared for a given tree-node.</short>
        <descr>
          <p>
            This can be used only with the "sub-branches" mode. In fact calling this method switches the filter into "sub-branches" mode. This is the way to add those branches.
          </p>
        </descr>
      </element>

      <element name="TTreeFilterBranch">
        <short>
          A branch associated with an existing TreeNode when the filter is used in "sub-branches" mode.
        </short>
      </element>

      <element name="TTreeFilterBranch.Create">
        <short>An existing TreeNode must be passed for the constructor.</short>
      </element>

      <element name="TTreeFilterBranch.AddNodeData">
        <short>
          Add a data item for this branch.
        </short>
        <descr>
          <p>
            Text, a data reference, and an associated file name can be added for the node.
          </p>
        </descr>
      </element>
    </module>

  </package>
</fpdoc-descriptions>
