<?xml version="1.0" encoding="UTF-8"?>
<!--

Documentation for LCL (Lazarus Component Library) and LazUtils (Lazarus 
Utilities) are published under the Creative Commons Attribution-ShareAlike 4.0 
International public license.

https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt
https://gitlab.com/freepascal.org/lazarus/lazarus/-/blob/main/docs/cc-by-sa-4-0.txt

Copyright (c) 1997-2025, by the Lazarus Development Team.

-->
<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>
<p>
<file>comboex.pas</file> is part of the Lazarus Component Library (LCL).
</p>
</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 auto-complete 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>
Not used in the current LCL version.
</short>
</element>
<element name="TComboBoxExStyleEx.csExNoEditImage">
<short>
Not used in the current LCL version.
</short>
</element>
<element name="TComboBoxExStyleEx.csExNoEditImageIndent">
<short>
Not used in the current LCL version.
</short>
</element>
<element name="TComboBoxExStyleEx.csExNoSizeLimit">
<short>
Not used in the current LCL version.
</short>
</element>
<element name="TComboBoxExStyleEx.csExPathWordBreak">
<short>
Not used in the current LCL version.
</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>
Specifies a function type used to compare items in TComboEx.
</short>
<descr>
<p>
Similar to <var>TListItemsSortType</var>, but implemented as an object 
function.
</p>
</descr>
<seealso/>
</element>
<element name="TListCompareEvent.Result"/>
<element name="TListCompareEvent.AList"/>
<element name="TListCompareEvent.AItem1"/>
<element name="TListCompareEvent.AItem2"/>

<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>
<p>
Causes the owner of the collection (the control) to be redrawn when needed.
</p>
</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 on the extended combo-box control.
</short>
<descr>
<p>
<var>DrawItem</var> is an overridden procedure used to draw an item on the 
extended combo-box control.
</p>
<p>
<var>Index</var> 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 TRect instance 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 on the 
control. It is used along with the Focused, DroppedDown, and IsEnabled to 
determine the brush color and style used to render the item on the Canvas.
</p>
<p>
DrawItem calculates the vertical space needed for the text on the item. It also 
ensures that the Indent for the item is used to position output horizontally on 
the control.
</p>
<p>
If <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 using the SizeForPPI method in <var>Images</var> 
with the value in its ImagesWidth and the display density for the control Font. 
DrawItem gets 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 DrawForPPI method 
in Images is called to scale the selected image to the current PixelsPerInch 
setting in Font, and to render the image on the control Canvas.
</p>
<p>
An image is <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 values in State, DroppedDown, and Focused. clHighlight is used as the 
Font color for an item where any one of these values is <b>True</b>. Otherwise, 
clWindowText is used. If the item is Focused and Enabled but not DroppedDown, 
the background color is set to clBtnFace and the focus rectangle is drawn.
</p>
<p>
Text drawing flags are derived for the item; text is on an single line and 
ellipsified when too long. Text is aligned for the Bidi mode on the control, 
and centered vertically in the output rectangle. The text is rendered on the 
Canvas by calling the <var>DrawText</var> method in the LCL interface.
</p>
<remark>
DrawItem does <b>NOT</b> call the inherited method in 
<var>TCustomComboBox</var> or trigger its <var>OnDrawItem</var> event handler. 
The extended combo-box item is rendered entirely in this method.
</remark>
</descr>
<seealso>
<link id="TCustomComboBoxEx.Images"/>
<link id="TCustomComboBoxEx.ItemsEx"/>
<link id="TComboExItem"/>
<link id="#lcl.stdctrls.TCustomComboBox.Canvas">TCustomComboBox.Canvas</link>
<link id="#lcl.stdctrls.TCustomComboBox.DroppedDown">TCustomComboBox.DroppedDown</link>
<link id="#lcl.stdctrls.TCustomComboBox.DrawItem">TCustomComboBox.DrawItem</link>
<link id="#lcl.stdctrls.TOwnerDrawState">TOwnerDrawState</link>
<link id="#lcl.controls.TWinControl.Focused">TWinControl.Focused</link>
<link id="#lcl.controls.TControl.IsEnabled">TControl.IsEnabled</link>
</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>
<p>
<var>Notification</var> 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.
</p>
</descr>
<seealso>
<link id="TCustomComboBoxEx.Images"/>
<link id="#lcl.controls.TControl.Notification">TControl.Notification</link>
<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 <b>True</b> 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. The value in <var>AnObject</var> is stored to the 
Data property in the extended combo-box item appended to ItemsEx.
</p>
</descr>
<seealso>
<link id="TCustomComboBoxEx.ItemsEx"/>
<link id="TListControlItem.Caption"/>
<link id="TListControlItem.Data"/>
<link id="TComboExItems"/>
<link id="TComboExItem"/>
<link id="TListControlItems"/>
</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 auto-complete 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.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="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="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>Toggled</var>.
</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 <b>True</b> to force item height to be recalculated</dd>
<dt>FRejectToggleOnSelect</dt>
<dd>Set to <b>True</b> 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.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="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="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>
