<?xml version="1.0" encoding="UTF-8"?>
<fpdoc-descriptions>
  <package name="lcl">
    <!--
     ====================================================================
      ComboEx
    ====================================================================
    -->
    <module name="ComboEx">
      <short>
        Contains classes, types, and routines used to implement the TComboBoxEx and TCheckComboBox visual components.
      </short>
      <descr>
        <p>
          <file>comboex.pas</file> contains classes, types, and routines used to implement extended combo-box controls. The following components are added to the Lazarus IDE component palette:
        </p>
        <p>
          <b>Misc</b> Tab
        </p>
        <ul>
          <li>TComboBoxEx</li>
          <li>TCheckComboBox</li>
        </ul>
      </descr>

      <!-- unresolved external references -->
      <element name="Classes"/>
      <element name="SysUtils"/>
      <element name="Types"/>
      <element name="LCLIntf"/>
      <element name="LCLType"/>
      <element name="LMessages"/>
      <element name="LResources"/>
      <element name="LazLoggerBase"/>
      <element name="ImgList"/>
      <element name="Controls"/>
      <element name="StdCtrls"/>
      <element name="ComCtrls"/>
      <element name="ExtCtrls"/>
      <element name="Graphics"/>
      <element name="GraphUtil"/>
      <element name="Themes"/>
      <element name="Forms"/>

      <element name="TAutoCompleteOption">
        <short>Enumerated type with values representing the autocomplete options used in TComboBoxEx.</short>
        <descr>
          <p>
            <var>TAutoCompleteOption</var> is an enumerated type with values representing the autocomplete options used in <var>TCustomComboBoxEx</var> and    <var>TComboBoxEx</var>. Values from the enumeration are stored in the <var>TAutoCompleteOptions</var> set type used to implement the <var>AutoCompleteOptions</var> property in <var>TCustomComboBoxEx</var> and <var>TComboBoxEx</var>. Including a value from the enumeration in the TAutoCompleteOptions set enables the corresponding feature.
          </p>
        </descr>
        <seealso>
          <link id="TAutoCompleteOptions"/>
          <link id="TCustomComboBoxEx.AutoCompleteOptions"/>
          <link id="TComboBoxEx.AutoCompleteOptions"/>
        </seealso>
      </element>
      <element name="TAutoCompleteOption.acoAutoSuggest">
        <short>Enables auto-suggest.</short>
      </element>
      <element name="TAutoCompleteOption.acoAutoAppend">
        <short>Enables auto-appending items to the combo-box.</short>
      </element>
      <element name="TAutoCompleteOption.acoSearch">
        <short>Enables searching items for the current value in the edit control.</short>
      </element>
      <element name="TAutoCompleteOption.acoFilterPrefixes">
        <short>Enables prefixes in the filter for the control.</short>
      </element>
      <element name="TAutoCompleteOption.acoUseTab">
        <short>Enables Tab key navigation in the control.</short>
      </element>
      <element name="TAutoCompleteOption.acoUpDownKeyDropsList">
        <short>Enables toggling the visibility of the drop down using Up and Down cursor keys.</short>
      </element>
      <element name="TAutoCompleteOption.acoRtlReading">
        <short>Enables Right-to-Left text rendering (BiDi Mode) in the control.</short>
      </element>

      <element name="TAutoCompleteOptions">
        <short>Sets type used to store TAutoCompleteOption values.</short>
        <descr>
          <p>
            <var>TAutoCompleteOptions</var> is a set type used to store zero or more values from the <var>TAutoCompleteOption</var> enumeration. TAutoCompleteOptions is the type used to implement the <var>AutoCompleteOptions</var> property in <var>TCustomComboBoxEx</var> and <var>TComboBoxEx</var>. When an enumeration  value is included in the set type, the corresponding feature enabled. When the value is excluded, the feature is disabled.
          </p>
        </descr>
        <seealso>
          <link id="TAutoCompleteOption"/>
          <link id="TCustomComboBoxEx.AutoCompleteOptions"/>
          <link id="TComboBoxEx.AutoCompleteOptions"/>
        </seealso>
      </element>

      <element name="TComboBoxExStyle">
        <short>Enumerated type with values for display styles available in TCustomComboBoxEx.</short>
        <descr>
          <p>
            <var>TComboBoxExStyle</var> is an enumerated type with values representing the display styles available in <var>TCustomComboBoxEx</var>. TComboBoxExStyle is the type used to implement the <var>Style</var> property in <var>TCustomComboBoxEx</var> and <var>TComboBoxEx</var>.
          </p>
          <p>
            TComboBoxExStyle replaces the values used in the ancestor class; there is no need for the various owner-drawn styles from the ancestor control. The extended combo-box controls are always owner-drawn using the fixed style in its <var>DrawItem</var> method.
          </p>
        </descr>
        <seealso>
          <link id="TCustomComboBoxEx.Style"/>
          <link id="TComboBoxEx.Style"/>
          <link id="#lcl.stdctrls.TCustomComboBox.Style">TCustomComboBox.Style</link>
          <link id="TCustomComboBoxEx.DrawItem"/>
        </seealso>
      </element>
      <element name="TComboBoxExStyle.csExDropDown">
        <short>Drawn as a drop down control.</short>
      </element>
      <element name="TComboBoxExStyle.csExSimple">
        <short>Drawn as simple edit control.</short>
      </element>
      <element name="TComboBoxExStyle.csExDropDownList">
        <short>Drawn as a list which drops down when focused.</short>
      </element>

      <element name="TComboBoxExStyleEx">
        <short>Enumerated type with values which modify the behavior in TComboEx.</short>
        <descr>
          <p>
            <var>TComboBoxExStyleEx</var> is an enumerated type with values which modify the behavior in <var>TComboEx</var>. Values from the enumeration are stored in the <var>TComboBoxExStyles</var> set type, and used in the <var>StyleEx</var> property in <var>TCustomComboBoxEx</var> and <var>TComboBoxEx</var>.
          </p>
          <remark>
            Not used in the current LCL implementation.
          </remark>
        </descr>
        <seealso>
          <link id="TComboBoxExStyles"/>
          <link id="TCustomComboBoxEx.StyleEx"/>
          <link id="TComboBoxEx.StyleEx"/>
        </seealso>
      </element>
      <element name="TComboBoxExStyleEx.csExCaseSensitive">
        <short>Enables case-sensitive comparisons in the control.</short>
      </element>
      <element name="TComboBoxExStyleEx.csExNoEditImage">
        <short/>
      </element>
      <element name="TComboBoxExStyleEx.csExNoEditImageIndent">
        <short/>
      </element>
      <element name="TComboBoxExStyleEx.csExNoSizeLimit">
        <short/>
      </element>
      <element name="TComboBoxExStyleEx.csExPathWordBreak">
        <short/>
      </element>

      <element name="TComboBoxExStyles">
        <short>Set type used to store TComboBoxExStyle enumeration values.</short>
        <descr>
          <p>
            <var>TComboBoxExStyles</var> is a set type used to store values from the <var>TComboBoxExStyle</var> enumeration. TComboBoxExStyles is the type used to implement the <var>StyleEx</var> property in <var>TCustomComboBoxEx</var>.
          </p>
        </descr>
        <seealso>
          <link id="TComboBoxExStyle"/>
          <link id="TCustomComboBoxEx.StyleEx"/>
        </seealso>
      </element>

      <element name="TCustomData">
        <short>Pointer type used to access the arbitrary data in TListControlItem.</short>
        <descr>
          <p>
            <var>TCustomData</var> is a <var>Pointer</var> type used to implement the <var>Data</var> property in <var>TListControlItem</var>.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItem.Data"/>
        </seealso>
      </element>

      <element name="TListItemsCompare">
        <short>Specifies a function type used to compare items in TComboEx.</short>
        <descr>
          <p>
            <var>TListItemsCompare</var> is an <var>Integer</var> function type used to implement a comparison between the items stored at the specified positions in <var>AList</var>. The return value contains the relative sort order for the compared values, for example:
          </p>
          <dl>
            <dt>-1</dt>
            <dd>Aitem1 occurs before AItem2</dd>
            <dt>0</dt>
            <dd>AItem1 and AItem2 have the same values</dd>
            <dt>1</dt>
            <dd>AItem1 occurs after AItem2 </dd>
          </dl>
          <p>
            TListItemsCompare implements the sort operation performed in <var>TListControlItems</var> when its <var>CustomSort</var> method is called.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItems.CustomSort"/>
          <link id="TListControlItems.Sort"/>
          <link id="TListControlItems.SortType"/>
          <link id="TListControlItems.OnCompare"/>
          <link id="TListControlItems.CompareItems"/>
        </seealso>
      </element>
      <element name="TListItemsCompare.Result">
        <short>Integer with the relative order for the compared values at the specified positions.</short>
      </element>
      <element name="TListItemsCompare.AList">
        <short>Collection with the items compared in the routine.</short>
      </element>
      <element name="TListItemsCompare.AItem1">
        <short>Ordinal position for the first item in the comparison.</short>
      </element>
      <element name="TListItemsCompare.AItem2">
        <short>Ordinal position for the second item in the comparison.</short>
      </element>

      <element name="TListItemsSortType">
        <short>Alias to the TSortType in <file>ComCtrls.pp</file></short>
        <descr/>
        <seealso>
          <link id="#lcl.ComCtrls.TSortType">TSortType</link>
        </seealso>
      </element>

      <element name="TCheckItemChange">
        <short>
          Specifies an event handler signalled when a check box in TCustomCheckCombo is changed.
        </short>
        <descr>
          <p>
            <var>TCheckItemChange</var> is an object procedure which specifies an event handler signalled when a check box in <var>TCustomCheckCombo</var> is changed. TCheckItemChange is the type used to implement the <var>OnItemChange</var> property in <var>TCustomCheckCombo</var> and <var>TCheckComboBox</var>.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.Checked"/>
          <link id="TCustomCheckCombo.State"/>
          <link id="TCustomCheckCombo.OnItemChange"/>
          <link id="TCheckComboBox.OnItemChange"/>
        </seealso>
      </element>
      <element name="TCheckItemChange.Sender">
        <short>Object for the event notification.</short>
      </element>
      <element name="TCheckItemChange.AIndex">
        <short>Ordinal position for the changed check box.</short>
      </element>

      <element name="TListCompareEvent" link="#lcl.comboex.TListItemsCompare">
        <short/>
        <descr>
          <p>
            Similar to <var>TListItemsSortType</var>, but implemented as an object function.
          </p>
        </descr>
        <seealso/>
      </element>
      <element name="TListCompareEvent.Result">
        <short/>
      </element>
      <element name="TListCompareEvent.AList">
        <short/>
      </element>
      <element name="TListCompareEvent.AItem1">
        <short/>
      </element>
      <element name="TListCompareEvent.AItem2">
        <short/>
      </element>

      <element name="TListControlItem">
        <short>Implements a collection item added to a list control.</short>
        <descr>
          <p>
            <var>TListControlItem</var> is a <var>TCollectionItem</var> descendant which implements the base type for list items used in <var>TComboBoxEx</var>. It is used as the ancestor for <var>TComboExItem</var>. TListControlItem is the type maintained in the <var>TListControlItems</var> collection.
          </p>
          <p>
            TListControlItem provides properties needed to represent an item displayed in a list control, including:
          </p>
          <ul>
            <li>Caption</li>
            <li>Data</li>
            <li>ImageIndex</li>
          </ul>
          <p>
            Applications and libraries do no normally create instances of this class; use the TComboExItem descendant.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItems"/>
          <link id="TComboExItem"/>
          <link id="TCustomComboBoxEx.ItemsEx"/>
          <link id="TComboBoxEx.ItemsEx"/>
        </seealso>
      </element>

      <element name="TListControlItem.FCaption"/>
      <element name="TListControlItem.FData"/>
      <element name="TListControlItem.FImageIndex"/>

      <element name="TListControlItem.SetCaption">
        <short>Sets the value for the Caption property.</short>
        <descr/>
        <seealso>
          <link id="TListControlItem.Caption"/>
        </seealso>
      </element>
      <element name="TListControlItem.SetCaption.AValue">
        <short>Value for the property.</short>
      </element>

      <element name="TListControlItem.SetImageIndex">
        <short>Sets the value for the ImageIndex property.</short>
        <descr/>
        <seealso>
          <link id="TListControlItem.ImageIndex"/>
        </seealso>
      </element>
      <element name="TListControlItem.SetImageIndex.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TListControlItem.Data">
        <short>Pointer to the data used in custom sort operations.</short>
        <descr>
          <p>
            <var>Data</var> is a <var>Pointer</var> type used to access arbitrary data associated with the list item. The content stored in Data is dependent on the control which implements the list item.
          </p>
          <p>
            Data is used in the <var>Sort</var> method in <var>TListControlItems</var> collection when its <var>SortType</var> is set to <var>stData</var> or <var>stBoth</var>.
          </p>
          <p>
            Use the <var>Caption</var> property to maintain the textual value displayed for the list item.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItem.Caption"/>
          <link id="TListControlItems.Sort"/>
          <link id="TListControlItems.SortType"/>
        </seealso>
      </element>

      <element name="TListControlItem.Create">
        <short>Constructor for the class instance.</short>
        <descr>
          <p>
            <var>Create</var> is the overridden constructor for the class instance. Create calls the inherited constructor using the value in <var>ACollection</var> as the owner for the collection item.
          </p>
          <p>
            Create sets the default value for <var>ImageIndex</var> to <b>-1</b> to indicate an index value has not been explicitly assigned.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItem.ImageIndex"/>
        </seealso>
      </element>
      <element name="TListControlItem.Create.ACollection">
        <short>Collection where the class instance is stored.</short>
      </element>

      <element name="TListControlItem.Caption">
        <short>Text displayed for the collection item.</short>
        <descr>
          <p>
            <var>Caption</var> is a <var>String</var> property which contains the text displayed in the list control for the item. Changing the value for the property causes the <var>Changed</var> method to be called to update the list item in its owner collection.
          </p>
          <p>
            Use DisplayName to access the value displayed at design-time in the Object Inspector.
          </p>
        </descr>
        <seealso>
          <link id="#rtl.classes.TCollectionItem.DisplayName">TCollectionItem.DisplayName</link>
        </seealso>
      </element>

      <element name="TListControlItem.ImageIndex">
        <short>Ordinal position for the image displayed for the collection item.</short>
        <descr>
          <p>
            <var>ImageIndex</var> is an <var>Integer</var> property used to specify the ordinal position in an image list for the bitmap displayed for the list item. <b>-1</b> (the default value for the property) indicates that an explicit value has not been assigned for the property, and no image should be displayed for the collection item.
          </p>
        </descr>
        <seealso/>
      </element>

      <element name="TComboExItem">
        <short>Implements an extended item used in TComboEx.</short>
        <descr>
          <p>
            <var>TComboExItem</var> is a <var>TListControlItem</var> descendant which implements an extended item used in <var>TComboEx</var>. TComboExItem extends the ancestor class to include the following properties for the extended item:
          </p>
          <ul>
            <li>Indent</li>
            <li>OverlayImageIndex</li>
            <li>SelectedImageIndex</li>
          </ul>
          <p>
            <var>TComboExItem</var> is the type maintained in the <var>TComboExItems</var> collection used to implement the <var>ItemsEx</var> property in <var>TCustomComboBoxEx</var> and <var>TComboBoxEx</var>.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItem"/>
          <link id="TComboExItems"/>
          <link id="TCustomComboBoxEx.ItemsEx"/>
          <link id="TComboBoxEx.ItemsEx"/>
        </seealso>
      </element>

      <element name="TComboExItem.FIndent"/>
      <element name="TComboExItem.FOverlayImageIndex"/>
      <element name="TComboExItem.FSelectedImageIndex"/>

      <element name="TComboExItem.SetIndent">
        <short>Sets the value for the Indent property.</short>
        <descr/>
        <seealso>
          <link id="TComboExItem.Indent"/>
        </seealso>
      </element>
      <element name="TComboExItem.SetIndent.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TComboExItem.SetOverlayImageIndex">
        <short>Sets the value for the OverlayImageIndex property.</short>
        <descr/>
        <seealso>
          <link id="TComboExItem.OverlayImageIndex"/>
        </seealso>
      </element>
      <element name="TComboExItem.SetOverlayImageIndex.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TComboExItem.SetSelectedImageIndex">
        <short>Sets the value for the SelectedImageIndex property.</short>
        <descr/>
        <seealso>
          <link id="TComboExItem.SelectedImageIndex"/>
        </seealso>
      </element>
      <element name="TComboExItem.SetSelectedImageIndex.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TComboExItem.cDefCaption">
        <short>Default caption used for a new item.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TComboExItem.Create">
        <short>Constructor for the class instance.</short>
        <descr>
          <p>
            <var>Create</var> calls the inherited constructor, and sets the default values for properties in the class instance.
          </p>
        </descr>
        <seealso/>
      </element>
      <element name="TComboExItem.Create.ACollection">
        <short>Collection which owns the collection item.</short>
      </element>

      <element name="TComboExItem.Destroy">
        <short>Destructor for the class instance.</short>
        <descr>
          <p>
            <var>Destroy</var> is the overridden destructor for the class instance.
          </p>
          <p>
            Destroy ensures that the number of items in the <var>Collection</var> and the <var>Owner</var> for the  collection are kept in sync. Normally, the value in <var>Count</var> is maintained when the Collection frees an item instance in its <var>Delete</var> method. Destroy handles the situation where the collection item is destroyed by calling the <var>Free</var> method in the collection item instead.
          </p>
          <p>
            A component notification message is performed for the Collection to signal the delete operation. The <var>Notify</var> method in Collection is <b>not</b> called when Collection is unassigned or does not have an Owner, or when the Owner of the Collection is being freed.
          </p>
          <p>
            Destroy calls the inherited destructor prior to exiting from the method.
          </p>
        </descr>
        <seealso>
          <link id="TComboExItems.Notify"/>
          <link id="TListControlItems.Items"/>
          <link id="#rtl.classes.TCollectionItem.Collection">TCollectionItem.Collection</link>
          <link id="#rtl.classes.TCollection.Owner">TCollection.Owner</link>
          <link id="#rtl.classes.TCollection.Count">TCollection.Count</link>
          <link id="#rtl.classes.TCollection.Delete">TCollection.Delete</link>
          <link id="#rtl.classes.TComponent.ComponentState">TComponent.ComponentState</link>
        </seealso>
      </element>

      <element name="TComboExItem.Indent">
        <short>Space reserved between the Image and the caption for the item.</short>
        <descr>
          <p>
            The default value for the property is <b>-1</b> and indicates that indent spacing is not used for the Combo-Box item. The value is assigned when the    <var>AddItem</var> method in <var>TComboExItems</var> is used to create the item using the parameter value passed to the method. Changing the value for the property causes the <var>Changed</var> method to be called to update the current item.
          </p>
          <p>
            The value in Indent is used when the <var>DrawItem</var> method in <var>TCustomComboBoxEx</var> is called to render an extended item in the Combo-Box.
          </p>
        </descr>
        <seealso>
          <link id="TComboExItems.AddItem"/>
          <link id="TCustomComboBoxEx.DrawItem"/>
        </seealso>
      </element>

      <element name="TComboExItem.OverlayImageIndex">
        <short>Ordinal position for the image drawn as an overlay for the Image in the combo-box item.</short>
        <descr>
          <p>
            The default value for the property is <b>-1</b>, and indicates that an overlay image index has not been explicitly assigned for the item. The overlay image is not drawn when the property contains <b>-1</b>.
          </p>
          <remark>
            Changing the value for the property does not call the <var>Changed</var> method in the current LCL version. This may be different than the behavior from a previous LCL version.
          </remark>
        </descr>
        <seealso>
        </seealso>
      </element>

      <element name="TComboExItem.SelectedImageIndex">
        <short>Ordinal position for the image drawn when the item is selected in the Combo-Box.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TListControlItems">
        <short>Container for the items added to a list control.</short>
        <descr>
          <p>
            <var>TListControlItems</var> is a <var>TOwnedCollection</var> descendant which implements a container for items added to a list control. TListControlItems  extends the ancestor class to provides case sensitivity when comparing Items in the collection, sort types, and custom sorting using an event handler.
          </p>
          <p>
            TListControlItems is the ancestor for the <var>TComboExItems</var> collection class.
          </p>
        </descr>
        <seealso>
          <link id="TComboExItems"/>
          <link id="#rtl.classes.TOwnedCollection">TOwnedCollection</link>
        </seealso>
      </element>

      <element name="TListControlItems.FCaseSensitive"/>
      <element name="TListControlItems.FSortType"/>
      <element name="TListControlItems.FOnCompare"/>
      <element name="TListControlItems.FCompare"/>

      <element name="TListControlItems.GetItems">
        <short>Gets the value for the indexed Items property.</short>
        <descr>
          <p>
            <var>GetItems</var> ensures that the collection Item is cast to the <var>TListControlItem</var> type used in <var>TListControlItems</var>.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItems.Items"/>
          <link id="TListControlItem"/>
        </seealso>
      </element>
      <element name="TListControlItems.GetItems.Result">
        <short>Value for the property.</short>
      </element>
      <element name="TListControlItems.GetItems.AIndex">
        <short>Ordinal position in the collection for the requested item.</short>
      </element>

      <element name="TListControlItems.SetCaseSensitive">
        <short>Sets the value for the CaseSensitive property.</short>
        <descr/>
        <seealso>
          <link id="TListControlItems.CaseSensitive"/>
        </seealso>
      </element>
      <element name="TListControlItems.SetCaseSensitive.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TListControlItems.SetSortType">
        <short>Sets the value for the SortType property.</short>
        <descr/>
        <seealso>
          <link id="TListControlItems.SortType"/>
        </seealso>
      </element>
      <element name="TListControlItems.SetSortType.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TListControlItems.CompareItems">
        <short>Implements a comparison function for items in the collection.</short>
        <descr>
          <p>
            <var>CompareItems</var> is an <var>Integer</var> function used to perform a comparison for items in the collection. <var>AItem1</var> and <var>AItem2</var> contains the list items compared in the method.
          </p>
          <p>
            CompareItems uses the value in <var>CaseSensitive</var> to determine if the comparison of captions value uses case sensitivity. When CaseSensitive is <b>True</b>, caption values are converted to lowercase prior to performing the comparison.
          </p>
          <p>
            CompareItems calls <var>CompareStr</var> to perform a comparison for the Captions assigned for the specified list items. The return value contains the relative sort order for the items calculated as a difference between the ASCII values for characters in the item captions. For example:
          </p>
          <dl>
            <dt>&lt; 0</dt>
            <dd>The caption in AItem1 comes before the caption in AItem2</dd>
            <dt>0</dt>
            <dd>The captions in AItem1 and Aitem2 are the same</dd>
            <dt>&gt; 0</dt>
            <dd>The caption in AItem1 comes after the caption in AItem2</dd>
          </dl>
          <p>
            CompareItems is used in the implementation of the <var>Sort</var> method when <var>SortType</var> contains the value <var>stText</var> or <var>stBoth</var>.
          </p>
          <p>
            Use the <var>OnCompare</var> event handler when SortType contains <var>stData</var> or <var>stBoth</var>.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItems.CaseSensitive"/>
          <link id="TListControlItems.Sort"/>
          <link id="TListControlItems.SortType"/>
          <link id="#rtl.sysutils.CompareStr">CompareStr</link>
        </seealso>
      </element>
      <element name="TListControlItems.CompareItems.Result">
        <short>Relative sort order for the compared items </short>
      </element>
      <element name="TListControlItems.CompareItems.AItem1">
        <short>First list item for the comparison.</short>
      </element>
      <element name="TListControlItems.CompareItems.AItem2">
        <short>Second list item for the comparison.</short>
      </element>

      <element name="TListControlItems.DoCustomSort">
        <short>Performs the comparison for the CustomSort method.</short>
        <descr>
          <p>
            <var>DoCustomSort</var> is an <var>Integer</var> function which performs the comparison for the CustomSort method. Arguments passed to the method contain the <var>TListControlItem</var> instances compared in the method.
          </p>
          <p>
            DoCustomSort calls the <var>TListItemsCompare</var> routine passed as an argument to the <var>CustomSort</var> method.
          </p>
          <p>
            The return value contains the relative sort order for the items compared in the method. For example:
          </p>
          <dl>
            <dt>&lt;0</dt>
            <dd>Item1 comes before Item2 using the custom sort.</dd>
            <dt>0</dt>
            <dd>Item1 and Item2 have the same value in the custom sort.</dd>
            <dt>&gt;0</dt>
            <dd>Item1 comes after Item2 in the custom sort.</dd>
          </dl>
        </descr>
        <seealso>
          <link id="TListControlItems.CustomSort"/>
          <link id="TListControlItems.Sort"/>
          <link id="TListControlItems.SortType"/>
          <link id="TListControlItems.OnCompare"/>
          <link id="TListControlItems.CompareItems"/>
          <link id="TListItemsCompare"/>
        </seealso>
      </element>
      <element name="TListControlItems.DoCustomSort.Result">
        <short>Relative sort order for the compared items.</short>
      </element>
      <element name="TListControlItems.DoCustomSort.AItem1">
        <short>First TListControlItem for the comparison.</short>
      </element>
      <element name="TListControlItems.DoCustomSort.AItem2">
        <short>Second TListControlItem for the comparison.</short>
      </element>

      <element name="TListControlItems.DoOnCompare">
        <short>Signals the OnCompare event handler to compare items in the collection.</short>
        <descr>
          <p>
            <var>DoOnCompare</var> is called from the <var>Sort</var> method when <var>SortType</var> is set to <var>stData</var> or <var>stBoth</var>.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItems.Sort"/>
          <link id="TListControlItems.SortType"/>
          <link id="TListControlItems.OnCompare"/>
          <link id="TListControlItems.CompareItems"/>
          <link id="TListControlItems.CustomSort"/>
          <link id="TListItemsCompare"/>
        </seealso>
      </element>
      <element name="TListControlItems.DoOnCompare.Result">
        <short>Relative sort order for the compared items.</short>
      </element>
      <element name="TListControlItems.DoOnCompare.AItem1">
        <short>First TListControlItem for the comparison.</short>
      </element>
      <element name="TListControlItems.DoOnCompare.AItem2">
        <short>Second TListControlItem for the comparison.</short>
      </element>

      <element name="TListControlItems.Update">
        <short>Performs a notification when an item in the collection has been changed.</short>
        <descr>
          <p>
            <var>Update</var> is an overridden method in <var>TListControlItems</var> used to send a notification to observers when the value in <var>AItem</var> has been changed. Update calls the inherited method in <var>TCollection</var>.
          </p>
        </descr>
        <seealso>
          <link id="#rtl.classes.TCollection">TCollection</link>
          <link id="#rtl.classes.TPersistent.FPONotifyObservers">TPersistent.FPONotifyObservers</link>
        </seealso>
      </element>
      <element name="TListControlItems.Update.AItem">
        <short>Collection item for the update notification.</short>
      </element>

      <element name="TListControlItems.Add">
        <short>Adds a new item to the collection.</short>
        <descr>
          <p>
            <var>Add</var> is a <var>TListControlItem</var> function used to add a new item to the collection. Add reimplements the method defined in the <var>TCollection</var> ancestor class to return the TListControlItem type. The return value contains the TListControlItem instance created and stored in the collection. The current class instance is used as the owner for the collection item.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItem"/>
          <link id="#rtl.classes.TCollection.Add">TCollection.Add</link>
        </seealso>
      </element>
      <element name="TListControlItems.Add.Result">
        <short>Item added to the collection.</short>
      </element>

      <element name="TListControlItems.CustomSort">
        <short>Performs a custom sort using the specified routine.</short>
        <descr>
          <p>
            <var>CustomSort</var> is a procedure used to perform a custom sort for items in the collection using the specified <var>TListItemsCompare</var> routine to implement the comparison. When ACompare is assigned, it is temporarily stored in an internal member and the <var>Sort</var> method is called. No actions are performed in the method when ACompare has not been assigned (contains <b>Nil</b>).
          </p>
        </descr>
        <seealso>
          <link id="TListItemsCompare"/>
          <link id="TListControlItems.Sort"/>
        </seealso>
      </element>
      <element name="TListControlItems.CustomSort.ACompare">
        <short>Routine used to perform the comparison for the items in the collection.</short>
      </element>

      <element name="TListControlItems.Sort">
        <short>Performs the Sort routine required for the setting in SortType.</short>
        <descr>
          <p>
            <var>Sort</var> is a procedure used to perform the sort routine indicated in <var>SortType</var>.
          </p>
        </descr>
        <seealso/>
      </element>

      <element name="TListControlItems.Items">
        <short>Provides indexed access to the list of items maintained in the collection.</short>
        <descr>
          <p>
            <var>Items</var> is a read-only indexed <var>TListControlItem</var> property which provides access to the list of items maintained in the collection. TListControlItems reimplements the read access specifier to return the TListControlItem type required for the collection.
          </p>
          <p>
            Use the Count property to determine the number of Items stored in the collection. Use the Add or Insert method to create a new item in the collection. Use Delete or Clear to remove one or all items in the collection.
          </p>
          <p>
            Items is the default property for the collection, and the property examined by the TCollectionEnumerator returned by the GetEnumerator method.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItem"/>
          <link id="#rtl.classes.TCollection.Items">TCollection.Items</link>
          <link id="#rtl.classes.TCollection.Count">TCollection.Count</link>
          <link id="#rtl.classes.TCollection.Add">TCollection.Add</link>
          <link id="#rtl.classes.TCollection.Insert">TCollection.Insert</link>
          <link id="#rtl.classes.TCollection.Clear">TCollection.Clear</link>
          <link id="#rtl.classes.TCollection.Delete">TCollection.Delete</link>
        </seealso>
      </element>
      <element name="TListControlItems.Items.AIndex">
        <short>Ordinal position for the item requested.</short>
      </element>

      <element name="TListControlItems.CaseSensitive">
        <short>Indicates if case sensitivity is used when comparing items in the collection.</short>
        <descr>
          <p>
            <var>CaseSensitive</var> is a <var>Boolean</var> property which indicates if case sensitivity is used when comparing items in the collection. The value in CaseSensitive is used in the <var>CompareItems</var> method. When set to <b>False</b>, the captions for the compared Items are converted to lowercase prior to comparing their values.
          </p>
          <p>
            Set <var>SortType</var> to <var>stText</var> to use case sensitive sorting for the Items in the collection.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItems.CompareItems"/>
          <link id="TListControlItems.Sort"/>
          <link id="TListControlItems.SortType"/>
          <link id="TListItemsSortType"/>
        </seealso>
      </element>

      <element name="TListControlItems.SortType">
        <short>Determines the comparison mechanism used for collection items in the Sort method.</short>
        <descr>
          <p>
            <var>SortType</var> is a <var>TListItemsSortType</var> property which determines the comparison mechanism used for collection items in the <var>Sort</var> method. The default value for the property is <var>stNone</var> and indicates that no sorting is performed for Items in the collection. Changing the value for the property causes the Sort method to be called to apply the new order to the collection Items.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItems.Sort"/>
          <link id="TListControlItems.Items"/>
          <link id="TListItemsSortType"/>
        </seealso>
      </element>

      <element name="TListControlItems.OnCompare">
        <short>Event handler signalled to sort the collection using the data in the collection items.</short>
        <descr>
          <p>
            <var>OnCompare</var> is a <var>TListCompareEvent</var> property with the event handler signalled to sort the collection using the arbitrary data stored in each collection item. Applications must implement and assign an object procedure using the signature in TListCompareEvent to allow responding to the event notification.
          </p>
          <p>
            OnCompare is signalled in the <var>DoOnCompare</var> method. Set the value in <var>SortType</var> to <var>stData</var> to enable the event handler when the <var>Sort</var> method is called. Use the <var>CustomSort</var> method to sort the collection using a <var>TListItemsCompare</var> routine.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItems.DoOnCompare"/>
          <link id="TListControlItems.SortType"/>
          <link id="TListControlItems.Sort"/>
          <link id="TListControlItems.CustomSort"/>
          <link id="TListCompareEvent"/>
          <link id="TListItemsCompare"/>
          <link id="TListItemsSortType"/>
        </seealso>
      </element>

      <element name="TComboExItems">
        <short>Implements a collection for the items added to TCustomComboBoxEx.</short>
        <descr>
          <p>
            <var>TComboExItems</var> is a <var>TListControlItems</var> descendant which Implements a collection for the items added to <var>TCustomComboBoxEx</var> and <var>TComboBoxEx</var>. TComboExItems extends the ancestor class to use the <var>TComboExItem</var> type for items added to the collection. Reimplemented methods are provided to add, insert, and retrieve collection items using the ItemClass required for the collection. An <var>AddItem</var> method is introduced to create a new collection item and configure its property values. The <var>Notify</var> and <var>Update</var> methods are overridden to use the correct ItemClass as well.
          </p>
          <p>
            TComboExItems is the type used to implement the <var>ItemsEx</var> property in <var>TCustomComboBoxEx</var>.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItems"/>
          <link id="TCustomComboBoxEx.ItemsEx"/>
          <link id="TComboBoxEx.ItemsEx"/>
        </seealso>
      </element>

      <element name="TComboExItems.GetComboItems">
        <short>Gets the value for the indexed ComboItems property.</short>
        <descr/>
        <seealso>
          <link id="TComboExItems.ComboItems"/>
        </seealso>
      </element>
      <element name="TComboExItems.GetComboItems.Result">
        <short>Value for the property.</short>
      </element>
      <element name="TComboExItems.GetComboItems.AIndex">
        <short>Ordinal position for the item accessed in the method.</short>
      </element>

      <element name="TComboExItems.FAddingOrDeletingItem">
        <short>Tracks the add or delete status for the collection.</short>
      </element>

      <element name="TComboExItems.Notify">
        <short>
          Performs component notifications when a collection item is added to or removed from the Collection.
        </short>
        <descr/>
        <seealso/>
      </element>
      <element name="TComboExItems.Notify.Item">
        <short>Collection item for the notification.</short>
      </element>
      <element name="TComboExItems.Notify.Action">
        <short>Action for the notification.</short>
      </element>

      <element name="TComboExItems.Update">
        <short>Updates the collection when the specified item has been changed.</short>
        <descr>
          Forces the owner of the collection (the control) to be redrawn when needed.
        </descr>
        <seealso/>
      </element>
      <element name="TComboExItems.Update.Item">
        <short>Collection item examined in the method.</short>
      </element>

      <element name="TComboExItems.Add">
        <short>Adds a new item to the collection.</short>
        <descr>
          <p>
            <var>Add</var> is a <var>TComboExItem</var> function used to add a new item to the collection. Add reimplements the method in <var>TListControlItems</var> to use the type required for the derived collection. The return value contains the TComboExItem instance allocated in the method. The current class instance is used as the Owner of the  collection item. Add is used in the implementation of the <var>AddItem</var> method.
          </p>
          <p>
            Use <var>AddItem</var> to create a new collection item with the values specified in the arguments to the method.
          </p>
        </descr>
        <seealso>
          <link id="TComboExItems.AddItem"/>
          <link id="TListControlItems.Add"/>
          <link id="TComboExItem"/>
        </seealso>
      </element>
      <element name="TComboExItems.Add.Result">
        <short>Item added to the collection.</short>
      </element>

      <element name="TComboExItems.AddItem">
        <short>Adds a new item with the specified values to the collection.</short>
        <descr>
          <p>
            <var>AddItem</var> is a <var>TComboExItem</var> function used to add a new item to the collection with the values specified in the parameters passed to the method. AddItem calls the <var>Add</var> method to create a new TComboExItem instance. The following properties are updated in the collection item to use the values specified in the arguments:
          </p>
          <ul>
            <li>Caption</li>
            <li>indent</li>
            <li>ImageIndex</li>
            <li>OverlayImageIndex</li>
            <li>SelectedImageIndex</li>
            <li>Data</li>
          </ul>
        </descr>
        <seealso>
          <link id="TComboExItems.Add"/>
          <link id="TComboExItem.Indent"/>
          <link id="TComboExItem.OverlayImageIndex"/>
          <link id="TComboExItem.SelectedImageIndex"/>
          <link id="TListControlItem.Data"/>
          <link id="TListControlItem.Caption"/>
          <link id="TListControlItem.ImageIndex"/>
        </seealso>
      </element>
      <element name="TComboExItems.AddItem.Result">
        <short>Item added to the collection.</short>
      </element>
      <element name="TComboExItems.AddItem.ACaption">
        <short>Caption for the item.</short>
      </element>
      <element name="TComboExItems.AddItem.AImageIndex">
        <short>Image index for the item.</short>
      </element>
      <element name="TComboExItems.AddItem.AOverlayImageIndex">
        <short>Overlay image index for the item.</short>
      </element>
      <element name="TComboExItems.AddItem.ASelectedImageIndex">
        <short>Selected image index for the item.</short>
      </element>
      <element name="TComboExItems.AddItem.AIndent">
        <short>Indent spacing for the item.</short>
      </element>
      <element name="TComboExItems.AddItem.AData">
        <short>Pointer to the arbitrary data associated with the item.</short>
      </element>

      <element name="TComboExItems.Insert">
        <short>Inserts a collection item at the specified position in the collection.</short>
        <descr>
          <p>
            <var>Insert</var> is a <var>TComboExItem</var> function used to insert a new collection item at the specified position in the collection. Insert reimplements the method in <var>TCollection</var> to create and return the TComboExItem type used in the derived collection. Inserts calls the inherited method, and casts the return value to a TComboExItem type.
          </p>
        </descr>
        <seealso>
          <link id="TComboExItem"/>
          <link id="TComboExItems.Add"/>
          <link id="TComboExItems.AddItem"/>
          <link id="#rtl.classes.TCollection.Insert">TCollection.Insert</link>
        </seealso>
      </element>
      <element name="TComboExItems.Insert.Result">
        <short>Collection item created and stored at the specified position.</short>
      </element>
      <element name="TComboExItems.Insert.AIndex">
        <short>Ordinal position in the collection where the new item is inserted.</short>
      </element>

      <element name="TComboExItems.ComboItems">
        <short>Provides indexed access to the items in the collection.</short>
        <descr>
          <p>
            <var>ComboItems</var> is a read-only indexed <var>TComboExItem</var> property used to provide access to the <var>Items</var> in the collection. The read access specifier for the property ensures that values in Items are cast to the TComboExItem type used in the derived collection.
          </p>
          <p>
            ComboItems is the default property for the collection, and the subject visited in an enumerator for the class.
          </p>
        </descr>
        <seealso>
          <link id="TListControlItems.Items"/>
          <link id="#rtl.classes.TCollection.GetEnumerator">TCollection.GetEnumerator</link>
        </seealso>
      </element>
      <element name="TComboExItems.ComboItems.AIndex">
        <short>Ordinal position for the collection item requested in the method.</short>
      </element>

      <element name="TCustomComboBoxEx">
        <short>Implements the base class for an extended/enhanced combo-box.</short>
        <descr>
          <p>
            <var>TCustomComboBoxEx</var> is a <var>TCustomComboBox</var> descendant which implements the base class for <var>TComboBoxEx</var>.
          </p>
          <p>
            TCustomComboBoxEx provides an extended combo-box with added features and capabilities like auto completion, additional display styles, more editing options, and a list with Images used in the control. Another key feature in the class is an extended Items property which provides normal, selected, and overlay image indexes and allows indentation between the image and caption for items in the combo-box. A pointer to arbitrary data for Items used in sort operations is also provided.
          </p>
        </descr>
        <seealso>
          <link id="TComboBoxEx"/>
          <link id="#lcl.stdctrls.TCustomComboBox">TCustomComboBox</link>
        </seealso>
      </element>

      <element name="TCustomComboBoxEx.FAutoCompleteOptions"/>
      <element name="TCustomComboBoxEx.FImages"/>
      <element name="TCustomComboBoxEx.FItemsEx"/>
      <element name="TCustomComboBoxEx.FStyle"/>
      <element name="TCustomComboBoxEx.FStyleEx"/>
      <element name="TCustomComboBoxEx.FImagesWidth"/>

      <element name="TCustomComboBoxEx.SetImages">
        <short>Sets the value for the Images property.</short>
        <descr/>
        <seealso>
          <link id="TCustomComboBoxEx.Images"/>
        </seealso>
      </element>
      <element name="TCustomComboBoxEx.SetImages.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TCustomComboBoxEx.SetImagesWidth">
        <short>Sets the value for the ImagesWidth property.</short>
        <descr/>
        <seealso>
          <link id="TCustomComboBoxEx.ImagesWidth"/>
        </seealso>
      </element>
      <element name="TCustomComboBoxEx.SetImagesWidth.AImagesWidth">
        <short>New value for the property.</short>
      </element>

      <element name="TCustomComboBoxEx.SetStyle">
        <short>Sets the value for the Style property.</short>
        <descr/>
        <seealso>
          <link id="TCustomComboBoxEx.Style"/>
        </seealso>
      </element>
      <element name="TCustomComboBoxEx.SetStyle.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TCustomComboBoxEx.SetStyleEx">
        <short>Sets the value for the StyleEx property.</short>
        <descr/>
        <seealso>
          <link id="TCustomComboBoxEx.StyleEx"/>
        </seealso>
      </element>
      <element name="TCustomComboBoxEx.SetStyleEx.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TCustomComboBoxEx.cDefAutoCompOpts">
        <short>Default value for the AutoCompleteOptions property.</short>
        <descr/>
        <seealso>
          <link id="TCustomComboBoxEx.AutoCompleteOptions"/>
        </seealso>
      </element>

      <element name="TCustomComboBoxEx.cDefStyle">
        <short>Default value for the Style property.</short>
        <descr/>
        <seealso>
          <link id="TCustomComboBoxEx.Style"/>
        </seealso>
      </element>

      <element name="TCustomComboBoxEx.FNeedMeasure">
        <short>
          Internal flag which indicates if the text height needs to be calculated when drawing an item.
        </short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomComboBoxEx.FRightToLeft">
        <short>Internal flag which tracks the BidiMode setting in the control.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomComboBoxEx.FTextHeight">
        <short>Internal derived text height for an item in the combo-box.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomComboBoxEx.CMBiDiModeChanged">
        <short>
          Performs actions needed when the BiDiMode setting is changed for the control.
        </short>
        <descr/>
        <seealso/>
      </element>
      <element name="TCustomComboBoxEx.CMBiDiModeChanged.Message">
        <short>Message handled in the method.</short>
      </element>

      <element name="TCustomComboBoxEx.DrawItem">
        <short>Draws an item in the control.</short>
        <descr>
          <p>
            <var>DrawItem</var> is an overridden procedure used to draw an item in the extended combo-box control.
          </p>
          <p>
            Index contains the ordinal position for the TComboExItem instance in <var>ItemsEx</var> that is drawn in the method.
          </p>
          <p>
            <var>ARect</var> is the rectangle with the coordinates for the item. The values in ARect are set in the calling procedure (LMDrawListItem in TCustomComboBox). When the left coordinate is greater than zero (0), the item is a sub-item (or not a main item). Sub-items are drawn with  the additional spacing in Indent applied to the drawing rectangle.
          </p>
          <p>
            <var>State</var> contains the owner draw state used to render the item, and determines the window, border, and font colors for the control.
          </p>
          <p>
            DrawItem uses <var>ThemeServices</var> to get theme details applied to enabled items in the combo-box. DrawItem ensures that a valid text height is available for the control <var>Canvas</var>, and is used to draw the text for the item.
          </p>
          <p>
            When <var>Images</var> have been assigned for the control, the image index appropriate for the value in State is determined. The value <var>odSelected</var> causes the <var>SelectedImageIndex</var> for the item is be used. Otherwise, the <var>ImageIndex</var> for the item is used.
          </p>
          <p>
            The image size is determined by calling the <var>SizeForPPI</var> method in <var>Images</var> using the <var>ImagesWidth</var> and the display density for the current <var>Font</var>. DrawItem determines the location for the image and the indent spacing for the current BiDiMode setting for the control. Right-to-Left rendering aligns the image and indent to the right-hand edge of the drawing rectangle. The <var>DrawIcon</var> method in <var>ThemeServices</var> is called to render the icon to the control Canvas using the theme details.
          </p>
          <p>
            Images are <b>not</b> drawn when Images is unassigned or contains zero (0) images, or when values have not been explicitly assigned to either ImageIndex or SelectedImageIndex for the extended item in Index.
          </p>
          <p>
            DrawItem configures the Canvas to use the brush style and font color needed for the value in State. Text drawing flags are derived for the item, and the text is rendered by calling the <var>DrawText</var> method.
          </p>
          <remark>
            DrawItem does <b>NOT</b> call the inherited method in <var>TCustomComboBox</var> or trigger its <var>OnDrawItem</var> event handler. The item is rendered entirely in this method.
          </remark>
        </descr>
        <seealso/>
      </element>
      <element name="TCustomComboBoxEx.DrawItem.Index">
        <short>Ordinal position for the item drawn in the method.</short>
      </element>
      <element name="TCustomComboBoxEx.DrawItem.ARect">
        <short>Display rectangle for the item drawn in the method.</short>
      </element>
      <element name="TCustomComboBoxEx.DrawItem.State">
        <short>State used to draw the item in the control.</short>
      </element>

      <element name="TCustomComboBoxEx.FontChanged">
        <short>
          Performs actions needed when the font in the control has been changed.
        </short>
        <descr>
          <p>
            <var>FontChanged</var> is an overridden procedure in <var>TCustomComboBoxEx</var>. FontChanged sets the value in the internal <var>FNeedMeasure</var> flag to <b>True</b> to force the text height for <var>Items</var> to be recalculated. FontChanged calls the inherited method prior to exiting from the procedure.
          </p>
        </descr>
        <seealso>
          <link id="#lcl.controls.TWinControl.FontChanged">TWinControl.FontChanged</link>
        </seealso>
      </element>
      <element name="TCustomComboBoxEx.FontChanged.Sender">
        <short>Object for the event notification.</short>
      </element>

      <element name="TCustomComboBoxEx.InitializeWnd">
        <short>Initializes the window handle for the control.</short>
        <descr>
          <p>
            <var>InitializeWnd</var> is an overridden procedure used to initialize the window handle for the control. InitializeWnd calls the inherited method, and sets the internal flag used to track the setting in <var>IsRightToLeft</var> for the control.
          </p>
        </descr>
        <seealso>
          <link id="#lcl.stdctrls.TCustomComboBox.InitializeWnd">TCustomComboBox.InitializeWnd</link>
          <link id="#lcl.controls.TControl.IsRightToLeft">TControl.IsRightToLeft</link>
        </seealso>
      </element>

      <element name="TCustomComboBoxEx.Notification">
        <short>
          Performs actions needed when the specified component is added to or removed from the control.
        </short>
        <descr>
          Notification is an overridden method in TCustomComboBoxEx. It calls the inherited method on entry to handle notifications in ancestor classes and their child components. It ensures that the reference in Images is set to <b>Nil</b> when the component is removed from the control.
        </descr>
        <seealso>
          <link id="TCustomComboBoxEx.Images"/>
          <link id="#lcl.controls.TControl.Notification"/>
          <link id="#rtl.classes.TComponent">TComponent</link>
        </seealso>
      </element>
      <element name="TCustomComboBoxEx.Notification.AComponent">
        <short>Component for the notification.</short>
      </element>
      <element name="TCustomComboBoxEx.Notification.Operation">
        <short>Operation performed for the specified component.</short>
      </element>

      <element name="TCustomComboBoxEx.SetItemHeight">
        <short>Sets the value for the ItemHeight property.</short>
        <descr>
          <p>
            Overridden in TCustomComboBoxEx to set the internal FNeedMeasure flag.
          </p>
        </descr>
        <seealso>
          <link id="#lcl.stdctrls.TCustomComboBox.ItemHeight">TCustomComboBox.ItemHeight</link>
        </seealso>
      </element>
      <element name="TCustomComboBoxEx.SetItemHeight.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TCustomComboBoxEx.Create">
        <short>Constructor for the class instance.</short>
        <descr>
          <p>
            <var>Create</var> is the constructor for the class instance. Create calls the inherited constructor, and allocates resources needed for the class instance. Create sets the default values for the following properties:
          </p>
          <dl>
            <dt>AutoCompleteOptions</dt>
            <dd>Set to the constant in cDefAutoCompOpts</dd>
            <dt>Style</dt>
            <dd>
              The inherited property is set to csOwnerDrawFixed; the value is set to the constant in cDefStyle in the class instance
            </dd>
            <dt>StyleEx</dt>
            <dd>Set to an empty set ([])</dd>
            <dt>FNeedMeasure</dt>
            <dd>Set to True to force the item height to be recalculated</dd>
          </dl>
        </descr>
        <seealso/>
      </element>
      <element name="TCustomComboBoxEx.Create.TheOwner">
        <short>Owner of the class instance.</short>
      </element>

      <element name="TCustomComboBoxEx.Destroy">
        <short>Destructor for the class instance.</short>
        <descr>
          <p>
            <var>Destroy</var> is the overridden destructor for the class instance. Destroy ensures that resources allocated to the <var>ItemEx</var> property are freed prior to destroying the class instance. Destroy calls the inherited destructor prior to exiting from the method.
          </p>
        </descr>
        <seealso>
          <link id="#lcl.stdctrls.TCustomComboBox.Destroy">TCustomComboBox.Destroy</link>
        </seealso>
      </element>

      <element name="TCustomComboBoxEx.Add">
        <short>Adds a new item to the extended combo-box control.</short>
        <descr>
          <p>
            <var>Add</var> is an overloaded method used to add a new item to the extended combo-box control. Both procedure and function variants are provided.
          </p>
          <p>
            The function variant accepts no arguments, and returns an Integer value with the ordinal position in ItemsEx where the new item was inserted. The caption for the new item is set to the TComboExItem.cDefCaption constant.
          </p>
          <p>
            The procedure variant does not return the new position for the inserted item. Use the Count property in ItemsEx to determine the ordinal position for the item on exit from the method. Use the parameters to specify the values stored in the corresponding properties in the TComboExItem class instance.
          </p>
        </descr>
        <seealso/>
      </element>
      <element name="TCustomComboBoxEx.Add.Result">
        <short>Item added to the control.</short>
      </element>
      <element name="TCustomComboBoxEx.Add.ACaption">
        <short>Caption for the added item.</short>
      </element>
      <element name="TCustomComboBoxEx.Add.AIndent">
        <short>Indent for the added item.</short>
      </element>
      <element name="TCustomComboBoxEx.Add.AImgIdx">
        <short>Image index for the added item.</short>
      </element>
      <element name="TCustomComboBoxEx.Add.AOverlayImgIdx">
        <short>Overlay image index for the added item.</short>
      </element>
      <element name="TCustomComboBoxEx.Add.ASelectedImgIdx">
        <short>Select image index for the added item.</short>
      </element>

      <element name="TCustomComboBoxEx.AddItem">
        <short>Adds the specified item and object instance to the control.</short>
        <descr>
          <p>
            <var>AddItem</var> is a procedure used to create a new item in the extended combo-box control with the specified caption and object data. <var>Item</var> contains the caption assigned to the new <var>TComboExItem</var> instance. AnObject is an object with the data stored in the new TComboExItem instance.
          </p>
          <p>
            AddItem calls <var>Insert</var> to create, update, and store the item in the <var>ItemsEx</var> property.
          </p>
        </descr>
        <seealso>
          <link id="TCustomComboBoxEx.ItemsEx"/>
          <link id="TListControlItem.Caption"/>
          <link id="TListControlItem.Data"/>
        </seealso>
      </element>
      <element name="TCustomComboBoxEx.AddItem.Item">
        <short>Item added to the control.</short>
      </element>
      <element name="TCustomComboBoxEx.AddItem.AnObject">
        <short>Object with data for the item added to the control.</short>
      </element>

      <element name="TCustomComboBoxEx.AssignItemsEx">
        <short>Assigns the specified values to the ItemsEx property.</short>
        <descr>
          <p>
            <var>AssignItemsEx</var> is an overloaded procedure used to assign the specified values to the <var>ItemsEx</var> property.
          </p>
          <p>
            The overloaded variants are used to specify different source types with the values stored in the method. When <var>AItemsEx</var> (<var>TComboExItems</var>) is used as the source, the <var>Assign</var> method in ItemsEx is called to store the new values in the property. When AItems (<var>TStrings</var>) is used as the source, additional processing is performed to clear the content in ItemsEx prior to calling its <var>AddItem</var> method for each of the captions in AItems.
          </p>
        </descr>
        <seealso>
          <link id="TComboExItems"/>
          <link id="TComboExItems.AddItem"/>
          <link id="#rtl.classes.TCollection.Assign">TCollection.Assign</link>
          <link id="#rtl.classes.TCollection.Clear">TCollection.Clear</link>
        </seealso>
      </element>
      <element name="TCustomComboBoxEx.AssignItemsEx.AItems">
        <short>TStrings instance with values stored in the ItemsEx property.</short>
      </element>
      <element name="TCustomComboBoxEx.AssignItemsEx.AItemsEx">
        <short>TComboExItems instance with values stored in the ItemsEx property.</short>
      </element>

      <element name="TCustomComboBoxEx.Clear">
        <short>Clears the contents in the ItemsEx collection.</short>
        <descr>
          <p>
            <var>Clear</var> is an overridden method used to clear the contents in the <var>ItemsEx</var> collection. Clear overrides the behavior from the ancestor class by accessing the Clear method in the ItemsEx property, instead of the <var>Items</var> property.
          </p>
        </descr>
        <seealso>
          <link id="TCustomComboBoxEx.ItemsEx"/>
          <link id="TListControlItems.Items"/>
          <link id="#rtl.classes.TCollection.Clear">TCollection.Clear</link>
        </seealso>
      </element>

      <element name="TCustomComboBoxEx.Delete">
        <short>
          Deletes the item stored at the specified ordinal position in ItemsEx.
        </short>
        <descr>
          <p>
            <var>Delete</var> calls the Delete method in <var>ItemsEx</var> to remove the collection item at the position specified in <var>AIndex</var>.
          </p>
        </descr>
        <seealso>
          <link id="TCustomComboBoxEx.ItemsEx"/>
          <link id="#rtl.classes.TCollection.Delete">TCollection.Delete</link>
        </seealso>
      </element>
      <element name="TCustomComboBoxEx.Delete.AIndex">
        <short>Ordinal position for the item deleted in the method.</short>
      </element>

      <element name="TCustomComboBoxEx.DeleteSelected">
        <short>Deletes the current item selected in the control.</short>
        <descr>
          <p>
            <var>DeleteSelected</var> uses the value in <var>ItemIndex</var> to determine if an item in the control has been selected. When ItemIndex contains a value other than <b>-1</b>, the <var>Delete</var> method is called to remove the item at the position in ItemIndex from the <var>ItemsEx</var> property. No actions are performed in the method when ItemIndex contains a non-zero negative value.
          </p>
        </descr>
        <seealso>
          <link id="#lcl.stdctrls.TCustomComboBox.ItemIndex">TCustomComboBox.ItemIndex</link>
          <link id="TCustomComboBoxEx.ItemsEx"/>
          <link id="TCustomComboBoxEx.Delete"/>
        </seealso>
      </element>

      <element name="TCustomComboBoxEx.Insert">
        <short>Inserts a new item with the specified values at the given position.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="TCustomComboBoxEx.Insert.AIndex">
        <short>Ordinal position where the new item is stored.</short>
      </element>
      <element name="TCustomComboBoxEx.Insert.ACaption">
        <short>Caption for the new combo-box item.</short>
      </element>
      <element name="TCustomComboBoxEx.Insert.AIndent">
        <short>Indent spacing for the new combo-box item.</short>
      </element>
      <element name="TCustomComboBoxEx.Insert.AImgIdx">
        <short>Image index for the new combo-box item.</short>
      </element>
      <element name="TCustomComboBoxEx.Insert.AOverlayImgIdx">
        <short>Overlay image index for the new combo-box item.</short>
      </element>
      <element name="TCustomComboBoxEx.Insert.ASelectedImgIdx">
        <short>Selected image index for the new combo-box item.</short>
      </element>

      <element name="TCustomComboBoxEx.AutoCompleteOptions">
        <short>Contains settings for autocompletion features enabled in the control.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomComboBoxEx.Images">
        <short>
          Contains images which can be displayed for items defined in the ItemsEx property.
        </short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomComboBoxEx.ImagesWidth">
        <short>Specifies the width for images displayed in the control.</short>
        <descr>
          <p>
            <var>ImagesWidth</var> is an <var>Integer</var> property used to specify the width for <var>Images</var> displayed in the extended combo-box control. The property value is the image size used at the design-time display density (PPI). The value may be adjusted in the <var>DrawItem</var> method to a scaled value relative to the PPI setting for the current <var>Font</var> in the control. The scaled value determines the image resolution requested when accessing the Images assigned for the control.
          </p>
          <p>
            The default value for the property is zero (<b>0</b>) and indicates that an explicit value has not been assigned for the property.
          </p>
          <p>
            Changing the value for the property causes the <var>Invalidate</var> method to be called to refresh the control.
          </p>
        </descr>
        <seealso>
          <link id="TCustomComboBoxEx.Images"/>
          <link id="TCustomComboBoxEx.DrawItem"/>
          <link id="TComboBoxEx.Font"/>
          <link id="#lcl.controls.TWinControl.Invalidate">TWinControl.Invalidate</link>
        </seealso>
      </element>

      <element name="TCustomComboBoxEx.ItemsEx">
        <short>Collection with the extended items defined for the control.</short>
        <descr>
          <p>
            <var>ItemsEx</var> is a <var>TComboExItems</var> property which provides access to the extended items defined for the combo-box control.  ItemsEx uses <var>TComboExItem</var> as the <var>ItemClass</var> for the collection. The collection is maintained using the <var>Add</var>, <var>AddItem</var>, <var>Delete</var>, <var>DeleteSelected</var>, and <var>Clear</var> methods. Use <var>AssignItemsEx</var> to set the values in the collection to the values from a specific source.
          </p>
          <p>
            Values in ItemsEx are used in the <var>DrawItem</var> method to render the item(s) using the theme details for the control.
          </p>
        </descr>
        <seealso>
          <link id="TComboExItems"/>
          <link id="TCustomComboBoxEx.DrawItem"/>
          <link id="TCustomComboBoxEx.Add"/>
          <link id="TCustomComboBoxEx.AddItem"/>
          <link id="TCustomComboBoxEx.Delete"/>
          <link id="TCustomComboBoxEx.DeleteSelected"/>
          <link id="TCustomComboBoxEx.Clear"/>
          <link id="TCustomComboBoxEx.AssignItemsEx"/>
        </seealso>
      </element>

      <element name="TCustomComboBoxEx.Style">
        <short>Specifies the control style used for the edit in the combo-box control.</short>
        <descr>
          <p>
            <var>Style</var> is a <var>TComboBoxExStyle</var> property which specifies the control style used for the control. This is a narrower range of values than those used in the <var>TCustomComboBox</var> ancestor class; the owner drawn options are not needed in this class. The following values are used:
          </p>
          <dl>
            <dt>csExDropDown</dt>
            <dd>Displays an edit control with a button to make the drop down visible</dd>
            <dt>csExSimple</dt>
            <dd>Displays an edit control only</dd>
            <dt>csExDropDownList</dt>
            <dd>Displays a read-only value with a button to make the drop down visible</dd>
          </dl>
          <p>
            The default value for the property is set using the <var>cDefStyle</var> constant.
          </p>
        </descr>
        <seealso/>
      </element>

      <element name="TCustomComboBoxEx.StyleEx">
        <short>Enables features or behaviors in the extended combo-box control.</short>
        <descr>
          <p>
            <var>StyleEx</var> is a <var>TComboBoxExStyles</var> property used to store <var>TComboBoxExStyleEx</var> values which enable features in the extended combo-box control. Including a value from the enumeration enables the corresponding feature or behavior in the control. See  <link id="TComboBoxExStyleEx"/> for more information on the enumeration values and their meanings.
          </p>
          <p>
            The default value for the property is an empty set ([]).
          </p>
          <remark>
            Values in StyleEx are not used in the current implementation of TCustomComboBoxEx.
          </remark>
        </descr>
        <seealso/>
      </element>

      <element name="TComboBoxEx">
        <short>Implements an extended combo-box component.</short>
        <descr>
          <p>
            <var>TComboBoxEx</var> is a <var>TCustomComboBoxEx</var> descendant which implements an extended combo-box component.
          </p>
          <p>
            TComboBoxEx provides an extended combo-box with added features and capabilities like auto completion, additional display styles, more editing options, and a list with Images used in the control. Another key feature in the class is an extended Items property which provides normal, selected, and overlay image indexes and allows indentation between the image and caption for items in the combo-box. A pointer to arbitrary data for Items used in sort operations is also provided.
          </p>
        </descr>
        <seealso>
          <link id="TCustomComboBoxEx"/>
        </seealso>
      </element>

      <element name="TComboBoxEx.Align" link="#lcl.controls.TControl.Align"/>
      <element name="TComboBoxEx.Anchors" link="#lcl.controls.TControl.Anchors"/>
      <element name="TComboBoxEx.ArrowKeysTraverseList" link="#lcl.stdctrls.TCustomComboBox.ArrowKeysTraverseList"/>
      <element name="TComboBoxEx.AutoComplete" link="#lcl.stdctrls.TCustomComboBox.AutoComplete"/>
      <element name="TComboBoxEx.AutoCompleteOptions" link="#lcl.comboex.TCustomComboBoxEx.AutoCompleteOptions"/>
      <element name="TComboBoxEx.AutoCompleteText" link="#lcl.stdctrls.TCustomComboBox.AutoCompleteText"/>
      <element name="TComboBoxEx.AutoDropDown" link="#lcl.stdctrls.TCustomComboBox.AutoDropDown"/>
      <element name="TComboBoxEx.AutoSelect" link="#lcl.stdctrls.TCustomComboBox.AutoSelect"/>
      <element name="TComboBoxEx.AutoSize" link="#lcl.controls.TControl.AutoSize"/>
      <element name="TComboBoxEx.BidiMode" link="#lcl.controls.TControl.BidiMode"/>
      <element name="TComboBoxEx.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
      <element name="TComboBoxEx.BorderStyle" link="#lcl.controls.TWinControl.BorderStyle"/>
      <element name="TComboBoxEx.CharCase" link="#lcl.stdctrls.TCustomComboBox.CharCase"/>
      <element name="TComboBoxEx.Color" link="#lcl.controls.TControl.Color"/>
      <element name="TComboBoxEx.Constraints" link="#lcl.controls.TControl.Constraints"/>
      <element name="TComboBoxEx.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
      <element name="TComboBoxEx.DragKind" link="#lcl.controls.TControl.DragKind"/>
      <element name="TComboBoxEx.DragMode" link="#lcl.controls.TControl.DragMode"/>
      <element name="TComboBoxEx.DropDownCount" link="#lcl.stdctrls.TCustomComboBox.DropDownCount"/>
      <element name="TComboBoxEx.Enabled" link="#lcl.controls.TControl.Enabled"/>
      <element name="TComboBoxEx.Font" link="#lcl.controls.TControl.Font"/>
      <element name="TComboBoxEx.Images" link="#lcl.comboex.TCustomComboBoxEx.Images"/>
      <element name="TComboBoxEx.ImagesWidth" link="#lcl.comboex.TCustomComboBoxEx.ImagesWidth"/>
      <element name="TComboBoxEx.ItemHeight" link="#lcl.stdctrls.TCustomComboBox.ItemHeight"/>
      <element name="TComboBoxEx.ItemsEx" link="#lcl.comboex.TCustomComboBoxEx.ItemsEx"/>
      <element name="TComboBoxEx.ItemIndex" link="#lcl.stdctrls.TCustomComboBox.ItemIndex"/>
      <element name="TComboBoxEx.ItemWidth" link="#lcl.stdctrls.TCustomComboBox.ItemWidth"/>
      <element name="TComboBoxEx.MaxLength" link="#lcl.stdctrls.TCustomComboBox.MaxLength"/>
      <element name="TComboBoxEx.OnChange" link="#lcl.stdctrls.TCustomComboBox.OnChange"/>
      <element name="TComboBoxEx.OnChangeBounds" link="#lcl.controls.TControl.OnChangeBounds"/>
      <element name="TComboBoxEx.OnClick" link="#lcl.controls.TControl.OnClick"/>
      <element name="TComboBoxEx.OnCloseUp" link="#lcl.stdctrls.TCustomComboBox.OnCloseUp"/>
      <element name="TComboBoxEx.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
      <element name="TComboBoxEx.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
      <element name="TComboBoxEx.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
      <element name="TComboBoxEx.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
      <element name="TComboBoxEx.OnDropDown" link="#lcl.stdctrls.TCustomComboBox.OnDropDown"/>
      <element name="TComboBoxEx.OnEditingDone" link="#lcl.controls.TControl.OnEditingDone"/>
      <element name="TComboBoxEx.OnEndDock" link="#lcl.controls.TControl.OnEndDock"/>
      <element name="TComboBoxEx.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
      <element name="TComboBoxEx.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
      <element name="TComboBoxEx.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
      <element name="TComboBoxEx.OnGetItems" link="#lcl.stdctrls.TCustomComboBox.OnGetItems"/>
      <element name="TComboBoxEx.OnKeyDown" link="#lcl.controls.TWinControl.OnKeyDown"/>
      <element name="TComboBoxEx.OnKeyPress" link="#lcl.controls.TWinControl.OnKeyPress"/>
      <element name="TComboBoxEx.OnKeyUp" link="#lcl.controls.TWinControl.OnKeyUp"/>
      <element name="TComboBoxEx.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
      <element name="TComboBoxEx.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
      <element name="TComboBoxEx.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
      <element name="TComboBoxEx.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
      <element name="TComboBoxEx.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
      <element name="TComboBoxEx.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
      <element name="TComboBoxEx.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
      <element name="TComboBoxEx.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
      <element name="TComboBoxEx.OnSelect" link="#lcl.stdctrls.TCustomComboBox.OnSelect"/>
      <element name="TComboBoxEx.OnStartDock" link="#lcl.controls.TControl.OnStartDock"/>
      <element name="TComboBoxEx.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
      <element name="TComboBoxEx.OnUTF8KeyPress" link="#lcl.controls.TWinControl.OnUTF8KeyPress"/>
      <element name="TComboBoxEx.ParentBidiMode" link="#lcl.controls.TControl.ParentBidiMode"/>
      <element name="TComboBoxEx.ParentColor" link="#lcl.controls.TControl.ParentColor"/>
      <element name="TComboBoxEx.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
      <element name="TComboBoxEx.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
      <element name="TComboBoxEx.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
      <element name="TComboBoxEx.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
      <element name="TComboBoxEx.Style" link="#lcl.comboex.TCustomComboBoxEx.Style"/>
      <element name="TComboBoxEx.StyleEx" link="#lcl.comboex.TCustomComboBoxEx.StyleEx"/>
      <element name="TComboBoxEx.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
      <element name="TComboBoxEx.TabStop" link="#lcl.controls.TWinControl.TabStop"/>
      <element name="TComboBoxEx.Text" link="#lcl.stdctrls.TCustomComboBox.Text"/>
      <element name="TComboBoxEx.TextHint" link="#lcl.stdctrls.TCustomComboBox.TextHint"/>
      <element name="TComboBoxEx.Visible" link="#lcl.controls.TControl.Visible"/>

      <element name="TCheckComboItemState">
        <short>Represents state and data for a check box item displayed in TCustomCheckCombo.</short>
        <descr>
          <p>
            <var>TCheckComboItemState</var> is a class used to represent state and data for a check box item displayed in <var>TCustomCheckCombo</var> and   <var>TCheckComboBox</var>. Properties are provided to store the check box state, the enabled setting for the control, and arbitrary data.
          </p>
          <p>
            TCheckComboItemState instances are created when the check boxes are added or assigned in TCustomCheckCombo.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.AddItem"/>
          <link id="TCustomCheckCombo.AssignItems"/>
          <link id="TCustomCheckCombo.Objects"/>
          <link id="TCheckComboBox"/>
        </seealso>
      </element>

      <element name="TCheckComboItemState.State">
        <short>Represents the current state for a check box.</short>
        <descr>
          <p>
            <var>State</var> is a <var>TCheckBoxState</var> property with the enumeration value which represents the current checked, unchecked, or grayed state for the check box.
          </p>
        </descr>
        <seealso>
          <link id="TCheckBoxState"/>
          <link id="TCustomCheckCombo.Checked"/>
          <link id="TCustomCheckCombo.State"/>
          <link id="TCustomCheckCombo.Objects"/>
        </seealso>
      </element>

      <element name="TCheckComboItemState.Enabled">
        <short>Indicates the current enabled state for a check box.</short>
        <descr>
          <p>
            <var>Enabled</var> is a <var>Boolean</var> property which indicates the current enabled state for a check box control in <var>TCustomCheckCombo</var>.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.ItemEnabled"/>
          <link id="TCustomCheckCombo.State"/>
          <link id="TCustomCheckCombo.Objects"/>
        </seealso>
      </element>

      <element name="TCheckComboItemState.Data">
        <short>Contains arbitrary data associated with a check box item.</short>
        <descr/>
        <seealso>
          <link id="TCustomCheckCombo.Objects"/>
        </seealso>
      </element>

      <element name="TCustomCheckCombo">
        <short>
          Base class for a combo-box which displays check boxes for Items in the control.
        </short>
        <descr>
          <p>
            <var>TCustomCheckCombo</var> is a <var>TCustomComboBox</var> descendant which defines the base class for a combo-box which displays check boxes for the Items in the control. It behaves like an ordinary combo-box with a drop-down using a customizable number of visible rows.
          </p>
          <p>
            TCustomCheckCombo provides additional properties, methods, and events which allow the checked state for values in Items to be specified as either a <var>Boolean</var> or a <var>TCheckBoxState</var> value. An <var>OnItemChange</var> event handler is added to perform custom actions when the <var>Checked</var> value for an item is changed. Convenience methods are included which allow check boxes to be added or deleted, or toggle their value.
          </p>
          <p>
            TCustomCheckCombo is the ancestor for the <var>TCheckComboBox</var> control.
          </p>
        </descr>
        <seealso>
          <link id="TCheckComboBox"/>
          <link id="#lcl.stdctrls.TCustomComboBox">TCustomComboBox</link>
        </seealso>
      </element>

      <element name="TCustomCheckCombo.FAllowGrayed"/>
      <element name="TCustomCheckCombo.FOnItemChange"/>

      <element name="TCustomCheckCombo.AsyncCheckItemStates">
        <short>Checks for valid state information in the Items for the control.</short>
        <descr>
          <p>
            <var>AsyncCheckItemStates</var> calls the <var>CheckItemStates</var> method to ensure that <var>TCheckComboItemState</var> instances have been created for the <var>Items</var> in the control. Used in the implementation of the <var>QueueCheckItemStates</var> method. Queued as an asynchronous call using the <var>Application.QueueAsyncCall</var> method.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.State"/>
          <link id="TCheckComboItemState"/>
          <link id="#lcl.stdctrls.TCustomComboBox.Items">TCustomComboBox.Items</link>
          <link id="#lcl.forms.TApplication.QueueAsyncCall">TApplication.QueueAsyncCall</link>
          <link id="#lcl.forms.Application">Application</link>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.AsyncCheckItemStates.Data">
        <short>
          Pointer to an Integer value examined in the method; not used in the current implementation.
        </short>
      </element>

      <element name="TCustomCheckCombo.GetChecked">
        <short>Gets the value for the indexed Checked property.</short>
        <descr/>
        <seealso>
          <Link id="TCustomCheckCombo.Checked"/>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.GetChecked.Result">
        <short>Value for the property.</short>
      </element>
      <element name="TCustomCheckCombo.GetChecked.AIndex">
        <short>Ordinal position for the item examined in the method.</short>
      </element>

      <element name="TCustomCheckCombo.GetCount">
        <short>Gets the value for the Count property.</short>
        <descr/>
        <seealso>
          <link id="TCustomCheckCombo.Count"/>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.GetCount.Result">
        <short>Value for the property.</short>
      </element>

      <element name="TCustomCheckCombo.GetItemEnabled">
        <short>Gets the value for the indexed ItemEnabled property.</short>
        <descr/>
        <seealso>
          <link id="TCustomCheckCombo.ItemEnabled"/>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.GetItemEnabled.Result">
        <short>Value for the property.</short>
      </element>
      <element name="TCustomCheckCombo.GetItemEnabled.AIndex">
        <short>Ordinal position for the item examined in the method.</short>
      </element>

      <element name="TCustomCheckCombo.GetObject">
        <short>Gets the value for the indexed Object property.</short>
        <descr/>
        <seealso>
          <link id="TCustomCheckCombo.Object"/>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.GetObject.Result">
        <short>Value for the property.</short>
      </element>
      <element name="TCustomCheckCombo.GetObject.AIndex">
        <short>Ordinal position for the item examined in the method.</short>
      </element>

      <element name="TCustomCheckCombo.GetState">
        <short>Gets the value for the indexed State property.</short>
        <descr/>
        <seealso>
          <link id="TCustomCheckCombo.State"/>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.GetState.Result">
        <short>Value for the property.</short>
      </element>
      <element name="TCustomCheckCombo.GetState.AIndex">
        <short>Ordinal position for the item examined in the method.</short>
      </element>

      <element name="TCustomCheckCombo.SetChecked">
        <short>Sets the value for the indexed Checked property.</short>
        <descr/>
        <seealso>
          <link id="TCustomCheckCombo.Checked"/>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.SetChecked.AIndex">
        <short>Ordinal position for the item updated in the method.</short>
      </element>
      <element name="TCustomCheckCombo.SetChecked.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TCustomCheckCombo.SetItemEnabled">
        <short>Sets the value for the indexed ItemEnabled property.</short>
        <descr/>
        <seealso>
          <link id="TCustomCheckCombo.ItemEnabled"/>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.SetItemEnabled.AIndex">
        <short>Ordinal position for the item updated in the method.</short>
      </element>
      <element name="TCustomCheckCombo.SetItemEnabled.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TCustomCheckCombo.SetObject">
        <short>Sets the value for the indexed Object property.</short>
        <descr/>
        <seealso>
          <link id="TCustomCheckCombo.Object"/>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.SetObject.AIndex">
        <short>Ordinal position for the item updated in the method.</short>
      </element>
      <element name="TCustomCheckCombo.SetObject.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TCustomCheckCombo.SetState">
        <short>Sets the value for the indexed State property.</short>
        <descr/>
        <seealso>
          <link id="TCustomCheckCombo.State"/>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.SetState.AIndex">
        <short>Ordinal position for the item updated in the method.</short>
      </element>
      <element name="TCustomCheckCombo.SetState.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TCustomCheckCombo.FCheckHighlight">
        <short>Internal member used to to track the highlighting state.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomCheckCombo.FCheckSize">
        <short>Internal member used to track size adjusts needed for them services.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomCheckCombo.FDropped">
        <short>Internal members used to track the state for the drop down in the control.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomCheckCombo.FHilightedIndex">
        <short>Internal member used to track the item highlighted in the control.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomCheckCombo.FHiLiteLeft">
        <short>Internal member used to track the left coordinate for the highlight.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomCheckCombo.FHiLiteRight">
        <short>Internal member used to track the right coordinate for the highlight.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomCheckCombo.FNeedMeasure">
        <short>
          Internal member used to track whether the text height has been calculated for items in the control.
        </short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomCheckCombo.FRejectDropDown">
        <short>
          Internal member used to track whether drop down requests should be rejected; i. e. the drop down is already visible.
        </short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomCheckCombo.FRejectToggleOnSelect">
        <short>
          Internal member used to track whether the current check box selection can toggle its value; i. e. whether the drop down is visible.
        </short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomCheckCombo.FRightToLeft">
        <short>Internal member used to track the BiDi status for the control.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomCheckCombo.FTextHeight">
        <short>Internal member used to track the text height for check boxes in the control.</short>
        <descr/>
        <seealso/>
      </element>

      <element name="TCustomCheckCombo.CMBiDiModeChanged">
        <short>Performs actions needed when the BiDiMode setting is changed for the control.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="TCustomCheckCombo.CMBiDiModeChanged.Message">
        <short>Message handled in the method.</short>
      </element>

      <element name="TCustomCheckCombo.ClearItemStates">
        <short>Removes all state classes allocated for the check boxes in the control.</short>
        <descr>
          <p>
            <var>ClearItemStates</var> is a procedure used to remove all state information classes allocated for the check boxes in the control. ClearItemStates iterates over the <var>Items</var> defined in the control, and frees the <var>TCheckBoxState</var> class instances stored in its <var>Objects</var> property.
          </p>
          <p>
            ClearItemStates is used in the implementation of the <var>SetItems</var>, <var>AssignItems</var>, and <var>Clear</var> methods.
          </p>
        </descr>
        <seealso>
          <link id="#lcl.stdctrls.TCustomComboBox.Items">TCustomComboBox.Items</link>
          <link id="TCustomCheckCombo.AssignItems"/>
          <link id="TCustomCheckCombo.Clear"/>
        </seealso>
      </element>

      <element name="TCustomCheckCombo.CloseUp">
        <short>Closes the drop down displayed for the control.</short>
        <descr>
          <p>
            <var>CloseUp</var> is overridden in <var>TCustomCheckCombo</var> to use the internal member which tracks the visibility for the drop down portion of the control. When it is already visible, the flag value is toggled and the <var>Update</var> method is called to refresh the control. Otherwise, the inherited method is called to perform actions defined in the ancestor class.
          </p>
          <p>
            Use the DropDown method to make the drop down portion of control visible.
          </p>
        </descr>
        <seealso>
          <link id="#lcl.stdctrls.TCustomComboBox.DropDown">TCustomComboBox.DropDown</link>
          <link id="#lcl.stdctrls.TCustomComboBox.CloseUp">TCustomComboBox.CloseUp</link>
          <link id="#lcl.controls.TWinControl.Update">TWinControl.Update</link>
        </seealso>
      </element>

      <element name="TCustomCheckCombo.DrawItem">
        <short>Draws a check box item defined in the combo-box control.</short>
        <descr>
          <p>
            <var>DrawItem</var> is an overridden procedure used to draw a check box defined in the Items for the control.
          </p>
          <p>
            <var>Index</var> contains the ordinal position for the <var>TComboExItem</var> instance in <var>ItemsEx</var> that is drawn in the method.
          </p>
          <p>
            <var>ARect</var> is the rectangle with the coordinates for the check box item drawn in the method. The values in ARect are set in the calling procedure (LMDrawListItem in TCustomComboBox).
          </p>
          <p>
            <var>State</var> contains the owner draw state used to render the check box item, and determines the window and font colors for the check box.
          </p>
          <p>
            DrawItem uses <var>ThemeServices</var> to get theme element details applied to check box items in the combo-box. DrawItem ensures that a valid text height is available for the control <var>Canvas</var>, and is used to draw the text for the check box.
          </p>
          <p>
            DrawItem configures the Canvas to use the brush style and font color needed for the value in State. Text drawing flags are derived for the item, and the text is rendered by calling the <var>DrawText</var> method.
          </p>
          <remark>
            DrawItem does <b>NOT</b> call the inherited method in <var>TCustomComboBox</var> or trigger its <var>OnDrawItem</var> event handler. The item is rendered entirely in this method.
          </remark>
        </descr>
        <seealso/>
      </element>
      <element name="TCustomCheckCombo.DrawItem.Index">
        <short>Ordinal position for the check box drawn in the method.</short>
      </element>
      <element name="TCustomCheckCombo.DrawItem.ARect">
        <short>Rectangle with the coordinates for the check box drawn in the method.</short>
      </element>
      <element name="TCustomCheckCombo.DrawItem.State">
        <short>Owner draw state for the check box.</short>
      </element>

      <element name="TCustomCheckCombo.DropDown">
        <short>Displays the drop down for the combo-box.</short>
        <descr>
          <p>
            <var>DropDown</var> is an overridden method used to display the drop down for the combo-box if it is not already visible. DropDown calls the inherited method to trigger the <var>OnDropDown</var> method (when assigned). When the drop down is already visible, the value in an enabled at <var>ItemIndex</var> is   <var>Toggle</var>d.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.ItemEnabled"/>
          <link id="TCustomCheckCombo.Toggle"/>
          <link id="#lcl.stdctrls.TCustomComboBox.ItemIndex">TCustomComboBox.ItemIndex</link>
          <link id="#lcl.stdctrls.TCustomComboBox.DropDown">TCustomComboBox.DropDown</link>
          <link id="#lcl.stdctrls.TCustomComboBox.OnDropDown">TCustomComboBox.OnDropDown</link>
        </seealso>
      </element>

      <element name="TCustomCheckCombo.FontChanged">
        <short>Performs actions needed when the font for the control has been changed.</short>
        <descr>
          <p>
            <var>FontChanged</var> is an overridden method in <var>TCustomCheckCombo</var>. It sets the internal <var>FNeedMeasure</var> flag to recalculate the text height for check box <var>Items</var> displayed in the control, and calls the inherited method.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.FNeedMeasure"/>
          <link id="#lcl.controls.TWinControl.FontChanged">TWinControl.FontChanged</link>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.FontChanged.Sender">
        <short>Object for the event notification.</short>
      </element>

      <element name="TCustomCheckCombo.InitializeWnd">
        <short>Initializes the window handle for the control.</short>
        <descr>
          <p>
            <var>InitializeWnd</var> is an overridden method used to Initializes the window handle for the control. InitializeWnd ensures that the item states for check boxes defined in <var>Items</var> is initialized by calling the <var>InitItemStates</var> method. InitializeWnd call the inherited method, and sets the internal <var>FRightToLeft</var> flag used to track the BiDi mode for the control.
          </p>
        </descr>
        <seealso>
          <link id="#lcl.stdctrls.TCustomComboBox.InitializeWnd">TCustomComboBox.InitializeWnd</link>
          <link id="#lcl.stdctrls.TCustomComboBox.Items">TCustomComboBox.Items</link>
          <link id="TCustomCheckCombo.State"/>
          <link id="TCustomCheckCombo.InitItemStates"/>
          <link id="TCustomCheckCombo.CheckItemStates"/>
        </seealso>
      </element>

      <element name="TCustomCheckCombo.InitItemStates">
        <short>Initializes check box state information for items in the control.</short>
        <descr>
          <p>
            <var>InitItemStates</var> is used to initialize state information for the Items defined in the check box control. InitItemStates iterates over the values in <var>Items</var>, and creates a <var>TCheckComboItemState</var> instance with the enabled, checked state, and state data for each of the items.
          </p>
          <p>
            The TCheckComboItemState instance is stored in the indexed <var>Objects</var> property. Existing values in Objects are not modified. An <var>Exception</var> is raised if an existing value not derived from TCheckComboItemState is found in Objects.
          </p>
          <p>
            InitItemStates is called from the <var>AssignItems</var>, <var>InitializeWnd</var>, and <var>Loaded</var> methods. It is also called when a new values is assigned to the <var>Items</var> property.
          </p>
          <p>
            <var>ClearItemStates</var> is used to remove TCheckComboItemState instances for Items in the control.
          </p>
        </descr>
        <errors>
          Raises an Exception with the message <b>'Item # is not a TCheckComboItemState'</b> when Objects contains a value not derived from TCheckComboItemState.
        </errors>
        <seealso/>
      </element>

      <element name="TCustomCheckCombo.CheckItemStates">
        <short>Ensures that check box item state classes have been allocated for items in the control.</short>
        <descr>
          <p>
            <var>CheckItemStates</var> is a procedure used to ensure that <var>TCheckComboItemState</var> class instances exist for the <var>Items</var> defined in the control. CheckItemStates iterates over the values in Items to determine if its Objects property contains a valid TCheckComboItemState instance. An Exception is raised when the object is not derived from TCheckComboItemState.
          </p>
          <p>
            CheckItemStates is used in the implementation of the <var>InitializeWnd</var> and <var>AsyncCheckItemStates</var> methods.
          </p>
        </descr>
        <errors>
          Raises an Exception when a check box in Items does not have a valid TCheckComboItemState object.
        </errors>
        <seealso>
          <link id="#lcl.stdctrls.TCustomComboBox.Items">TCustomComboBox.Items</link>
          <link id="TCustomCheckCombo.InitializeWnd"/>
          <link id="TCheckComboItemState"/>
          <link id="#rtl.classes.TStrings.Objects">TStrings.Objects</link>
        </seealso>
      </element>

      <element name="TCustomCheckCombo.QueueCheckItemStates">
        <short>Queues an asynchronous call to AsyncCheckItemStates in the Application singleton.</short>
        <descr>
          <p>
            <var>QueueCheckItemStates</var> is a procedure used to queue an asynchronous call to the <var>AsyncCheckItemStates</var> method in the global Application singleton. QueueCheckItemStates is called from the <var>DrawItem</var> method.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.DrawItem"/>
          <link id="#lcl.forms.TApplication.QueueAsyncCall">TApplication.QueueAsyncCall</link>
          <link id="#lcl.forms.Application">Application</link>
        </seealso>
      </element>

      <element name="TCustomCheckCombo.KeyDown">
        <short>Handles key down events for the control.</short>
        <descr>
          <p>
            <var>KeyDown</var> is the overridden method used to handle key down events for the control. KeyDown ensures that Return (<var>VK_RETURN</var>) and Space (<var>VK_SPACE</var>) are applied to the control. Return causes the value for an enabled item to be toggled when highlighted. Space also toggles the value in an enabled check box,  and makes the item selected before hiding the drop down for  the combo-box.
          </p>
          <p>
            KeyDown calls the inherited method.
          </p>
        </descr>
        <seealso>
          <link id="#lcl.stdctrls.TCustomComboBox.KeyDown">TCustomComboBox.KeyDown</link>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.KeyDown.Key">
        <short>Key examined in the method.</short>
      </element>
      <element name="TCustomCheckCombo.KeyDown.Shift">
        <short>Keystroke modifier examined in the method.</short>
      </element>

      <element name="TCustomCheckCombo.Loaded">
        <short>
          Performs actions needed when the component has finished loading from the LCL streaming mechanism.
        </short>
        <descr>
          <p>
            <var>Loaded</var> is an overridden method used to perform actions needed when the component has finished loading from the LCL streaming mechanism. Loaded calls the inherited method, and calls <var>InitItemStates</var> to allocate <var>TCheckComboItemState</var> instances (when needed) for the check box Items defined in the control.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.InitItemStates"/>
          <link id="#lcl.stdctrls.TCustomComboBox.Items">TCustomComboBox.Items</link>
          <link id="TCheckComboItemState"/>
        </seealso>
      </element>

      <element name="TCustomCheckCombo.MouseLeave">
        <short>
          Deactivates tracking the highlighted check box when the mouse leaves the control.
        </short>
        <descr/>
        <seealso>
          <link id="#lcl.controls.TControl.MouseLeave">TControl.MouseLeave</link>
        </seealso>
      </element>

      <element name="TCustomCheckCombo.MouseMove">
        <short>
          Tracks changes to the mouse position for the highlighted check box in the control.
        </short>
        <descr>
          <p>
            <var>MouseMove</var> is overridden in <var>TCustomCheckCombo</var> to track the X  and Y coordinates for the highlighted check box item, and to refresh the control when needed. MouseMove calls the inherited method.
          </p>
        </descr>
        <seealso>
          <link id="#lcl.controls.TControl.MouseMove">TControl.MouseMove</link>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.MouseMove.Shift">
        <short>Mouse event modifier examined in the method.</short>
      </element>
      <element name="TCustomCheckCombo.MouseMove.X">
        <short>Horizontal coordinate for the mouse pointer examined in the method.</short>
      </element>
      <element name="TCustomCheckCombo.MouseMove.Y">
        <short>Vertical coordinate for the mouse pointer examined in the method.</short>
      </element>

      <element name="TCustomCheckCombo.SetItemHeight">
        <short>Sets the value for the ItemHeight property.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="TCustomCheckCombo.SetItemHeight.AValue">
        <short>New value for the property.</short>
      </element>

      <element name="TCustomCheckCombo.SetItems">
        <short>Sets the value for the Items property.</short>
        <descr/>
        <seealso/>
      </element>
      <element name="TCustomCheckCombo.SetItems.Value">
        <short>New value for the property.</short>
      </element>

      <element name="TCustomCheckCombo.Select">
        <short>Toggles the value for the current item selected in the control.</short>
        <descr>
          <p>
            <var>Select</var> is an overridden procedure used to toggle the value for the current item in the combo-box. Select calls the inherited method.
          </p>
          <p>
            For the Windows platform, the value for the selection cannot be toggled if the combo-box is already in a dropped-down state (when the <var>DropDown</var> method has been called).
          </p>
          <p>
            Select calls the <var>Toggle</var> method using the value in <var>ItemIndex</var> as the affected check box item. The internal flag used to track drop down state is reset prior to exiting from the method. Toggle is not called when ItemIndex contains a negative value, or when the item at the position in ItemIndex is not enabled.
          </p>
          <p>
            Alternatively, you can use the <var>Checked</var> property to assign an explicit <var>Boolean</var> value for the check box in ItemIndex.
          </p>
          <p>
            Select is called from the <var>KeyDown</var> event handler to apply a <b>Space</b> key which occurs in the control.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.Toggle"/>
          <link id="TCustomCheckCombo.KeyDown"/>
          <link id="#lcl.stdctrls.TCustomComboBox.DropDown">TCustomComboBox.DropDown</link>
          <link id="#lcl.stdctrls.TCustomComboBox.Select">TCustomComboBox.Select</link>
          <link id="#lcl.stdctrls.TCustomComboBox.ItemIndex">TCustomComboBox.ItemIndex</link>
        </seealso>
      </element>

      <element name="TCustomCheckCombo.Create">
        <short>Constructor for the class instance.</short>
        <descr>
          <p>
            <var>Create</var> is the overridden constructor for the class instance, and calls the inherited method.  Create ensures that the <var>Items</var> property is configured to ignore duplicate values. Create sets the default values for the following properties and members:
          </p>
          <dl>
            <dt>Style</dt>
            <dd>Set to the value csOwnerDrawFixed</dd>
            <dt>FNeedMeasure</dt>
            <dd>Set to True to force item height to be recalculated</dd>
            <dt>FRejectToggleOnSelect</dt>
            <dd>Set to True until the control is dropped down</dd>
          </dl>
        </descr>
        <seealso>
          <link id="#lcl.stdctrls.TCustomComboBox.Items">TCustomComboBox.Items</link>
          <link id="#rtl.classes.TStringList.Duplicates">TStringList.Duplicates</link>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.Create.AOwner">
        <short>Owner of the object instance.</short>
      </element>

      <element name="TCustomCheckCombo.Destroy">
        <short>Destructor for the class instance.</short>
        <descr>
          <p>
            <var>Destroy</var> is the overridden destructor for the class instance. Destroy calls <var>ClearItemStates</var> to free the <var>TCheckComboItemState</var> instances allocated for <var>Items</var> in the control. Destroy calls the inherited destructor.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.ClearItemStates"/>
          <link id="#lcl.stdctrls.TCustomComboBox.Items">TCustomComboBox.Items</link>
          <link id="TCheckComboItemState"/>
        </seealso>
      </element>

      <element name="TCustomCheckCombo.AddItem" link ="#Lcl.StdCtrls.TCustomComboBox.AddItem">
        <short>Adds a check box with the specified settings to the Items property.</short>
        <descr>
          <p>
            <var>AddItem</var> is a reintroduced procedure used to add a check box with the specified settings to the <var>Items</var> property. AddItem creates a TCheckComboItemState instance which stores the values specified in the <var>AItem</var>, <var>AState</var>, and <var>AEnabled</var> parameters. AddItem calls the inherited method to allocate a new item for the control with the associated item state object.
          </p>
        </descr>
        <seealso>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.AddItem.AItem">
        <short>Caption for the new check box item.</short>
      </element>
      <element name="TCustomCheckCombo.AddItem.AState">
        <short>Check box State for the new item.</short>
      </element>
      <element name="TCustomCheckCombo.AddItem.AEnabled">
        <short>Enabled state for the new check box item.</short>
      </element>

      <element name="TCustomCheckCombo.AssignItems">
        <short>Assigns the content in the specified TStringList to the Items in the control.</short>
        <descr>
          <p>
            <var>AssignItems</var> calls <var>ClearItemStates</var> to reset the state flags for the existing Items. The <var>Assign</var> method in <var>Items</var> is called to store the values in <var>AItems</var>. The <var>InitItemStates</var> method is called to initialize the Objects properties in Items with <var>TCheckComboItemState</var> instances for each of the check boxes.
          </p>
          <remark>
            InitItemStates can raise an exception if any of the Objects in AItems contains a class not derived from TCheckComboItemState.
          </remark>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.ClearItemStates"/>
          <link id="TCustomCheckCombo.InitItemStates"/>
          <link id="TCheckComboItemState"/>
          <link id="#rtl.classes.TStrings.Assign">TStrings.Assign</link>
          <link id="#rtl.classes.TStrings.Objects">TStrings.Objects</link>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.AssignItems.AItems">
        <short>TStringList with values stored in the method.</short>
      </element>

      <element name="TCustomCheckCombo.Clear">
        <short>Removes the values stored in the Items property.</short>
        <descr>
          <p>
            <var>Clear</var> is an overridden procedure in <var>TCustomCheckCombo</var> used to remove check box item state information. Clear calls <var>ClearItemStates</var> to free <var>TCheckComboItemState</var> classes instances stored in the <var>Objects</var> property in <var>Items</var>. Clear calls the inherited method prior to exit to remove its contents.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.ClearItemStates"/>
          <link id="#rtl.classes.TStringList.Clear">TStringList.Clear</link>
          <link id="#rtl.classes.TStrings.Objects">TStrings.Objects</link>
          <link id="TCheckComboItemState"/>
        </seealso>
      </element>

      <element name="TCustomCheckCombo.DeleteItem">
        <short>Deletes the check box at the specified position.</short>
        <descr>
          <p>
            Ensures that an object instance stored in <var>Objects</var> is freed before removing the item.
            Calls the <var>Delete</var> method to remove the item at the position in <var>AIndex</var>.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.Objects"/>
          <link id="#rtl.classes.TStrings.Delete">TStrings.Delete</link>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.DeleteItem.AIndex">
        <short>Ordinal position for the item removed in the method.</short>
      </element>

      <element name="TCustomCheckCombo.CheckAll">
        <short>Sets the state for all check boxes defined in the control meeting the specified  criteria.</short>
        <descr>
          <p>
            <var>CheckAll</var> is a procedure used to set the checked state for all check boxes defined in the <var>Items</var> for the control. <var>AState</var> contains the  state applied to the check boxes defined in the control.
          </p>
          <p>
            <var>AAllowGrayed</var> indicates whether check boxes with an indeterminate ("grayed") state can be updated in the method. <var>AAllowDisabled</var> indicates whether check boxes which are not enabled can be updated in the method.
          </p>
          <p>
            CheckAll iterates over the <var>Items</var> defined for the control, and when allowed using the specified arguments, sets the value in the <var>State</var> property to the value in <var>AState</var>.
          </p>
          <p>
            CheckAll is a convenience method; the same result can be achieved by setting the value in the <var>State</var> or <var>Checked</var> properties for an individual check box at a specified position.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.Checked"/>
          <link id="TCustomCheckCombo.State"/>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.CheckAll.AState">
        <short>Checked state for the matching check boxes.</short>
      </element>
      <element name="TCustomCheckCombo.CheckAll.AAllowGrayed">
        <short>Indicates if grayed check boxes can be updated in the method.</short>
      </element>
      <element name="TCustomCheckCombo.CheckAll.AAllowDisabled">
        <short>Indicates if disabled check boxes can be updated in the method.</short>
      </element>

      <element name="TCustomCheckCombo.Toggle">
        <short>Toggles the checked state for the check box at the specified position.</short>
        <descr>
          <p>
            <var>Toggle</var> is a method used to toggle the checked state for the combo-box item at the position specified in <var>AIndex</var>. Toggle sets the value in the indexed <var>State</var> property to the next <var>TCheckBoxState</var> value for the entry in Items.
          </p>
          <p>
            The value in the <var>AllowGrayed</var> property is used to determine the next checked stated.  When AllowGrayed is <b>False</b>, the value progresses in the order <var>cbUnchecked</var> to <var>cbChecked</var> and repeats. When AllowGrayed is <b>True</b>, the order is <var>cbGrayed</var>, cbUnchecked, cbChecked and repeats.
          </p>
          <p>
            Toggle is called from the <var>KeyDown</var> and <var>DropDown</var> methods when the <b>Return</b> or <b>Space</b> key is pressed on the item in <var>ItemIndex</var> and the item is <var>Enabled</var>. It is also called from the <var>Select</var> method.
          </p>
        </descr>
        <seealso/>
      </element>
      <element name="TCustomCheckCombo.Toggle.AIndex">
        <short>Ordinal position for the check box affected in the method.</short>
      </element>

      <element name="TCustomCheckCombo.AllowGrayed">
        <short>Indicates if check boxes can be drawn in the indeterminate state.</short>
        <descr>
          <p>
            <var>AllowGrayed</var> is a <var>Boolean</var> property which indicates if check boxes can be displayed in the "grayed" or indeterminate state. The default value for the property is <b>False</b>.
          </p>
        </descr>
        <seealso/>
      </element>

      <element name="TCustomCheckCombo.Count">
        <short>Reflects the number of check boxes defined for the control.</short>
        <descr>
          <p>
            <var>Count</var> is a read-only <var>Integer</var> property which reflects the number of check boxes defined for the control. The value for the property is retrieved from the corresponding property in <var>Items</var>.
          </p>
          <p>
            Use the <var>AddItem</var> method to add a new check box to the control. Use the <var>DeleteItem</var> method to remove a specific check box defined in  <var>Items</var>. Use <var>Clear</var> to remove all check boxes defined for the control.
          </p>
        </descr>
        <seealso>
          <link id="#rtl.classes.TStrings.Count">TStrings.Count</link>
          <link id="#lcl.stdctrls.TCustomComboBox.Items">TCustomComboBox.Items</link>
          <link id="TCustomCheckCombo.AddItem"/>
          <link id="TCustomCheckCombo.DeleteItem"/>
          <link id="TCustomCheckCombo.Clear"/>
        </seealso>
      </element>

      <element name="TCustomCheckCombo.Checked">
        <short>Provides indexed access to the Boolean value for a check box defined in Items.</short>
        <descr>
          <p>
            <var>Checked</var> is an indexed <var>Boolean</var> property which provides access to the checked state for a check box item defined in the control. <var>AIndex</var> specifies the ordinal position in Items for the check box. Checked uses the value from the <var>TCheckComboItemState</var> object stored in the <var>Items</var> property. <b>True</b> indicates that TCheckComboItemState.Checked contains the value <var>cbChecked</var>. <b>False</b> indicates that it contains the value <var>cbUnchecked</var>.
          </p>
          <p>
            Changing the value for the property causes the <var>OnItemChange</var> event handler to be signalled, and the <var>Invalidate</var> method is called when <var>AIndex</var> is also the selected <var>ItemIndex</var> for the control.
          </p>
        </descr>
        <seealso>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.Checked.AIndex">
        <short>Ordinal position for the requested check box value.</short>
      </element>

      <element name="TCustomCheckCombo.ItemEnabled">
        <short>Provides indexed access to the Boolean enabled value for a check box defined in Items.</short>
        <descr/>
        <seealso>
          <link id="TCustomCheckCombo.State"/>
          <link id="TCustomCheckCombo.Checked"/>
          <link id="TCustomCheckCombo.Objects"/>
          <link id="TCheckComboItemState.Enabled"/>
          <link id="TCheckComboItemState.State"/>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.ItemEnabled.AIndex">
        <short>Ordinal position for the requested check box enabled value.</short>
      </element>

      <element name="TCustomCheckCombo.Objects">
        <short>Provides indexed access to the Data for a check box defined in Items.</short>
        <descr>
          <p>
            <var>Objects</var> is an indexed <var>TObject</var> property which provides access to the Data for a check box defined in <var>Items</var>. AIndex specifies the ordinal position in Items for the check box. Objects return the value from the TCheckComboItemState object stored in the Items property. The object instance is the property value that represents the content stored in the TCheckComboItemState.Data property.
          </p>
        </descr>
        <seealso>
          <link id="TCheckComboItemState.Data"/>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.Objects.AIndex">
        <short>Ordinal position for the requested check box item state.</short>
      </element>

      <element name="TCustomCheckCombo.State">
        <short>Provides indexed access to the checked State for a check box defined in Items.</short>
        <descr>
          <p>
            <var>State</var> is an indexed <var>TCheckBoxState</var> property which provides access to the checked State for a check box defined in Items. <var>AIndex</var> specifies the ordinal position in Items for the check box. State returns the <var>TCheckBoxState</var> value in <var>TCheckComboItemState.State</var> for the associated object instance.
          </p>
          <p>
            Changing the value for the property causes the <var>OnItemChange</var> event handler to be signalled. The <var>Invalidate</var> method is also called when <var>AIndex</var> is the current value in the <var>ItemIndex</var> property.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.ItemEnabled"/>
          <link id="TCustomCheckCombo.Checked"/>
          <link id="TCustomCheckCombo.Objects"/>
          <link id="TCheckComboItemState.Enabled"/>
          <link id="TCheckComboItemState.State"/>
        </seealso>
      </element>
      <element name="TCustomCheckCombo.State.AIndex">
        <short>Ordinal position for the check box state requested.</short>
      </element>

      <element name="TCustomCheckCombo.OnItemChange">
        <short>Event handler signalled when the state for a check box in the control is changed.</short>
        <descr>
          <p>
            <var>OnItemChange</var> is a <var>TCheckItemChange</var> property with the event handler signalled when a value in the <var>Checked</var> or <var>State</var> properties is changed. Arguments passed to the event handler identify the object for the event notification, and the ordinal position in <var>Items</var> for the modified check box.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo.Checked"/>
          <link id="TCustomCheckCombo.State"/>
          <link id="#lcl.stdctrls.TCustomComboBox.Items">TCustomComboBox.Items</link>
        </seealso>
      </element>

      <element name="TCheckComboBox">
        <short>Combo-box control which displays check boxes for the items in the control.</short>
        <descr>
          <p>
            <var>TCheckComboBox</var> is a <var>TCustomCheckCombo</var> descendant which implements  a combo-box which displays check boxes for the Items in the control. It behaves like an ordinary combo-box with a drop-down using a customizable number of visible rows.
          </p>
          <p>
            TCheckComboBox provides additional properties, methods, and events which allow the checked state for values in Items to be specified as either a <var>Boolean</var> or a <var>TCheckBoxState</var> value. An <var>OnItemChange</var> event handler is added to perform custom actions when the <var>Checked</var> value for an item is changed. Convenience methods are included which allow check boxes to be added or deleted, or toggle their value.
          </p>
          <p>
            TCheckComboBox sets the visibility for property defined in ancestor classes.
          </p>
        </descr>
        <seealso>
          <link id="TCustomCheckCombo"/>
        </seealso>
      </element>

      <element name="TCheckComboBox.Align" link="#lcl.controls.TControl.Align"/>
      <element name="TCheckComboBox.AllowGrayed" link="#lcl.comboex.TCustomCheckCombo.AllowGrayed"/>
      <element name="TCheckComboBox.Anchors" link="#lcl.controls.TControl.Anchors"/>
      <element name="TCheckComboBox.ArrowKeysTraverseList" link="#lcl.stdctrls.TCustomComboBox.ArrowKeysTraverseList"/>
      <element name="TCheckComboBox.AutoDropDown" link="#lcl.stdctrls.TCustomComboBox.AutoDropDown"/>
      <element name="TCheckComboBox.AutoSize" link="#lcl.controls.TControl.AutoSize"/>
      <element name="TCheckComboBox.BidiMode" link="#lcl.controls.TControl.BidiMode"/>
      <element name="TCheckComboBox.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
      <element name="TCheckComboBox.BorderStyle" link="#lcl.controls.TWinControl.BorderStyle"/>
      <element name="TCheckComboBox.Color" link="#lcl.controls.TControl.Color"/>
      <element name="TCheckComboBox.Constraints" link="#lcl.controls.TControl.Constraints"/>
      <element name="TCheckComboBox.Count" link="#lcl.comboex.TCustomCheckCombo.Count"/>
      <element name="TCheckComboBox.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
      <element name="TCheckComboBox.DragKind" link="#lcl.controls.TControl.DragKind"/>
      <element name="TCheckComboBox.DragMode" link="#lcl.controls.TControl.DragMode"/>
      <element name="TCheckComboBox.DropDownCount" link="#lcl.stdctrls.TCustomComboBox.DropDownCount"/>
      <element name="TCheckComboBox.Enabled" link="#lcl.controls.TControl.Enabled"/>
      <element name="TCheckComboBox.Font" link="#lcl.controls.TControl.Font"/>
      <element name="TCheckComboBox.ItemHeight" link="#lcl.stdctrls.TCustomComboBox.ItemHeight"/>
      <element name="TCheckComboBox.ItemIndex" link="#lcl.stdctrls.TCustomComboBox.ItemIndex"/>
      <element name="TCheckComboBox.Items" link="#lcl.stdctrls.TCustomComboBox.Items"/>
      <element name="TCheckComboBox.ItemWidth" link="#lcl.stdctrls.TCustomComboBox.ItemWidth"/>
      <element name="TCheckComboBox.MaxLength" link="#lcl.stdctrls.TCustomComboBox.MaxLength"/>
      <element name="TCheckComboBox.OnChange" link="#lcl.stdctrls.TCustomComboBox.OnChange"/>
      <element name="TCheckComboBox.OnChangeBounds" link="#lcl.controls.TControl.OnChangeBounds"/>
      <element name="TCheckComboBox.OnClick" link="#lcl.controls.TControl.OnClick"/>
      <element name="TCheckComboBox.OnCloseUp" link="#lcl.stdctrls.TCustomComboBox.OnCloseUp"/>
      <element name="TCheckComboBox.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
      <element name="TCheckComboBox.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
      <element name="TCheckComboBox.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
      <element name="TCheckComboBox.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
      <element name="TCheckComboBox.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
      <element name="TCheckComboBox.OnDropDown" link="#lcl.stdctrls.TCustomComboBox.OnDropDown"/>
      <element name="TCheckComboBox.OnEditingDone" link="#lcl.controls.TControl.OnEditingDone"/>
      <element name="TCheckComboBox.OnEnter" link="#lcl.controls.TWinControl.OnExit"/>
      <element name="TCheckComboBox.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
      <element name="TCheckComboBox.OnGetItems" link="#lcl.stdctrls.TCustomComboBox.OnGetItems"/>
      <element name="TCheckComboBox.OnItemChange" link="#lcl.comboex.TCustomCheckCombo.OnItemChange"/>
      <element name="TCheckComboBox.OnKeyDown" link="#lcl.controls.TWinControl.OnKeyDown"/>
      <element name="TCheckComboBox.OnKeyPress" link="#lcl.controls.TWinControl.OnKeyPress"/>
      <element name="TCheckComboBox.OnKeyUp" link="#lcl.controls.TWinControl.OnKeyUp"/>
      <element name="TCheckComboBox.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
      <element name="TCheckComboBox.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
      <element name="TCheckComboBox.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
      <element name="TCheckComboBox.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
      <element name="TCheckComboBox.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
      <element name="TCheckComboBox.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
      <element name="TCheckComboBox.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
      <element name="TCheckComboBox.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
      <element name="TCheckComboBox.OnSelect" link="#lcl.stdctrls.TCustomComboBox.OnSelect"/>
      <element name="TCheckComboBox.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
      <element name="TCheckComboBox.OnUTF8KeyPress" link="#lcl.controls.TWinControl.OnUTF8KeyPress"/>
      <element name="TCheckComboBox.ParentBidiMode" link="#lcl.controls.TControl.ParentBidiMode"/>
      <element name="TCheckComboBox.ParentColor" link="#lcl.controls.TControl.ParentColor"/>
      <element name="TCheckComboBox.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
      <element name="TCheckComboBox.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
      <element name="TCheckComboBox.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
      <element name="TCheckComboBox.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
      <element name="TCheckComboBox.Sorted" link="#lcl.stdctrls.TCustomComboBox.Sorted"/>
      <element name="TCheckComboBox.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
      <element name="TCheckComboBox.TabStop" link="#lcl.controls.TWinControl.TabStop"/>
      <element name="TCheckComboBox.Text" link="#lcl.stdctrls.TCustomComboBox.Text"/>
      <element name="TCheckComboBox.TextHint" link="#lcl.stdctrls.TCustomComboBox.TextHint"/>
      <element name="TCheckComboBox.Visible" link="#lcl.controls.TControl.Visible"/>

      <element name="Register">
        <short>Registers components for use in the Lazarus IDE.</short>
        <descr>
          <p>
            <var>Register</var> is a procedure used to register components in the <file>comboex.pas</file> unit for use in the Lazarus IDE. Register adds the <var>TComboBoxEx</var> and <var>TCheckComboBox</var> components to the  <b>Misc</b> tab in the Lazarus IDE.
          </p>
        </descr>
        <seealso/>
      </element>

    </module>
    <!-- ComboEx -->
  </package>
</fpdoc-descriptions>
