lazarus/docs/xml/lcl/stdctrls.xml

10664 lines
543 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<fpdoc-descriptions>
<package name="LCL">
<!--
====================================================================
StdCtrls
====================================================================
-->
<module name="StdCtrls">
<short>Standard controls used in the Lazarus Component Library (LCL).</short>
<descr>
<p>
<file>stdctrls.pp</file> contains standard controls used in Lazarus Component Library (LCL) applications. Most of the controls are found on the <b>Standard</b> tab in the Lazarus IDE component palette, including:
</p>
<ul>
<li>TButton</li>
<li>TLabel</li>
<li>TEdit</li>
<li>TMemo</li>
<li>TToggleBox</li>
<li>TCheckBox</li>
<li>TRadioButton</li>
<li>TListBox</li>
<li>TComboBox</li>
<li>TScrollBar</li>
<li>TGroupBox</li>
</ul>
<p>
The following controls are added to the <b>Additional</b> tab in the Lazarus IDE component palette:
</p>
<ul>
<li>TStaticText</li>
</ul>
</descr>
<!-- unresolved external references -->
<element name="Classes"/>
<element name="SysUtils"/>
<element name="Types"/>
<element name="LCLStrConsts"/>
<element name="LCLType"/>
<element name="LCLProc"/>
<element name="LCLIntf"/>
<element name="LMessages"/>
<element name="LResources"/>
<element name="Graphics"/>
<element name="ActnList"/>
<element name="Controls"/>
<element name="Forms"/>
<element name="Menus"/>
<element name="Themes"/>
<element name="TextStrings"/>
<element name="ExtendedStrings"/>
<element name="LazUTF8"/>
<element name="LazMethodList"/>
<element name="LazLoggerBase"/>
<element name="LazUtilities"/>
<element name="TEditCharCase">
<short>Determines the case for text in an edit box or a combo-box control.</short>
<descr>
<p>
<var>TEditCharCase</var> is an enumerated type with values that determine the case used for text in controls like <var>TCustomComboBox</var> and <var>TCustomEdit</var>. TEditCharCase is the type used to implement the <var>CharCase</var> property in both TCustomComboBox and TCustomEdit.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.CharCase"/>
<link id="TCustomEdit.CharCase"/>
</seealso>
</element>
<element name="TEditCharCase.ecNormal">
<short>Normal mode (no case conversion).</short>
</element>
<element name="TEditCharCase.ecUppercase">
<short>Converts every character entered to upper case.</short>
</element>
<element name="TEditCharCase.ecLowerCase">
<short>Converts every character entered to lower case.</short>
</element>
<element name="TEchoMode">
<short>How text in the edit box is displayed.</short>
<descr>
<p>
<var>TEchoMode</var> is an enumerated type with values that control whether text in a control is displayed with or without obfuscation. TEchoMode is the type used to implement the <var>EchoMode</var> property in <var>TCustomEdit</var>.
</p>
</descr>
<seealso>
<link id="TCustomEdit.EchoMode"/>
</seealso>
</element>
<element name="TEchoMode.emNormal">
<short>Characters are shown unmodified.</short>
</element>
<element name="TEchoMode.emNone">
<short>All characters are shown as spaces.</short>
<descr/>
</element>
<element name="TEchoMode.emPassword">
<short>All characters shown as the value in PasswordChar.</short>
</element>
<element name="TScrollStyle">
<short>Indicates the visibility for scrollbars on a control.</short>
<descr>
<p>
<var>TScrollStyle</var> is an enumerated type with values that indicates the visibility for one or more scrollbars displayed for an associated edit control. TScrollStyle is the type used to implement the <var>ScrollBars</var> property in <var>TCustomMemo</var>.
</p>
</descr>
<seealso>
<link id="TCustomMemo.ScrollBars"/>
</seealso>
</element>
<element name="TScrollStyle.ssNone">
<short>No scrollbars are displayed.</short>
</element>
<element name="TScrollStyle.ssHorizontal">
<short>A horizontal scrollbar is shown.</short>
</element>
<element name="TScrollStyle.ssVertical">
<short>A vertical scrollbar is shown.</short>
</element>
<element name="TScrollStyle.ssBoth">
<short>Both horizontal and vertical scrollbars are shown.</short>
</element>
<element name="TScrollStyle.ssAutoHorizontal">
<short>A horizontal scrollbar is shown only when needed.</short>
</element>
<element name="TScrollStyle.ssAutoVertical">
<short>A vertical scrollbar is shown only when needed.</short>
</element>
<element name="TScrollStyle.ssAutoBoth">
<short>Both scrollbars are shown only when needed.</short>
</element>
<element name="TScrollCode">
<short>The scroll action type, as reported by the widget.</short>
<descr>
<p>
<var>TScrollCode</var> is an enumerated type with values that represent scroll actions received from the widgetset class for a scrollbar. The positions and values in the enumeration correspond to the constants defined in the <file>LCLType</file> unit, and include:
</p>
<ul>
<li>SB_LINEUP</li>
<li>SB_LINEDOWN</li>
<li>SB_PAGEUP</li>
<li>SB_PAGEDOWN</li>
<li>SB_THUMBPOSITION</li>
<li>SB_THUMBTRACK</li>
<li>SB_TOP</li>
<li>SB_BOTTOM</li>
<li>SB_ENDSCROLL</li>
</ul>
<p>
Values in TScrollCode are passed as an argument to the <var>Scroll</var> method in <var>TCustomScrollBar</var>, and subsequently to the <var>TScrollEvent</var> event handler in the <var>OnScroll</var> property.
</p>
</descr>
<seealso>
<link id="TScrollEvent"/>
<link id="TCustomScrollBar.Scroll"/>
<link id="TCustomScrollBar.OnScroll"/>
</seealso>
</element>
<element name="TScrollCode.scLineUp">
<short>Scroll one line up (column left).</short>
</element>
<element name="TScrollCode.scLineDown">
<short>Scroll one line down (column right).</short>
</element>
<element name="TScrollCode.scPageUp">
<short>Scroll one page up (left).</short>
</element>
<element name="TScrollCode.scPageDown">
<short>Scroll one page down (right).</short>
</element>
<element name="TScrollCode.scPosition">
<short>Scroll to the specified position.</short>
</element>
<element name="TScrollCode.scTrack">
<short>Scroll tracking to the specified position.</short>
</element>
<element name="TScrollCode.scTop">
<short>Scroll to the top (left) end.</short>
</element>
<element name="TScrollCode.scBottom">
<short>Scroll to the bottom (right) end.</short>
</element>
<element name="TScrollCode.scEndScroll">
<short>Scrolling finished.</short>
</element>
<element name="TScrollEvent">
<short>Defines an event handler type for scrollbar events.</short>
<descr>
<p>
<var>TScrollEvent</var> is an object procedure which defines an event handler signalled when a scroll event occurs in the scrollbar widgetset class. The event handler is called before the new <var>Position</var> is set for the control. The value in Position can be adjusted to implement custom scrollbar behavior.
</p>
<p>
TScrollEvent is the type used to implement the <var>OnScroll</var> event handler in <var>TCustomScrollBar</var>.
</p>
</descr>
<seealso>
<link id="TCustomScrollBar.OnScroll"/>
<link id="TCustomScrollBar.Scroll"/>
</seealso>
</element>
<element name="TScrollEvent.Sender">
<short>The scrollbar for the event notification.</short>
</element>
<element name="TScrollEvent.ScrollCode">
<short>The scroll action for the notification.</short>
</element>
<element name="TScrollEvent.ScrollPos">
<short>New position for the scrollbar.</short>
<descr>
<p>
The suggested new scroll position. Change this value to implement custom scroll behavior.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomScrollBar">
<short>The base class for <var>TScrollBar</var>.</short>
<descr>
<p>
<var>TCustomScrollBar</var> is a <var>TWinControl</var> descendant which defines the base class for a scrollbar, such as <var>TScrollBar</var>. TCustomScrollBar can be used for horizontal or vertical scrollbars displayed on a form or scrolling window control.
</p>
<p>
A scrollbar allows the content in a client area to be scrolled when it extends beyond the window bounds. TCustomScrollBar provides the properties, methods, and events needed to interface with the widgetset class for the platform or operating system.
</p>
<p>
Use the <var>Kind</var> property to specify the orientation for the scrollbar.
</p>
<p>
Use <var>Min</var>, <var>Max</var>, <var>SmallChange</var>, <var>LargeChange</var>, <var>PageSize</var> and <var>Position</var> properties to control the scrolling behavior for the scrollbar.
</p>
<p>
Use the <var>OnChange</var> and <var>OnScroll</var> event handlers to respond to programmatic changes to the scrollbar, or messages received from the widgetset class.
</p>
<p>
See <link id="#lcl.forms.TControlScrollBar">TControlScrollBar</link> for information about scrollbars used for windowed controls.
</p>
</descr>
<seealso>
<link id="TScrollBar"/>
<link id="#lcl.forms.TScrollingWinControl">TScrollingWinControl</link>
<link id="#lcl.forms.TControlScrollBar">TControlScrollBar</link>
<link id="#lcl.controls.TWinControl">TWinControl</link>
</seealso>
</element>
<element name="TCustomScrollBar.FKind"/>
<element name="TCustomScrollBar.FPosition"/>
<element name="TCustomScrollBar.FMin"/>
<element name="TCustomScrollBar.FMax"/>
<element name="TCustomScrollBar.FPageSize"/>
<element name="TCustomScrollBar.FRTLFactor"/>
<element name="TCustomScrollBar.FSmallChange"/>
<element name="TCustomScrollBar.FLargeChange"/>
<element name="TCustomScrollBar.FOnChange"/>
<element name="TCustomScrollBar.FOnScroll"/>
<element name="TCustomScrollBar.DoScroll">
<short>Performs actions needed to translate and apply scrollbar notification messages.</short>
</element>
<element name="TCustomScrollBar.DoScroll.Message">
<short>Message examined and applied in the method.</short>
</element>
<element name="TCustomScrollBar.NotRightToLeft">
<short>Always returns </short>
</element>
<element name="TCustomScrollBar.NotRightToLeft.Result">
<short>Always returns True.</short>
</element>
<element name="TCustomScrollBar.SetKind">
<short>Sets the value for the Kind property.</short>
<descr/>
<seealso>
<link id="TCustomScrollBar.Kind"/>
</seealso>
</element>
<element name="TCustomScrollBar.SetKind.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomScrollBar.SetMax">
<short>Sets the value for the Max property.</short>
<descr/>
<seealso>
<link id="TCustomScrollBar.Max"/>
</seealso>
</element>
<element name="TCustomScrollBar.SetMax.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomScrollBar.SetMin">
<short>Sets the value for the Min property.</short>
<descr/>
<seealso>
<link id="TCustomScrollBar.Min"/>
</seealso>
</element>
<element name="TCustomScrollBar.SetMin.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomScrollBar.SetPosition">
<short>Sets the value for the Position property.</short>
<descr/>
<seealso>
<link id="TCustomScrollBar.Position"/>
</seealso>
</element>
<element name="TCustomScrollBar.SetPosition.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomScrollBar.SetPageSize">
<short>Sets the value for the PageSize property.</short>
<descr/>
<seealso>
<link id="TCustomScrollBar.PageSize"/>
</seealso>
</element>
<element name="TCustomScrollBar.SetPageSize.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomScrollBar.CNHScroll">
<short>Handles the LM_HSCROLL message for the control.</short>
</element>
<element name="TCustomScrollBar.CNHScroll.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomScrollBar.CNVScroll">
<short>Handles the LM_VSCROLL message for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomScrollBar.CNVScroll.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomScrollBar.CNCtlColorScrollBar">
<short>Handles the CN_CTLCOLORSCROLLBAR message for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomScrollBar.CNCtlColorScrollBar.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomScrollBar.WMEraseBkgnd">
<short>Handles the LM_ERASEBKGND message for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomScrollBar.WMEraseBkgnd.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomScrollBar.WSRegisterClass">
<short>Registers the widgetset class created for new instances of the control.</short>
<descr>
<p>
<var>WSRegisterClass</var> is an overridden procedure used to register the widgetset class instance created for new instances of the control. WSRegisterClass calls the inherited method, and calls <var>RegisterCustomScrollBar</var> for the widgetset.
</p>
</descr>
<seealso>
<link id="#lcl.lclclasses.TLCLComponent.WSRegisterClass">TLCLComponent.WSRegisterClass</link>
</seealso>
</element>
<element name="TCustomScrollBar.GetControlClassDefaultSize">
<short>Gets the default size for new instances of the class.</short>
<descr>
<p>
<var>GetControlClassDefaultSize</var> is an overridden <var>TSize</var> class function used to get the default size for new instances of the class.
</p>
<p>
GetControlClassDefaultSize sets the values in members in the return value. The <var>CX</var> member contains the width for the new instance, and is set 121 (pixels). The <var>CY</var> member contains the height for the new instance, and is set to the number of pixels returned from <var>GetSystemMetrics</var> for the <var>SM_CYHSCROLL</var> constant.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.GetControlClassDefaultSize">TControl.GetControlClassDefaultSize</link>
</seealso>
</element>
<element name="TCustomScrollBar.GetControlClassDefaultSize.Result">
<short>TSize instance with the default width and height for the control.</short>
</element>
<element name="TCustomScrollBar.CreateParams">
<short>Initializes the creation parameters for the class instance.</short>
<descr>
<p>
<var>CreateParams</var> is an overridden method used initialize the creation parameters for the class instance. CreateParams calls the inherited method, and ensures that the <var>Params</var> argument is updated to include the value from the <var>Kind</var> property in the style information for the <var>TCreateParams</var> instance. This ensures that the correct orientation for the scrollbar is used in the creation parameters.
</p>
</descr>
<seealso>
<link id="TCustomScrollBar.Kind"/>
<link id="TScrollBarKind"/>
<link id="TCustomScrollBar.CreateWnd"/>
<link id="#lcl.lcltype.TCreateParams">TCreateParams</link>
<link id="#lcl.controls.TWinControl.CreateParams">TWinControl.CreateParams</link>
</seealso>
</element>
<element name="TCustomScrollBar.CreateParams.Params">
<short>The creation parameters and flags for the instance.</short>
</element>
<element name="TCustomScrollBar.CreateWnd">
<short>
<var>CreateWnd</var> - calls inherited <var>CreateWnd</var> then initializes various Scroll Info properties.
</short>
<descr>
<p>
The inherited method creates the interface object, sets parameters and assigns the handle. Then the size of scrollbar, maximum and minimum values, page size and position of scrollbar are set.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.CreateWnd">TWinControl.CreateWnd</link>
</seealso>
</element>
<element name="TCustomScrollBar.Change">
<short>Invokes the OnChange event handler for the control.</short>
<descr>
<p>
<var>Change</var> is a procedure used to perform the <var>Changed</var> method in the ancestor class, and to signal the <var>OnChange</var> event handler (when assigned) for the control. Change is called when <var>SetParams</var> is used to update the <var>Position</var>, <var>Min</var>, <var>Max</var>, or <var>PageSize</var> values in the scrollbar.
</p>
</descr>
<seealso>
<link id="TCustomScrollBar.OnChange"/>
<link id="TCustomScrollBar.SetParams"/>
<link id="TCustomScrollBar.Position"/>
<link id="TCustomScrollBar.Min"/>
<link id="TCustomScrollBar.Max"/>
<link id="TCustomScrollBar.PageSize"/>
<link id="#lcl.controls.TControl.Changed">TControl.Changed</link>
</seealso>
</element>
<element name="TCustomScrollBar.Scroll">
<short>Signals the OnScroll event handler.</short>
<descr>
<p>
<var>Scroll</var> is a method used to signal the <var>OnScroll</var> event handler (when assigned) for the control.
</p>
<p>
<var>ScrollCode</var> contains the scrollbar command constant for the scroll operation. <var>ScrollPos</var> contains the new position for the scrollbar when the operation is completed.
</p>
<p>
Scroll is called from the implementation of the private DoScroll method, which handles scrollbar control messages and sets the values for the arguments to the method.
</p>
</descr>
<seealso>
<link id="TCustomScrollBar.OnScroll"/>
</seealso>
</element>
<element name="TCustomScrollBar.Scroll.ScrollCode">
<short>
Scroll command code for the operation; up or down a line, a page, to the top or bottom, etc.
</short>
</element>
<element name="TCustomScrollBar.Scroll.ScrollPos">
<short>The new position for the scrollbar.</short>
</element>
<element name="TCustomScrollBar.CalculatePreferredSize">
<short>Gets the preferred size for new instances of the class.</short>
<descr>
<p>
<var>CalculatePreferredSize</var> is overridden in TCustomScrollBar. The inherited method is called, and the value in PreferredHeight or PreferredWidth is updated, based on the value in <var>Kind</var>, to use the corresponding value from <var>GetSystemMetrics</var>.
</p>
</descr>
<seealso>
<link id="TCustomScrollBar.Kind"/>
<link id="#lcl.controls.TWinControl.CalculatePreferredSize">TWinControl.CalculatePreferredSize</link>
<link id="#lcl.lclintf.GetSystemMetrics">GetSystemMetrics</link>
</seealso>
</element>
<element name="TCustomScrollBar.CalculatePreferredSize.PreferredWidth">
<short>Preferred width calculated for the control.</short>
</element>
<element name="TCustomScrollBar.CalculatePreferredSize.PreferredHeight">
<short>Preferred height calculated for the control.</short>
</element>
<element name="TCustomScrollBar.CalculatePreferredSize.WithThemeSpace">
<short>True when space is reserved for theme element details in the calculated dimensions.</short>
</element>
<element name="TCustomScrollBar.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 constructor on entry.
</p>
<p>
Create ensures that the component style is updated to <var>csScrollBar</var> and sets the initial bounds for the control to the values returned from <var>GetControlClassDefaultSize</var>. Create sets the default values for properties, like:
</p>
<dl>
<dt>TabStop</dt>
<dd>Set to True.</dd>
<dt>ControlStyle </dt>
<dd>
Includes the values: [csFramed, csDoubleClicks, csOpaque]. Excludes the values: [csAcceptsControls, csDoubleClicks, csCaptureMouse, csSetCaption].
</dd>
<dt>Kind</dt>
<dd>Set to sbHorizontal.</dd>
<dt>Position</dt>
<dd>Set to 0.</dd>
<dt>Min</dt>
<dd>Set to 0.</dd>
<dt>Max</dt>
<dd>Set to 100.</dd>
<dt>SmallChange</dt>
<dd>Set to 1.</dd>
<dt>LargeChange</dt>
<dd>Set to 1.</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="TCustomScrollBar.Create.AOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TCustomScrollBar.SetParams">
<short>Updates the Min and Max values, the size of the page, and the position in the scrollbar.</short>
<descr>
<p>
<var>SetParams</var> is an overloaded procedure used to update the values in the <var>TScrollInfo</var> structure passed to the widgetset class. Values passed in parameters are stored in the TScrollInfo instance, and used to validate the new settings for the scrollbar.
</p>
<p>
SetParams raises an <var>EInvalidOperation</var> exception if the value in AMax is smaller than the value in AMin.
</p>
<p>
The value in <var>APosition</var> is normalized to ensure that it is in the range specified by <var>AMin</var> and <var>AMax</var>.
</p>
<p>
<var>APageSize</var> is set to 0 (zero) if it contains a negative value.
</p>
<p>
When any of the parameter values differ from the current values in the class instance, the class instance is updated. <var>SetScrollInfo</var> is called to apply the changed values when a handle has been allocated for the control. <var>SetScrollPos</var> is called when APosition contains a value different than the one in the class instance. The <var>Change</var> method is called to process the updated values in the control and signal the <var>OnChange</var> event handler (when assigned). The <var>SetParams</var> method in the widgetset class is called to synchronize the changes.
</p>
<p>
SetParams is called when a new value is assigned to the <var>Position</var>, <var>Min</var>, <var>Max</var>, or <var>PageSize</var> property.
</p>
</descr>
<seealso>
<link id="TCustomScrollBar.Position"/>
<link id="TCustomScrollBar.Min"/>
<link id="TCustomScrollBar.Max"/>
<link id="TCustomScrollBar.PageSize"/>
<link id="TCustomScrollBar.Change"/>
<link id="TCustomScrollBar.OnChange"/>
<link id="TScrollInfo"/>
</seealso>
</element>
<element name="TCustomScrollBar.SetParams.APosition">
<short>Value applied to the scrollbar position.</short>
</element>
<element name="TCustomScrollBar.SetParams.AMin">
<short>Value applied to the scrollbar minimum value.</short>
</element>
<element name="TCustomScrollBar.SetParams.AMax">
<short>Value applied to the scrollbar maximum value.</short>
</element>
<element name="TCustomScrollBar.SetParams.APageSize">
<short>Value applied to the scrollbar page size.</short>
</element>
<element name="TCustomScrollBar.Kind">
<short>Contains the scrollbar orientation, horizontal or vertical.</short>
<descr>
<p>
<var>Kind</var> is a <var>TScrollBarKind</var> property which indicates the orientation for the scrollbar.
</p>
<p>
Setting a new value for the property causes the <var>Constraints</var> for the control to be updated with values from the widgetset class. The widgetset class is also notified of the new value for the property. <var>SetBounds</var> is called to refresh the <var>Width</var> and <var>Height</var> for the control.
</p>
<p>
The default value for the property is <var>sbHorizontal</var>.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Constraints">TControl.Constraints</link>
<link id="#lcl.controls.TControl.Width">TControl.Width</link>
<link id="#lcl.controls.TControl.Height">TControl.Height</link>
<link id="#lcl.controls.TWinControl.SetBounds">TWinControl.SetBounds</link>
<link id="TScrollBarKind"/>
</seealso>
</element>
<element name="TCustomScrollBar.LargeChange">
<short>The distance to scroll on an click beneath the slider.</short>
<descr>
<p>
A large change is produced by clicks on the blank area above or below the slider; it is rather analogous to the Page Down or Page Up functions of the Keyboard, and is typically set up to move the slider and the control contents by a full page (window size).
</p>
<p>
Use SmallChange for the value applied when the Up or Down arrows are clicked, or when one of the cursor keys is pressed to navigate in the associated control.
</p>
</descr>
</element>
<element name="TCustomScrollBar.Max">
<short>The maximum value for the bottom or rightmost position depending on orientation.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomScrollBar.Min">
<short>The minimum value for the top or leftmost position depending on orientation.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomScrollBar.PageSize">
<short>The size of the slider relative to the total scroll range.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomScrollBar.Position">
<short>The position of the slider in the scrollbar.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomScrollBar.SmallChange">
<short>
The distance to scroll when the up or down button is clicked.
</short>
<descr>
<p>
A small change occurs when the up or down buttons are clicked, or by up/down keyboard commands. It is typically used for scrolling by a few pixels, or by a single row or column of text.
</p>
<p>
Use LargeChange for the value applied when clicking the thumb in the scrollbar, or when using the Home or End keys to navigate in the associated control.
</p>
</descr>
</element>
<element name="TCustomScrollBar.TabStop">
<short>Enables navigation using the Tab key.</short>
<descr>
<p>
Allows the user to navigate to this control, by pressing the Tab key.
The default value for the property is True in TCustomScrollBar.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.TabStop">TWinControl.TabStop</link>
</seealso>
</element>
<element name="TCustomScrollBar.OnChange">
<short>Event handler signalled when the value in Position, Min, Max, or PageSize is changed.</short>
<descr>
<p>
<var>OnChange</var> is a <var>TNotifyEvent</var> property which contains an event handler signalled when scroll information is updated in the control. OnChange is signalled (when assigned) from the Change method, and occurs when the value in Position, Min, Max, or PageSize is changed using SetParams.
</p>
<p>
Use the OnScroll event handler to respond to events signalled for control messages dispatched to the Scroll method.
</p>
</descr>
<seealso>
<link id="TCustomScrollBar.Position"/>
<link id="TCustomScrollBar.Min"/>
<link id="TCustomScrollBar.Max"/>
<link id="TCustomScrollBar.PageSize"/>
<link id="TCustomScrollBar.Change"/>
<link id="TCustomScrollBar.SetParams"/>
<link id="TCustomScrollBar.OnScroll"/>
</seealso>
</element>
<element name="TCustomScrollBar.OnScroll">
<short>Event handler signalled when scrollbar messages are applied.</short>
<descr>
<p>
<var>OnScroll</var> is a <var>TScrollEvent</var> property which provides an event handler signalled when the position for the scrollbar has been changed.
</p>
<p>
<var>Sender</var> contains the scrollbar for the event.
</p>
<p>
<var>ScrollCode</var> contains the scroll command constant for the operation.
</p>
<p>
<var>ScrollPos</var> contains the new position for the scrollbar when the operation is completed. The event handler can be used to override the value in ScrollPos before it is applied to the Position property in the class instance.
</p>
<p>
OnScroll is signalled (when assigned) from the <var>Scroll</var> method, and occurs when control messages, like CNHScroll and CNVScroll, are processed and applied.
</p>
<p>
Use the <var>OnChange</var> event to respond to programmatic changes to property values in the scrollbar.
</p>
</descr>
<seealso>
<link id="TCustomScrollBar.Position"/>
<link id="TCustomScrollBar.Scroll"/>
<link id="TCustomScrollBar.OnChange"/>
<link id="TScrollEvent"/>
</seealso>
</element>
<element name="TScrollBar">
<short>
A control that allows the user to scroll the content in an associated control by moving a slider.
</short>
<descr>
<p>
A control that allows the user to scroll the content in a windowed control, by moving a slider.
</p>
<p>
TScrollBar appears as a long rectangular track bar, within which a smaller contrasting block or slider can move up and down (or from side to side in a horizontal ScrollBar). It has small triangular indicators or pointers on one or both ends of the bar, depending on the widgetset.
</p>
<p>
Clicking with the mouse on one of the pointers moves the slider a small distance (<var>SmallChange</var>) in the specified direction. Clicking with the mouse in the blank area of the scrollbar above or below the slider makes the slider move by a larger increment (<var>LargeChange</var>).
</p>
<p>
The slider can also be moved by clicking on it with the mouse, and holding down the button while moving the mouse. The slider then follows the mouse until the button is released.
</p>
<p>
If the mouse has a scrollwheel, the slider also can be moved by rotating the wheel.
</p>
<p>
The arrow keys or the Page Up/Page Down keys on the keyboard can be used to move the slider, too.
</p>
<p>
The location of the slider along the track is held in the <var>Position</var> property. It's the programmer's responsibility to ensure that the content of the window is scrolled to the new Position of the scrollbar.
</p>
</descr>
<seealso>
<link id="TCustomScrollBar.OnChange"/>
<link id="HowToUseStdCtrls"/>
</seealso>
</element>
<element name="TScrollBar.Align" link="#lcl.controls.TControl.Align"/>
<element name="TScrollBar.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TScrollBar.BidiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TScrollBar.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TScrollBar.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TScrollBar.DoubleBuffered" link="#lcl.controls.TWinControl.DoubleBuffered"/>
<element name="TScrollBar.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TScrollBar.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TScrollBar.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TScrollBar.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TScrollBar.Kind" link="#lcl.stdctrls.TCustomScrollBar.Kind"/>
<element name="TScrollBar.LargeChange" link="#lcl.stdctrls.TCustomScrollBar.LargeChange"/>
<element name="TScrollBar.Max" link="#lcl.stdctrls.TCustomScrollBar.Max"/>
<element name="TScrollBar.Min" link="#lcl.stdctrls.TCustomScrollBar.Min"/>
<element name="TScrollBar.OnChange" link="#lcl.stdctrls.TCustomScrollBar.OnChange"/>
<element name="TScrollBar.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TScrollBar.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TScrollBar.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TScrollBar.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TScrollBar.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
<element name="TScrollBar.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
<element name="TScrollBar.OnKeyDown" link="#lcl.controls.TWinControl.OnKeyDown"/>
<element name="TScrollBar.OnKeyPress" link="#lcl.controls.TWinControl.OnKeyPress"/>
<element name="TScrollBar.OnKeyUp" link="#lcl.controls.TWinControl.OnKeyUp"/>
<element name="TScrollBar.OnScroll" link="#lcl.stdctrls.TCustomScrollBar.OnScroll"/>
<element name="TScrollBar.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TScrollBar.OnUTF8KeyPress" link="#lcl.controls.TWinControl.OnUTF8KeyPress"/>
<element name="TScrollBar.PageSize" link="#lcl.stdctrls.TCustomScrollBar.PageSize"/>
<element name="TScrollBar.ParentBidiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TScrollBar.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element name="TScrollBar.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TScrollBar.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TScrollBar.Position" link="#lcl.stdctrls.TCustomScrollBar.Position"/>
<element name="TScrollBar.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TScrollBar.SmallChange" link="#lcl.stdctrls.TCustomScrollBar.SmallChange"/>
<element name="TScrollBar.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TScrollBar.TabStop" link="#lcl.stdctrls.TCustomScrollBar.TabStop"/>
<element name="TScrollBar.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TCustomGroupBox">
<short>
The base class for <var>TGroupBox</var>, <var>TRadioGroup</var> and <var>TCheckGroup</var>.
</short>
<descr>
<p>
<var>TCustomGroupBox</var> is a visual component used to organize related controls into a group. It acts a container. TCustomGroupBox is the base class for <var>TGroupBox</var>, <var>TRadioGroup</var> and <var>TCheckGroup</var>. Do not create instances of TCustomGroupBox; use one of the descendent classes.
</p>
</descr>
<seealso>
<link id="TGroupBox"/>
<link id="#lcl.extctrls.TRadioGroup">TRadioGroup</link>
<link id="#lcl.extctrls.TCheckGroup">TCheckGroup</link>
</seealso>
</element>
<element name="TCustomGroupBox.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TCustomGroupBox.GetControlClassDefaultSize" link="#lcl.controls.TControl.GetControlClassDefaultSize"/>
<element name="TCustomGroupBox.GetControlClassDefaultSize.Result">
<short>Default size for new instances of the class.</short>
</element>
<element name="TCustomGroupBox.UpdateOpaque">
<short>Updates the control style when the parent background is used.</short>
<descr>
<p>
<var>UpdateOpaque</var> is a method used to update the control style flags when the parent background is used for the control. When the <var>ParentBackground</var> property is set to <b>True</b>, <var>ControlStyle</var> is updated to remove the <var>csOpaque</var> flag. If ParentBackground is not enabled, ControlStyle is updated to include the csOpaque flag.
</p>
</descr>
<seealso>
<link id="TCustomGroupBox.ParentBackground"/>
</seealso>
</element>
<element name="TCustomGroupBox.CreateParams">
<short>Ensures that creation parameters are updated for the control.</short>
<descr>
<p>
<var>CreateParams</var> is overridden in <var>TCustomGroupBox</var> to ensure that the <var>Style</var> information in <var>Params</var> is updated to include the value <var>BS_GROUPBOX</var>.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.CreateParams">TWinControl.CreateParams</link>
<link id="#lcl.lcltype.TCreateParams">TCreateParams</link>
<link id="#lcl.lcltype.BS_GROUPBOX">BS_GROUPBOX</link>
</seealso>
</element>
<element name="TCustomGroupBox.CreateParams.Params">
<short>Creation parameters updated in the method.</short>
</element>
<element name="TCustomGroupBox.SetColor">
<short>Sets the value for the Color property.</short>
<descr>
<p>
<var>SetColor</var> is a method used to set the value in the <var>Color</var> property. It calls the inherited method on entry.
</p>
<p>
When the value for the Color property is set to <var>clDefault</var>, or has the same value as the Color property in <var>Parent</var>, no additional actions are performed in the method. Otherwise, the value in ParentBackground is set to <b>False</b>.
</p>
</descr>
<seealso>
<link id="TCustomGroupBox.ParentBackground"/>
<link id="#lcl.controls.TControl.Color">TControl.Color</link>
</seealso>
</element>
<element name="TCustomGroupBox.SetColor.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomGroupBox.SetParentBackground">
<short>Sets the value for the ParentBackground property.</short>
<descr>
<p>
<var>SetParentBackground</var> is an overridden method in <var>TCustomGroupBox</var> used to set the value for the <var>ParentBackground</var> property. It calls the inherited method on entry.
</p>
<p>
When the property value is set to <b>True</b> and <var>ParentColor</var> is enabled, the Color property in the <var>Parent</var> control is assigned to the Color property for the group box. Otherwise, <var>clDefault</var> is assigned to the <var>Color</var> property.
</p>
<p>
SetParentBackground calls the <var>UpdateOpaque</var> method to ensure that the ControlStyle flags for the control reflect the transparency needed to draw the parent background.
</p>
</descr>
<seealso>
<link id="TCustomGroupBox.SetParentBackground"/>
<link id="TCustomGroupBox.UpdateOpaque"/>
<link id="#lcl.controls.TControl.ParentColor">TControl.ParentColor</link>
<link id="#lcl.controls.TControl.Parent">TControl.Parent</link>
<link id="#lcl.graphics.clDefault">clDefault</link>
</seealso>
</element>
<element name="TCustomGroupBox.SetParentBackground.AParentBackground">
<short>New value for the property.</short>
</element>
<element name="TCustomGroupBox.CMParentColorChanged">
<short>Handles the CM_PARENTCOLORCHANGED message for the control.</short>
<descr>
<p>
Calls the inherited method on entry to update the value in the <var>Color</var> property. Calls <var>UpdateOpaque</var> to adjust the control style flags when the parent color is applied.
</p>
</descr>
<seealso>
<link id="TCustomGroupBox.UpdateOpaque"/>
<link id="#lcl.controls.TControl.ParentColor">TControl.ParentColor</link>
<link id="#lcl.controls.TControl.CMParentColorChanged">TControl.CMParentColorChanged</link>
</seealso>
</element>
<element name="TCustomGroupBox.CMParentColorChanged.Message">
<short>Control message handled in the method.</short>
</element>
<element name="TCustomGroupBox.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance. It calls the inherited constructor on entry to the method. Create ensures that the component style is set to the value <var>csGroupBox</var>, and includes the value <var>csAcceptsControls</var> in the <var>ControlStyle</var> property. Create calls <var>SetInitialBounds</var> to resize the control using the values returned from <var>GetControlClassDefaultSize</var>.
</p>
</descr>
<seealso>
<link id="TCustomGroupBox.GetControlClassDefaultSize"/>
<link id="#lcl.controls.TControl.ControlStyle">TControl.ControlStyle</link>
<link id="#lcl.controls.TControl.SetInitialBounds">TControl.SetInitialBounds</link>
</seealso>
</element>
<element name="TCustomGroupBox.Create.AOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TCustomGroupBox.ParentBackground">
<short>Indicates if the control uses the background from the parent.</short>
<descr>
<p>
The write access specifier is overridden in <var>TCustomGroupBox</var>. It calls the inherited method on enty.
</p>
<p>
If <var>AParentBackground</var> is <b>True</b> and ParentColor is <b>True</b>, the <var>Color</var> from the <var>Parent</var> control is assigned to the <var>Color</var> property. Otherwise, the value <var>clDefault</var> is stored in the Color property.
</p>
<p>
The <var>UpdateOpaque</var> method is called to adjust the control style flags in the control.
</p>
<p>
The default value for the property is <b>True</b>.
</p>
</descr>
<seealso>
<link id="TCustomGroupBox.UpdateOpaque"/>
<link id="#lcl.controls.TWinControl.ParentBackground">TWinControl.ParentBackground</link>
</seealso>
</element>
<element name="TGroupBox">
<short>
A container that allows a number of objects to be grouped physically and conceptually on a form.
</short>
<descr>
<p>
<var>TGroupBox</var> is a <var>TCustomGroupBox</var> descendant which implements a visual component used to organize related controls into a group. It acts as a container for controls added to the component, and is assigned as the parent for each control.
</p>
<p>
TGroupBox sets the visibility for properties defined in ancestor classes.
</p>
</descr>
<seealso>
<link id="HowToUseStdCtrls"/>
<link id="TCustomGroupBox"/>
</seealso>
</element>
<element name="TGroupBox.Align" link="#lcl.controls.TControl.Align"/>
<element name="TGroupBox.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TGroupBox.AutoSize" link="#lcl.controls.TControl.AutoSize"/>
<element name="TGroupBox.BidiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TGroupBox.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TGroupBox.Caption" link="#lcl.controls.TControl.Caption"/>
<element name="TGroupBox.ChildSizing" link="#lcl.controls.TWinControl.ChildSizing"/>
<element name="TGroupBox.ClientHeight" link="#lcl.controls.TControl.ClientHeight"/>
<element name="TGroupBox.ClientWidth" link="#lcl.controls.TControl.ClientWidth"/>
<element name="TGroupBox.Color" link="#lcl.controls.TControl.Color"/>
<element name="TGroupBox.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TGroupBox.Ctl3D" link="#lcl.controls.TControl.Ctl3D"/>
<element name="TGroupBox.DockSite" link="#lcl.controls.TWinControl.DockSite"/>
<element name="TGroupBox.DoubleBuffered" link="#lcl.controls.TWinControl.DoubleBuffered"/>
<element name="TGroupBox.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TGroupBox.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TGroupBox.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TGroupBox.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TGroupBox.Font" link="#lcl.controls.TControl.Font"/>
<element name="TGroupBox.ParentBackground" link="#lcl.stdctrls.TCustomGroupBox.ParentBackground"/>
<element name="TGroupBox.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element name="TGroupBox.OnChangeBounds" link="#lcl.controls.TControl.OnChangeBounds"/>
<element name="TGroupBox.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TGroupBox.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TGroupBox.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element name="TGroupBox.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TGroupBox.OnDockDrop" link="#lcl.controls.TWinControl.OnDockDrop"/>
<element name="TGroupBox.OnDockOver" link="#lcl.controls.TWinControl.OnDockOver"/>
<element name="TGroupBox.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TGroupBox.OnEndDock" link="#lcl.controls.TControl.OnEndDock"/>
<element name="TGroupBox.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TGroupBox.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
<element name="TGroupBox.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
<element name="TGroupBox.OnGetSiteInfo" link="#lcl.controls.TWinControl.OnGetSiteInfo"/>
<element name="TGroupBox.OnKeyDown" link="#lcl.controls.TWinControl.OnKeyDown"/>
<element name="TGroupBox.OnKeyPress" link="#lcl.controls.TWinControl.OnKeyPress"/>
<element name="TGroupBox.OnKeyUp" link="#lcl.controls.TWinControl.OnKeyUp"/>
<element name="TGroupBox.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TGroupBox.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TGroupBox.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TGroupBox.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TGroupBox.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TGroupBox.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TGroupBox.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TGroupBox.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TGroupBox.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TGroupBox.OnStartDock" link="#lcl.controls.TControl.OnStartDock"/>
<element name="TGroupBox.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TGroupBox.OnUnDock" link="#lcl.controls.TWinControl.OnUnDock"/>
<element name="TGroupBox.OnUTF8KeyPress" link="#lcl.controls.TWinControl.OnUTF8KeyPress"/>
<element name="TGroupBox.ParentBidiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TGroupBox.ParentColor" link="#lcl.controls.TControl.ParentColor"/>
<element name="TGroupBox.ParentCtl3D" link="#lcl.controls.TWinControl.ParentCtl3D"/>
<element name="TGroupBox.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TGroupBox.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TGroupBox.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TGroupBox.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TGroupBox.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TGroupBox.TabStop" link="#lcl.controls.TWinControl.TabStop"/>
<element name="TGroupBox.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TEmulatedTextHintStatus">
<short>Status values for an emulated TextHint display in a control.</short>
<descr>
<p>
<var>TEmulatedTextHintStatus</var> is an enumerated type with values which indicate the status for an emulated TextHint display in a control. TEmulatedTextHintStatus is the type used for the <var>EmulatedTextHintStatus</var> property in both <var>TCustomComboBox</var> and <var>TCustomEdit</var>.
</p>
</descr>
<seealso>
<link id="TCustomEdit.EmulatedTextHintStatus"/>
<link id="TCustomComboBox.EmulatedTextHintStatus"/>
</seealso>
</element>
<element name="TEmulatedTextHintStatus.thsHidden">
<short>An emulated TextHint not currently displayed for the control.</short>
</element>
<element name="TEmulatedTextHintStatus.thsShowing">
<short>
An emulated TextHint is currently being shown for the control. The value for control has been temporarily set to the value in TextHint.
</short>
</element>
<element name="TEmulatedTextHintStatus.thsChanging">
<short>
The emulated TextHint is being displayed. Occurs while the HintFont is being created, and the hint text value and password character are passed to the widgetset class. Changes to thsShowing when the actions have been completed.
</short>
</element>
<element name="TComboBoxAutoCompleteTextOption">
<short>
Defines the behavior of the <var>AutoComplete</var> feature in a combo-box control.
</short>
<descr>
<p>
<var>TComboBoxAutoCompleteTextOption</var> is an enumerated type with values which control the auto-completion features and behaviors in combo-box controls. Values from the enumeration are stored in the <var>TComboBoxAutoCompleteText</var> type used in the <var>AutoCompleteText</var> property in <var>TCustomComboBox</var> and descendent classes.
</p>
</descr>
<seealso>
<link id="TComboBoxAutoCompleteText"/>
<link id="TCustomComboBox.AutoCompleteText"/>
</seealso>
</element>
<element name="TComboBoxAutoCompleteTextOption.cbactEnabled">
<short>Enable Auto-Completion features.</short>
</element>
<element name="TComboBoxAutoCompleteTextOption.cbactEndOfLineComplete">
<short>Perform Auto-Complete only when cursor is at the end of the string.</short>
</element>
<element name="TComboBoxAutoCompleteTextOption.cbactRetainPrefixCase">
<short>
Retains the case of characters user has typed. This option has no effect if cbactEndOfLineComplete is not set.
</short>
</element>
<element name="TComboBoxAutoCompleteTextOption.cbactSearchCaseSensitive">
<short>Search for the completion string with case sensitivity.</short>
</element>
<element name="TComboBoxAutoCompleteTextOption.cbactSearchAscending">
<short>
Search completion strings in ascending order when set. Otherwise, search in descending order.
</short>
</element>
<element name="TComboBoxAutoCompleteText">
<short>Set of <var>TComboBoxAutoCompleteTextOption</var> values.</short>
<descr>
<p>
<var>TComboBoxAutoCompleteText</var> is a set type used to store zero (0) or more values from the <var>TComboBoxAutoCompleteTextOption</var> enumeration. TComboBoxAutoCompleteText is the type used to implement the <var>AutoCompleteText</var> property in <var>TCustomComboBox</var> and descendent classes. It is also the type used for the <var>DefaultComboBoxAutoCompleteText</var> constant which defines the default values used in combo-box controls.
</p>
</descr>
<seealso>
<link id="TComboBoxAutoCompleteTextOption"/>
<link id="TCustomComboBox.AutoCompleteText"/>
<link id="DefaultComboBoxAutoCompleteText"/>
</seealso>
</element>
<element name="DefaultComboBoxAutoCompleteText">
<short>Default values for the AutoCompleteText property in combo-box controls.</short>
<descr>
<p>
<var>DefaultComboBoxAutoCompleteText</var> is a constant which contains the set of default values used in the <var>AutoCompleteText</var> property in combo-box controls. DefaultComboBoxAutoCompleteText is assigned to the property in the constructor for the class instance.
</p>
<p>
DefaultComboBoxAutoCompleteText contains the following values from the <var>TComboBoxAutoCompleteTextOption</var> enumeration:
</p>
<ul>
<li>cbactEndOfLineComplete</li>
<li>cbactSearchAscending</li>
</ul>
</descr>
<seealso>
<link id="TComboBoxAutoCompleteTextOption"/>
<link id="TCustomComboBox.AutoCompleteText"/>
<link id="TCustomComboBox.Create"/>
</seealso>
</element>
<element name="TComboBoxStyle">
<short>The display style available for combo-box controls.</short>
<descr>
<p>
<var>TComboBoxStyle</var> is an enumerated type with values which control the display style for combo-box controls. TComboBoxStyle is the type used for the <var>Style</var> property in <var>TCustomComboBox</var> and descendent classes.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Style"/>
</seealso>
</element>
<element name="TComboBoxStyle.csDropDown">
<short>
The combo-box has an edit control and a button to open and close the drop-down list. This is the default value used for the control.
</short>
</element>
<element name="TComboBoxStyle.csSimple">
<short>
The combo-box has an edit control and a list box which is always visible.
</short>
</element>
<element name="TComboBoxStyle.csDropDownList">
<short>
The combo-box has a drop-down list for selecting an entry. The selected value is displayed like a label and is not editable.
</short>
</element>
<element name="TComboBoxStyle.csOwnerDrawFixed">
<short>
Similar to csDropDownList, but is owner-drawn with a fixed height for items in the list.
</short>
</element>
<element name="TComboBoxStyle.csOwnerDrawVariable">
<short>
The drop-down list elements are owner-drawn and can have a variable height for items in the list.
</short>
</element>
<element name="TComboBoxStyleHelper">
<short>Helper for the TComboBoxStyle type.</short>
<descr>
<p>
<var>TComboBoxStyleHelper</var> is a type helper for <var>TComboBoxStyle</var>. TComboBoxStyleHelper provides convenience methods used to examine, adjust, or translate values in the TComboBoxStyle enumeration.
</p>
<p>
For example:
</p>
<code>
// does the style include an edit box?
if AComboBox.Style.HasEditBox then DoSomething;
// does the style use owner-draw?
if AComboBox.Style.IsOwnerDrawn then DoSomething;
// does the style use variable height items?
if AComboBox.Style.IsVariable then DoSomething;
// toggle the edit box visibility and use in the current style
AComboBox.Style := AComboBox.Style.SetEditBox(False);
</code>
</descr>
<seealso>
<link id="TCustomComboBox.Style"/>
<link id="TComboBoxStyle"/>
</seealso>
</element>
<element name="TComboBoxStyleHelper.HasEditBox">
<short>Determines if the style includes an edit box.</short>
<descr/>
<seealso/>
</element>
<element name="TComboBoxStyleHelper.HasEditBox.Result">
<short>True if an selected item value is editable.</short>
</element>
<element name="TComboBoxStyleHelper.SetEditBox">
<short>Enables or disables an edit box according to the current style.</short>
<descr/>
<seealso/>
</element>
<element name="TComboBoxStyleHelper.SetEditBox.Result">
<short>Style values after adding or removing the edit box.</short>
</element>
<element name="TComboBoxStyleHelper.SetEditBox.AHasEditBox">
<short>True enables the edit box; False disables the edit box.</short>
</element>
<element name="TComboBoxStyleHelper.IsOwnerDrawn">
<short>Indicates if the combo-box control is owner-drawn.</short>
<descr/>
<seealso/>
</element>
<element name="TComboBoxStyleHelper.IsOwnerDrawn.Result">
<short>True if the style includes an owner-drawn option.</short>
</element>
<element name="TComboBoxStyleHelper.IsVariable">
<short>Indicates if list items can have a variable height in the combo-box control.</short>
<descr/>
<seealso/>
</element>
<element name="TComboBoxStyleHelper.IsVariable.Result">
<short>True when the option is included for variable height list items.</short>
</element>
<element name="TOwnerDrawState">
<short>Alias for the TOwnerDrawState type in <file>lcltype.pp</file>.</short>
<descr>
<p>
<var>TOwnerDrawState</var> instances are passed as an argument to methods which draw list items in controls, like <var>TCustomComboBox.DrawItem</var> and <var>TCustomListBox.DrawItem</var>.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.DrawItem"/>
<link id="TCustomListBox.DrawItem"/>
<link id="#lcl.lcltype.TOwnerDrawState">TOwnerDrawState</link>
</seealso>
</element>
<element name="TDrawItemEvent">
<short>
Specifies an event handler used to paint a single item in an owner-drawn list box or combo-box.
</short>
<descr>
<p>
<var>TDrawItemEvent</var> is an object procedure type which specifies an event handler signalled to paint an single item in a owner-drawn list box or combo-box control. Arguments passed to the event handler identify the control, the index for the list item, the canvas coordinates, and the drawing state for the operation. The event handler is responsible for rendering the list item to its control in its entirety when the control uses owner-drawn style settings.
</p>
<p>
TDrawItemEvent is the type used to implement the <var>OnDrawItem</var> property in <var>TCustomComboBox</var> and <var>TCustomListBox</var>. An application must implement and assign an object procedure using the signature for the handler to respond to the event notification.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.OnDrawItem"/>
<link id="TCustomListBox.OnDrawItem"/>
</seealso>
</element>
<element name="TDrawItemEvent.Control">
<short>The control for the owner-drawn operation.</short>
</element>
<element name="TDrawItemEvent.Index">
<short>Index of the list item to draw.</short>
</element>
<element name="TDrawItemEvent.ARect">
<short>The Canvas rectangle for the list item.</short>
</element>
<element name="TDrawItemEvent.State">
<short>Flags describing the drawing state for the list item.</short>
</element>
<element name="TMeasureItemEvent">
<short>
Specifies an event handler used to get the Height for a single item in an owner-drawn list box or combo-box.
</short>
<descr>
<p>
<var>TMeasureItemEvent</var> is an object procedure type which specifies an event handler signalled to get the height for a single item in an owner-drawn list box or combo-box control. Arguments passed to the handler include the control for the event notification, the index position for the item measured in the handler, and the derived height for the item.
</p>
<p>
TMeasureItemEvent is the type used for the <var>OnMeasureItem</var> property in <var>TCustomComboBox</var> and <var>TCustomListBox</var>. An application must implement and assign a procedure using the signature for the handler to respond to the event notification. The handler should account for variable height items when enabled in settings for the control.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.OnMeasureItem"/>
<link id="TCustomListBox.OnMeasureItem"/>
</seealso>
</element>
<element name="TMeasureItemEvent.Control">
<short>The list box or combo-box control.</short>
</element>
<element name="TMeasureItemEvent.Index">
<short>Index of the list item to measure.</short>
</element>
<element name="TMeasureItemEvent.AHeight">
<short>Height of the list item in pixels.</short>
</element>
<element name="TCustomComboBox">
<short>The base class for combo-box components.</short>
<descr>
<p>
<var>TCustomComboBox</var> is a <var>TWinControl</var> descendant which implements the base class for combo-box components in the LCL (Lazarus Component Library).
</p>
<p>
A combo-box is visually represented as an edit control and a scrollable list of items which can be selected. The list can be always visible, or opened when needed using a drop-down indicator. In addition, the items in the control be drawn using using the built-in mechanisms for the widgetset class or using an owner-drawn style.
</p>
<p>
Despite similarities in appearance to <var>TCustomEdit</var> and <var>TCustomList</var>, the class inherits no properties from these classes (Delphi compatible).
</p>
<p>
Use the <var>Style</var> property to control the display style and drawing mechanism enabled for Items in the control.
</p>
<p>
Use properties like <var>AutoComplete</var>, <var>AutoCompleteText</var>, and <var>AutoDropDown</var> to control the behavior of the edit field or drop-down list in the control.
</p>
<p>
Use <var>Items</var> to access existing list items defined the control. Use <var>AddItem</var> or <var>AddHistoryItem</var> to add entries to the list items in the control. Use <var>OnGetItems</var> to dynamically populate the Items in the control when the drop-down list is displayed.
</p>
<p>
Do not create instances of TCustomComboBox. Use one of the descendent classes, like <var>TComboBox</var> or <var>TComboBoxEx</var>.
</p>
</descr>
</element>
<element name="TCustomComboBox.FArrowKeysTraverseList"/>
<element name="TCustomComboBox.FAutoCompleteText"/>
<element name="TCustomComboBox.FAutoSelect"/>
<element name="TCustomComboBox.FAutoSelected"/>
<element name="TCustomComboBox.FAutoDropDown"/>
<element name="TCustomComboBox.FCanvas"/>
<element name="TCustomComboBox.FCharCase"/>
<element name="TCustomComboBox.FDropDownCount"/>
<element name="TCustomComboBox.FDroppedDown"/>
<element name="TCustomComboBox.FDroppingDown"/>
<element name="TCustomComboBox.FEditingDone"/>
<element name="TCustomComboBox.FEmulatedTextHintStatus"/>
<element name="TCustomComboBox.FItemHeight"/>
<element name="TCustomComboBox.FItemIndex"/>
<element name="TCustomComboBox.FItemWidth"/>
<element name="TCustomComboBox.FItems"/>
<element name="TCustomComboBox.FMaxLength"/>
<element name="TCustomComboBox.FOnChange"/>
<element name="TCustomComboBox.FOnCloseUp"/>
<element name="TCustomComboBox.FOnDrawItem"/>
<element name="TCustomComboBox.FOnDropDown"/>
<element name="TCustomComboBox.FOnGetItems"/>
<element name="TCustomComboBox.FOnMeasureItem"/>
<element name="TCustomComboBox.FOnSelect"/>
<element name="TCustomComboBox.FReadOnly"/>
<element name="TCustomComboBox.FReturnArrowState">
<short>Used internally, to return the state of arrow keys from temporary change.</short>
</element>
<element name="TCustomComboBox.FSelLength"/>
<element name="TCustomComboBox.FSelStart"/>
<element name="TCustomComboBox.FSorted"/>
<element name="TCustomComboBox.FStyle"/>
<element name="TCustomComboBox.FTextHint"/>
<element name="TCustomComboBox.GetAutoComplete">
<short>Gets the value for the AutoComplete property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.AutoComplete"/>
</seealso>
</element>
<element name="TCustomComboBox.GetAutoComplete.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomComboBox.GetDroppedDown">
<short>Gets the value for the DroppedDown property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.DroppedDown"/>
</seealso>
</element>
<element name="TCustomComboBox.GetDroppedDown.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomComboBox.GetItemWidth">
<short>Gets the value for the ItemWidth property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.ItemWidth"/>
</seealso>
</element>
<element name="TCustomComboBox.GetItemWidth.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomComboBox.SetAutoComplete">
<short>Sets the value for the AutoComplete property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.AutoComplete"/>
</seealso>
</element>
<element name="TCustomComboBox.SetAutoComplete.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetArrowKeysTraverseList">
<short>Sets the value for the ArrowKeysTraverseList property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.ArrowKeysTraverseList"/>
</seealso>
</element>
<element name="TCustomComboBox.SetArrowKeysTraverseList.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetItemWidth">
<short>Sets the value for the ItemWidth property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.ItemWidth"/>
</seealso>
</element>
<element name="TCustomComboBox.SetItemWidth.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetCharCase">
<short>Sets the value for the CharCase property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.CharCase"/>
</seealso>
</element>
<element name="TCustomComboBox.SetCharCase.eccCharCase">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetReadOnly">
<short>Sets the value for the ReadOnly property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.ReadOnly"/>
</seealso>
</element>
<element name="TCustomComboBox.SetReadOnly.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetTextHint">
<short>Sets the value for the TextHint property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.TextHint"/>
</seealso>
</element>
<element name="TCustomComboBox.SetTextHint.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.ShowEmulatedTextHintIfYouCan">
<short>Tries to display an emulated TextHint for the control.</short>
<descr>
<p>
<var>ShowEmulatedTextHintIfYouCan</var> is a method which attempts to display an emulated <var>TextHint</var> for the control. ShowEmulatedTextHintIfYouCan calls <var>CanShowEmulatedTextHint</var> to determine if the control requires an emulated TextHint display, and is in a state which allows it. If CanShowEmulatedTextHint returns <b>True</b>, the <var>ShowEmulatedTextHint</var> method is called to display the TextHint.
</p>
<p>
ShowEmulatedTextHintIfYouCan is called from the implementation of the <var>InitializeWnd</var> and <var>WMKillFocus</var> methods, and when a new value is assigned to the TextHint property.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.TextHint"/>
<link id="TCustomComboBox.CanShowEmulatedTextHint"/>
<link id="TCustomComboBox.ShowEmulatedTextHint"/>
<link id="TCustomComboBox.WMKillFocus"/>
<link id="TCustomComboBox.InitializeWnd"/>
</seealso>
</element>
<element name="TCustomComboBox.ShowEmulatedTextHint">
<short>Displays an emulated TextHint for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomComboBox.HideEmulatedTextHint">
<short>Hides an emulated TextHint display for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomComboBox.UpdateSorted">
<short>Performs actions needed when the Sorted property is changed.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.Sorted"/>
</seealso>
</element>
<element name="TCustomComboBox.LMDrawListItem">
<short>Handler for custom drawing items; calls DrawItem.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomComboBox.LMDrawListItem.TheMessage">
<short>Message handled in the method.</short>
</element>
<element name="TCustomComboBox.LMMeasureItem">
<short>Determines the height of an item, using MeasureItem in variable owner-draw mode.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomComboBox.LMMeasureItem.TheMessage">
<short>Message handled in the method.</short>
</element>
<element name="TCustomComboBox.LMSelChange">
<short>Handles selection change messages for the control.</short>
<descr>
<p>
<var>LMSelChange</var> is a method used to handle a <var>LM_CHANGED</var> message for the control. No actions are performed in the method during component streaming, when the control is freed, or at design-time.
</p>
<p>
<var>LMSelChange</var> calls the <var>Select</var> method to signal the <var>OnSelect</var> event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Select"/>
<link id="TCustomComboBox.OnSelect"/>
</seealso>
</element>
<element name="TCustomComboBox.LMSelChange.TheMessage">
<short>Message handled in the method.</short>
</element>
<element name="TCustomComboBox.CNCommand">
<short>Handles a CN_COMMAND notification message for the control.</short>
<descr>
<p>
<var>CNCommand</var> is a method used to handle a <var>CN_COMMAND</var> control notification message for the control. CNCommand examines <var>TheMessage</var> to determine the actions needed for the NotifyCode in the message.
</p>
<p>
When NotifyCode is <var>CBN_DROPDOWN</var>, the following actions are performed:
</p>
<ul>
<li>DroppedDown is set to True.</li>
<li>Calls DropDown to signal the OnDropDown event handler (when assigned).</li>
<li>Calls AdjustDropDown to configure the height and width for the drop down list.</li>
</ul>
<p>
When NotifyCode is <var>CBN_CLOSEUP</var>, the following actions are performed:
</p>
<ul>
<li>DroppedDown is set to False.</li>
<li>Calls CloseUp to signal the OnCloseUp event handler (when assigned).</li>
</ul>
</descr>
<seealso/>
</element>
<element name="TCustomComboBox.CNCommand.TheMessage">
<short>Message handled in the method.</short>
</element>
<element name="TCustomComboBox.WMChar">
<short>Handles LM_CHAR window messages for the control.</short>
<descr>
<p>
Prevents ordinary characters from triggering accelerator keys.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomComboBox.WMChar.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomComboBox.WMKillFocus">
<short>Implements a handler for the LM_KILLFOCUS message.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomComboBox.WMKillFocus.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomComboBox.WMSetFocus">
<short>Implements a handler for the LM_SETFOCUS message.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomComboBox.WMSetFocus.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomComboBox.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TCustomComboBox.CanShowEmulatedTextHint">
<short>Determines if an emulated TextHint can be displayed for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomComboBox.CanShowEmulatedTextHint.Result">
<short>True when emulated TextHints are used, and the control state allows the hint display.</short>
</element>
<element name="TCustomComboBox.CreateParams">
<short>
Updates the specified creation parameters to include additional flags for the control.
</short>
<descr>
<p>
<var>CreateParams</var> is an overridden method in <var>TCustomComboBox</var>, and calls the inherited method on entry. CreateParams ensures that the style information in <var>Params</var> is updated to include constants needed to represent values in the <var>Style</var> property for the control. The following constants are also included:
</p>
<ul>
<li>WS_VSCROLL</li>
<li>CBS_AUTOHSCROLL</li>
<li>CBS_HASSTRINGS</li>
</ul>
<p>
When <var>Sorted</var> is set to <b>True</b>, the value CBS_SORT is also included in the style information in Params.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.Sorted"/>
<link id="#lcl.controls.TWinControl.CreateParams">TWinControl.CreateParams</link>
</seealso>
</element>
<element name="TCustomComboBox.CreateParams.Params">
<short>Creation parameters updated in the method.</short>
</element>
<element name="TCustomComboBox.InitializeWnd">
<short>
Synchronizes the control and its widgetset class instance when the handle is created.
</short>
<descr>
<p>
<var>InitializeWnd</var> is overridden in <b>TCustomComboBox</b> to ensure that the widgetset class and the current class instance are synchronized. InitializeWnd calls the inherited method on entry.
</p>
<p>
InitializeWnd gets the string values for list items stored in the widgetset class instance (when present), and applies them to the <var>Items</var> property. Other property values are forwarded <b>to</b> the widgetset class instance, including:
</p>
<ul>
<li>ArrowKeysTraverseList</li>
<li>DropDownCount</li>
<li>ItemIndex</li>
<li>MaxLength</li>
<li>ReadOnly</li>
<li>Style</li>
</ul>
<p>
Values in <var>SelStart</var> and <var>SelLength</var> are re-applied to update the edit box in the control to reflect any changes to property values.
</p>
<p>
InitializeWnd is called from CreateWnd after the Window handle has been allocated, and before any child handles are allocated.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.ItemIndex"/>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.ReadOnly"/>
<link id="TCustomComboBox.MaxLength"/>
<link id="TCustomComboBox.DropDownCount"/>
<link id="TCustomComboBox.ArrowKeysTraverseList"/>
<link id="#lcl.controls.TWinControl.InitializeWnd">TWinControl.InitializeWnd</link>
<link id="#lcl.controls.TWinControl.CreateWnd">TWinControl.CreateWnd</link>
</seealso>
</element>
<element name="TCustomComboBox.DestroyWnd">
<short>Destroys the handle for the control (and its children).</short>
<descr>
<p>
<var>DestroyWnd</var> is an overridden method in TCustomComboBox used to destroy the handle for the windowed control. This occurs when the control is freed, and when the handle is re-created in the widgetset class. DestroyWnd ensures that values for the ItemIndex and Items properties are retrieved from the widgetset class before it is destroyed or re-created. The value in Sorted is applied to the Items retrieved from the widgetset class.
</p>
<p>
DestroyWnd calls the inherited method prior to exit.
</p>
</descr>
<errors>
DestroyWnd calls <var>RaiseGDBException</var> to raise a catchable debugger exception if a handle has not been allocated for the control.
</errors>
<seealso>
<link id="TCustomComboBox.ItemIndex"/>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.Sorted"/>
<link id="#lcl.controls.TWinControl.DestroyWnd">TWinControl.DestroyWnd</link>
<link id="#lcl.lclproc.RaiseGDBException">RaiseGDBException</link>
</seealso>
</element>
<element name="TCustomComboBox.DoAutoCompleteSelect">
<short>
Selects an item in the control when auto-complete is enabled and activated by a key event.
</short>
<descr>
<p>
Calls the <var>Select</var> method to signal the <var>OnSelect</var> event handler (when assigned). DoAutoCompleteSelect is called from the <var>KeyUp</var> method when auto-completion has enabled in the <var>AutoCompleteText</var> property, and an alphanumeric key is handled in the method.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.AutoCompleteText"/>
<link id="TCustomComboBox.KeyUp"/>
<link id="TCustomComboBox.OnSelect"/>
<link id="TCustomComboBox.Select"/>
</seealso>
</element>
<element name="TCustomComboBox.DoEnter">
<short>Updates the control when the Enter key is applied.</short>
<descr>
<p>
<var>DoEnter</var> is an overridden method used to update the edit and list box when the <b>Enter</b> or <b>Return</b> key is handled in messages to the control. The inherited method is called to signal the <var>OnEnter</var> event handler (when assigned).
</p>
<p>
DoEnter uses the value in <var>Style</var> to determine if an edit box is enabled for the control. If an edit box is <b>not</b> used, no additional actions are performed in the method.
</p>
<p>
When <var>AutoSelect</var> is enabled, the <var>SelectAll</var> method is called to select the text in the edit box and to locate the entry in the <var>Items</var> for the control. <var>AutoSelected</var> is updated to indicate if <var>SelText</var> matches the value in Text.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.AutoSelect"/>
<link id="TCustomComboBox.AutoSelected"/>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.SelectAll"/>
<link id="TCustomComboBox.SelText"/>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.Text"/>
<link id="#lcl.controls.TWinControl.DoEnter">TWinControl.DoEnter</link>
<link id="#lcl.controls.TWinControl.OnEnter">TWinControl.OnEnter</link>
</seealso>
</element>
<element name="TCustomComboBox.DoExit">
<short>Updates the control when the CM_EXIT control message is handled.</short>
<descr>
<p>
<var>DoExit</var> is an overridden method in <var>TCustomComboBox</var> used to perform actions needed when the <b>CM_EXIT</b> control message is handled for the control. DoExit sets the value in <var>AutoSelected</var> to <b>False</b>, and calls the inherited method to signal the <var>OnExit</var> event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TCustomComboBox.AutoSelected"/>
<link id="#LCL.Controls.TWinControl.DoExit">TWinControl.DoExit</link>
<link id="#lcl.controls.TWinControl.OnExit">TWinControl.OnExit</link>
</seealso>
</element>
<element name="TCustomComboBox.DrawItem">
<short>Draws a list item, using the OnDrawItem handler (when assigned).</short>
<descr>
<p>
<var>DrawItem</var> is a procedure used to draw a list item defined in the <var>Items</var> property. DrawItem is called when the <var>LM_DrawListItem</var> message is handled for the control. Arguments passed to the method include the position in Items for the value drawn, the canvas rectangle where the drawing occurs, and the drawing state for the list item.
</p>
<p>
DrawItem signals the <link id="TCustomComboBox.OnDrawItem">OnDrawItem</link> handler (when assigned) to perform the drawing operation. Otherwise, default painting is performed by filling the background for the Canvas rectangle (if needed) and calling the InternalDrawItem routine.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.OnDrawItem"/>
<link id="TDrawItemEvent"/>
<link id="TOwnerDrawState"/>
<link id="#rtl.types.TRect">TRect</link>
</seealso>
</element>
<element name="TCustomComboBox.DrawItem.Index">
<short>The position for the item drawn in the method.</short>
</element>
<element name="TCustomComboBox.DrawItem.ARect">
<short>The area to paint on the Canvas.</short>
</element>
<element name="TCustomComboBox.DrawItem.State">
<short>The drawing state for the item (selected...).</short>
</element>
<element name="TCustomComboBox.KeyUpAfterInterface">
<short>Handles key up events forwarded from the LCL interface.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomComboBox.KeyUpAfterInterface.Key">
<short>Key code examined in the method.</short>
</element>
<element name="TCustomComboBox.KeyUpAfterInterface.Shift">
<short>Shift, Ctrl, or Alt modifier for the key code.</short>
</element>
<element name="TCustomComboBox.MeasureItem">
<short>Gets the height for an item in the drop-down list.</short>
<descr>
<p>
<var>MeasureItem</var> is a procedure used to get the height for an item in the drop-down list for the control.
</p>
<p>
MeasureItem is called when the <b>LM_MeasureItem</b> message is handled for the control. The value in <var>ItemHeight</var> has already been updated in the message handler, and is used for a list box <var>Style</var> that has a fixed item height. MeasureItem is called from the message handler when the Style uses a variable item height. The derived item height is stored in the <var>ItemHeight</var> property when it is a non-zero positive value.
</p>
<p>
MeasureItem signals the <var>OnMeasureItem</var> event handler (when assigned) to calculate the height for the specified item. The value in the <var>Index</var> argument determines the string value in <var>Items</var> used for the calculation. <var>TheHeight</var> is updated with the derived height for the list box item. An application must implement the OnMeasureItem event handler to calculate the height for variable height items in the control.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.OnMeasureItem"/>
<link id="TCustomComboBox.ItemWidth"/>
<link id="TCustomComboBox.ItemHeight"/>
<link id="TCustomComboBox.Style"/>
<link id="#lcl.lmessages.TLMMeasureItem">TLMMeasureItem</link>
</seealso>
</element>
<element name="TCustomComboBox.MeasureItem.Index">
<short>The index of the item whose height is required.</short>
</element>
<element name="TCustomComboBox.MeasureItem.TheHeight">
<short>The height of the item, in pixels, calculated in the OnMeasureItem handler.</short>
</element>
<element name="TCustomComboBox.GetControlClassDefaultSize" link="#lcl.controls.TControl.GetControlClassDefaultSize"/>
<element name="TCustomComboBox.GetControlClassDefaultSize.Result">
<short>Default size (bounds) for the new class instance.</short>
</element>
<element name="TCustomComboBox.LMChanged">
<short>Handles the LM_CHANGED message for the control.</short>
<descr>
<p>
<var>LMChanged</var> is a procedure used to handle a <b>LM_CHANGED</b> message received for the control. LMChanged occurs when the widgetset class calls the LCLSendChangeMsg routine for the control. LMChanged calls the <var>Change</var> method to perform the control message and to signal the <var>OnChange</var> event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Change"/>
<link id="TCustomComboBox.OnChange"/>
<link id="#lcl.controls.TControl.Perform">TControl.Perform</link>
</seealso>
</element>
<element name="TCustomComboBox.LMChanged.Msg">
<short>Message handled in the method.</short>
</element>
<element name="TCustomComboBox.CMWantSpecialKey">
<short>Handles the CM_WANTSPECIALKEY message for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomComboBox.CMWantSpecialKey.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomComboBox.Change">
<short>Invokes the OnChange handler, signalling a change in the edit box.</short>
<descr>
<p>
<var>Change</var> is a procedure used to perform actions needed when the value for the control is changed. Change is called from the <var>LMChanged</var> method used to process the change notification message. Change calls the <var>Changed</var> method, inherited from TControl, to <var>Perform</var> the control message. The <var>OnChange</var> event handler is signalled (when assigned).
</p>
</descr>
<seealso>
<link id="TCustomComboBox.LMChanged"/>
<link id="TCustomComboBox.OnChange"/>
<link id="#lcl.controls.TControl.Changed">TControl.Changed</link>
<link id="#lcl.controls.TControl.Perform">TControl.Perform</link>
</seealso>
</element>
<element name="TCustomComboBox.Select">
<short>Signals the <var>OnSelect</var> event handler when ItemIndex is changed.</short>
<descr>
<p>
<var>Select</var> is a procedure called when the item selection in the drop-down list for the control has changed. This can happen when text is entered and auto-completion is enabled, or when a new value is selected from the drop-down list.
</p>
<p>
Select signals the <var>OnSelect</var> event handler (when assigned). For Delphi compatibility, the event handler is <b>not</b> signalled when <var>ItemIndex</var> contains <b>-1</b> (<var>Text</var> is not located in the <var>Items</var> for the control).
</p>
</descr>
<seealso>
<link id="TCustomComboBox.OnSelect"/>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.ItemIndex"/>
<link id="TCustomComboBox.AutoComplete"/>
<link id="TCustomComboBox.AutoCompleteText"/>
<link id="TCustomComboBox.Text"/>
<link id="TCustomComboBox.SelText"/>
<link id="TCustomComboBox.SelStart"/>
<link id="TCustomComboBox.SelLength"/>
</seealso>
</element>
<element name="TCustomComboBox.DropDown">
<short>Signals the <var>OnDropDown</var> event handler.</short>
<descr>
<p>
<var>DropDown</var> is a procedure called whenever the drop-down list is displayed. DropDown is called when a <b>CN_Command</b> message with a <b>CBN_DROPDOWN</b> notification code is handled for the control. DropDown signals the <var>OnDropDown</var> event handler (when assigned).
</p>
<p>
Use <var>DroppedDown</var> to determine if the drop-down list has been displayed.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.CloseUp"/>
<link id="TCustomComboBox.DroppedDown"/>
<link id="TCustomComboBox.OnDropDown"/>
</seealso>
</element>
<element name="TCustomComboBox.GetItems">
<short>Signals the <var>OnGetItems</var> event handler.</short>
<descr>
<p>
<var>GetItems</var> is a procedure used to dynamically populate the values stored in the <var>Items</var> property. GetItems signals the <var>OnGetItems</var> event handler (when assigned) to perform actions needed to fill the Items property. GetItems is called from the <var>IntfGetItems</var> method executed when the widgetset class makes its drop-down list visible.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.OnGetItems"/>
<link id="TCustomComboBox.IntfGetItems"/>
</seealso>
</element>
<element name="TCustomComboBox.SetItems">
<short>Sets the value for the Items property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.Items"/>
</seealso>
</element>
<element name="TCustomComboBox.SetItems.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.CloseUp">
<short>Called when the drop-down list is closed.</short>
<descr>
<p>
<var>CloseUp</var> is a method called whenever the drop-down list for the control is closed. CloseUp is called when a <b>CN_Command</b> message with a <b>CBN_CLOSEUP</b> notification code is received in the control.
</p>
<p>
CloseUp does not perform any actions in the method at design-time, when the component is being loaded using LCL streaming, or when the control is freed.
</p>
<p>
CloseUp signals the <var>OnEditingDone</var> event handler when an edit box is enabled in the <var>Style</var> property in the control. The <var>OnCloseUp</var> event handler is signalled (when assigned).
</p>
<p>
When <var>AutoSelect</var> is enabled, the <var>SelectAll</var> method is called and the <var>AutoSelected</var> property is updated.
</p>
</descr>
<seealso>
<link id="TComboBox.OnEditingDone"/>
<link id="TCustomComboBox.OnCloseUp"/>
<link id="TCustomComboBox.DroppedDown"/>
<link id="TCustomComboBox.DropDown"/>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.SelectAll"/>
<link id="TCustomComboBox.AutoSelect"/>
<link id="TCustomComboBox.AutoSelected"/>
</seealso>
</element>
<element name="TCustomComboBox.AdjustDropDown">
<short>Adjusts the extent for the drop-down list.</short>
<descr>
<p>
<var>AdjustDropDown</var> is used to adjust the bounds for the drop-list list in the control. AdjustDropDown is called when the drop-list becomes visible, and when the value in the <var>ItemWidth</var> property is changed.
</p>
<p>
AdjustDropDown does not perform any actions in the method if a handle has not been assigned for the control.
</p>
<p>
AdjustDropDown ensures that the value in <var>DropDownCount</var> is applied (when needed) to the drop-down list for the control. The minimum height and width for the list is calculated using the <var>ItemWidth</var> and <var>ItemHeight</var> properties. The dimensions are passed to the widgetset class using the SetComboMinDropDownSize routine in the LCL interface.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.ItemWidth"/>
<link id="TCustomComboBox.ItemHeight"/>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.DropDownCount"/>
<link id="TCustomComboBox.DropDown"/>
</seealso>
</element>
<element name="TCustomComboBox.DoAutoAdjustLayout">
<short>Performs actions needed to auto-adjust the control using the specified layout policy.</short>
<descr>
<p>
<var>DoAutoAdjustLayout</var> is an overridden method used to apply an auto-adjust layout policy to the control. DoAutoAdjustLayout calls the inherited method on entry.
</p>
<p>
DoAutoAdjustLayout ensures that the item height for the control is scaled using the factor in <var>AYProportion</var> when <var>AMode</var> contains the <var>lapAutoAdjustWithoutHorizontalScrolling</var> or <var>lapAutoAdjustForDPI</var> layout adjustment policy values.
</p>
<p>
DoAutoAdjustLayout is called from the <var>AutoAdjustLayout</var> method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.DoAutoAdjustLayout">TControl.DoAutoAdjustLayout</link>
<link id="#lcl.controls.TLayoutAdjustmentPolicy">TLayoutAdjustmentPolicy</link>
</seealso>
</element>
<element name="TCustomComboBox.DoAutoAdjustLayout.AMode">
<short>Layout adjustment policy applied in the method.</short>
</element>
<element name="TCustomComboBox.DoAutoAdjustLayout.AXProportion">
<short>Factor used to scale horizontal dimensions.</short>
</element>
<element name="TCustomComboBox.DoAutoAdjustLayout.AYProportion">
<short>Factor used to scale vertical dimensions.</short>
</element>
<element name="TCustomComboBox.GetItemCount">
<short>Returns the number of items defined in the drop-down list.</short>
<descr>
<p>
<var>GetItemCount</var> is an <var>Integer</var> function used to get the number of values stored in the <var>Items</var> for the control. It is a convenience method, and is equivalent to reading the value for the <var>Count</var> property in <var>Items</var>.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Items"/>
</seealso>
</element>
<element name="TCustomComboBox.GetItemCount.Result">
<short>The number of Items defined in the control.</short>
</element>
<element name="TCustomComboBox.GetItemHeight">
<short>Gets the value for the ItemHeight property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.ItemHeight"/>
</seealso>
</element>
<element name="TCustomComboBox.GetItemHeight.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomComboBox.GetSelLength">
<short>Gets the value for the SelLength property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.SelLength"/>
</seealso>
</element>
<element name="TCustomComboBox.GetSelLength.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomComboBox.GetSelStart">
<short>Gets the value for the SelStart property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.SelStart"/>
</seealso>
</element>
<element name="TCustomComboBox.GetSelStart.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomComboBox.GetSelText">
<short>Gets the value for the SelText property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.SelText"/>
</seealso>
</element>
<element name="TCustomComboBox.GetSelText.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomComboBox.GetItemIndex">
<short>Gets the value for the ItemIndex property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.ItemIndex"/>
</seealso>
</element>
<element name="TCustomComboBox.GetItemIndex.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomComboBox.GetMaxLength">
<short>Gets the value for the MaxLength property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.MaxLength"/>
</seealso>
</element>
<element name="TCustomComboBox.GetMaxLength.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomComboBox.SetDropDownCount">
<short>Sets the value for the DropDownCount property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.DropDownCount"/>
</seealso>
</element>
<element name="TCustomComboBox.SetDropDownCount.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetDroppedDown">
<short>Sets the value for the DroppedDown property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.DroppedDown"/>
</seealso>
</element>
<element name="TCustomComboBox.SetDroppedDown.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetItemHeight">
<short>Sets the value for the ItemHeight property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.ItemHeight"/>
</seealso>
</element>
<element name="TCustomComboBox.SetItemHeight.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetItemIndex">
<short>Sets the value for the ItemIndex property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.ItemIndex"/>
</seealso>
</element>
<element name="TCustomComboBox.SetItemIndex.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetMaxLength">
<short>Sets the value for the MaxLength property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.MaxLength"/>
</seealso>
</element>
<element name="TCustomComboBox.SetMaxLength.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetSelLength">
<short>Sets the value for the SelLength property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.SelLength"/>
</seealso>
</element>
<element name="TCustomComboBox.SetSelLength.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetSelStart">
<short>Sets the value for the SelStart property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.SelStart"/>
</seealso>
</element>
<element name="TCustomComboBox.SetSelStart.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetSelText">
<short>Sets the value for the SelText property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.SelText"/>
</seealso>
</element>
<element name="TCustomComboBox.SetSelText.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetSorted">
<short>Sets the value for the Sorted property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.Sorted"/>
</seealso>
</element>
<element name="TCustomComboBox.SetSorted.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.SetStyle">
<short>Sets the value for the Style property.</short>
<descr/>
<seealso>
<link id="TCustomComboBox.Style"/>
</seealso>
</element>
<element name="TCustomComboBox.SetStyle.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomComboBox.RealGetText">
<short>Gets the text/caption for the control.</short>
<descr>
<p>
<var>RealGetText</var> is an overridden method in <var>TCustomComboBox</var> which provides additional debugging support in the method. RealGetText ensures that a handle has been allocated for the control and the value in Text is available in the widgetset class prior to calling the inherited method.
</p>
<p>
The return value contains the Caption assigned to the control, or an empty string ('') when the control handle is not available.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.RealGetText">TWinControl.RealGetText</link>
</seealso>
</element>
<element name="TCustomComboBox.RealGetText.Result">
<short>Caption for the control, or an empty string.</short>
</element>
<element name="TCustomComboBox.RealSetText">
<short>Adjusts ItemIndex for the new value in the edit box.</short>
<descr>
<p>
If the text <var>AValue</var> occurs in the list of strings, then the value in <var>Itemindex</var> is updated. Otherwise, the default action which is to store text as a string rather than performing read-write to a <var>PChar</var> buffer.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.RealSetText">TControl.RealSetText</link>
</seealso>
</element>
<element name="TCustomComboBox.RealSetText.AValue">
<short>The new value in the edit box.</short>
</element>
<element name="TCustomComboBox.KeyDown">
<short>Filters keys used to traverse the list.</short>
<descr>
<p>
<var>KeyDown</var> is an overridden method in <var>TCustomComboBox</var>. KeyDown ensures that keys like Escape, Tab, and Return are handled in the manner needed for the <var>Style</var> in the control. If the values in <var>Key</var> and <var>Shift</var> are not specifically handled in the method, the inherited KeyDown method is called.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.AutoDropDown"/>
<link id="TCustomComboBox.ArrowKeysTraverseList"/>
<link id="#lcl.controls.TWinControl.KeyDown">TWinControl.KeyDown</link>
</seealso>
</element>
<element name="TCustomComboBox.KeyDown.Key">
<short>The pressed key.</short>
</element>
<element name="TCustomComboBox.KeyDown.Shift">
<short>The state of the modifier keys and mouse buttons.</short>
</element>
<element name="TCustomComboBox.KeyUp">
<short>Handles AutoComplete and AutoSelect for the control.</short>
<descr>
<p>
<var>KeyUp</var> is an overridden method in TCustomComboBox, and calls the inherited method on entry.
</p>
<p>
KeyUp ensures that the <b>VK_RETURN</b> key code causes <var>SelectAll</var> to be called when <var>AutoCompletion</var> or <var>AutoSelect</var> is enabled for the control. <var>AutoSelected</var> is set to <b>True</b> when the values in <var>SelText</var> and <var>Text</var> are the same.
</p>
<p>
In addition, alphanumeric key codes are used to perform AutoComplete text location using the options enabled in the <var>AutoCompleteText</var> property. The values in Text, <var>SelStart</var>, and <var>SelLength</var> are updated (when needed) and the <var>Select</var> method is called to reflect the operation.
</p>
<p>
KeyUp is called when <var>TLMKeyUp</var> control messages are processed in the handlers for the control.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.AutoSelect"/>
<link id="TCustomComboBox.AutoSelected"/>
<link id="TCustomComboBox.AutoComplete"/>
<link id="TCustomComboBox.AutoCompleteText"/>
<link id="TCustomComboBox.Text"/>
<link id="TCustomComboBox.SelText"/>
<link id="TCustomComboBox.SelStart"/>
<link id="TCustomComboBox.SelLength"/>
<link id="TCustomComboBox.Select"/>
<link id="#lcl.controls.TWinControl.KeyUp">TWinControl.KeyUp</link>
</seealso>
</element>
<element name="TCustomComboBox.KeyUp.Key">
<short>Virtual key code examined in the method.</short>
</element>
<element name="TCustomComboBox.KeyUp.Shift">
<short>Shift, Alt, or Ctrl modifier for the key code.</short>
</element>
<element name="TCustomComboBox.UTF8KeyPress">
<short>
<var>UTF8KeyPress</var> converts character case if required then calls the inherited method.
</short>
<descr>
<p>
<var>UTF8KeyPress</var> is an overridden method, and calls the inherited method on entry. The inherited method emulates a UTF-8-encoded keypress. The UTF-8 encoding should be used when there is the possibility that input/output will occur in any language that requires multiple bytes to represent each character, i.e. all languages except English.
</p>
<p>
UTF8KeyPress uses the value in <var>CharCase</var> to determine if the character case for <var>UTF8Key</var> is converted:
</p>
<dl>
<dt>ecNormalCase</dt>
<dd>No conversion is required.</dd>
<dt>ecLowerCase</dt>
<dd>Calls UTF8LowerCase to convert the value in UTF8Key.</dd>
<dt>ecUpperCase</dt>
<dd>Calls UTF8UpperCase to convert the value in UTF8Key.</dd>
</dl>
</descr>
<seealso>
<link id="TCustomComboBox.CharCase"/>
<link id="#lazutils.lazutf8.UTF8LowerCase">UTF8LowerCase</link>
<link id="#lazutils.lazutf8.UTF8UpperCase">UTF8UpperCase</link>
<link id="#lcl.controls.TWinControl.UTF8KeyPress">TWinControl.UTF8KeyPress</link>
</seealso>
</element>
<element name="TCustomComboBox.UTF8KeyPress.UTF8Key">
<short>UTF-8-encoded character examined in the method.</short>
</element>
<element name="TCustomComboBox.MouseUp">
<short>Highlights the selected text in the control when the left mouse button is released.</short>
<descr>
<p>
<var>MouseUp</var> is an overridden method, and calls the inherited method on entry. MouseUp ensures that the selected text in the control is highlighted when the Left mouse button is released and <var>AutoSelect</var> is enabled. MouseUp calls <var>SelectAll</var> to select the value in the <var>Text</var> property in the edit box for the control. The value in <var>AutoSelected</var> is set to <b>True</b>.
</p>
<p>
No selection is performed in the method when AutoSelect is set to <b>False</b>.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.AutoSelect"/>
<link id="TCustomComboBox.AutoSelected"/>
<link id="TCustomComboBox.SelectAll"/>
<link id="TCustomComboBox.Text"/>
<link id="TCustomComboBox.SelText"/>
<link id="TCustomComboBox.SelStart"/>
<link id="TCustomComboBox.SelLength"/>
<link id="#lcl.controls.TControl.MouseUp">TControl.MouseUp</link>
</seealso>
</element>
<element name="TCustomComboBox.MouseUp.Button">
<short>Mouse button for the notification.</short>
</element>
<element name="TCustomComboBox.MouseUp.Shift">
<short>Shift, Alt, or Ctrl modifier for the notification.</short>
</element>
<element name="TCustomComboBox.MouseUp.X">
<short>Horizontal coordinate for the mouse pointer.</short>
</element>
<element name="TCustomComboBox.MouseUp.Y">
<short>Vertical coordinate for the mouse pointer.</short>
</element>
<element name="TCustomComboBox.SelectItem">
<short>Selects the list item with the specified text.</short>
<descr>
<p>
<var>SelectItem</var> is a <var>Boolean</var> function used to select the list item in the control with the value specified in <var>AnItem</var>. The return value is <b>True</b> when the <var>Items</var> property contains an entry with the value in <var>AnItem</var>.
</p>
<p>
The value in <var>ItemIndex</var> is updated with the ordinal position in Items for the specified value, or <b>-1</b> when AnItem does not exist in Items. When the value in ItemIndex is changed, the <var>Click</var> and <var>Select</var> methods are called to refresh the control display and to signal the <var>OnClick</var> and <var>OnSelect</var> event handlers.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.ItemIndex"/>
<link id="TCustomComboBox.Select"/>
<link id="TCustomComboBox.OnSelect"/>
<link id="#lcl.controls.TControl.Click">TControl.Click</link>
<link id="#lcl.controls.TControl.OnClick">TControl.OnClick</link>
</seealso>
</element>
<element name="TCustomComboBox.SelectItem.Result">
<short>True when a matching item was found and selected.</short>
</element>
<element name="TCustomComboBox.SelectItem.AnItem">
<short>The text to find in Items.</short>
</element>
<element name="TCustomComboBox.ShouldAutoAdjust">
<short>Indicates if the width and/or height for the control can be adjusted by a layout policy.</short>
<descr>
<p>
<var>ShouldAutoAdjust</var> is an overridden method in <var>TCustomComboBox</var>. It sets the values in the <var>AWidth</var> and <var>AHeight</var> parameters to indicate if the control can adjust the bound(s) when a layout policy is appiled to the control. True indicates the value for the property can be adjusted.
</p>
<p>
ShouldAutoAdjust is used in the implementation of the <var>DoAutoAdjustLayout</var> method.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.DoAutoAdjustLayout"/>
<link id="#lcl.controls.TControl.ShouldAutoAdjust">TControl.ShouldAutoAdjust</link>
</seealso>
</element>
<element name="TCustomComboBox.ShouldAutoAdjust.AWidth">
<short>Always set to True in the method.</short>
</element>
<element name="TCustomComboBox.ShouldAutoAdjust.AHeight">
<short>True when AutoSize is not enabled for the control.</short>
</element>
<element name="TCustomComboBox.ItemHeight">
<short>The default height of an item in the drop-down for the control.</short>
<descr>
<p>
<var>ItemHeight</var> is an Integer property which contains the height (in pixels) used when drawing an item in the drop-down list.
</p>
<p>
The value for the property is retrieved from the widgetset class when not already assigned in the class instance, or when using an owner-drawn <var>Style</var>. Setting a new value for ItemHeight calls the <var>SetItemHeight</var> method in the widgetset class for owner-drawn Styles.
</p>
<p>
The property value is updated when the <var>LM_MeasureItem</var> message is handled for the control. When variable height items are enabled in Style, the <var>OnMeasureItem</var> event handler must be implemented to calculate the height for individual value in <var>Items</var>.
</p>
<p>
<var>ItemHeight</var>, <var>ItemWidth</var>, <var>Items</var>, and <var>DropDownCount</var> are used in the <var>AdjustDropDown</var> method to determine the dimensions for the drop-down list in the control.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.OnMeasureItem"/>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.ItemWidth"/>
<link id="TCustomComboBox.DropDownCount"/>
<link id="TCustomComboBox.AdjustDropDown"/>
</seealso>
</element>
<element name="TCustomComboBox.ItemWidth">
<short>The minimum width of the items in the drop-down list.</short>
<descr>
<p>
<var>ItemWidth</var> is an <var>Integer</var> property which contains the minimum number of pixels used when displaying the static or drop-down list for the control. The default value for the property is 0 (zero).
</p>
<p>
Setting a new value for the property causes the <var>AdjustDropDown</var> method to be called to adjust the dimensions for the list to the values in <var>ItemHeight</var>, <var>ItemWidth</var>, and <var>DropDownCount</var>.
</p>
<p>
Use <var>ItemHeight</var> to specify the number of pixels required for items displayed in the drop-down list for the control.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.DropDownCount"/>
<link id="TCustomComboBox.ItemHeight"/>
<link id="TCustomComboBox.AdjustDropDown"/>
</seealso>
</element>
<element name="TCustomComboBox.MaxLength">
<short>The maximum length for text entered in the edit box for the control.</short>
<descr>
<p>
<var>MaxLength</var> is an <var>Integer</var> property which contains the maximum length for a value entered in the <var>Text</var> for the control. It controls the number of characters allowed in the edit box, but does not limit the length of the value that can be directly assigned to Text. MaxLength is passed to and read from the widgetset class when a handle has been assigned for the control.
</p>
<p>
The default value for the property is <b>0</b> (zero), and indicates that a maximum length has not been specified in the property. Setting the value for the property does not alter the existing value in Text.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Text"/>
</seealso>
</element>
<element name="TCustomComboBox.OnChange">
<short>Event handler signalled for user changes to the text in the edit box.</short>
<descr>
<p>
<var>OnChange</var> is a <var>TNotifyEvent</var> property which implements the event handler signalled when the value in the edit box has been changed.
</p>
<p>
The event applies to interactive changes to <var>Text</var> made by the user, not those made programmatically. Note that this differs from how other OnChange events work. For example: TEdit.OnChange is triggered by text changes that occur in code. This event is also triggered when the item selection is changed using the drop-down list in the combo-box.
</p>
<p>
OnChange is signalled (when assigned) in the <var>Change</var> method called when the control messages are handled in the window procedure. An application must implement and assign an object procedure using the signature in TNotifyEvent to respond to the event notification.
</p>
</descr>
<seealso>
<link id="TCustomEdit.OnChange"/>
<link id="TCustomEdit.Change"/>
<link id="TCustomEdit.Text"/>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>
<element name="TCustomComboBox.OnCloseUp">
<short>Handler invoked when the drop-down list closes.</short>
<descr>
<p>
<var>OnCloseUp</var> is a <var>TNotifyEvent</var> property which contains the event handler signalled when the drop-down list in the control is hidden or closed. It can be used to perform any actions needed in an application, such as comparing pre-selection and post-selection values for properties. An application must implement and assign an object procedure to the property to respond to the event notification.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>
<element name="TCustomComboBox.OnDrawItem">
<short>Handler for special painting of an item (in owner-draw mode).</short>
<descr>
<p>
<var>OnDrawItem</var> is a <var>TDrawItemEvent</var> property which contains an event handler used to draw an item in the drop-down list for the control. OnDrawItem is used when <var>Style</var> contains one of the owner-drawn values. See <var>TComboBoxStyle</var> for more information about the owner-drawn styles available.
</p>
<p>
OnDrawItem is signalled (when assigned) from the <var>DrawItem</var> method. The event handler is responsible for all drawing operations needed to render the specified list item. This can include the text and any images or overlays drawn for the list item. Use the <var>Canvas</var> property to render the list item to the specified coordinate rectangle.
</p>
<p>
If OnDrawItem is not assigned, an internal default drawing routine is called to render the list item. It handles filling the canvas rectangle with the background for the item, and drawing the item text using the style, layout, and alignment defined in the control.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.DrawItem"/>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.Canvas"/>
<link id="TDrawItemEvent"/>
<link id="TComboBoxStyle"/>
</seealso>
</element>
<element name="TCustomComboBox.OnDropDown">
<short>Handler invoked when the list has dropped down.</short>
<descr>
<p>
<var>OnDropDown</var> is a <var>TNotifyEvent</var> property with the event handler signalled when the drop-down list for the control is displayed. OnDropDown is signalled (when assigned) from the <var>DropDown</var> method. DropDown is called when the <b>CBN_DROPDOWN</b> message is handled for the control.
</p>
<p>
Implement and assign an object procedure to the handler to respond to the event notification.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.DropDown"/>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>
<element name="TCustomComboBox.OnGetItems">
<short>Handler invoked when widgetset items list can be populated.</short>
<descr>
<p>
<var>OnGetItems</var> is a <var>TNotifyEvent</var> property with the event handler signalled to load the values used in the <var>Items</var> property.
</p>
<p>
OnGetItems is signalled (when assigned) from the <var>GetItems</var> method. Some widgetsets, like GTK, call GetItems (via <var>IntfGetItems</var>) just before the drop-down list is displayed. Others call GetItems when the handle for the control is created. OnGetItems provides one event to handle both cases.
</p>
<p>
An application should implement and assign an object procedure to the handler to respond to the event notification. The procedure must perform any actions needed to load the values for the Items property from an appropriate source.
</p>
<p>
Values can always be stored in the Items property using code at run-time, or by entering the values using the Object Inspector at design-time.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.GetItems"/>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.IntfGetItems"/>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>
<element name="TCustomComboBox.OnMeasureItem">
<short>Handler invoked when the height for an item is needed.</short>
<descr>
<p>
<var>OnMeasureItem</var> is a <var>TMeasureItemEvent</var> property with the event handler signalled to get the height for an item displayed in the list box for the control.
</p>
<p>
OnMeasureItem is signalled (when assigned) from the <var>MeasureItem</var> method. MeasureItem (and OnMeasureItem) are used when the <var>Style</var> property indicates that the control uses a variable height for each item displayed in the list box. OnMeasureItem occurs when the <b>LM_MeasureItem</b> message is handled for the control.
</p>
<p>
Use the <var>Index</var> argument to get the value in <var>Items</var> examined in the event handler. Use <var>ItemWidth</var> to determine the maximum width allowed for the variable height item. <var>Canvas</var> can be used to get text metrics for the <var>Font</var> used in the control. Update the <var>AHeight</var> argument with the height calculated for the item.
</p>
<p>
Use <var>ItemHeight</var> for the item height used for fixed height drawing styles.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.MeasureItem"/>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.ItemHeight"/>
<link id="TCustomComboBox.ItemWidth"/>
<link id="TCustomComboBox.Canvas"/>
<link id="TMeasureItemEvent"/>
</seealso>
</element>
<element name="TCustomComboBox.OnSelect">
<short>Handler invoked when an item is selected.</short>
<descr>
<p>
<var>OnSelect</var> is a <var>TNotifyEvent</var> property with the event handler signalled when an item is selected in the list box for the control.
</p>
<p>
OnSelect is signalled (when assigned) from the <var>Select</var> method when <var>ItemIndex</var> contains a positive non-zero value. Select (and subsequently OnSelect) are called from multiple methods in TCustomComboBox. <var>SelectItem</var> calls Select when the value in ItemIndex is changed as a result of assigning a value to <var>Text</var>. <var>KeyUp</var> calls Select when the value in Text is updated by auto-completion features in the control. Select is also called when the <b>LM_SelChange</b> message is handled for the control.
</p>
<p>
Implement and assign an object procedure to the handler to respond to the event notification.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Select"/>
<link id="TCustomComboBox.SelectItem"/>
<link id="TCustomComboBox.ItemIndex"/>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.KeyUp"/>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>
<element name="TCustomComboBox.ParentColor">
<short>Uses the Color from the Parent control, when enabled.</short>
<descr>
<p>
ParentColor determines if the control should use the Color from the Parent control, when enabled. The default value for the property is False in TCustomComboBox.
</p>
<p>
When this property is True, all changes to the Color of the parent will also be applied to the Color of the control, ensuring that they both contain same value. If the Color of the control is changed by the application, then ParentColor will be automatically set to False.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.ParentColor">TControl.ParentColor</link>
</seealso>
</element>
<element name="TCustomComboBox.Sorted">
<short>Determines whether the list entries are sorted in alphanumeric order.</short>
<descr>
<p>
<var>Sorted</var> is a <var>Boolean</var> property which indicates if values in <var>Items</var> are stored and displayed in alphanumeric sort order.
</p>
<p>
Setting this property to <b>True</b> enforces ascending alphanumeric case-insensitive sorting of the list. When set to <b>True</b>, new entries are added in sort order, and not to the end of the Items list. When a new value is assigned to the property, the <var>UpdateSorted</var> method is called to set the <var>Sorted</var> property in <var>Items</var> to the corresponding value. <var>ItemIndex</var> is also set to the location in Items where the value in <var>Text</var> is stored, or <b>-1</b> when not found.
</p>
<p>
The default value for the property is <b>False</b>.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomComboBox.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 constructor on entry. Create ensures that resources are allocated for members in the class instance. Create sets the default values for properties, including the following:
</p>
<dl>
<dt>ControlSyle</dt>
<dd>Removes csCaptureMouse from the style flags.</dd>
<dt>DropDownCunt</dt>
<dd>Set to display 8 items by default.</dd>
<dt>ArrowKeysTraverseList</dt>
<dd>Set to True to enable cursor key navigation in the control.</dd>
<dt>AutoCompleteText</dt>
<dd>Set to the values in the DefaultComboBoxAutoCompleteText constant.</dd>
<dt>AutoSelect</dt>
<dd>Set to True.</dd>
<dt>CharCase</dt>
<dd>Set to ecNormal.</dd>
<dt>AutoSize</dt>
<dd>
Set to True. AutoSize must be true by default since some widgetsets (win32, wince) ignore the combo-box height and others (gtk2) look ugly with a very small height.
</dd>
</dl>
</descr>
<seealso>
<link id="TCustomComboBox.Destroy"/>
</seealso>
</element>
<element name="TCustomComboBox.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TCustomComboBox.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance. Destroy calls <var>DestroyHandle</var> if a handle has been allocated for the control. Destroy frees resources allocated for the <var>Canvas</var> property, and calls the inherited destructor.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Create"/>
</seealso>
</element>
<element name="TCustomComboBox.IntfGetItems">
<short>Gets the values in the Items property for the widgetset class.</short>
<descr>
<p>
<var>IntfGetItems</var> is a procedure used to populate the values in the <var>Items</var> property. IntfGetItems is called when the widgetset class retrieves the values for the items displayed in the control. Some widgetsets perform this action when the handle is allocated, or the focus is set for the control. Others perform the action when the drop-list for the control is displayed.
</p>
<p>
IntfGetItems calls the <var>GetItems</var> method to signal the <var>OnGetItems</var> event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.GetItems"/>
<link id="TCustomComboBox.OnGetItems"/>
</seealso>
</element>
<element name="TCustomComboBox.AddItem">
<short>
Adds the specified string (and optional object) to the Items displayed in the control.
</short>
<descr>
<p>
<var>AddItem</var> is a procedure used to add the specified value (and an optional associated object) to the <var>Items</var> in the control. AddItem calls the <var>AddObject</var> method in Items to store the values in <var>Item</var> and <var>AnObject</var>.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Items"/>
<link id="#rtl.classes.TStrings.AddObject">TStrings.AddObject</link>
</seealso>
</element>
<element name="TCustomComboBox.AddItem.Item">
<short>The string added to Items.</short>
</element>
<element name="TCustomComboBox.AddItem.AnObject">
<short>The associated object, can be Nil.</short>
</element>
<element name="TCustomComboBox.AddHistoryItem">
<short>
Add an item as the first entry in the history list for the control.
</short>
<descr>
<p>
<var>AddHistoryItem</var> is a procedure used to add the values in <var>Item</var> and <var>AnObject</var> to the beginning of the list items displayed for the control. AddHistoryItem uses the value in <var>CaseSensitive</var> to determine if case is significant when comparing the value in Item to the existing value at the beginning of <var>Items</var>.
</p>
<p>
AddHistoryItem calls the <var>InsertObject</var> method in Items to store the values at the initial position in the Items list (ordinal position 0). When Item exists at another position in Items, it is removed.
</p>
<p>
<var>MaxHistoryCount</var> contains the maximum number of entries allowed in the Items property. When the number of entries in Items exceeds the value in MaxHistoryCount, the excess is removed from the end of the Items property.
</p>
<p>
When <var>SetText</var> is <b>True</b>, the value in Item is stored to the <var>Text</var> property.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.Text"/>
<link id="#rtl.classes.TStrings.InsertObject">TStrings.InsertObject</link>
<link id="#rtl.classes.TStrings.Delete">TStrings.Delete</link>
</seealso>
</element>
<element name="TCustomComboBox.AddHistoryItem.Item">
<short>The string to be added to the list.</short>
</element>
<element name="TCustomComboBox.AddHistoryItem.AnObject">
<short>Optional associated object added for the item.</short>
</element>
<element name="TCustomComboBox.AddHistoryItem.MaxHistoryCount">
<short>The maximum number of items that can be added to the history.</short>
</element>
<element name="TCustomComboBox.AddHistoryItem.SetAsText">
<short>When True the string also is copied into the edit box for the control.</short>
</element>
<element name="TCustomComboBox.AddHistoryItem.CaseSensitive">
<short>
True means that the list can contain multiple items with the same text, differing in case.
</short>
</element>
<element name="TCustomComboBox.AddHistoryItem.AnObject">
<short>The object associated with the item; can be Nil.</short>
</element>
<element name="TCustomComboBox.Clear">
<short>Removes all items from the list, and clears the edit box.</short>
<descr>
<p>
<var>Clear</var> is a procedure used to remove all values stored in the <var>Items</var> property for the control. Clear calls the Clear method in Items to removed the strings and any associated objects stored in the <var>TStrings</var> property. Clear sets the value in <var>Text</var> to an empty string (<b>''</b>) which forces the value in ItemIndex to be changed to <b>-1</b>.
</p>
<p>
Use the Clear method in Items to remove all of the the values stored in Items but keep the current value in Text.
</p>
<p>
Use ClearSelection to reset the value in ItemIndex and de-select the selected value in Items.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.ItemIndex"/>
<link id="TCustomComboBox.ClearSelection"/>
<link id="#rtl.classes.TStrings.Clear">TStrings.Clear</link>
</seealso>
</element>
<element name="TCustomComboBox.ClearSelection">
<short>Removes the item selection in the list box for the control.</short>
<descr>
<p>
<var>ClearSelection</var> is a procedure used to remove the current item selection in the list box for the control. This causes the value in <var>ItemIndex</var> to be changed to <b>-1</b>, and the value in Text is set to an empty string ('').
</p>
<p>
Use SelStart, SelLength, and SelText to access or modify the text selection in the edit control. Set <var>SelLength</var> to zero (<b>0</b>) to remove the text selection in the edit box.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.ItemIndex"/>
<link id="TCustomComboBox.SelLength"/>
<link id="TCustomComboBox.SelStart"/>
<link id="TCustomComboBox.SelText"/>
</seealso>
</element>
<element name="TCustomComboBox.CharCase">
<short>
Indicates the case conversion applied to the value entered in the edit box for the control.
</short>
<descr>
<p>
<var>CharCase</var> is a <var>TEditCharCase</var> property which indicates the case conversion applied to the value entered in the edit box for the control. The default value for the property is <var>ecNormal</var>, and indicates that no case conversion is performed.
</p>
<p>
Setting a new value for the property causes the value in <var>Text</var> to be converted to the specified case by calling either the <var>UTF8LowerCase</var> or the <var>UTF8UpperCase</var> routine. Text is not modified when <var>ecNormal</var> is assigned to the property.
</p>
<p>
The value in CharCase is used when the <var>UTF8KeyPress</var> is called to apply key press events for the control.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Text"/>
<link id="TCustomComboBox.UTF8KeyPress"/>
<link id="#lazutils.lazutf8.UTF8LowerCase">UTF8LowerCase</link>
<link id="#lazutils.lazutf8.UTF8UpperCase">UTF8UpperCase</link>
</seealso>
</element>
<element name="TCustomComboBox.DroppedDown">
<short>Indicates whether the drop-down list has been displayed.</short>
<descr>
<p>
<var>DroppedDown</var> is a <var>Boolean</var> property which indicates whether the drop-down list for the control has been displayed.
</p>
<p>
Reading the value for the property causes the widgetset class to be queried when a handle has been allocated for the control. Otherwise, the stored value for the property is used.
</p>
<p>
Setting a new value for the property causes the widgetset class to be notified of the changed property value. No actions are performed if a handle has not been allocated for the control, or during LCL component streaming. Setting this property opens or closes the drop-down list.
</p>
<p>
The value in DroppedDown is maintained when the <var>Style</var> for the control is altered, when <b>CBN_DROPDOWN</b> or <b>CBN_CLOSEUP</b> control messages are handled, and when key down events are handled which change the visibility of the drop-down list.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.KeyDown"/>
</seealso>
</element>
<element name="TCustomComboBox.DroppingDown">
<short>Deprecated.</short>
<descr>Deprecated. Will be removed in Lazarus 2.2.</descr>
<seealso/>
</element>
<element name="TCustomComboBox.SelectAll">
<short>Selects the text content in the edit box for the control.</short>
<descr>
<p>
<var>SelectAll</var> is a procedure used to select/highlight the <var>Text</var> displayed in the edit box for the control. SelectAll requires a <var>Style</var> that uses an edit box in the control. No actions are performed in the method when Style does not include an enabled edit box.
</p>
<p>
SelectAll sets the value in <var>SelStart</var> to <b>0</b> (zero) to move the selection to the beginning of the edit box, and sets <var>SelLength</var> to the number of UTF-8-encoded characters in Text. No selection/highlighting is performed when Text contains an empty string (<b>''</b>).
</p>
<p>
SelectAll is called from methods like <var>DoEnter</var>, <var>KeyUp</var>, <var>CloseUp</var>, and <var>MouseUp</var>.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.Text"/>
<link id="TCustomComboBox.SelStart"/>
<link id="TCustomComboBox.SelLength"/>
<link id="TCustomComboBox.SelText"/>
<link id="TCustomComboBox.DoEnter"/>
<link id="TCustomComboBox.KeyUp"/>
<link id="TCustomComboBox.CloseUp"/>
<link id="TCustomComboBox.MouseUp"/>
</seealso>
</element>
<element name="TCustomComboBox.AutoComplete">
<short>Positions the list box using partial text matching.</short>
<descr>
<p>
<var>AutoComplete</var> is a <var>Boolean</var> property which indicates if partial text matching is used to locate values in the Items displayed for the control. When set to <b>True</b>, keystrokes entered in the edit box for the control are used to locate a value in Items which begins with the entered value. The <var>ItemIndex</var> property is updated with the ordinal position for the matching item, or -1 if an entry is not found that starts with the partial value.
</p>
<p>
Reading the value in AutoComplete causes the <var>AutoCompleteText</var> property to be examined, and returns <b>True</b> when the value <var>cbactEnabled</var> is included in the auto-complete options. Assigning a value to AutoComplete causes the AutoCompleteText property to include or exclude the corresponding value as needed.
</p>
<p>
Use AutoCompleteText to enable or disable other auto-complete features and behaviors in the control.
</p>
<p>
Auto-completion related tasks are performed when the <var>KeyUp</var> method handles valid keystrokes for the control.
</p>
<p>
Use <var>AutoSelect</var> to control whether text is automatically highlighted in the edit box when a new list item is selected in the control.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.AutoCompleteText"/>
<link id="TCustomComboBox.AutoSelect"/>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.ItemIndex"/>
<link id="TCustomComboBox.KeyUp"/>
</seealso>
</element>
<element name="TCustomComboBox.AutoCompleteText">
<short>Options for the behavior of the Auto-Complete feature.</short>
<descr>
<dl>
<dt>Enabled</dt>
<dd> Enable Auto-Completion features.</dd>
<dt>EndOfLineComplete</dt>
<dd>Perform Auto-Complete only when cursor is at the end of the string.</dd>
<dt>RetainPrefixCase</dt>
<dd>
Retains the case of characters user has typed. This option has no effect if cbactEndOfLineComplete is <b>False</b>.
</dd>
<dt>SearchCaseSensitive</dt>
<dd>Search completion string with case sensitivity.</dd>
<dt>SearchAscending</dt>
<dd>
Search completion string in ascending order. <b>False</b> will search in descending order.
</dd>
</dl>
<p>
This property exists as a <var>Set</var> of <var>Options</var>, so zero or more options may be operational.
</p>
</descr>
<seealso>
<link id="TComboBoxAutoCompleteTextOption"/>
</seealso>
</element>
<element name="TCustomComboBox.AutoDropDown">
<short>Makes the drop-down list appear as soon as the user starts entering text.</short>
<descr>
<p>
<var>AutoDropDown</var> is a <var>Boolean</var> property which indicates if the drop-down list for the control is automatically displayed. When set to <b>False</b>, the drop-down list appears when the down button is clicked, or the Alt+Down key sequence is entered. The value in AutoDropDown is maintained, based on the <var>Style</var> for the control, when <var>KeyDown</var> is called to handle key events.
</p>
<p>
Use <var>DroppedDown</var> to show or hide the list box for the control.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.KeyDown"/>
<link id="TCustomComboBox.DroppedDown"/>
</seealso>
</element>
<element name="TCustomComboBox.AutoSelect">
<short>Selects the entire content of the edit box when the control receives the focus.</short>
<descr>
<p>
When <b>True</b>, the edit control will select all its text when:
</p>
<ul>
<li>It receives focus</li>
<li>The Enter key is pressed.</li>
<li>A new item is selected.</li>
</ul>
</descr>
<seealso>
<link id="TCustomComboBox.AutoSelected"/>
</seealso>
</element>
<element name="TCustomComboBox.AutoSelected">
<short>True indicates that the selection was marked automatically by the control.</short>
<descr>
<p>
<b>True</b> indicates that the combo-box control has just performed an <var>AutoSelect</var> operation so that subsequent mouse-clicks and keystrokes proceed normally without selecting the text.
</p>
<p>
<b>False</b> is set when the combo-box control loses focus.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.AutoSelect"/>
</seealso>
</element>
<element name="TCustomComboBox.AutoSize" link="#lcl.controls.TControl.AutoSize"/>
<element name="TCustomComboBox.ArrowKeysTraverseList">
<short>
Indicates if keyboard Arrow (or cursor) keys to move through the list.
</short>
<descr>
<p>
<var>ArrowKeysTraverseList</var> indicates if Arrow (or Cursor) keys on the keyboard can be used to navigate the <var>Items</var> displayed in the drop-down list box for the control. The default value for the property is <b>True</b>.
</p>
<p>
The value in the property is passed to the widgetset class when the LCL interface object is created. Changing the value for the property causes the widgetset class to be notified using its <var>SetArrowKeysTraverseList</var> method.
</p>
<p>
The property value is used in the implementation of the <var>KeyDown</var> method, and may be updated as the drop-down list for the control is displayed or hidden. For some widgetsets (Darwin), the arrow keys cannot be handled in the LCL and the keyboard message(s) are ignored.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.KeyDown"/>
</seealso>
</element>
<element name="TCustomComboBox.Canvas">
<short>Provides access to the drawing surface for the control.</short>
<descr>
<p>
<var>Canvas</var> is a read-only <var>TCanvas</var> property which provides access to the drawing surface used for the control. The class implementation actually uses a <var>TControlCanvas</var> instance in the member.
</p>
<p>
Canvas is used in methods like <var>DrawItem</var>, and in private methods which handle the <b>LM_DrawListItem</b> message for the control. Canvas is also passed as an argument to methods in the ancestor class like <var>PaintTo</var>. Canvas can be useful in <var>OnDrawItem</var> event handler when used to render list items for the control.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.DrawItem"/>
<link id="TCustomComboBox.OnDrawItem"/>
<link id="#lcl.controls.TWinControl.PaintTo">TWinControl.PaintTo</link>
<link id="#lcl.graphics.TCanvas">TCanvas</link>
<link id="#lcl.controls.TControlCanvas">TControlCanvas</link>
</seealso>
</element>
<element name="TCustomComboBox.DropDownCount">
<short>The maximum number of Items visible in the drop-down list for the control.</short>
<descr>
<p>
<var>DropDownCount</var> is an <var>Integer</var> property which specifies the maximum number of values from <var>Items</var> that can be displayed in the drop-down list for the control. Setting a new value for the property causes the widgetset class to be notified using its <var>SetDropDownCount</var> method when a handle has been allocated for the control.
</p>
<p>
DropDownCount is used (along with the item count and <var>ItemHeight</var>) in the <var>AdjustDropDown</var> method to set the minimum dimensions for the drop-down list.
</p>
<p>
The default value for the property is <b>8</b>.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.ItemHeight"/>
<link id="TCustomComboBox.GetItemCount"/>
<link id="TCustomComboBox.AdjustDropDown"/>
</seealso>
</element>
<element name="TCustomComboBox.EmulatedTextHintStatus">
<short>Status for the emulated TextHint in the control.</short>
<descr>
<p>
<var>EmulatedTextHintStatus</var> is a read-only <var>TEmulatedTextHintStatus</var> property which contains the status value for an emulated TextHint display in the control. EmulatedTextHintStatus is used when a value has been assigned to the <var>TextHint</var> property and the widgetset does not natively implement the capability. The LCL emulates the TextHint display by assigning the value in TextHint to the <var>Text</var> for the control.
</p>
<p>
EmulatedTextHintStatus is updated in the private <var>ShowEmulatedTextHint</var> and <var>HideEmulatedTextHint</var> methods.
</p>
</descr>
<seealso>
<link id="TEmulatedTextHintStatus"/>
<link id="TCustomComboBox.TextHint"/>
<link id="TCustomComboBox.Text"/>
</seealso>
</element>
<element name="TCustomComboBox.Items">
<short>The list of items displayed in the combo-box control.</short>
<descr>
<p>
<var>Items</var> is a <var>TStrings</var> property which contains the strings displayed in the static or drop-down list for the control. Settings a new TStrings value for the property causes the Assign method to be called to load the string values into the current class instance.
</p>
<p>
As an alternative, use the <var>OnGetItems</var> event handler to dynamically populate the values in Items when the drop-down list for the control is displayed (or created).
</p>
<p>
String values in Items can be ordered alphabetically by setting the <var>Sorted</var> property to <b>True</b>. This also affects the ordinal position for new values added to Items. Its index will be the position in the sorted order, and not necessarily at the end of the list.
</p>
<p>
Use ItemIndex to determine the ordinal position in Items with the value displayed the edit box for the control.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.ItemIndex"/>
<link id="TCustomComboBox.Sorted"/>
<link id="TCustomComboBox.OnGetItems"/>
<link id="TCustomComboBox.Text"/>
<link id="#rtl.classes.TStrings">TStrings</link>
</seealso>
</element>
<element name="TCustomComboBox.ItemIndex">
<short>The index of the currently selected item, or -1 if none is selected.</short>
<descr>
<p>
<var>ItemIndex</var> is an <var>Integer</var> property which contains the ordinal position in <var>Items</var> for the current list box selection in the control. The first value in Items is at index position <b>0</b> (<b>zero</b>). The final value in Items is at the index position <var>ItemCount</var><b>-1</b>. When no value is selected in the list box, ItemIndex is set to <b>-1</b>. The default value for the property is <b>-1</b>.
</p>
<p>
When the value for the property is read, the widgetset class is queried when a handle has been assigned for the control.
</p>
<p>
Assigning a new value to the property causes the value in <var>Text</var> to be updated to reflect the new selection in the control. When ItemIndex is <b>-1</b>, Text is set to an empty string ('').
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Items"/>
<link id="TCustomComboBox.AddItem"/>
<link id="TCustomComboBox.Text"/>
<link id="TCustomComboBox.AddHistoryItem"/>
</seealso>
</element>
<element name="TCustomComboBox.ReadOnly">
<short>Disallows free-form entry of Text into the combo-box edit field.</short>
<descr>
<p>
When <b>True</b>, the text can be changed only by selecting an item from the combo-box items list. When <b>False</b>, the text can be changed by free-form entry of a value in the edit field.
</p>
<p>
Changing the property value doesn't affect the style for the control in any manner. Changing the style doesn't affect the value in the property, as well. For some styles (such as csDropDownList) the property might have no effect because it is ignored.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Text"/>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.AutoComplete"/>
</seealso>
</element>
<element name="TCustomComboBox.SelLength">
<short>The number of selected UTF-8 characters in the edit box.</short>
<descr>
<p>
<var>SelLength</var> is an <var>Integer</var> property which indicates the number of UTF-8-encoded characters selected in the edit box for the control. SelLength is used along with <var>SelStart</var> to determine the value in <var>SelText</var>.
</p>
<p>
Use SelStart to determine the position in Text for the selected value in the edit box for the control.
</p>
<p>
Use SelText to get the content selected in the edit box. Assigning a new value to SelText causes the value in SelLength to be updated.
</p>
<p>
SelLength is updated in the <var>SelectAll</var> method after the selection text is updated. It is also updated when <var>KeyUp</var> performs auto-completion for alphanumeric values entered in the control.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.SelStart"/>
<link id="TCustomComboBox.SelText"/>
<link id="TCustomComboBox.Text"/>
<link id="TCustomComboBox.SelectAll"/>
<link id="TCustomComboBox.KeyUp"/>
<link id="TCustomComboBox.AutoComplete"/>
<link id="TCustomComboBox.AutoCompleteText"/>
</seealso>
</element>
<element name="TCustomComboBox.SelStart">
<short>
<b>zero-based</b> index to the UTF-8 character at the beginning of the selected text in the edit box.
</short>
<descr>
<p>
If text is selected in the edit box for the control, this is the starting position. When no text is selected, SelStart is the cursor position, and SelLength is 0 (zero).
</p>
<p>
Writing a new value to the property moves the cursor, and removes the current text selection. Set SelLength after changing SelStart, to establish a new text selection.
</p>
<p>
SelStart is a <b>zero-based</b> index to UTF-8 character in the Text, in contrast to the usual <b>1-based</b> string indices. The value 0 means the first UTF-8 character, the value 1 means the second UTF-8 character, etc.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.SelLength"/>
<link id="TCustomComboBox.SelText"/>
</seealso>
</element>
<element name="TCustomComboBox.SelText">
<short>The selected text in the edit box for the control.</short>
<descr>
<p>
<var>SelText</var> is a <var>String</var> property which contains the selected text in the edit box for the control. The property value is determined by the values in <var>SelStart</var> and <var>SelLength</var>. Assign a new string value to replace the selected text within the <var>Text</var> for the control.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.SelStart"/>
<link id="TCustomComboBox.SelLength"/>
<link id="TCustomComboBox.Text"/>
</seealso>
</element>
<element name="TCustomComboBox.Style">
<short>Appearance and behavior of the combo-box.</short>
<descr>
<p>
Style is quite Windows centric, reflecting the evolution of combo-box styles. The basic styles are:
</p>
<dl>
<dt>csSimple</dt>
<dd>Displays an edit box with a static list (not a drop-down list).</dd>
<dt>csDropDown</dt>
<dd>Displays an edit box with a drop-down list.</dd>
<dt>csDropDownList</dt>
<dd>
Values cannot be entered by the user in the edit box, only selected from the drop-down list.
</dd>
</dl>
<p>
Owner-drawn drop-down lists have been added, with the values:
</p>
<dl>
<dt>csOwnerDrawFixed</dt>
<dd>All items in the drop-down list are drawn with the same height.</dd>
<dt>csOwnerDrawVariable</dt>
<dd>Each item in the list can have a different height.</dd>
</dl>
</descr>
</element>
<element name="TCustomComboBox.TabStop">
<short>Enables or disables navigation using the Tab key.</short>
<descr>
<p>
Allows the user to navigate to this control, by pressing the Tab key. The default value for the property is True in TCustomComboBox.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.TabStop">TWinControl.TabStop</link>
</seealso>
</element>
<element name="TCustomComboBox.Text">
<short>The value in the edit box for the control.</short>
<descr>
<p>
Setting the value in Text selects a possibly matching item in the list. If an item is selected from the list, it replaces the contents of <var>Text</var>.
</p>
<p>
Use the Style property to control the display and editing features enabled for the control.
</p>
<p>
Text completion can be enabled or disabled using the AutoComplete property.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.ReadOnly"/>
<link id="TCustomComboBox.Style"/>
<link id="TCustomComboBox.AutoComplete"/>
<link id="TCustomComboBox.AutoCompleteText"/>
<link id="TCustomComboBox.Text"/>
</seealso>
</element>
<element name="TCustomComboBox.TextHint">
<short>Default hint text shown when the Text property is empty and the control is not focused.</short>
<descr>
<p>
<var>TextHint</var> is a <var>TTranslateString</var> property which contains the inline hint text displayed for the control. TextHint is displayed in the editable area for the control when <var>Text</var> is an empty string (<b>''</b>) and the control is not focused. As a TTranslateString value, it can be translated using the LCL localization mechanism when enabled for the project.
</p>
</descr>
<seealso>
<link id="TCustomComboBox.Text"/>
</seealso>
</element>
<element name="TComboBox">
<short>
A combination of an edit box and a (drop-down) list allowing one of several options to be chosen.
</short>
<descr>
<p>
The Text property reflects the text entered into the edit box, or selected from the list.
</p>
<p>
The selectable values are kept in the <var>Items</var> list. Clicking on the ellipsis character (<b>...</b>), next to <var>Items</var> in the Object Inspector, opens an editor which allows the designer to populate the Items list.
</p>
<p>
At run-time, the entry selected from the list replaces the text in the edit box, and <var>ItemIndex</var> holds the (zero-based) index number of the selected item.
</p>
<p>
If no value is selected from the drop-down list, the default text (if any) remains, or any information typed directly into <var>Text</var> will be returned, and <var>ItemIndex</var> takes the value of -1.
</p>
</descr>
<seealso>
<link id="HowToUseStdCtrls"/>
<link id="TComboBox.Items"/>
<link id="TComboBox.ItemIndex"/>
</seealso>
</element>
<element name="TComboBox.Align" link="#lcl.controls.TControl.Align"/>
<element name="TComboBox.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TComboBox.ArrowKeysTraverseList" link="#lcl.stdctrls.TCustomComboBox.ArrowKeysTraverseList"/>
<element name="TComboBox.AutoComplete" link="#lcl.stdctrls.TCustomComboBox.AutoComplete"/>
<element name="TComboBox.AutoCompleteText" link="#lcl.stdctrls.TCustomComboBox.AutoCompleteText"/>
<element name="TComboBox.AutoDropDown" link="#lcl.stdctrls.TCustomComboBox.AutoDropDown"/>
<element name="TComboBox.AutoSelect" link="#lcl.stdctrls.TCustomComboBox.AutoSelect"/>
<element name="TComboBox.AutoSize" link="#lcl.controls.TControl.AutoSize"/>
<element name="TComboBox.BidiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TComboBox.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TComboBox.BorderStyle" link="#lcl.controls.TWinControl.BorderStyle"/>
<element name="TComboBox.CharCase" link="#lcl.stdctrls.TCustomComboBox.CharCase"/>
<element name="TComboBox.Color" link="#lcl.controls.TControl.Color"/>
<element name="TComboBox.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TComboBox.DoubleBuffered" link="#lcl.controls.TWinControl.DoubleBuffered"/>
<element name="TComboBox.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TComboBox.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TComboBox.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TComboBox.DropDownCount" link="#lcl.stdctrls.TCustomComboBox.DropDownCount"/>
<element name="TComboBox.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TComboBox.Font" link="#lcl.controls.TControl.Font"/>
<element name="TComboBox.ItemHeight" link="#lcl.stdctrls.TCustomComboBox.ItemHeight"/>
<element name="TComboBox.ItemIndex" link="#lcl.stdctrls.TCustomComboBox.ItemIndex"/>
<element name="TComboBox.Items" link="#lcl.stdctrls.TCustomComboBox.Items"/>
<element name="TComboBox.ItemWidth" link="#lcl.stdctrls.TCustomComboBox.ItemWidth"/>
<element name="TComboBox.MaxLength" link="#lcl.stdctrls.TCustomComboBox.MaxLength"/>
<element name="TComboBox.OnChange" link="#lcl.stdctrls.TCustomComboBox.OnChange"/>
<element name="TComboBox.OnChangeBounds" link="#lcl.controls.TControl.OnChangeBounds"/>
<element name="TComboBox.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TComboBox.OnCloseUp" link="#lcl.stdctrls.TCustomComboBox.OnCloseUp"/>
<element name="TComboBox.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TComboBox.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element name="TComboBox.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TComboBox.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TComboBox.OnDrawItem" link="#lcl.stdctrls.TCustomComboBox.OnDrawItem"/>
<element name="TComboBox.OnDropDown" link="#lcl.stdctrls.TCustomComboBox.OnDropDown"/>
<element name="TComboBox.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TComboBox.OnEditingDone" link="#lcl.controls.TControl.OnEditingDone"/>
<element name="TComboBox.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
<element name="TComboBox.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
<element name="TComboBox.OnGetItems" link="#lcl.stdctrls.TCustomComboBox.OnGetItems"/>
<element name="TComboBox.OnKeyDown" link="#lcl.controls.TWinControl.OnKeyDown"/>
<element name="TComboBox.OnKeyPress" link="#lcl.controls.TWinControl.OnKeyPress"/>
<element name="TComboBox.OnKeyUp" link="#lcl.controls.TWinControl.OnKeyUp"/>
<element name="TComboBox.OnMeasureItem" link="#lcl.stdctrls.TCustomComboBox.OnMeasureItem"/>
<element name="TComboBox.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TComboBox.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TComboBox.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TComboBox.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TComboBox.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TComboBox.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TComboBox.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TComboBox.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TComboBox.OnSelect" link="#lcl.stdctrls.TCustomComboBox.OnSelect"/>
<element name="TComboBox.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TComboBox.OnUTF8KeyPress" link="#lcl.controls.TWinControl.OnUTF8KeyPress"/>
<element name="TComboBox.ParentBidiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TComboBox.ParentColor" link="#lcl.stdctrls.TCustomComboBox.ParentColor"/>
<element name="TComboBox.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element name="TComboBox.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TComboBox.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TComboBox.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TComboBox.ReadOnly" link="#lcl.stdctrls.TCustomComboBox.ReadOnly"/>
<element name="TComboBox.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TComboBox.Sorted" link="#lcl.stdctrls.TCustomComboBox.Sorted"/>
<element name="TComboBox.Style" link="#lcl.stdctrls.TCustomComboBox.Style"/>
<element name="TComboBox.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TComboBox.TabStop" link="#lcl.stdctrls.TCustomComboBox.TabStop"/>
<element name="TComboBox.Text" link="#lcl.stdctrls.TCustomComboBox.Text"/>
<element name="TComboBox.TextHint" link="#lcl.stdctrls.TCustomComboBox.TextHint"/>
<element name="TComboBox.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TListBoxStyle">
<short>Determines how items are drawn in a list box control.</short>
<descr>
<p>
<var>TListBoxStyle</var> is an enumerated type with values that determine how items in the list box control are populated and drawn. TListBoxStyle is the type used to implement the <var>Style</var> property in <var>TCustomListBox</var>.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.Style"/>
</seealso>
</element>
<element name="TListBoxStyle.lbStandard">
<short>Items drawn by the widgetset class.</short>
</element>
<element name="TListBoxStyle.lbOwnerDrawFixed">
<short>Items drawn by user code, and all items have the same height.</short>
</element>
<element name="TListBoxStyle.lbOwnerDrawVariable">
<short>Items drawn by user code, and each item can have a different height.</short>
</element>
<element name="TListBoxStyle.lbVirtual">
<short>Not used in the current LCL version.</short>
</element>
<element name="TSelectionChangeEvent">
<short>Specifies an event handler for change notifications from a list box control.</short>
<descr>
<p>
<var>TSelectionChangeEvent</var> is an object procedure type which specifies an event handler signalled when the select is changed in a list box control. Arguments passed to the handler identify the list box control, and the origin of the change notification.
</p>
<p>
TSelectionChangeEvent is the type used to implement the <var>OnSelectionChange</var> property in <var>TCustomListBox</var>. The application must implement and assign an object procedure using the signature for the handler to respond to the event notification.
</p>
</descr>
<seealso/>
</element>
<element name="TSelectionChangeEvent.Sender">
<short>The list box control for the notification.</short>
</element>
<element name="TSelectionChangeEvent.User">
<short>True if the user changed the selection, False if changed by code.</short>
</element>
<element name="TListBoxOption">
<short>Represents options available in a list box control.</short>
<descr/>
<seealso>
<link id="TListBoxOptions"/>
</seealso>
</element>
<element name="TListBoxOption.lboDrawFocusRect">
<short>Draws a focus rectangle when owner draw is enabled.</short>
</element>
<element name="TListBoxOptions">
<short>Set type used to store values from the TListBoxOption enumeration.</short>
<descr>
<p>
Set type used to store zero or more values for the <var>TListBoxOption</var> enumeration. <var>TListBoxOptions</var> is the type used for the <var>Options</var> property in <var>TCustomListBox</var>.
</p>
</descr>
<seealso>
<link id="TListBoxOption"/>
<link id="TCustomListBox.Options"/>
</seealso>
</element>
<element name="TCustomListBox">
<short>The base class for <var>TListBox</var>.</short>
<descr>
<p>
<var>TCustomListBox</var> is a <var>TWinControl</var> descendant which specifies the base class used for a list box control. A list box displays a scrollable list which allows selection of one or more of the item values.
</p>
<p>
TCustomListBox provides methods, properties, and events used to display, order, and select item values. The Items for the control can be assigned at design-time in the Lazarus IDE, or stored at run-time. Owner-drawn styles are available to render icons or bitmaps along with the text for the items, or using a variable height for list items. A Canvas property is provided for owner-drawn usage. Items in the list box can be display in one or more columns.
</p>
<p>
Do not create instances of TCustomListBox; use the <var>TListBox</var> descendant.
</p>
</descr>
<seealso>
<link id="TListBox"/>
<link id="#lcl.controls.TWinControl">TWinControl</link>
</seealso>
</element>
<element name="TCustomListBox.FCacheValid"/>
<element name="TCustomListBox.FCanvas"/>
<element name="TCustomListBox.FClickOnSelChange" link="#lcl.stdctrls.TCustomListBox.ClickOnSelChange"/>
<element name="TCustomListBox.FClickTriggeredBySelectionChange"/>
<element name="TCustomListBox.FColumns" link="#lcl.stdctrls.TCustomListBox.Columns"/>
<element name="TCustomListBox.FExtendedSelect" link="#lcl.stdctrls.TCustomListBox.ExtendedSelect"/>
<element name="TCustomListBox.FIntegralHeight" link="#lcl.stdctrls.TCustomListBox.IntegralHeight"/>
<element name="TCustomListBox.FItemHeight" link="#lcl.stdctrls.TCustomListBox.ItemHeight"/>
<element name="TCustomListBox.FItemIndex" link="#lcl.stdctrls.TCustomListBox.ItemIndex"/>
<element name="TCustomListBox.FItems" link="#lcl.stdctrls.TCustomListBox.Items"/>
<element name="TCustomListBox.FLockSelectionChange"/>
<element name="TCustomListBox.FMultiSelect" link="#lcl.stdctrls.TCustomListBox.MultiSelect"/>
<element name="TCustomListBox.FOnDrawItem" link="#lcl.stdctrls.TCustomListBox.OnDrawItem"/>
<element name="TCustomListBox.FOnMeasureItem" link="#lcl.stdctrls.TCustomListBox.OnMeasureItem"/>
<element name="TCustomListBox.FOnSelectionChange" link="#lcl.stdctrls.TCustomListBox.OnSelectionChange"/>
<element name="TCustomListBox.FScrollWidth" link="#lcl.stdctrls.TCustomListBox.ScrollWidth"/>
<element name="TCustomListBox.FSorted" link="#lcl.stdctrls.TCustomListBox.Sorted"/>
<element name="TCustomListBox.FStyle" link="#lcl.stdctrls.TCustomListBox.Style"/>
<element name="TCustomListBox.FTopIndex" link="#lcl.stdctrls.TCustomListBox.TopIndex"/>
<element name="TCustomListBox.GetCount" link="#lcl.stdctrls.TCustomListBox.Count"/>
<element name="TCustomListBox.GetCount.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomListBox.GetScrollWidth" link="#lcl.stdctrls.TCustomListBox.ScrollWidth"/>
<element name="TCustomListBox.GetScrollWidth.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomListBox.GetTopIndex" link="#lcl.stdctrls.TCustomListBox.TopIndex"/>
<element name="TCustomListBox.GetTopIndex.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomListBox.RaiseIndexOutOfBounds">
<short>
Raises an exception if an invalid index position is used to access Items in the list box control.
</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.RaiseIndexOutOfBounds.AIndex">
<short>Index value generating the exception.</short>
</element>
<element name="TCustomListBox.SetColumns" link="#lcl.stdctrls.TCustomListBox.Columns"/>
<element name="TCustomListBox.SetColumns.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomListBox.SetScrollWidth" link="#lcl.stdctrls.TCustomListBox.ScrollWidth"/>
<element name="TCustomListBox.SetScrollWidth.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomListBox.SetTopIndex" link="#lcl.stdctrls.TCustomListBox.TopIndex"/>
<element name="TCustomListBox.SetTopIndex.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomListBox.UpdateSelectionMode">
<short>Sends values for ExtendedSelect and MultiSelect to the widgetset class.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.UpdateSorted">
<short>Sends values in Items and Sorted to the widgetset class.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.LMDrawListItem">
<short>Handles the LM_DrawListItem message for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.LMDrawListItem.TheMessage">
<short>Message handled in the method.</short>
</element>
<element name="TCustomListBox.LMMeasureItem">
<short>Handles the LM_MeasureItem message for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.LMMeasureItem.TheMessage">
<short>Message handled in the method.</short>
</element>
<element name="TCustomListBox.LMSelChange">
<short>Handles the LM_SelChange message for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.LMSelChange.TheMessage">
<short>Message handled in the method.</short>
</element>
<element name="TCustomListBox.WMLButtonUp">
<short>
Handles Left mouse button Up events for the control.
</short>
<descr>
Prevents Click from being called twice when using ClickOnSelChange to trigger a click event.
</descr>
<seealso>
<link id="#lcl.controls.TControl.WMLButtonUp">TControl.WMLButtonUp</link>
</seealso>
</element>
<element name="TCustomListBox.WMLButtonUp.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomListBox.SendItemSelected">
<short>Notifies the widgetset class when the selected item in the control is changed.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.SendItemSelected.Index">
<short>Ordinal position for the item.</short>
</element>
<element name="TCustomListBox.SendItemSelected.IsSelected">
<short>True when the item is selected; False when it is not selected.</short>
</element>
<element name="TCustomListBox.ClearSelectedCache">
<short>Resets cached item selections for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.SetSelectedCache">
<short>Sets the cached selection state for the specified item.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.SetSelectedCache.Index">
<short>Ordinal position in Items to update in the cache.</short>
</element>
<element name="TCustomListBox.SetSelectedCache.IsSelected">
<short>Selection state for the cached item.</short>
</element>
<element name="TCustomListBox.GetSelectedCache">
<short>Gets the selection state for the specified item from the cache.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.GetSelectedCache.Result">
<short>True when the item is selected in the cache.</short>
</element>
<element name="TCustomListBox.GetSelectedCache.Index">
<short>Ordinal position in Items for the cached item.</short>
</element>
<element name="TCustomListBox.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TCustomListBox.AssignItemDataToCache">
<short>Copy selection state into the cache.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.AssignItemDataToCache.AIndex">
<short>Ordinal position in Items for the entry updated in the cache.</short>
</element>
<element name="TCustomListBox.AssignItemDataToCache.AData">
<short>Pointer to the data stored in the cache for the specified item.</short>
</element>
<element name="TCustomListBox.AssignCacheToItemData">
<short>Sends the cached selection state to the widget.</short>
<descr>Called to restore the ItemData after a handle is created.</descr>
<seealso/>
</element>
<element name="TCustomListBox.AssignCacheToItemData.AIndex">
<short>Ordinal position for the item data read from the cache.</short>
</element>
<element name="TCustomListBox.AssignCacheToItemData.AData">
<short>Pointer to the data read from the cache for the specified item.</short>
</element>
<element name="TCustomListBox.BeforeDragStart">
<short>
Notifies the widgetset class that a Drag operation is starting.
</short>
<descr>
<p>
<var>BeforeDragStart</var> is an overridden method in <var>TCustomListBox</var> used to perform actions needed to start a drag operation for the control. In TCustomListBox, this means that the DragStart method in the widgetset class is called. No actions are performed in the method if the Handle has not been allocated for the control.
</p>
<p>
BeforeDragStart is called when mouse up, down, and move messages are handled by the DragManager for an application.
</p>
</descr>
<seealso>
<link id="TControl.BeforeDragStart"/>
</seealso>
</element>
<element name="TCustomListBox.BeginAutoDrag">
<short>
Starts a non-immediate drag / dock operation for the control.
</short>
<descr>
<p>
Calls the inherited <var>BeginDrag</var> method with the <var>Immediate</var> argument set to <b>False</b>. The drag operation is detected and handled by the DragManager for the application.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.BeginAutoDrag">TControl.BeginAutoDrag</link>
</seealso>
</element>
<element name="TCustomListBox.CalculateStandardItemHeight">
<short>
Determines the standard Height of the items, when no widget has yet been created.
</short>
</element>
<element name="TCustomListBox.CalculateStandardItemHeight.Result">
<short>Height for the items in the control.</short>
</element>
<element name="TCustomListBox.Loaded">
<short>Sends the design-time value for ItemIndex to the widgetset class.</short>
<descr/>
<seealso>
<link id="#lcl.controls.TWinControl.Loaded"/>
<link id="#rtl.classes.TComponent.Loaded">TComponent.Loaded</link>
</seealso>
</element>
<element name="TCustomListBox.CreateParams">
<short>
Initializes the creation parameters for the class instance.
</short>
<descr>
<p>
<var>CreateParams</var> is an overridden method used initialize the creation parameters for the class instance.
</p>
<p>
CreateParams calls the inherited method, and ensures that the <var>Params</var> argument is updated to include style constants needed for properties in the list box control. These include the constants needed for the <var>Sorted</var>, <var>MultiSelect</var>, and <var>Columns</var> properties. Owner-drawn constants are also included based on the value in <var>Style</var>. Style constants are always included for scrollbars (horizontal and vertical), non-integral item height, string content, and notify events.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Sorted"/>
<link id="TCustomListBox.MultiSelect"/>
<link id="TCustomListBox.Columns"/>
<link id="TCustomListBox.Style"/>
<link id="#lcl.controls.TWinControl.CreateParams">TWinControl.CreateParams</link>
</seealso>
</element>
<element name="TCustomListBox.CreateParams.Params">
<short>The creation parameters and flags for the instance.</short>
</element>
<element name="TCustomListBox.InitializeWnd">
<short>
Updates Items from the widgetset class and invalidates the item cache.
</short>
<descr>
<p>
<var>InitializeWnd</var> is an overridden method used to synchronize the control and the widgetset class. InitializeWnd copies values for the <var>Items</var> property from the ones allocated in the widgetset class. The value in <var>ItemIndex</var> is passed to the widgetset class when needed. An internal flag is reset to invalidate the item cache for the control, and the item data from the widgetset class is applied. Finally, the value in <var>ScrollWidth</var> is passed to the widgetset class.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.Sorted"/>
<link id="TCustomListBox.ItemIndex"/>
<link id="TCustomListBox.ScrollWidth"/>
<link id="#lcl.controls.TWinControl.InitializeWnd">TWinControl.InitializeWnd</link>
</seealso>
</element>
<element name="TCustomListBox.DestroyWnd">
<short>Frees the handle for the window and its canvas.</short>
<descr>
<p>
Calls the inherited method to free the window handle and update flags for the control. Frees the handle for the <var>Canvas</var> when assigned.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Canvas"/>
<link id="#lcl.controls.TWinControl.DestroyWnd">TWinControl.DestroyWnd</link>
</seealso>
</element>
<element name="TCustomListBox.FinalizeWnd">
<short>Caches the Items stored in the widgetset class.</short>
<descr>
<p>
<var>FinalizeWnd</var> is an overridden method used to capture values from the widgetset class when the handle is destroyed or re-created. FinalizeWnd gets the value for <var>ItemIndex</var> when the handle is being re-created. Values in <var>Items</var> (and its cached item data) are copied before they are freed in the widgetset class. The value in <var>Sorted</var> is re-applied to the new values in Items.
</p>
<p>
FinalizeWnd calls the inherited method prior to exit.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.Sorted"/>
<link id="#lcl.controls.TWinControl.FinalizeWnd">TWinControl.FinalizeWnd</link>
</seealso>
</element>
<element name="TCustomListBox.GetControlClassDefaultSize" link="#lcl.controls.TControl.GetControlClassDefaultSize"/>
<element name="TCustomListBox.GetControlClassDefaultSize.Result">
<short>Default dimensions for a new instance of the class.</short>
</element>
<element name="TCustomListBox.CheckIndex">
<short>Ensures that the Item index is within the bounds for the Items in the control.</short>
<descr>
<p>
<var>CheckIndex</var> is a procedure used to ensure that the specified index value is within the range of values allowed for the Items in the control. CheckIndex examines the value in <var>AIndex</var>, and raises an <var>IndexOutOfBounds</var> exception if it is not in the range 0 (zero) to Items.Count-1.
</p>
<p>
CheckIndex is used in the access specifiers for the <var>Selected</var> property (GetSelected, SetSelected).
</p>
</descr>
<errors>
Raises an <var>IndexOutOfBounds</var> exception when the index is out of bounds.
</errors>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.Selected"/>
<link id="TCustomListBox.GetSelected"/>
<link id="TCustomListBox.SetSelected"/>
</seealso>
</element>
<element name="TCustomListBox.CheckIndex.AIndex">
<short>Index position examined in the method.</short>
</element>
<element name="TCustomListBox.GetItemHeight">
<short>Gets the value for the ItemHeight property.</short>
<descr/>
<seealso>
<link id="TCustomListBox.ItemHeight"/>
</seealso>
</element>
<element name="TCustomListBox.GetItemHeight.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomListBox.GetItemIndex">
<short>Gets the value for the ItemIndex property.</short>
<descr/>
<seealso>
<link id="TCustomListBox.ItemIndex"/>
</seealso>
</element>
<element name="TCustomListBox.GetItemIndex.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomListBox.GetSelCount">
<short>Gets the value for the SelCount property.</short>
<descr/>
<seealso>
<link id="TCustomListBox.SelCount"/>
</seealso>
</element>
<element name="TCustomListBox.GetSelCount.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomListBox.GetSelected">
<short>Gets the value for the Selected property.</short>
<descr/>
<seealso>
<link id="TCustomListBox.Selected"/>
</seealso>
</element>
<element name="TCustomListBox.GetSelected.Result">
<short>The selection state of the item.</short>
</element>
<element name="TCustomListBox.GetSelected.Index">
<short>Ordinal position for the item examined in the method.</short>
</element>
<element name="TCustomListBox.GetCachedDataSize">
<short>Returns the size for cached item data in the control.</short>
<descr>
<p>
Passed as an argument when creating the <var>TExtendedStringList</var> instance used in the Items property.
</p>
</descr>
<seealso>
<link id="#lazutils.extendedstrings.TExtendedStringList">TExtendedStringList</link>
</seealso>
</element>
<element name="TCustomListBox.GetCachedDataSize.Result">
<short>Number f bytes required for the item data in the cache.</short>
</element>
<element name="TCustomListBox.GetCachedData">
<short>Returns a pointer to the cached item data.</short>
<descr>
<p>
Gets a pointer to the item data for the specified list box item. The return value contains the attributes stored in Items at the position in AIndex. Items is cast to a TExtendedStringList instance to access its indexed Records property.
</p>
</descr>
<errors>
Raises an InvalidOperation exception when the cache is marked as invalid, i. e. when the widgetset class has already been created.
</errors>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="#lazutils.extendedstrings.TExtendedStringList.Records">TExtendedStringList.Records</link>
</seealso>
</element>
<element name="TCustomListBox.GetCachedData.Result">
<short>Pointer to the item data in the cache.</short>
</element>
<element name="TCustomListBox.GetCachedData.AIndex">
<short>Ordinal position in Items for the values retrieved in the method.</short>
</element>
<element name="TCustomListBox.SetExtendedSelect">
<short>Sets the value for the ExtendedSelect property.</short>
<descr/>
<seealso>
<link id="TCustomListBox.ExtendedSelect"/>
</seealso>
</element>
<element name="TCustomListBox.SetExtendedSelect.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomListBox.SetItemIndex">
<short>Sets the value for the ItemIndex property.</short>
<descr/>
<seealso>
<link id="TCustomListBox.ItemIndex"/>
</seealso>
</element>
<element name="TCustomListBox.SetItemIndex.AIndex">
<short>New value for the property.</short>
</element>
<element name="TCustomListBox.SetItems">
<short>Sets the value for the Items property.</short>
<descr/>
<seealso>
<link id="TCustomListBox.Items"/>
</seealso>
</element>
<element name="TCustomListBox.SetItems.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomListBox.SetItemHeight">
<short>Sets the value for the ItemHeight property.</short>
<descr/>
<seealso>
<link id="TCustomListBox.ItemHeight"/>
</seealso>
</element>
<element name="TCustomListBox.SetItemHeight.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomListBox.SetMultiSelect">
<short>Sets the value for the MultiSelect property.</short>
<descr/>
<seealso>
<link id="TCustomListBox.MultiSelect"/>
</seealso>
</element>
<element name="TCustomListBox.SetMultiSelect.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomListBox.SetSelected">
<short>Sets the value for the Selected property.</short>
<descr/>
<seealso>
<link id="TCustomListBox.Selected"/>
</seealso>
</element>
<element name="TCustomListBox.SetSelected.Index">
<short>Ordinal position for the item updated in the method.</short>
</element>
<element name="TCustomListBox.SetSelected.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomListBox.SetSorted">
<short>Sets the value for the Sorted property.</short>
<descr/>
<seealso>
<link id="TCustomListBox.Sorted"/>
</seealso>
</element>
<element name="TCustomListBox.SetSorted.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomListBox.SetStyle">
<short>Sets the value for the Style property.</short>
<descr/>
<seealso>
<link id="TCustomListBox.Style"/>
</seealso>
</element>
<element name="TCustomListBox.SetStyle.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomListBox.DrawItem">
<short>Paints an item in owner-draw mode.</short>
<descr>
<p>
<var>DrawItem</var> is a procedure used to render an item in the list box control using the owner-draw mode.
</p>
<p>
<var>Item</var> contains the ordinal position in Items for the item drawn in the method.
</p>
<p>
<var>ARect</var> is a <var>TRect</var> instance with the canvas coordinates where the drawing operation is performed.
</p>
<p>
<var>State</var> contains the drawing state for the owner-drawn item.
</p>
<p>
DrawItem signals the <var>OnDrawItem</var> event handler (when assigned). An internal default drawing method is used when the event handler has not been implemented.
</p>
<p>
DrawItem is called when the <b>LM_DrawListItem</b> message is handled for the control.
</p>
</descr>
<seealso>
<link id="TCustomListBox.OnDrawItem"/>
<link id="TCustomListBox.Canvas"/>
<link id="TDrawItemEvent"/>
</seealso>
</element>
<element name="TCustomListBox.DrawItem.Index">
<short>Ordinal position for the item drawn in the method.</short>
</element>
<element name="TCustomListBox.DrawItem.ARect">
<short>Canvas rectangle with the coordinate for the drawing operation.</short>
</element>
<element name="TCustomListBox.DrawItem.State">
<short>Drawing state for the item.</short>
</element>
<element name="TCustomListBox.DoAutoAdjustLayout">
<short>
Performs actions needed to auto-adjust the control using the specified layout policy.
</short>
<descr>
<p>
<var>DoAutoAdjustLayout</var> is an overridden method used to apply an auto-adjust layout policy to the control. DoAutoAdjustLayout calls the inherited method on entry.
</p>
<p>
DoAutoAdjustLayout ensures that the item height for the control is scaled using the factor in <var>AYProportion</var> when <var>AMode</var> contains the <var>lapAutoAdjustWithoutHorizontalScrolling</var> or <var>lapAutoAdjustForDPI</var> layout adjustment policy values.
</p>
<p>
DoAutoAdjustLayout is called from the <var>AutoAdjustLayout</var> method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.DoAutoAdjustLayout">TControl.DoAutoAdjustLayout</link>
</seealso>
</element>
<element name="TCustomListBox.DoAutoAdjustLayout.AMode">
<short>Layout adjustment policy applied in the method.</short>
</element>
<element name="TCustomListBox.DoAutoAdjustLayout.AXProportion">
<short>Factor used to scale horizontal dimensions.</short>
</element>
<element name="TCustomListBox.DoAutoAdjustLayout.AYProportion">
<short>Factor used to scale vertical dimensions.</short>
</element>
<element name="TCustomListBox.DoSelectionChange">
<short>Signals the OnSelectionChange handler.</short>
<descr>
<p>
<var>DoSelectionChange</var> performs actions needed when the selected item in the list box control has been changed. DoSelectionChange signals the <var>OnSelectionChange</var> event handler (when assigned).
</p>
<p>
<var>User</var> indicates if the selection was changed as a result of user interaction with the control, as opposed to a change performed in code at run-time. When User is set to <b>True</b>, and <var>ClickOnSelChange</var> is enabled, an internal flag is set to prevent execution of the method by a subsequent mouse click.
</p>
<p>
DoSelectionChange is called when the <b>LM_SelChange</b> message is handled for the control, and when a new value is assigned to the <var>ItemIndex</var> property. User is set to <b>False</b> when the selection change is caused by setting a new value in ItemIndex.
</p>
</descr>
<seealso>
<link id="TCustomListBox.OnSelectionChange"/>
<link id="TCustomListBox.ItemIndex"/>
<link id="TCustomListBox.ClickOnSelChange"/>
</seealso>
</element>
<element name="TCustomListBox.DoSelectionChange.User">
<short>True when the selection change results from user interaction with the control.</short>
</element>
<element name="TCustomListBox.SendItemIndex">
<short>Sends the value in ItemIndex to the widgetset class.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.WMGetDlgCode">
<short>Handles Tab, Return, and Escape characters in control messages.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.WMGetDlgCode.Message">
<short>Message examined in the method.</short>
</element>
<element name="TCustomListBox.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 constructor on entry. Create sets the component style to <b>csListBox</b>, and allocates resources needed for the <var>Items</var> and <var>Canvas</var> properties. Create sets the default values for properties, including:
</p>
<dl>
<dt>BorderStyle</dt>
<dd>Set to bsSingle.</dd>
<dt>ClickOnSelChange</dt>
<dd>Set to <b>True</b>.</dd>
<dt>ItemIndex</dt>
<dd>Set to -1 to indicate no item is selected.</dd>
<dt>ExtendedSelect</dt>
<dd>Set to <b>True</b>.</dd>
<dt>Options</dt>
<dd>Set to DefOptions.</dd>
<dt>Canvas</dt>
<dd>Cast to a TControlCanvas instance for the current class instance.</dd>
<dt>ParentColor</dt>
<dd>Set to <b>False</b>.</dd>
<dt>TabStop</dt>
<dd>Set to <b>True</b>.</dd>
</dl>
<p>
Create calls <var>SetInitialBounds</var> to assign the dimensions from the <var>GetControlClassDefaultSize</var> method.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.Canvas"/>
<link id="#lcl.controls.TWinControl.Create">TWinControl.Create</link>
</seealso>
</element>
<element name="TCustomListBox.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TCustomListBox.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance. Destroy frees resources allocated for the <var>Items</var> and <var>Canvas</var> properties. Destroy calls the inherited destructor prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Create"/>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.Canvas"/>
</seealso>
</element>
<element name="TCustomListBox.AddItem">
<short>Adds an item to the list.</short>
<descr>
<p>
<var>AddItem</var> is a method used to add a string (and an optional associated object) to the <var>Items</var> for the control. AddItem calls the <var>AddObject</var> method in Items using <var>Item</var> and <var>AnObject</var> as arguments.
</p>
<p>
<var>Item</var> contains the string value added to the Items in the control.
</p>
<p>
<var>AnObject</var> is an optional object instance associated with the item, and contains <b>Nil</b> when an object instance has not been assigned. The object can be retrieved using the <var>Items.Objects</var> property for the <var>ItemIndex</var>, and must be cast to the required class type to access values in the object instance.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
</seealso>
</element>
<element name="TCustomListBox.AddItem.Item">
<short>The item text.</short>
</element>
<element name="TCustomListBox.AddItem.AnObject">
<short>The associated object, or Nil when not used.</short>
</element>
<element name="TCustomListBox.Click">
<short>Performs the Changed method when the control is clicked.</short>
<descr>
<p>
<var>Click</var> is an overridden method in <var>TCustomListBox</var>, and calls the inherited method on entry. Click calls the <var>Changed</var> method (inherited from <var>TControl</var>) to perform the <b>CM_CHANGED</b> control message. Click is used in the implementation of the <var>DoSelectionChange</var> method when the control is changed by a user interaction.
</p>
</descr>
<seealso>
<link id="TCustomListBox.DoSelectionChange"/>
<link id="#lcl.controls.TControl.Changed">TControl.Changed</link>
<link id="#lcl.controls.TControl.Click">TControl.Click</link>
</seealso>
</element>
<element name="TCustomListBox.Clear">
<short>Removes all items from the list box control.</short>
<descr>
<p>
<var>Clear</var> is a procedure used to remove all values stored in the <var>Items</var> property. Clear calls the Clear method in Items, and sets the value in <var>ItemIndex</var> to <b>-1</b> to indicate that no item is selected in the control.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.ItemIndex"/>
<link id="#lazutils.extendedstrings.TExtendedStringList.Clear">TExtendedStringList.Clear</link>
<link id="#rtl.classes.TStrings.Clear">TStrings.Clear</link>
</seealso>
</element>
<element name="TCustomListBox.ClearSelection">
<short>Unselects all items in the control.</short>
<descr>
<p>
<var>ClearSelection</var> is a procedure used to clear one or more selected items in the control. When <var>MultiSelect</var> is enabled, values in the <var>Selected</var> property are reset to <b>False</b>. Otherwise, the <var>ItemIndex</var> property is set to <b>-1</b> to indicate that no item is selected in the control.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.ItemIndex"/>
<link id="TCustomListBox.Selected"/>
<link id="TCustomListBox.SelectRange"/>
</seealso>
</element>
<element name="TCustomListBox.GetIndexAtXY">
<short>Gets the index for the item at the given client coordinates.</short>
<descr>
<p>
<var>GetIndexAtXY</var> is an <var>Integer</var> function used to get the ordinal position in <var>Items</var> for the list item at the specified coordinates. No actions are performed in the method if a handle has not been allocated for the control (the widgetset class instance). GetIndexAtXY calls the <var>GetIndexAtXY</var> method in the widgetset class to get the return value.
</p>
</descr>
<seealso>
</seealso>
</element>
<element name="TCustomListBox.GetIndexAtXY.Result">
<short>The item index, -1 if an item could not be found.</short>
</element>
<element name="TCustomListBox.GetIndexAtXY.X">
<short>The X client coordinate.</short>
</element>
<element name="TCustomListBox.GetIndexAtXY.Y">
<short>The Y client coordinate.</short>
</element>
<element name="TCustomListBox.GetIndexAtY">
<short>Gets the index position for the item at the specified vertical coordinate.</short>
<descr>
<p>
Calls GetIndextAtXY to get the return value using the vertical coordinate in Y. The value 1 is used as the horizontal coordinate.
</p>
</descr>
<seealso>
<link id="TCustomListBox.GetIndexAtXY"/>
</seealso>
</element>
<element name="TCustomListBox.GetIndexAtY.Result">
<short>The item index, -1 if no item could be found.</short>
</element>
<element name="TCustomListBox.GetIndexAtY.Y">
<short>The vertical client coordinate.</short>
</element>
<element name="TCustomListBox.GetSelectedText">
<short>Get the text for all selected items as a string value.</short>
<descr>
<p>
<var>GetSelectedText</var> is a <var>String</var> function used to retrieve a string with all selected items in the control. The return values uses each selected entry in Items separated by the LineEnding character sequence for the platform or operating system. The return value is an empty string ('') when <var>ItemIndex</var> does not contain a positive non-zero value (no item is selected) or <var>SelCount</var> contain 0 (zero).
</p>
<p>
GetSelectedText iterates over the values in Items, and includes the string when its <var>Selected</var> property is set to <b>True</b>. This is useful when <var>MultiSelect</var> is enabled for the control.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.Selected"/>
<link id="TCustomListBox.MultiSelect"/>
<link id="TCustomListBox.SelCount"/>
</seealso>
</element>
<element name="TCustomListBox.GetSelectedText.Result">
<short>The item strings, one per line.</short>
</element>
<element name="TCustomListBox.ItemAtPos">
<short>Get the item index for the given client coordinates.</short>
<descr>
<p>
<var>ItemAtPos</var> is an <var>Integer</var> function used to get the index position in Items for the value at the specified screen coordinates.
</p>
<p>
<var>Pos</var> is <var>TPoint</var> instance with the X and Y coordinates used in the method.
</p>
<p>
<var>Existing</var> indicates whether the return value is set to -1 or the number of entries in <var>Items</var> when Pos refers to entry which does not exist. When Existing is set to <b>True</b>, -1 is returned for an invalid entry. Otherwise, the value in <var>Item.Count</var> is returned.
</p>
<p>
ItemAtPos calls <var>GetIndexAtXY</var> using the X and Y values in Pos to locate the index for the item.
</p>
</descr>
<seealso>
<link id="TCustomListBox.GetIndexAtXY"/>
</seealso>
</element>
<element name="TCustomListBox.ItemAtPos.Result">
<short>The calculated item index, can be out of the Items bounds.</short>
</element>
<element name="TCustomListBox.ItemAtPos.Pos">
<short>The item position.</short>
</element>
<element name="TCustomListBox.ItemAtPos.Existing">
<short>True when the index is requested for insertion of a new item.</short>
</element>
<element name="TCustomListBox.ItemRect">
<short>Returns the client rectangle for an item (including scrollbar area).</short>
<descr>
<p>
<var>Index</var> must be in the range 0 to <var>ItemCount</var> to be considered valid. The result is valid also for the next item, that will be added subsequently.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomListBox.ItemRect.Result">
<short>The item area; all zeroes for an invalid item index.</short>
</element>
<element name="TCustomListBox.ItemRect.Index">
<short>The tentative item index.</short>
</element>
<element name="TCustomListBox.ItemVisible">
<short>Returns True if the item is at least partially visible in the scrollable list.</short>
<descr>
<p>
<var>ItemVisible</var> is a <var>Boolean</var> function used to determine if the item at the position in <var>Index</var> is at least partially visible in the list box control. The return value is <b>False</b> for the following conditions:
</p>
<ul>
<li>Index is out of range for the values in Items.</li>
<li>An item rectangle could not be retrieved from the widgetset class.</li>
<li>
The item rectangle is invalid for the control (where Bottom &lt; 0 or Top &gt; ClientHeight).
</li>
</ul>
<p>
Use <var>ItemFullyVisible</var> to determine if the specified list box item is fully visible in the control.
</p>
</descr>
<seealso>
<link id="TCustomListBox.ItemFullyVisible"/>
</seealso>
</element>
<element name="TCustomListBox.ItemVisible.Result">
<short>True when the specified item is at least partially visible in the control.</short>
</element>
<element name="TCustomListBox.ItemVisible.Index">
<short>Ordinal position for the item examined in the method.</short>
</element>
<element name="TCustomListBox.ItemFullyVisible">
<short>Returns True if the item is fully visible in the scrollable list.</short>
<descr>
<p>
<var>ItemFullyVisible</var> is a <var>Boolean</var> function used to determine the item at the position in <var>Index</var> is fully visible in the list box control. The return value is <b>False</b> under the following conditions:
</p>
<ul>
<li>Index is out of range for the values in Items.</li>
<li>An item rectangle could not be retrieved from the widgetset class.</li>
<li>
The item rectangle is invalid or obscured in the control (where Top &lt; 0 or Bottom &gt; ClientHeight).
</li>
</ul>
<p>
Use <var>ItemVisible</var> to determine if the specified item is at least partially visible in the list box control.
</p>
</descr>
<seealso>
<link id="TCustomListBox.ItemVisible"/>
</seealso>
</element>
<element name="TCustomListBox.ItemFullyVisible.Result">
<short>True when the specified item is fully visible in the list box control.</short>
</element>
<element name="TCustomListBox.ItemFullyVisible.Index">
<short>Ordinal position for the item examined in the method.</short>
</element>
<element name="TCustomListBox.LockSelectionChange">
<short>Blocks selection changes during update to the widgetset class.</short>
<descr>
<p>
Increments the internal counter used to track selection change events. Used in the implementation of the <var>AssignCacheToItemData</var>, <var>InitializeWnd</var>, <var>FinalizeWnd</var>, <var>UpdateSelectionMode</var>, <var>UpdateSorted</var>, and <var>SetItems</var> methods.
</p>
<p>
The value is examined when the <b>LM_SelChange</b> message is handled for the control.
</p>
<p>
<var>UnlockSelectionChange</var> is used to decrement the internal counter.
</p>
</descr>
<seealso>
<link id="TCustomListBox.UnlockSelectionChange"/>
</seealso>
</element>
<element name="TCustomListBox.MakeCurrentVisible">
<short>Makes the item at ItemIndex visible, possibly scrolling the list.</short>
<descr>
<p>
<var>MakeCurrentVisible</var> is a procedure used to ensure that the current item selected in the control is also visible. The current selection is the value in Items stored at the position in ItemIndex. No actions are performed in the method when ItemIndex is out of bounds.
</p>
<p>
MakeCurrentVisible calls <var>ItemFullyVisible</var> to determine if the item at <var>ItemIndex</var> is already visible in the scrollable list. No additional actions are needed in the method when the item is already visible. Otherwise, the value in ItemIndex is assigned to the <var>TopIndex</var> property which causes the selected item to scroll to the top of the visible area in the list box.
</p>
</descr>
<seealso>
<link id="TCustomListBox.ItemIndex"/>
<link id="TCustomListBox.ItemFullyVisible"/>
<link id="TCustomListBox.ItemVisible"/>
<link id="TCustomListBox.TopIndex"/>
<link id="TCustomListBox.Items"/>
</seealso>
</element>
<element name="TCustomListBox.MeasureItem">
<short>Gets the height for an item in the list.</short>
<descr>
<p>
<var>MeasureItem</var> is a procedure used to get the height for an item displayed in the list box control.
</p>
<p>
<var>Integer</var> is the ordinal position in <var>Items</var> for the value measured in the method.
</p>
<p>
<var>TheHeight</var> is a variable parameter which contains the calculated height for the text in the item. The value on entry is the text height for the current font calculated using the <var>Canvas</var> for the control. The value returned in TheHeight is assigned to the <var>ItemHeight</var> property when it is a non-zero value.
</p>
<p>
MeasureItems signals the <var>OnMeasureItem</var> event handler (when assigned) using the arguments passed to the method. An application must implement an object procedure to calculate the height for the requested item using the logic required.
</p>
<p>
MeasureItem is called when the <b>LM_MeasureItem</b> message is handled for the control.
</p>
</descr>
<seealso>
<link id="TCustomListBox.OnMeasureItem"/>
<link id="TCustomListBox.ItemHeight"/>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.Font"/>
<link id="TCustomListBox.Canvas"/>
</seealso>
</element>
<element name="TCustomListBox.MeasureItem.Index">
<short>Ordinal position in Items for the string examined in the method.</short>
</element>
<element name="TCustomListBox.MeasureItem.TheHeight">
<short>The height of the item in pixels, can be changed by the event handler.</short>
</element>
<element name="TCustomListBox.SelectAll">
<short>Selects all items in the list (in ExtendedSelect mode).</short>
<descr>
<p>
<var>SelectAll</var> is a procedure used to mark all of the values defined in the <var>Items</var> property as <var>Selected</var>. No actions are performed in the method when Items is empty (Count is 0). SelectAll calls the <var>SelectRange</var> method to select items at position 0 (zero) through Count-1 (inclusive).
</p>
<p>
Use Selected to change the selection state for an individual item when <var>MultiSelect</var> is enabled. Set <var>ItemIndex</var> to -1 to clear the current selection when MultiSelect is not used.
</p>
</descr>
<seealso>
<link id="TCustomListBox.ExtendedSelect"/>
<link id="TCustomListBox.SelectRange"/>
<link id="TCustomListBox.Count"/>
<link id="TCustomListBox.Selected"/>
<link id="TCustomListBox.MultiSelect"/>
<link id="TCustomListBox.ItemIndex"/>
</seealso>
</element>
<element name="TCustomListBox.SelectRange">
<short>Changes the selection state for a range of Items in the control.</short>
<descr>
<p>
<var>SelectRange</var> is a procedure used to change the selection state for a range of <var>Items</var> in the list box control to the value specified in <var>ASelected</var>.
</p>
<p>
<var>ALow</var> and <var>AHigh</var> contain the ordinal positions in Items affected in the method. ALow must be a positive integer value or zero (<b>0</b>). AHigh must be less than the value in the Count property for Items. When either value is out of range, no actions are performed in the method.
</p>
<p>
When <var>MultiSelect</var> is set to <b>True</b>, the widgetset class is notified of the changes to item selection state and <var>DoSelectionChange</var> is called to trigger the <var>OnSelectionChange</var> event handler (when assigned). No actions are performed in the method when MultiSelect is set to <b>False</b>.
</p>
<p>
SelectRange is similar to the <var>SelectAll</var> method, but limits the affected items to the specified range of values - and only when MultiSelect is enabled.
</p>
<p>
Use <var>SelCount</var> to determine the number of Items selected in the control when MultiSelect is enabled.
</p>
<p>
Use <var>Selected</var> to maintain the selection state for a single entry in the Items property.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.SelectAll"/>
<link id="TCustomListBox.DoSelectionChange"/>
<link id="TCustomListBox.OnSelectionChange"/>
<link id="TCustomListBox.ClickOnSelChange"/>
<link id="TCustomListBox.Selected"/>
<link id="TCustomListBox.SelCount"/>
</seealso>
</element>
<element name="TCustomListBox.SelectRange.ALow">
<short>Ordinal position for the initial item changed in the method.</short>
</element>
<element name="TCustomListBox.SelectRange.AHigh">
<short>Ordinal position for the final item changed in the method.</short>
</element>
<element name="TCustomListBox.SelectRange.ASelected">
<short>True if the items are selected; False when they are unselected.</short>
</element>
<element name="TCustomListBox.DeleteSelected">
<short>Removes one or more selected entries from the Items property.</short>
<descr>
<p>
<var>DeleteSelected</var> is a procedure used to delete one or more entries in the <var>Items</var> property based on their selection state.
</p>
<p>
DeleteSelected uses the value in <var>MultiSelect</var> to determine if multiple values in Items are examined and removed. When MultiSelect is <b>True</b>, the values in Items are visited in reverse order and the Delete method in Items is called if the item is <var>Selected</var>. When MultiSelect is not enabled, the value in the <var>ItemIndex</var> property is used to examine a single entry and remove it when it is Selected.
</p>
<p>
No values are removed from Items when none of the entries in Selected are <b>True</b>.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.Selected"/>
<link id="TCustomListBox.MultiSelect"/>
</seealso>
</element>
<element name="TCustomListBox.UnlockSelectionChange">
<short>Removes a previous selection change lock.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.Align" link="#lcl.controls.TControl.Align"/>
<element name="TCustomListBox.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TCustomListBox.BorderStyle">
<short>Line style used for the border on the control.</short>
<descr>
<p>
Indicates the line style drawn as a border around the control. The default value for the property is bsSingle in TCustomListBox.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.BorderStyle">TWinControl.BorderStyle</link>
</seealso>
</element>
<element name="TCustomListBox.Canvas">
<short>Drawing surface where the control is drawn.</short>
<descr>
<p>
<var>Canvas</var> is a read-only <var>TCanvas</var> property with the drawing surface where the control is drawn.
</p>
<p>
Its value is assigned the constructor for the class instance, and uses a <var>TControlCanvas</var> instance to maintain an association between the control and its device context. It is freed when the control is destroyed.
</p>
<p>
Values in the <var>Font</var> and <var>Brush</var> properties are assigned to Canvas, and used to measure and draw the Items for the control.
</p>
</descr>
<seealso>
<link id="TCustomListBox.DrawItem"/>
<link id="TCustomListBox.MeasureItem"/>
<link id="#lcl.controls.TWinControl.Brush">TWinControl.Brush</link>
<link id="#lcl.controls.TControl.Font">TControl.Font</link>
<link id="#lcl.controls.TControlCanvas">TControlCanvas</link>
<link id="#lcl.graphics.TCanvas">TCanvas</link>
</seealso>
</element>
<element name="TCustomListBox.ClickOnSelChange">
<short>Allows selection changes to generate a Click event.</short>
<descr>
<p>
Delphi generates an <var>OnClick</var> event when the selection changes. The LCL adds a more specific <var>OnSelectionChange</var> event.
</p>
<p>
Set <var>ClickOnSelChange</var> to <b>False</b> when selection changes should be handled by the OnSelectionChange event, and should not generate an OnClick event. Setting ClickOnSelChange to <b>True</b> gives the Delphi compatible behavior. The default value for the property is <b>True</b>.
</p>
</descr>
<seealso>
<link id="TCustomListBox.OnClick"/>
<link id="TCustomListBox.OnSelectionChange"/>
</seealso>
</element>
<element name="TCustomListBox.Columns">
<short>The number of visible vertical columns displayed in the control.</short>
<descr>
<p>
A list box can have multiple columns, as well as multiple rows. When <var>Columns</var> is greater than 0 (zero), it specifies the number of columns that are visible without horizontal scrolling. i. e. the width of a single column becomes Width/Columns. Setting a new value for Columns causes the widgetset class to be notified when a handle has been allocated for the control.
</p>
</descr>
</element>
<element name="TCustomListBox.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TCustomListBox.Count">
<short>The number of items defined in the scrollable list box.</short>
<descr>
<p>
<var>Count</var> is a read-only <var>Integer</var> property which indicates the number of <var>Items</var> defined in the control. Count is provided for Delphi compatibility, and redirects access to the Count property in Items.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
</seealso>
</element>
<element name="TCustomListBox.ExtendedSelect">
<short>
True when a contiguous range of items can be selected by a Shift+Click. Default is True.
</short>
<descr>
<p>
Normally a click into the list selects one item, and deselects all other items.
</p>
<p>
When <var>MultiSelect</var> is <b>True</b>, the user can select/deselect further items with Ctrl+Click.
</p>
<p>
When <var>ExtendedSelect</var> is also <b>True</b>, the user can Shift-click on an item, to select all items between this and the last selected item.
</p>
</descr>
</element>
<element name="TCustomListBox.Font" link="#lcl.controls.TControl.Font"/>
<element name="TCustomListBox.IntegralHeight">
<short>
Not implemented: shrink the Height of the widget, so that it only shows fully visible rows.
</short>
<descr/>
<seealso/>
</element>
<element name="TCustomListBox.ItemHeight">
<short>The default height for an item displayed in the list.</short>
<descr>
<p>
<var>ItemHeight</var> is an <var>Integer</var> property which contains the default height for an item displayed in the list box control. For a list box using the <b>lbStandard</b> <var>Style</var>, the property value is derived using the dimensions in the <var>ItemRect</var> for the item stored at <var>TopIndex</var>. For other styles, the stored property`value is used. Setting a new value for the property causes the <var>RecreateWnd</var> method to be called when a handle has been allocated for the control.
</p>
</descr>
<seealso>
<link id="TCustomListBox.ItemRect"/>
<link id="TCustomListBox.TopIndex"/>
</seealso>
</element>
<element name="TCustomListBox.ItemIndex">
<short>Ordinal position for the currently selected item, -1 if none.</short>
<descr>
<p>
<var>ItemIndex</var> is an <var>Integer</var> property which contains the position for the current selection in the control. If <var>MultiSelect</var> is <b>True</b>, <var>ItemIndex</var> represents the selected item which also has focus. Use the <var>Selected</var> property to access items when MultiSelect is enabled.
</p>
</descr>
<seealso>
<link id="TCustomListBox"/>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.MultiSelect"/>
<link id="TCustomListBox.ExtendedSelect"/>
</seealso>
</element>
<element name="TCustomListBox.Items">
<short>The list of all items defined in the control.</short>
<descr>
<p>
<var>Items</var> is a <var>TStrings</var> property which contains the string values (and associated objects) displayed in the list box control. Reading allows access to the contents of the list (TStrings compatible). Assign another string list to the property to replace the Items in the control. Internally, Items is often cast to a <var>TExtendedStringList</var> to access the item attribute data for the entry.
</p>
<p>
Use <var>ItemIndex</var> to access the selected item in the list box control. Use the <var>Selected</var> property to select or de-select values in Items when <var>MultiSelect</var> is enabled. Use <var>SelectRange</var> to select a range of Items in the control.
</p>
</descr>
<seealso>
<link id="TCustomListBox.ItemIndex"/>
<link id="TCustomListBox.Selected"/>
<link id="TCustomListBox.MultiSelect"/>
<link id="TCustomListBox.SelectRange"/>
<link id="#rtl.classes.TStrings">TStrings</link>
</seealso>
</element>
<element name="TCustomListBox.MultiSelect">
<short>Allows selection of more than one item from the list.</short>
<descr>
<p>
<var>MultiSelect</var> is a <var>Boolean</var> property which indicates if multiple values in <var>Items</var> can be selected using the Ctrl+Click mouse button, or by setting values in the indexed <var>Selected</var> property. When set to <b>True</b>, selection state is determined by reading / writing the cached item data for the Selected items in the widgetset class. When set to <b>False</b>, the value in <var>ItemIndex</var> is used to determine the selected item.
</p>
<p>
The default value for the property is <b>False</b>. Setting a new value for the property causes <var>UpdateSelectionMode</var> to be called to notify the widgetset class of the change.
</p>
</descr>
<seealso>
<link id="TCustomListBox.ExtendedSelect"/>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.ItemIndex"/>
<link id="TCustomListBox.MultiSelect"/>
<link id="TCustomListBox.Selected"/>
<link id="TCustomListBox.SelectRange"/>
<link id="TCustomListBox.DeleteSelected"/>
<link id="TCustomListBox.ClearSelection"/>
</seealso>
</element>
<element name="TCustomListBox.OnChangeBounds" link="#lcl.controls.TControl.OnChangeBounds"/>
<element name="TCustomListBox.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TCustomListBox.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element name="TCustomListBox.OnDrawItem">
<short>Handler for painting of a list item in owner-draw mode.</short>
<descr>
<p>
<var>OnDrawItem</var> is a <var>TDrawItemEvent</var> property with the event handler signalled to render a list item when an owner-drawn method is used in the <var>Style</var> property. OnDrawItem is signalled (when assigned) from the <var>DrawItem</var> method. DrawItem provides the arguments for the event handler.
</p>
<p>
An application should implement an object procedure to respond to the event notification. Use the Canvas for the control to get text metrics or render the control and any graphic images. An internal drawing routine which uses the Font, Color, Layout and Alignment in the control is called when OnDrawItem has not been assigned.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Style"/>
<link id="TCustomListBox.DrawItem"/>
<link id="TCustomListBox.Canvas"/>
<link id="TCustomListBox.Font"/>
<link id="TCustomListBox.Align"/>
<link id="TListBoxStyle"/>
<link id="TDrawItemEvent"/>
<link id="#lcl.controls.TControl.Color">TControl.Color</link>
<link id="#lcl.graphics.TCanvas.TextStyle">TCanvas.TextStyle</link>
<link id="#lcl.graphics.TTextStyle">TTextStyle</link>
</seealso>
</element>
<element name="TCustomListBox.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
<element name="TCustomListBox.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
<element name="TCustomListBox.OnKeyDown" link="#lcl.controls.TWinControl.OnKeyDown"/>
<element name="TCustomListBox.OnKeyPress" link="#lcl.controls.TWinControl.OnKeyPress"/>
<element name="TCustomListBox.OnKeyUp" link="#lcl.controls.TWinControl.OnKeyUp"/>
<element name="TCustomListBox.OnMeasureItem">
<short>Handler invoked when the height for an item is needed.</short>
<descr>
<p>
<var>OnMeasureItem</var> is a <var>TMeasureItemEvent</var> property with the event handler signalled to get the height for specified item in the list box control. OnMeasureItem is signalled (when assigned) from the <var>MeasureItem</var> method, and occurs when the <b>LM_MeasureItem</b> message is handled for the control. MeasureItem provides the arguments passed to the event handler, while the message handler stores the calculated height in <var>ItemHeight</var> when it is not 0 (zero).
</p>
<p>
An application must implement an object procedure to respond to the event notification. <var>Index</var> contains the position in <var>Items</var> with the string to examine in the event handler. On entry, <var>TheHeight</var> contains the text height for the current <var></var>Font calculated using the <var>Canvas</var> in the control. The value in TheHeight can be updated with the value derived in the event handler.
</p>
</descr>
<seealso>
<link id="TCustomListBox.MeasureItem"/>
<link id="TCustomListBox.ItemHeight"/>
<link id="TCustomListBox.Style"/>
<link id="TCustomListBox.Font"/>
<link id="TCustomListBox.Canvas"/>
<link id="TMeasureItemEvent"/>
</seealso>
</element>
<element name="TCustomListBox.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TCustomListBox.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TCustomListBox.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TCustomListBox.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TCustomListBox.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TCustomListBox.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TCustomListBox.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TCustomListBox.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TCustomListBox.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TCustomListBox.OnSelectionChange">
<short>Handler invoked when an item is selected in the control.</short>
<descr>
<p>
<var>OnSelectionChange</var> is a <var>TSelectionChangeEvent</var> property with the event handler signalled when a selection is changed in the list box control. OnSelectionChange is signalled (when assigned) from the <var>DoSelectionChange</var> method, and occurs prior to calling the <var>Click</var> method for the control.
</p>
<p>
The <var>User</var> argument indicates whether the selection change results from user interaction with the control (<b>True</b>), or from code or methods called at run-time (<b>False</b>).
</p>
</descr>
<seealso>
<link id="TCustomListBox.DoSelectionChange"/>
<link id="TCustomListBox.Click"/>
<link id="TCustomListBox.ClickOnSelChange"/>
<link id="TCustomListBox.SelectRange"/>
<link id="TCustomListBox.MultiSelect"/>
</seealso>
</element>
<element name="TCustomListBox.ParentColor">
<short>Use the Color from the Parent control, when enabled.</short>
<descr>
<p>
ParentColor determines if the control should use the Color from the Parent control, when enabled. The default value for the property is False in TCustomListBox.
</p>
<p>
When this property is True, all changes to the Color of the parent will also be applied to the Color of the control, ensuring that they both contain same value. If the Color of the control is changed by the application, then ParentColor will be automatically set to False.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.ParentColor">TControl.ParentColor</link>
</seealso>
</element>
<element name="TCustomListBox.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TCustomListBox.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TCustomListBox.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TCustomListBox.ScrollWidth">
<short>The virtual width of the list box, in pixels.</short>
<descr>
<p>
<var>ScrollWidth</var> is an <var>Integer</var> property with the logical horizontal extent for the list box, or the scrollable area inside the control. When ScrollWidth is set to a value larger than <var>ClientWidth</var>, the horizontal scrollbar is displayed for the control.
</p>
<p>
The value for ScrollWidth is read from the widgetset class (at run-time) when a Handle has been allocated for the control. Changing the value for the property causes the value in the widgetset class to be updated.
</p>
<p>
The default value for the property is <b>0</b> (<b>zero</b>).
</p>
<p>
Use <var>Columns</var> to set the number of adjacent vertical columns used to display the items in the control.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Columns"/>
</seealso>
</element>
<element name="TCustomListBox.SelCount">
<short>The number of selected items in the list.</short>
<descr>
<p>
<var>SelCount</var> is a read-only <var>Integer</var> property which contains the number of <var>Items</var> selected in the list box control. The return value is the result returned by the <var>GetSelCount</var> method in the widgetset class, or 0 (zero) when a handle has not been allocated for the control. SelCount is significant when the <var>MultiSelect</var> property is enabled.
</p>
<p>
Use <var>Selected</var> to read or write the selected state for a single value defined in the Items for the control.
</p>
<p>
Use <var>SelectRange</var> to set the selected state for Items in a specified range of positions.
</p>
<p>
Use <var>SelectAll</var> to select all Items in the control.
</p>
<p>
Use <var>ClearSelection</var> to remove all item selections in the control.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Selected"/>
<link id="TCustomListBox.SelectRange"/>
<link id="TCustomListBox.SelectAll"/>
<link id="TCustomListBox.ClearSelection"/>
<link id="TCustomListBox.MultiSelect"/>
<link id="TCustomListBox.ExtendedSelect"/>
</seealso>
</element>
<element name="TCustomListBox.Selected">
<short>The Selected state for an item in the control.</short>
<descr>
<p>
<var>Selected</var> is an indexed <var>Boolean</var> property used to set the selection state for an item defined in the list box control.
</p>
<p>
The index value is the ordinal position in <var>Items</var> with the selection state value. Read and write access for the property value call the <var>CheckIndex</var> method to verify that the index is in bounds for the defined Items in the control. CheckIndex raises an exception if an index value is not in the required range.
</p>
<p>
Property values are read from the widgetset class when it has been created, or from the cached selection values when it has not. Write access ensures that <var>ItemIndex</var> is updated as needed, and notifies the widgetset class and/or the item selection cache when a value is changed.
</p>
<p>
Use <var>SelectAll</var> to set the selection state for all Items in the control.
</p>
<p>
Use <var>SelectRange</var> to set the selection state for Items in the specified range of positions in the control.
</p>
<p>
Use <var>ClearSelection</var> to reset the selection state for all Items in the list box control.
</p>
</descr>
<seealso>
<link id="TCustomListBox.CheckIndex"/>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.ItemIndex"/>
<link id="TCustomListBox.SelectAll"/>
<link id="TCustomListBox.SelectRange"/>
<link id="TCustomListBox.ClearSelection"/>
</seealso>
</element>
<element name="TCustomListBox.Selected.Index">
<short>Ordinal position in the item list.</short>
</element>
<element name="TCustomListBox.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TCustomListBox.Sorted">
<short>Determines whether the list entries are sorted in alphanumeric order.</short>
<descr>
<p>
<var>Sorted</var> is a <var>Boolean</var> property which determines whether the values in <var>Items</var> are sorted and stored in alphanumeric order in the control.
</p>
<p>
Setting this property to <b>True</b> enables use of ascending alphanumeric case-insensitive sorting of items in the list. When <b>True</b>, new entries are added in sort order, and are not necessarily stored at the end of the list.
</p>
<p>
Setting a new value for the property causes the private <var>UpdateSorted</var> method to be called to notify the widgetset class of the change in order, or to update the <var>Sorted</var> property in <var>Items</var> when needed.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.AddItem"/>
</seealso>
</element>
<element name="TCustomListBox.Style">
<short>Appearance of the list box (normal, owner-draw fixed, or owner-draw variable).</short>
<descr>
<p>
<var>Style</var> is a <var>TListBoxStyle</var> property which controls the appearance of the <var>Items</var> drawn in the list box control. The default value for the property is <var>lbStandard</var>, and causes the appearance and text height native to the widgetset to be used. When another value from TListBoxStyle is used, Items are drawn using the routine assigned to the <var>OnDrawItem</var> event handler.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.ItemHeight"/>
<link id="TCustomListBox.OnDrawItem"/>
<link id="TListBoxStyle"/>
</seealso>
</element>
<element name="TCustomListBox.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TCustomListBox.TabStop">
<short>Enables navigation using the Tab key.</short>
<descr>
<p>
Allows the user to navigate to this control, by pressing the Tab key.
The default value for the property is True in TCustomListBox.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.TabStop"/>
</seealso>
</element>
<element name="TCustomListBox.TopIndex">
<short>Index of the first visible (or top-most) item.</short>
<descr>
<p>
<var>TopIndex</var> is an <var>Integer</var> property which contains the ordinal position in <var>Items</var> for the first visible list item in the scrollable control. The default value for the property is <b>0</b> (the first value in Items).
</p>
<p>
The property value is retrieved from the widgetset class when a handle has been allocated for the control. Setting a new value for the property causes the widgetset class to be notified of the value change when a handle has been allocated for the control.
</p>
<p>
The value in TopIndex is updated in the <var>MakeCurrentVisible</var> method where the current selection in <var>ItemIndex</var> is assigned to the property.
</p>
</descr>
<seealso>
<link id="TCustomListBox.Items"/>
<link id="TCustomListBox.ItemHeight"/>
<link id="TCustomListBox.MakeCurrentVisible"/>
</seealso>
</element>
<element name="TCustomListBox.OnUTF8KeyPress" link="#lcl.controls.TWinControl.OnUTF8KeyPress"/>
<element name="TCustomListBox.Options">
<short>Contains options enabled for the list box control.</short>
<descr>
<p>
<var>Options</var> is a <var>TListBoxOptions</var> property with the options enabled for the list box control. The values in the property are assigned in the <var>Create</var> constructor, and used when the <var>LM_DrawListItem</var> message is handled for the control.
</p>
<p>
The default value for the property is <b>[lboDrawFocusRect]</b>, and draws a focus rectangle for the selected item in the list box.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomListBox.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TListBox">
<short>Control which displays a scrollable list of strings.</short>
<descr>
<p>
The strings are stored in the <var>Items</var> list.
</p>
<p>
At design time, a click on the ellipsis character (<b>...</b>) next to the <var>Items</var> entry in the Object Inspector opens a string-list editor in which the individual text-strings for the list items can be entered or edited. The editor also allows the entries to be sorted alphabetically in normal or reverse order.
</p>
</descr>
<seealso>
<link id="TComboBox"/>
<link id="HowToUseStdCtrls"/>
</seealso>
</element>
<element name="TListBox.Align" link="#lcl.controls.TControl.Align"/>
<element name="TListBox.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TListBox.BidiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TListBox.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TListBox.BorderStyle" link="#lcl.stdctrls.TCustomListBox.BorderStyle"/>
<element name="TListBox.ClickOnSelChange" link="#lcl.stdctrls.TCustomListBox.ClickOnSelChange"/>
<element name="TListBox.Color" link="#lcl.controls.TControl.Color"/>
<element name="TListBox.Columns" link="#lcl.stdctrls.TCustomListBox.Columns"/>
<element name="TListBox.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TListBox.DoubleBuffered" link="#lcl.controls.TWinControl.DoubleBuffered"/>
<element name="TListBox.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TListBox.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TListBox.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TListBox.ExtendedSelect" link="#lcl.stdctrls.TCustomListBox.ExtendedSelect"/>
<element name="TListBox.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TListBox.Font" link="#lcl.controls.TControl.Font"/>
<element name="TListBox.IntegralHeight" link="#lcl.stdctrls.TCustomListBox.IntegralHeight"/>
<element name="TListBox.Items" link="#lcl.stdctrls.TCustomListBox.Items"/>
<element name="TListBox.ItemHeight">
<short>Get or set the height of a single item in the control.</short>
<descr>
<p>
<var>ItemHeight</var> is an <var>Integer</var> property which contains the height used to render the <var>Items</var> in the control.
</p>
<p>
The property value is used when the drawing <var>Style</var> for the control is set to <var>lbStandard</var>, or when the handle has not been allocated for the control. For other drawing styles, the property value is determined using the item rectangle used for the first visible item in the list or by using the <var>OnMeasureItem</var> event handler.
</p>
<p>
Changing the value for the property causes <var>RecreateWnd</var> to be called to re-create the widgetset handle for the control.
</p>
<p>
The value in ItemHeight may be scaled when <var>AutoAdjustLayout</var> is called using a layout policy that includes auto-adjustment for display density.
</p>
</descr>
<seealso>
<link id="TCustomListBox.ItemHeight"/>
</seealso>
</element>
<element name="TListBox.ItemIndex" link="#lcl.stdctrls.TCustomListBox.ItemIndex"/>
<element name="TListBox.MultiSelect" link="#lcl.stdctrls.TCustomListBox.MultiSelect"/>
<element name="TListBox.OnChangeBounds" link="#lcl.controls.TControl.OnChangeBounds"/>
<element name="TListBox.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TListBox.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TListBox.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element name="TListBox.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TListBox.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TListBox.OnDrawItem" link="#lcl.stdctrls.TCustomListBox.OnDrawItem"/>
<element name="TListBox.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
<element name="TListBox.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TListBox.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
<element name="TListBox.OnKeyPress" link="#lcl.controls.TWinControl.OnKeyPress"/>
<element name="TListBox.OnKeyDown" link="#lcl.controls.TWinControl.OnKeyDown"/>
<element name="TListBox.OnKeyUp" link="#lcl.controls.TWinControl.OnKeyUp"/>
<element name="TListBox.OnMeasureItem" link="#lcl.stdctrls.TCustomListBox.OnMeasureItem"/>
<element name="TListBox.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TListBox.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TListBox.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TListBox.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TListBox.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TListBox.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TListBox.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TListBox.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TListBox.OnMouseWheelHorz" link="#lcl.controls.TControl.OnMouseWheelHorz"/>
<element name="TListBox.OnMouseWheelLeft" link="#lcl.controls.TControl.OnMouseWheelLeft"/>
<element name="TListBox.OnMouseWheelRight" link="#lcl.controls.TControl.OnMouseWheelRight"/>
<element name="TListBox.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TListBox.OnSelectionChange" link="#lcl.stdctrls.TCustomListBox.OnSelectionChange"/>
<element name="TListBox.OnShowHint" link="#lcl.controls.TControl.OnShowHint"/>
<element name="TListBox.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TListBox.OnUTF8KeyPress" link="#lcl.controls.TWinControl.OnUTF8KeyPress"/>
<element name="TListBox.Options" link="#lcl.stdctrls.TCustomListBox.Options"/>
<element name="TListBox.ParentBidiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TListBox.ParentColor" link="#lcl.stdctrls.TCustomListBox.ParentColor"/>
<element name="TListBox.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element name="TListBox.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TListBox.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TListBox.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TListBox.ScrollWidth" link="#lcl.stdctrls.TCustomListBox.ScrollWidth"/>
<element name="TListBox.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TListBox.Sorted" link="#lcl.stdctrls.TCustomListBox.Sorted"/>
<element name="TListBox.Style" link="#lcl.stdctrls.TCustomListBox.Style"/>
<element name="TListBox.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TListBox.TabStop" link="#lcl.stdctrls.TCustomListBox.TabStop"/>
<element name="TListBox.TopIndex" link="#lcl.stdctrls.TCustomListBox.TopIndex"/>
<element name="TListBox.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TCustomEdit">
<short>The base class for controls presenting editable text.</short>
<descr>
<p>
<var>TCustomEdit</var> is a <var>TWinControl</var> descendant which implements the base class for an edit control presenting a single line of text. TCustomEdit provides properties, methods, and events needed for common editing features in the control, including:
</p>
<ul>
<li>Text</li>
<li>TextHint</li>
<li>Modified</li>
<li>ReadOnly</li>
<li>MaxLength</li>
<li>Clear</li>
<li>NumbersOnly</li>
<li>CharCase</li>
<li>EchoMode</li>
<li>PasswordChar</li>
<li>AutoSelect</li>
<li>SelectAll</li>
<li>SelStart</li>
<li>SelLength</li>
<li>SelText</li>
<li>HideSelection</li>
<li>ClearSelection</li>
<li>CaretPos</li>
<li>CopyToClipboard</li>
<li>CutToClipboard</li>
<li>PasteFromClipboard</li>
<li>Undo</li>
</ul>
<p>
Do not create instances of TCustomEdit in an application; use one of the descendent classes like <var>TEdit</var>, <var>TLabeledEdit</var>, <var>TMaskEdit</var>, or <var>TMemo</var>.
</p>
</descr>
<seealso>
<link id="TEdit"/>
<link id="TMemo"/>
<link id="#lcl.extctrls.TLabeledEdit">TLabeledEdit</link>
<link id="#lcl.maskedit.TMaskEdit">TMaskEdit</link>
<link id="#lcl.controls.TWinControl">TWinControl</link>
</seealso>
</element>
<element name="TCustomEdit.FAlignment" link="#lcl.stdctrls.TCustomEdit.Alignment"/>
<element name="TCustomEdit.FAutoSelect" link="#lcl.stdctrls.TCustomEdit.AutoSelect"/>
<element name="TCustomEdit.FAutoSelected" link="#lcl.stdctrls.TCustomEdit.AutoSelected"/>
<element name="TCustomEdit.FCharCase" link="#lcl.stdctrls.TCustomEdit.CharCase"/>
<element name="TCustomEdit.fCaretPos" link="#lcl.stdctrls.TCustomEdit.CaretPos"/>
<element name="TCustomEdit.FEchoMode" link="#lcl.stdctrls.TCustomEdit.EchoMode"/>
<element name="TCustomEdit.FEmulatedTextHintStatus">
<short>Status for the emulated TextHint for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomEdit.FHideSelection" link="#lcl.stdctrls.TCustomEdit.HideSelection"/>
<element name="TCustomEdit.FMaxLength" link="#lcl.stdctrls.TCustomEdit.MaxLength"/>
<element name="TCustomEdit.FModified" link="#lcl.stdctrls.TCustomEdit.Modified"/>
<element name="TCustomEdit.FOnChangeHandler" link="#lcl.stdctrls.TCustomEdit.AddHandlerOnChange"/>
<element name="TCustomEdit.FPasswordChar" link="#lcl.stdctrls.TCustomEdit.PasswordChar"/>
<element name="TCustomEdit.FReadOnly" link="#lcl.stdctrls.TCustomEdit.ReadOnly"/>
<element name="TCustomEdit.FNumbersOnly" link="#lcl.stdctrls.TCustomEdit.NumbersOnly"/>
<element name="TCustomEdit.FOnChange" link="#lcl.stdctrls.TCustomEdit.OnChange"/>
<element name="TCustomEdit.FSelLength" link="#lcl.stdctrls.TCustomEdit.SelLength"/>
<element name="TCustomEdit.FSelStart" link="#lcl.stdctrls.TCustomEdit.SelStart"/>
<element name="TCustomEdit.FTextChangedByRealSetText" link="#lcl.stdctrls.TCustomEdit.RealSetText"/>
<element name="TCustomEdit.FTextChangedLock" link="#lcl.stdctrls.TCustomEdit.TextChanged"/>
<element name="TCustomEdit.FTextHint" link="#lcl.stdctrls.TCustomEdit.TextHint"/>
<element name="TCustomEdit.ShowEmulatedTextHintIfYouCan">
<short>Displays an emulated text hint when possible.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomEdit.ShowEmulatedTextHint">
<short>Displays a TextHint using the hint font for the control.</short>
<descr>
<p>
<var>ShowEmulatedTextHint</var> is a method used to display an emulated Text hint using the hint font for the control. Emulated text hints are used for widgetsets that do not natively support the <var>TextHint</var> capability.
</p>
<p>
ShowEmulatedTextHint gets the Hint font for the display by calling <var>CreateEmulatedTextHintFont</var>, and passes the value to the widgetset class. The value in <var>Text</var> is set to the text in the TextHint property. The widgetset class is notified of the property changes, and an internal flag used to track emulated hint display is set to <b>True</b>.
</p>
<p>
The compliment to ShowEmulatedTextHint is <var>HideEmulatedTextHint</var>.
</p>
<p>
ShowEmulatedTextHint is used in the implementation of the private <var>ShowEmulatedTextHintIfYouCan</var> method.
</p>
</descr>
<seealso>
<link id="TCustomEdit.TextHint"/>
<link id="TCustomEdit.HideEmulatedTextHint"/>
<link id="TCustomEdit.Text"/>
<link id="CreateEmulatedTextHintFont"/>
</seealso>
</element>
<element name="TCustomEdit.HideEmulatedTextHint">
<short>
Hides an emulated TextHint display and restores the editing font and PasswordChar in the control.
</short>
<descr/>
<seealso/>
</element>
<element name="TCustomEdit.SetAlignment">
<short>Sets the value for the Alignment property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.Alignment"/>
</seealso>
</element>
<element name="TCustomEdit.SetAlignment.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.GetCanUndo">
<short>Gets the value for the CanUndo property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.CanUndo"/>
</seealso>
</element>
<element name="TCustomEdit.GetCanUndo.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomEdit.GetModified">
<short>Gets the value for the Modified property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.Modified"/>
</seealso>
</element>
<element name="TCustomEdit.GetModified.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomEdit.SetHideSelection">
<short>Sets the value for the HideSelection property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.HideSelection"/>
</seealso>
</element>
<element name="TCustomEdit.SetHideSelection.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.SetMaxLength">
<short>Sets the value for the MaxLength property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.MaxLength"/>
</seealso>
</element>
<element name="TCustomEdit.SetMaxLength.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.SetModified">
<short>Sets the value for the Modified property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.Modified"/>
</seealso>
</element>
<element name="TCustomEdit.SetModified.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.SetPasswordChar">
<short>Sets the value for the PasswordChar property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.PasswordChar"/>
</seealso>
</element>
<element name="TCustomEdit.SetPasswordChar.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TCustomEdit.CanShowEmulatedTextHint">
<short>Indicates if the value in TextHint can be displayed in the edit control.</short>
<descr>
<p>
<var>CanShowEmulatedTextHint</var> is a <var>Boolean</var> function which indicates if the value in TextHint can be emulated for the edit control. The return value is <b>True</b> when the following conditions are met:
</p>
<ul>
<li>A handle has been allocated for the control.</li>
<li>
The widgetset class does <b>NOT</b> include the lcTextHint LCL capability flag (the lack of native widgetset support for the feature is why it's being emulated).
</li>
<li>
ComponentState indicates that the component is not being loaded using LCL streaming, and is not being edited at design-time.
</li>
<li>TextHint is <b>not</b> an empty string ('').</li>
<li>Text <b>is</b> an empty string ('').</li>
<li>The control is not Focused.</li>
</ul>
<p>
CanShowEmulatedTextHint is used in the <var>WMKillFocus</var> method, and when the values in <var>Text</var> or <var>TextHint</var> are applied for the control.
</p>
<remark>
In the current LCL implementation, TextHint display is emulated for all widgetsets except Win32/Win64 (since ComCtIVersionIE6) and QT5.
</remark>
</descr>
<seealso>
<link id="TCustomEdit.Text"/>
<link id="TCustomEdit.TextHint"/>
<link id="#lcl.controls.TWinControl.Focused">TWinControl.Focused</link>
<link id="#rtl.classes.TComponent.ComponentState">TComponent.ComponentState</link>
</seealso>
</element>
<element name="TCustomEdit.CanShowEmulatedTextHint.Result">
<short>True when the emulated text hint can be displayed.</short>
</element>
<element name="TCustomEdit.CalculatePreferredSize">
<short>Gets the preferred size for a new instance of the class.</short>
<descr>
<p>
<var>CalculatePreferredSize</var> is overridden in <var>TCustomEdit</var>, and calls the inherited method on entry. CalculatePreferredSize sets the value in the <var>PreferredWidth</var> parameter to <b>0</b> (<b>zero</b>).
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.CalculatePreferredSize">TWinControl.CalculatePreferredSize</link>
</seealso>
</element>
<element name="TCustomEdit.CalculatePreferredSize.PreferredWidth">
<short>Preferred width calculated for the control.</short>
</element>
<element name="TCustomEdit.CalculatePreferredSize.PreferredHeight">
<short>Preferred height calculated for the control.</short>
</element>
<element name="TCustomEdit.CalculatePreferredSize.WithThemeSpace">
<short>True when space is reserved for theme element details.</short>
</element>
<element name="TCustomEdit.CreateParams">
<short>Ensures the required creation parameters are set for handle creation.</short>
<descr>
<p>
<var>CreateParams</var> is an overridden method used to ensure that the creation parameters for the control are updated to reflect property values in the control instance. CreateParams is called when the handle for the control is create (or re-created).
</p>
<p>
CreateParams calls the inherited method on entry, and updates the Style flags in <var>Params</var> to include values required for the control. The following edit style flags are included in the method:
</p>
<dl>
<dt>ES_AUTOHSCROLL</dt>
<dd>Always included in TCustomEdit.</dd>
<dt>ES_LEFT</dt>
<dd>Included when Alignment contains taLeftJustify.</dd>
<dt>ES_RIGHT</dt>
<dd>Included when Alignment contains taRightJustify.</dd>
<dt>ES_CENTER</dt>
<dd>Included when Alignment contains taCenter.</dd>
<dt>ES_READONLY</dt>
<dd>Included when ReadOnly is set to True.</dd>
<dt>ES_NUMBER</dt>
<dd>Included when NumbersOnly is set to True.</dd>
<dt>ES_NOHIDESEL</dt>
<dd>Included when HideSelection is set to False.</dd>
</dl>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.CreateParams">TWinControl.CreateParams</link>
</seealso>
</element>
<element name="TCustomEdit.CreateParams.Params">
<short>Creation parameters updated in the method.</short>
</element>
<element name="TCustomEdit.InitializeWnd">
<short>Initializes the window handle for the control.</short>
<descr>
<p>
<var>InitializeWnd</var> is an overridden method used to ensure that property values from the class instance are stored in the widgetset class when the handle for the control is created (or re-created). InitializeWnd calls the inherited method on entry.
</p>
<p>
Values in the following properties are posted using methods in the widgetset class:
</p>
<ul>
<li>CharCase</li>
<li>EchoMode</li>
<li>MaxLength</li>
<li>PasswordChar</li>
<li>ReadOnly</li>
<li>Alignment</li>
<li>CaretPos</li>
<li>SelStart</li>
<li>SelLength</li>
<li>TextHint</li>
</ul>
<p>
The ShowEmulatedTextHintIfYouCan method is called when inline hints are emulated for the widgetset.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.InitializeWnd">TWinControl.InitializeWnd</link>
</seealso>
</element>
<element name="TCustomEdit.TextChanged">
<short>Applies case conversion (if needed), and updates the editing cursor selection text.</short>
<descr>
<p>
<var>TextChanged</var> is a an overridden method used to perform actions needed when the <b>CM_TEXTCHANGED</b> message is handled for the control. No actions are performed in the method when a previous call to TextChanged has not been completed.
</p>
<p>
TextChanged uses the value in <var>CharCase</var> to determine if case conversion is applied to the value in Text. When CharCase contains <var>ecUpperCase</var> or <var>ecLowerCase</var>, the corresponding UTF-8 conversion routine is called. When Text is modified in the method, the values in <var>CaretPos</var>, <var>SelStart</var>, and <var>SelLength</var> are re-applied to the control. At run-time, the value in <var>Modified</var> is set to <b>True</b> when Text has been changed in the method.
</p>
</descr>
<seealso>
<link id="TCustomEdit.CharCase"/>
<link id="TCustomEdit.Text"/>
<link id="TCustomEdit.CaretPos"/>
<link id="TCustomEdit.SelStart"/>
<link id="TCustomEdit.SelLength"/>
<link id="TCustomEdit.Modified"/>
<link id="TCustomEdit.RealSetText"/>
<link id="#lazutils.lazutf8.UTF8UpperCase">UTF8UpperCase</link>
<link id="#lazutils.lazutf8.UTF8LowerCase">UTF8LowerCase</link>
<link id="#lcl.controls.TControl.TextChanged">TControl.TextChanged</link>
</seealso>
</element>
<element name="TCustomEdit.FontChanged">
<short>Handles changes to the font used in the control.</short>
<descr>
<p>
<var>FontChanged</var> is an overridden method in <var>TCustomEdit</var>. It ensures that the <var>Font</var> used for an emulated <var>TextHint</var> display is (re-)created when visible by calling <var>CreateEmulatedTextHintFont</var>.
</p>
<p>
FontChanged calls the inherited method to set flags in the control, and to perform notifications of the changed value to any child controls. The hint font is freed when the inherited method is completed.
</p>
<p>
FontChanged is assigned as the <var>OnChange</var> event handler for the <var>TFont</var> class instance in the Font property.
</p>
</descr>
<seealso>
<link id="TCustomEdit.TextHint"/>
<link id="#lcl.controls.TWinControl.FontChanged">TWinControl.FontChanged</link>
<link id="#lcl.controls.TControl.Font">TControl.Font</link>
<link id="CreateEmulatedTextHintFont"/>
</seealso>
</element>
<element name="TCustomEdit.FontChanged.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TCustomEdit.Change">
<short>Performs actions needed when the text in the control is changed.</short>
<descr>
<p>
<var>Change</var> is a procedure used to perform actions need when the <b>CM_CHANGED</b> message is handled in the control. Change calls the inherited <var>Changed</var> method, and signals the <var>OnChange</var> and/or the internal FOnChangeHandler event handlers (when assigned).
</p>
<p>
Change is called from the <var>TextChanged</var> method after case conversion and updates to the editing cursor and text selection.
</p>
</descr>
<seealso>
<link id="TCustomEdit.OnChange"/>
<link id="TCustomEdit.TextChanged"/>
<link id="#lcl.controls.TControl.Changed">TControl.Changed</link>
</seealso>
</element>
<element name="TCustomEdit.DoEnter" >
<short>
Signals the OnEnter event handler, and selects the entire text when AutoSelect is True.
</short>
<descr>
<p>
This special handling is required when the control is entered using keystrokes (keyboard navigation), and not by a mouse click.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.DoEnter">TWinControl.DoEnter</link>
</seealso>
</element>
<element name="TCustomEdit.DoExit">
<short>Clear the value in AutoSelected when the control loses focus.</short>
<descr/>
<seealso>
<link id="#LCL.Controls.TWinControl.DoExit">TWinControl.DoExit</link>
</seealso>
</element>
<element name="TCustomEdit.EditingDone">
<short>Enforces the setting in the ReadOnly property when editing is finished in the control.</short>
<descr>
<p>
<var>EditingDone</var> is an overridden method in <var>TCustomEdit</var>. It ensures that the inherited method is <b>NOT</b> called when the value in <var>ReadOnly</var> is <b>True</b>. EditingDone is called from the <var>KeyUpAfterInterface</var> method when the <var>VK_RETURN</var> key code is handled.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.EditingDone">TControl.EditingDone</link>
</seealso>
</element>
<element name="TCustomEdit.GetCaretPos">
<short>Gets the value for the CaretPos property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.CaretPos"/>
</seealso>
</element>
<element name="TCustomEdit.GetCaretPos.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomEdit.GetNumbersOnly">
<short>Gets the value for the NumbersOnly property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.NumbersOnly"/>
</seealso>
</element>
<element name="TCustomEdit.GetNumbersOnly.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomEdit.GetReadOnly">
<short>Gets the value for the ReadOnly property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.ReadOnly"/>
</seealso>
</element>
<element name="TCustomEdit.GetReadOnly.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomEdit.GetSelLength">
<short>Gets the value for the SelLength property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.SelLength"/>
</seealso>
</element>
<element name="TCustomEdit.GetSelLength.Result">
<short>The number of selected UTF-8 characters in the control.</short>
</element>
<element name="TCustomEdit.GetSelStart">
<short>Gets the value for the SelStart property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.SelStart"/>
</seealso>
</element>
<element name="TCustomEdit.GetSelStart.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomEdit.GetSelText">
<short>Gets the value for the SelText property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.SelText"/>
</seealso>
</element>
<element name="TCustomEdit.GetSelText.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomEdit.GetTextHint">
<short>Gets the value for the TextHint property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.TextHint"/>
</seealso>
</element>
<element name="TCustomEdit.GetTextHint.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomEdit.SetCaretPos">
<short>Sets the value for the CaretPos property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.CaretPos"/>
</seealso>
</element>
<element name="TCustomEdit.SetCaretPos.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.SetCharCase">
<short>Sets the value for the CharCase property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.CharCase"/>
</seealso>
</element>
<element name="TCustomEdit.SetCharCase.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.SetEchoMode">
<short>Sets the value for the EchoMode property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.EchoMode"/>
</seealso>
</element>
<element name="TCustomEdit.SetEchoMode.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.SetNumbersOnly">
<short>Sets the value for the NumbersOnly property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.NumbersOnly"/>
</seealso>
</element>
<element name="TCustomEdit.SetNumbersOnly.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.SetReadOnly">
<short>Sets the value for the ReadOnly property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.ReadOnly"/>
</seealso>
</element>
<element name="TCustomEdit.SetReadOnly.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.SetSelLength">
<short>Sets the value for the SelLength property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.SelLength"/>
</seealso>
</element>
<element name="TCustomEdit.SetSelLength.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.SetSelStart">
<short>Sets the value for the SelStart property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.SelStart"/>
</seealso>
</element>
<element name="TCustomEdit.SetSelStart.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.SetSelText">
<short>Sets the value for the SelText property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.SelText"/>
</seealso>
</element>
<element name="TCustomEdit.SetSelText.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.SetTextHint">
<short>Sets the value for the TextHint property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.TextHint"/>
</seealso>
</element>
<element name="TCustomEdit.SetTextHint.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomEdit.ChildClassAllowed">
<short>Indicates whether child controls using the specified class are allowed.</short>
<descr>
<p>
<var>ChildClassAllowed</var> is overridden in <var>TCustomEdit</var> to use the widgetset class to determine whether child controls can be embedded within the control. The return value is <b>True</b> when the <var>GetLCLCapability</var> method in the widgetset class returns <var>LCL_CAPABILITY_YES</var> for the lcAllowChildControlsInNativeControls query.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.ChildClassAllowed">TWinControl.ChildClassAllowed</link>
</seealso>
</element>
<element name="TCustomEdit.ChildClassAllowed.Result">
<short>True if a child control using the specified class type are allowed for the control.</short>
</element>
<element name="TCustomEdit.ChildClassAllowed.ChildClass">
<short>Class type for the child control.</short>
</element>
<element name="TCustomEdit.GetControlClassDefaultSize" link="#lcl.controls.TControl.GetControlClassDefaultSize"/>
<element name="TCustomEdit.MouseUp">
<short>Handles mouse up events for the control.</short>
<descr>
<p>
Selects all of the Text in the control when a left mouse button event occurs in the focused control and AutoSelect is set to True.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.MouseUp">TControl.MouseUp</link>
</seealso>
</element>
<element name="TCustomEdit.MouseUp.Button">
<short>Mouse button examined in the method.</short>
</element>
<element name="TCustomEdit.MouseUp.Shift">
<short>Shift / Ctrl / Alt modifier for the mouse event.</short>
</element>
<element name="TCustomEdit.MouseUp.X">
<short>Horizontal screen coordinate for the mouse event.</short>
</element>
<element name="TCustomEdit.MouseUp.Y">
<short>Vertical screen coordinate for the mouse event.</short>
</element>
<element name="TCustomEdit.RealGetText">
<short>Uses the TextHint display status when getting the value for Text.</short>
<descr>
<p>
<var>RealGetText</var> is an overridden method in <var>TCustomEdit</var>. It ensures that an emulated <var>TextHint</var> display status is considered when getting the value for the <var>Text</var> property. In other words, the inherited method is <b>not</b> called when the TextHint display is visible. The return value is an empty string (<b>''</b>) in this case.
</p>
</descr>
<seealso>
<link id="TCustomEdit.Text"/>
<link id="TCustomEdit.TextHint"/>
<link id="#lcl.controls.TControl.RealGetText">TControl.RealGetText</link>
</seealso>
</element>
<element name="TCustomEdit.RealGetText.Result">
<short>Value used for the Text property.</short>
</element>
<element name="TCustomEdit.RealSetText">
<short>Updates Modified and the TextHint display when storing the new Text value.</short>
<descr>
<p>
<var>RealSetText</var> is an overridden method in <var>TCustomEdit</var>. It ensures that the value in <var>Modified</var> is updated when a new value in <var>Text</var> is applied to the <var>Caption</var> for the control. It also hides the <var>TextHint</var> display when the new value is not an empty string (<b>''</b>) by calling <var>HideEmulatedTextHint</var>.
</p>
<p>
RealSetText calls the inherited method to store the Text value, and to adjust the control size when needed.
</p>
<p>
The TextHint is re-displayed when it is hidden and <var>CanShowEmulatedTextHint</var> returns <b>True</b>.
</p>
</descr>
<seealso>
<link id="TCustomEdit.CanShowEmulatedTextHint"/>
<link id="TCustomEdit.Modified"/>
<link id="TCustomEdit.Text"/>
<link id="TCustomEdit.TextHint"/>
<link id="#lcl.controls.TWinControl.RealSetText">TWinControl.RealSetText</link>
<link id="#lcl.controls.TControl.Caption">TControl.Caption</link>
</seealso>
</element>
<element name="TCustomEdit.RealSetText.AValue">
<short>New value stored as the text/caption for the control.</short>
</element>
<element name="TCustomEdit.KeyUpAfterInterface">
<short>Handles Key Up events forwarded from the LCL interface.</short>
<descr>
<p>
<var>KeyUpAfterInterface</var> handles the <var>VK_RETURN</var> key code for the control. It calls <var>EditingDone</var> to signal the <var>OnEditingDone</var> event handler (when assigned). When <var>AutoSelect</var> is set to <b>True</b>, the <var>SelectAll</var> method is called to select all of the <var>Text</var> in the control. <var>AutoSelected</var> is updated to reflect the action.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.KeyUpAfterInterface">TWinControl.KeyUpAfterInterface</link>
</seealso>
</element>
<element name="TCustomEdit.KeyUpAfterInterface.Key">
<short>Virtual key code examined in the method.</short>
</element>
<element name="TCustomEdit.KeyUpAfterInterface.Shift">
<short>Shift, Ctrl, or Alt modifier for the key code.</short>
</element>
<element name="TCustomEdit.WMChar">
<short>Handles a WM_CHAR window message for the control.</short>
<descr>
<p>
Prevents keystrokes for normal characters from acting as accelerator keys. When the Shift state in Message contains ssCtrl or ssAlt, the inherited method is called to handle the WM_CHAR message.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.WMChar">TWinControl.WMChar</link>
</seealso>
</element>
<element name="TCustomEdit.WMChar.Message">
<short>Window message examined in the method.</short>
</element>
<element name="TCustomEdit.CMWantSpecialKey">
<short>Handles the CM_WANTSPECIALKEY message for the control.</short>
<descr>
<p>
For the Darwin platform/widgetset, the LCL must be prevented from handling the arrow (cursor) keys VK_LEFT, VK_RIGHT, VK_UP, and VK_DOWN. The Result in Message is set to 1 to indicate that these keys have already been handled.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomEdit.CMWantSpecialKey.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomEdit.WndProc">
<short>Suppresses the CM_CHANGED control message when an emulated TextHint is visible.</short>
<descr>
<p>
<var>WndProc</var> is an overridden method in <var>TCustomEdit</var>. It ensures that the <b>CM_CHANGED</b> message is suppressed when an emulated <var>TextHint</var> is visible for the control. Otherwise, the inherited method is called to dispatch the control <var>Message</var>.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.WndProc">TWinControl.WndProc</link>
</seealso>
</element>
<element name="TCustomEdit.WndProc.Message">
<short>Message examined and handled for the control.</short>
</element>
<element name="TCustomEdit.ShouldAutoAdjust">
<short>Determines if the control should auto-adjust its Height and/or Width.</short>
<descr>
<p>
<var>ShouldAutoAdjust</var> is an overridden method in <var>TCustomEdit</var> used to determine if the control can auto-adjust its Height and/or Width.
</p>
<p>
<var>AWidth</var> and <var>AHeight</var> are variable Boolean parameters which indicate if the corresponding property can be auto-sized. AWidth is always set to True for TCustomEdit. AHeight is set to the inverse of the value in <var>AutoSize</var>.
</p>
<p>
ShouldAutoAdjust does <b>NOT</b> call the inherited method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.ShouldAutoAdjust">TControl.ShouldAutoAdjust</link>
</seealso>
</element>
<element name="TCustomEdit.ShouldAutoAdjust.AWidth">
<short>True when Width can be auto-adjusted.</short>
</element>
<element name="TCustomEdit.ShouldAutoAdjust.AHeight">
<short>True when Height can be auto-adjusted.</short>
</element>
<element name="TCustomEdit.WMSetFocus">
<short>Handles the LM_SETFOCUS message for the control.</short>
<descr>
<p>
<var>WMSetFocus</var> is an overridden method in <var>TCustomEdit</var>. It is used to hide a visible emulated <var>TextHint</var> display when the control is focused. Calls <var>HideEmulatedTextHint</var> to remove the TextHint display. Calls the inherited method prior to exit.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.WMSetFocus">TWinControl.WMSetFocus</link>
</seealso>
</element>
<element name="TCustomEdit.WMSetFocus.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomEdit.WMKillFocus">
<short>Handles the LM_KILLFOCUS message for the control.</short>
<descr>
<p>
Calls the inherited WMKillFocus method on entry to perform the EditingDone method when the parent form is Active. Ensures that an emulated TextHint is displayed when needed and allowed.
</p>
</descr>
<seealso>
<link id="TCustomEdit.CanShowEmulatedTextHint"/>
<link id="TCustomEdit.TextHint"/>
<link id="TCustomEdit.EditingDone"/>
<link id="#lcl.controls.TWinControl.WMKillFocus">TWinControl.WMKillFocus</link>
</seealso>
</element>
<element name="TCustomEdit.WMKillFocus.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomEdit.AutoSelect">
<short>Enables auto-selection of text when focused.</short>
<descr>
<p>
<var>AutoSelect</var> is a <var>Boolean</var> property which enables or disables auto-selection of text when the control receives focus. If <b>True</b>, the edit control will select all its text when it receives focus or when the Enter key is pressed. The default value for the property is <b>True</b>.
</p>
<p>
AutoSelect is used in the KeyUpAfterInterface method, and determines if the SelectAll method is called when editing is completed in the control. It is used in MouseUp to determine if SelectAll is called when the Left mouse button is clicked. It is also used in DoEnter to determine if SelectAll is called when the Enter key is pressed.
</p>
</descr>
<seealso>
<link id="TCustomEdit.SelectAll"/>
<link id="TCustomEdit.AutoSelected"/>
<link id="TCustomEdit.KeyUpAfterInterface"/>
<link id="TCustomEdit.MouseUp"/>
<link id="TCustomEdit.DoEnter"/>
</seealso>
</element>
<element name="TCustomEdit.AutoSelected">
<short>Set to True when the text selection was made automatically.</short>
<descr>
<p>
<var>AutoSelected</var> is a <var>Boolean</var> property which indicates if the text selection in the control was made automatically after handling key press or mouse events.
</p>
<p>
AutoSelected is used in conjunction with the <var>AutoSelect</var> property which enables the capability. AutoSelected is not set to <b>True</b> when AutoSelect has not been enabled. AutoSelect is enabled by default in <var>TCustomEdit</var>.
</p>
<p>
AutoSelected is updated when the <b>Enter</b> (<b>^M</b>) key is handled for the control, or when a left mouse up event is handled for an already focused control. When AutoSelect is set to <b>True</b>, the <var>SelectAll</var> method is called to select all of the the text in the control. AutoSelected is set to <b>True</b> when <var>SelText</var> has the same value as the <var>Text</var> property.
</p>
<p>
AutoSelected is set to <b>False</b> when focus leaves the control.
</p>
</descr>
<seealso>
<link id="TCustomEdit.AutoSelect"/>
<link id="TCustomEdit.SelectAll"/>
<link id="TCustomEdit.SelText"/>
<link id="TCustomEdit.KeyUpAfterInterface"/>
<link id="TCustomEdit.MouseUp"/>
<link id="TCustomEdit.DoEnter"/>
<link id="TCustomEdit.DoExit"/>
</seealso>
</element>
<element name="TCustomEdit.ParentColor">
<short>Uses the Color from the Parent control, when enabled.</short>
<descr>
<p>
ParentColor determines if the control should use the Color from the Parent control, when enabled. The default value is False in TCustomEdit.
</p>
<p>
When this property is True, all changes to the Color of the parent will also be applied to the Color of the control, ensuring that they both contain same value. If the Color of the control is changed by the application, then ParentColor will be automatically set to False.
</p>
<p>
Using ParentColor when the Color value is clDefault can cause problems in resolving the actual color value. To obtain the Color property of a control while taking into account clDefault and ParentColor, use the GetColorResolvingParent method. This method might return a non-RGB color, but will never return clDefault. To obtain a purely RGB result use the GetRGBColorResolvingParent method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.ParentColor">TControl.ParentColor</link>
<link id="#lcl.controls.TControl.Color">TControl.Color</link>
<link id="#lcl.controls.TControl.GetColorResolvingParent">TControl.GetColorResolvingParent</link>
<link id="#lcl.controls.TControl.GetRGBColorResolvingParent">TControl.GetRGBColorResolvingParent</link>
</seealso>
</element>
<element name="TCustomEdit.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 constructor on entry. Create ensures that values in the component and <var>ControlStyle</var> properties are set for the control. ControlStyle excludes the value csCaptureMouse and includes the value csRequiresKeyboardInput.
</p>
<p>
Create sets the default values for properties, including: <var>MaxLength, HideSelection, ParentColor, TabStop, EchoMode, BorderStyle, AutoSelect, AutoSelected,</var> and <var>TextHint</var>.
</p>
</descr>
<seealso>
</seealso></element>
<element name="TCustomEdit.Create.AOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TCustomEdit.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 for the internal change handler are freed, and calls the inherited destructor prior to exit.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomEdit.Clear">
<short>Deletes all text in the edit box for the control.</short>
<descr>
<p>
<var>Clear</var> is a procedure used to remove the text in the control. Clear sets the value in <var>Text</var> to an empty string (<b>''</b>).
</p>
</descr>
<seealso>
<link id="TCustomEdit.Text"/>
</seealso>
</element>
<element name="TCustomEdit.SelectAll">
<short>Selects the entire text in the edit control.</short>
<descr>
<p>
<var>SelectAll</var> is a procedure used to select all of the text content in the edit box for the control.
</p>
<p>
SelectAll checks the value in <var>Text</var> to ensure that content is available for the selection. No actions are performed in the method when Text is an empty string (<b>''</b>).
</p>
<p>
When Text is not empty, the values in <var>SelStart</var> and <var>SelLength</var> are updated to use the content in Text starting at the first UTF-8-encoded character. UTF8Length is called to get the length for Text, and the value stored in SelLength.
</p>
</descr>
<seealso>
<link id="TCustomEdit.Text"/>
<link id="TCustomEdit.SelStart"/>
<link id="TCustomEdit.SelLength"/>
<link id="TCustomEdit.SelText"/>
</seealso>
</element>
<element name="TCustomEdit.ClearSelection">
<short>Clears the current text selection in the edit control.</short>
<descr>
<p>
<var>ClearSelection</var> is a procedure used to clear the currently selected text in the edit control. ClearSelection sets the value in <var>SelText</var> to an empty string ('') to discard selected value in the edit control. It does <b>not</b> affect the values in the <var>Text</var> property.
</p>
<p>
No actions are performed in the method when <var>SelLength</var> contains <b>0</b> (<b>zero</b>).
</p>
<p>
Use <var>HideSelection</var> to disable text selection in the edit control.
</p>
</descr>
<seealso>
<link id='TCustomEdit.SelText'/>
<link id='TCustomEdit.SelStart'/>
<link id='TCustomEdit.SelLength'/>
<link id='TCustomEdit.HideSelection'/>
</seealso>
</element>
<element name="TCustomEdit.CopyToClipboard">
<short>Copies the selected text in the control to the clipboard.</short>
<descr>
<p>
<var>CopyToClipboard</var> is a procedure used to copy the selected text in the control to the clipboard. CopyToClipboard is performed for selected text when the <b>Ctrl+C</b> or <b>Ctrl+Insert</b> key combination is handled for the edit control. <b>Meta+C</b> or <b>Meta+Insert</b> is used for MacOS. No actions are performed when text is not selected in the control.
</p>
<p>
CopyToClipboard calls the <var>Copy</var> method in the widgetset class when a handle has been allocated for the control.
</p>
<p>
Use <var>CutToClipboard</var> to copy the selected text to the clipboard, and delete it from the text in the edit control.
</p>
<p>
Use <var>PasteFromClipboard</var> to insert the contents of the clipboard into the text for the edit control.
</p>
<p>
Use <var>Undo</var> to revert the last editing action performed in the control.
</p>
</descr>
<seealso>
<link id="TCustomEdit.CutToClipboard"/>
<link id="TCustomEdit.PasteFromClipboard"/>
</seealso>
</element>
<element name="TCustomEdit.CutToClipboard">
<short>Moves the selected text into the clipboard (removes it from the control).</short>
<descr>
<p>
<var>CutToClipboard</var> is a method used to move the current text selection in the control to the clipboard. The selected value is removed from the Text in the control.
</p>
<p>
CutToClipboard is performed when the <b>Ctrl+X</b> or <b>Shift+Delete</b> key combination is handled in the control (MacOS uses <b>Meta+X</b> or <b>Shift+Delete</b>). Pressing <b>Shift+Delete</b> when text is not selected (<var>SelLength</var> is 0) causes the the character prior to the editing cursor to be deleted but not copied to the clipboard. No actions are performed if the editing cursor is positioned before the first character in the Text for the control.
</p>
<p>
CutToClipboard calls the <var>Cut</var> method in the widgetset class when its handle has been allocated.
</p>
<p>
Use <var>CopyToClipboard</var> to copy the current text selection in the control to the clipboard.
</p>
<p>
Use <var>PasteFromClipboard</var> to insert the contents of the clipboard at the current position in the edit control.
</p>
<p>
Use <var>Undo</var> to revert the last editing action performed in the control.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomEdit.PasteFromClipboard">
<short>Inserts text from the clipboard at the current position in the control.</short>
<descr>
<p>
<var>PasteFromClipboard</var> is a method used to insert the contents of the clipboard at the current position in the edit control. If Text is selected in the control, the SelText is replaced with the clipboard content. When SelLength is 0, the clipboard values are inserted at the position for the editing cursor.
</p>
<p>
PasteFromClipboard is performed when the <b>Ctrl+V</b> or <b>Shift+Insert</b> key combination is handled for the control (MacOS uses <b>Meta+V</b> or <b>Shift+Insert</b>).
</p>
<p>
PasteFromClipboard calls the <var>Paste</var> method in the widgetset class when its handle has been allocated.
</p>
<p>
Use <var>CopyToClipboard</var> to copy the current text selection in the control to the clipboard.
</p>
<p>
Use <var>CutToClipboard</var> to copy the selected text to the clipboard, and delete it from the text in the edit control.
</p>
<p>
Use <var>Undo</var> to revert the last editing action performed in the control.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomEdit.Undo">
<short>Reverts the last editing action in the control.</short>
<descr>
<p>
<var>Undo</var> is a method used to revert the last editing action performed in the control. Undo is performed when the <b>Ctrl+Z</b> (or <b>Meta+Z</b> on MacOS) key combination is handled for the control. Pressing <b>Ctrl+Z</b> causes the value in Text to revert to its value before editing. A subsequent <b>Ctrl+Z</b> key press causes the edited value to be toggled.
</p>
<p>
Undo calls the <var>Undo</var> method in the widgetset class when its handle has been allocated.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomEdit.RemoveAllHandlersOfObject">
<short>Removes all event handlers assigned for the specified object.</short>
<descr>
<p>
<var>RemoveAllHandlersOfObject</var> is an overridden method in TCustomEdit, and calls the inherited method on entry to remove handlers for the specified object.
</p>
<p>
RemoveAllHandlersOfObject uses the internal <var>TMethodList</var> instance (when assigned) and calls its RemoveAllMethodsOfObject method to remove entries where the <var>TMethod</var> data points to the object specified in AnObject.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.RemoveAllHandlersOfObject">TControl.RemoveAllHandlersOfObject</link>
</seealso>
</element>
<element name="TCustomEdit.RemoveAllHandlersOfObject.AnObject">
<short>Object instance to remove for the list of handlers in the control.</short>
</element>
<element name="TCustomEdit.AddHandlerOnChange">
<short>Adds the specified OnChange event handler to the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomEdit.AddHandlerOnChange.AnOnChangeEvent">
<short>Event handler added in the method.</short>
</element>
<element name="TCustomEdit.AddHandlerOnChange.AsFirst">
<short>True if the handler is stored at the top of the method list for the handler type.</short>
</element>
<element name="TCustomEdit.RemoveHandlerOnChange">
<short>Removes the specified OnChange event handler for the list of handlers in the control.</short>
<descr>
<p>
<var>RemoveHandlerOnChange</var> is a method used to remove the event handler specified in <var>AnOnChangeEvent</var> from the list of <var>OnChange</var> handlers for the control. AnOnChangeEvent is a <var>TNotifyEvent</var> instance, and it is used to locate and remove the <var>TMethod</var> entry registered for the handler. RemoveHandlerOnChange reverses the actions performed in <var>AddHandlerOnChange</var>, called when an OnChange event handler is assigned to the control.
</p>
<p>
No actions are performed in the method when the internal OnChange method list has not been assigned (contains <b>Nil</b>).
</p>
</descr>
<seealso>
<link id="#lazutils.lazmethodlist.TMethodList">TMethodList</link>
<link id="#lazutils.lazmethodlist.TMethodList.Remove">TMethodList.Remove</link>
<link id="#rtl.system.TMethod">TMethod</link>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>
<element name="TCustomEdit.RemoveHandlerOnChange.AnOnChangeEvent">
<short>Event handler removed from the list of handlers in the control.</short>
</element>
<element name="TCustomEdit.Alignment">
<short>The horizontal alignment for the text in the control (left, right, or centered).</short>
<descr>
<p>
<var>Alignment</var> is a <var>TAlignment</var> property which controls the horizontal alignment of text in the control. The default value for the property is taLeftJustify. See <link id="#rtl.classes.TAlignment">TAlignment</link> for more information about the enumeration values and their meanings.
</p>
<p>
Alignment is used in <var>CreateParams</var> when alignment style flags are added to the creation parameters for the method. The value is also passed to the widgetset class then the handle is created (or re-created) for the class instance. Changing the value in the property causes the widgetset class to be notified when a handle has been allocated for the control.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomEdit.AutoSize">
<short>
Allows automatic adjustment of the size for the control, according to its content.
</short>
<descr>
<p>
The action performed depends on the control type. For example, a label or button can become bigger or smaller to accommodate a longer or shorter caption. The default value for the property is True in TCustomEdit. and enables auto-sizing the control instance to its content.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.AutoSize">TControl.AutoSize</link>
</seealso>
</element>
<element name="TCustomEdit.BorderStyle">
<short>Indicates the line style drawn as a border around the control.</short>
<descr>
<p>
The default value for the property is bsSingle in TCustomEdit.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.BorderStyle">TWinControl.BorderStyle</link>
</seealso>
</element>
<element name="TCustomEdit.CanUndo">
<short>Indicates whether the last change can be reverted in the control.</short>
<descr>
<p>
<var>CanUndo</var> is a read-only <var>Boolean</var> property which indicates whether the last editing change can be reverted in the control using the Undo method.
</p>
<p>
The property value is <b>False</b> if a handle has not been allocated for the widgetset class. Otherwise, the property value is determined by calling the <var>GetCanUndo</var> method in the widgetset class.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomEdit.CaretPos">
<short>The position of the editing cursor in the control.</short>
<descr>
<p>
CaretPos is a TPoint property which contains the coordinates for the caret (or editing cursor) in the control. The coordinates reflects logical (UTF-8) characters and lines.
</p>
<dl>
<dt>TPoint.X</dt>
<dd>
Contains the zero-based offset into the UTF-8-encoded characters in the control Text. Position 0 is immediately prior to the first UTF-8 character in Text. If there is selected text in the control, the caret is considered to be positioned right <b>after</b> the last selected character. Character positions are independent of the LTR/RTL BiDi-ness for the control.
</dd>
<dt>TPoint.Y</dt>
<dd>
Contains the zero-based relative line number for the editing cursor. For single-line edits the value is normally 0.
</dd>
</dl>
<p>
The value in CaretPos is updated by the widgetset class when key and selection control messages are handled.
</p>
</descr>
</element>
<element name="TCustomEdit.CharCase">
<short>Allows to force the text into all upper or lower case.</short>
<descr>
<p>The following conversions can be specified:</p>
<ul>
<li>Unchanged</li>
<li>All upper case letters</li>
<li>All lower case letters</li>
</ul>
<remark>Conversions apply to the entire text, and <b>cannot</b> be reverted.</remark>
</descr>
</element>
<element name="TCustomEdit.EchoMode">
<short>Allows to modify the text display, useful for entering passwords.</short>
<descr>
<p>
The following conversions can be specified:
</p>
<dl>
<dt>emNormal</dt>
<dd>No changes are performed.</dd>
<dt>emNone</dt>
<dd>Spaces are echoed instead for the control value.</dd>
<dt>emPassword</dt>
<dd>The value in PasswordChar is echoed.</dd>
</dl>
<remark>Conversions apply to the entire text, and <b>cannot</b> be reverted.</remark>
</descr>
</element>
<element name="TCustomEdit.EmulatedTextHintStatus">
<short>Status for the emulated TextHint in the control.</short>
<descr>
<p>
<var>EmulatedTextHintStatus</var> is a read-only <var>TEmulatedTextHintStatus</var> property which contains the status value for an emulated TextHint display in the control. EmulatedTextHintStatus is used when a value has been assigned to the <var>TextHint</var> property and the widgetset does not natively implement the capability. The LCL emulates the TextHint display by assigning the value in TextHint to the <var>Text</var> for the control.
</p>
<p>
EmulatedTextHintStatus is updated in the <var>ShowEmulatedTextHint</var> and <var>HideEmulatedTextHint</var> methods.
</p>
</descr>
<seealso>
<link id="TEmulatedTextHintStatus"/>
<link id="TCustomEdit.TextHint"/>
<link id="TCustomEdit.Text"/>
</seealso>
</element>
<element name="TCustomEdit.HideSelection">
<short>Determines if selected text to be hidden when the control does not have focus.</short>
<descr>
<p>
<var>HideSelection</var> is a <var>Boolean</var> property which determines whether the selected text in the control is hidden when the control does not have focus.
</p>
<p>
HideSelection negates the default behavior in the edit control. The default behavior hides the selection when the control loses focus, and displays the text selection when the control receives focus. When set to False, the selected text (if any) is <b>always</b> displayed in the selected state - even when the control loses focus.
</p>
<p>
The default value for the property is <b>True</b>.
</p>
<p>
Changing the value for the property causes the <var>SetHideSelection</var> method in the widgetset class to be called when its handle has been allocated. No actions are performed in the method when the handle has not been allocated for the widgetset class.
</p>
<p>
The value in HideSelection is used in the <var>CreateParams</var> method to determine whether the <var>ES_NOHIDESEL</var> edit style flag is included in or omitted from the creation parameters for the control. When HideSelection is set to <b>False</b>, the ES_NOHIDESEL edit style is included in the flag values.
</p>
<p>
Use SelText, SelStart, and SelLength to change the text selection in program code. Use ClearSelection to remove the current text selection in the edit control.
</p>
</descr>
<seealso>
<link id="TCustomEdit.Text"/>
<link id="TCustomEdit.SelText"/>
<link id="TCustomEdit.SelStart"/>
<link id="TCustomEdit.SelLength"/>
<link id="TCustomEdit.ClearSelection"/>
<link id="TCustomEdit.CreateParams"/>
</seealso>
</element>
<element name="TCustomEdit.MaxLength">
<short>The maximum length of the value entered in Text, or 0 (zero) for unlimited length.</short>
<descr>
<p>
In Delphi MaxLength only limits user input. The LCL actually restricts the maximum length of the stored text; this simplifies the implementation for non-Win32 widgetsets.
</p>
</descr>
</element>
<element name="TCustomEdit.Modified">
<short>True when the value in Text has been changed.</short>
<descr>
<p>
<var>Modified</var> is a <var>Boolean</var> property which indicates if the value in <var>Text</var> has been changed when a <b>CM_TEXTCHANGED</b> message is handled for the control. The value is set to <b>True</b> in the <var>TextChanged</var> method. The value is reset to <b>False</b> when <var>RealSetText</var> is called to store the value in Text to the buffer for the control.
</p>
</descr>
<seealso>
<link id="TCustomEdit.Text"/>
<link id="TCustomEdit.TextChanged"/>
<link id="TCustomEdit.RealSetText"/>
</seealso>
</element>
<element name="TCustomEdit.NumbersOnly">
<short>Indicates if the edit control accepts numeric values only.</short>
<descr>
<p>
<var>NumbersOnly</var> is a <var>Boolean</var> property which controls whether the edit control is limited to numeric characters when edited. The default value for the property is <b>False</b>.
</p>
<p>
Changing the property value causes the widgetset class to be notified when a handle has been allocated for the control.
</p>
<p>
NumbersOnly is used in <var>CreateParams</var> to include the <b>ES_NUMBER</b> edit style in the creation parameters for the control when set to <b>True</b>.
</p>
</descr>
<seealso>
<link id="TCustomEdit.CreateParams"/>
</seealso>
</element>
<element name="TCustomEdit.OnChange">
<short>Event handler signalled when the text for the control is changed.</short>
<descr>
<p>
<var>OnChange</var> is a <var>TNotifyEvent</var> property with the event handler signalled when the text for the control is changed.
</p>
<p>
OnChange is triggered when the value in <var>Text</var> is modified either by using the keyboard or assigning a new value in program code. Please note that this differs from controls, like <var>TCustomComboBox</var> / <var>TComboBox</var>, where the event is not signalled when the control value is changed in program code.
</p>
<p>
OnChange is signalled (when assigned) from the <var>Change</var> method, and occurs after the <var>Changed</var> method is used to post the <var>CM_CHANGED</var> control message.
</p>
<p>
When the control value is edited using the keyboard, OnChange is signalled after each character or keystroke is handled and applied to the value in Text. To avoid visible delays during editing, the event handler should not be too time or resource intensive.
</p>
</descr>
<seealso>
<link id="TCustomEdit.Change"/>
<link id="TCustomEdit.Text"/>
<link id="TCustomEdit.Modified"/>
<link id="#lcl.controls.TControl.Changed">TControl.Changed</link>
</seealso>
</element>
<element name="TCustomEdit.PasswordChar">
<short>Allows obfuscation of the displayed text, showing all characters as PasswordChar.</short>
<descr>
<p>
Typically used in password input, to hide the input from other viewers. The value in <var>Text</var> is still available for the <b>WM_GETTEXT</b> message.
</p>
</descr>
<seealso>
<link id="TCustomEdit.EchoMode"/>
</seealso>
</element>
<element name="TCustomEdit.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TCustomEdit.ReadOnly">
<short>Indicates if the user is prevented from changing the value for the Text in the control.</short>
<descr>
<p>
<var>ReadOnly</var> is a <var>Boolean</var> property which indicates if the user is prevented from changing the value in the control.
</p>
<p>
ReadOnly is used in the <var>CreateParams</var> method to determine if the <b>ES_READONLY</b> edit style flag is included in the creation parameters for the control. The value is also passed to the widgetset class in the <var>InitializeWnd</var> method, and when the value for the property is changed.
</p>
<p>
When ReadOnly is <b>True</b>, the <var>EditingDone</var> method does not signal the <var>OnEditingDone</var> event handler (in the ancestor).
</p>
<p>
The default value for the property is <b>False</b>, and indicates that the value can be edited in the control.
</p>
</descr>
<seealso>
<link id="TCustomEdit.CreateParams"/>
<link id="TCustomEdit.InitializeWnd"/>
<link id="TCustomEdit.EditingDone"/>
<link id="#lcl.controls.TControl.EditingDone">TControl.EditingDone</link>
<link id="#lcl.controls.TControl.OnEditingDone">TControl.OnEditingDone</link>
</seealso>
</element>
<element name="TCustomEdit.SelLength">
<short>The number of currently selected UTF-8-encoded characters in the control.</short>
<descr>
<p>
<var>SelLength</var> is an <var>Integer</var> property which contains the number of UTF-8-encoded characters currently selected in the edit box for the control. The current selection is the value in <var>Text</var> starting at the ordinal position in <var>SelStart</var> and continuing for the number of characters in the property.
</p>
<p>
The value for the property is read from the widgetset class when a handle has been allocated for the control. Otherwise, the internal member is read get the value for the property. Setting a new value for the property notifies the widgetset class when a handle has been allocated for the control.
</p>
<p>
Use <var>SelStart</var> to set the zero-based position in Text for the first UTF-8-encoded character in the current text selection.
</p>
<p>
Use <var>SelText</var> to examine the values selected in the control, or to replace the value in the current text selection. <var>ClearSelection</var> can be used to remove the characters in the current text selection for the control.
</p>
<p>
Use <var>SelectAll</var> to make all values in Text the current text selection in the control.
</p>
<p>
Use <var>HideSelection</var> to un-select the current text selection in the control.
</p>
</descr>
<seealso>
<link id="TCustomEdit.SelText"/>
<link id="TCustomEdit.SelStart"/>
<link id="TCustomEdit.SelectAll"/>
<link id="TCustomEdit.HideSelection"/>
<link id="TCustomEdit.ClearSelection"/>
</seealso>
</element>
<element name="TCustomEdit.SelStart">
<short>The zero-based index for the first UTF-8 character in the current text selection.</short>
<descr>
<p>
<var>SelStart</var> is an <var>Integer</var> property which contains the ordinal position in <var>Text</var> for the UTF-8-encoded character at the start of the current text selection. The current text selection includes the number of characters in <var>SelLength</var>. SelStart is a zero-based value.
</p>
<p>
The value for SelStart is read from the widgetset class when a handle has been allocated for the control. Otherwise, the value is read from the internal member for the property. Setting a new value for the property notifies the widgetset class when a handle has been allocated for the control.
</p>
<p>
Use <var>SelLength</var> for the number of UTF-8-encoded characters in the current text selection.
</p>
<p>
Use <var>SelText</var> to examine the values selected in the control, or to replace the value in the current text selection. <var>ClearSelection</var> can be used to remove the characters in the current text selection for the control.
</p>
<p>
Use <var>SelectAll</var> to make all values in Text the current text selection in the control.
</p>
<p>
Use <var>HideSelection</var> to un-select the current text selection in the control.
</p>
</descr>
<seealso>
<link id="TCustomEdit.SelLength"/>
<link id="TCustomComboBox.SelStart"/>
</seealso>
</element>
<element name="TCustomEdit.SelText">
<short>The currently selected text in the edit box for the control.</short>
<descr>
<p>
<var>SelText</var> is a <var>String</var> property which contains the current text selection in the control. The current text selection is the UTF-8-encoded characters in <var>Text</var> identified by the <var>SelStart</var> and <var>SelLength</var> properties.
</p>
<p>
The property value is derived by calling the <var>UTF8Copy</var> routine in <file>lazutf8.pas</file>. Setting a new value for the property causes the text selection in Text to be replaced with the specified value. The widgetset class is notified when a handle has been allocated for the control.
</p>
<p>
Values must assigned to the SelStart and SelLength property before accessing SelText.
</p>
<p>
SelText is updated when the <var>ClearSelection</var> is called to remove the text selection value from the content in Text. SelText is compared to Text to determine the value for <var>AutoSelected</var> when <b>VK_RETURN</b> key or <b>MouseUp</b> messages are handled.
</p>
</descr>
<seealso>
<link id="TCustomEdit.SelLength"/>
<link id="TCustomEdit.SelStart"/>
<link id="TCustomEdit.Text"/>
<link id="TCustomEdit.AutoSelected"/>
<link id="TCustomEdit.ClearSelection"/>
<link id="#lazutils.lazutf8.UTF8Copy">UTF8Copy</link>
</seealso>
</element>
<element name="TCustomEdit.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TCustomEdit.TabStop">
<short>Enables navigation using the Tab key.</short>
<descr>
<p>
Allows the user to navigate to this control, by pressing the Tab key.
The default value for the property is True in TCustomEdit.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.TabStop">TWinControl.TabStop</link>
</seealso>
</element>
<element name="TCustomEdit.Text">
<short>The text displayed and edited for the control.</short>
<descr>
<p>
<var>Text</var> is a <var>TCaption</var> property which contains the UTF-8-encoded characters maintained as the value for the edit control. The value in Text is read and written using the <var>RealGetText</var> and <var>RealSetText</var> methods. Not only do they provide code compatibility with the Delphi VCL, they support use of emulated <var>TextHint</var> displays. The value in TextHint is assigned to Text when the inline hint text is displayed for the control.
</p>
<p>
The value in Text may be altered in the <var>TextChanged</var> method when the setting in <var>CharCase</var> requires case conversion for the value in the control.
</p>
</descr>
<seealso>
<link id="TCustomEdit.RealGetText"/>
<link id="TCustomEdit.RealSetText"/>
<link id="TCustomEdit.TextChanged"/>
<link id="TCustomEdit.CharCase"/>
<link id="TCustomEdit.TextHint"/>
<link id="#lcl.controls.TControl.Text">TControl.Text</link>
</seealso>
</element>
<element name="TCustomEdit.TextHint">
<short>Default hint text shown when the Text property is empty and the control is not focused.</short>
<descr>
<p>
<var>TextHint</var> fills the <var>TCustomEdit</var> with the value in the property when the Text in the control is empty and the control does not have focus. This is different than Hint, which displays a balloon tip when ShowHint is set to <b>True</b> and the mouse is over the control.
</p>
<p>
Setting a new value in TextHint causes the widgetset class to be notified, and the value is displayed in the edit control when allowed. If the new value is an empty string (''), the text hint is removed from the control.
</p>
</descr>
<seealso/>
</element>
<element name="TMemoScrollbar">
<short>A scrollbar for use in Memo controls.</short>
<descr>
<p>
A scrollbar specifically for use with <var>TMemo</var> controls. Inherits most of its properties from its ancestor, <link id="#lcl.Forms.TControlScrollBar">TControlScrollBar</link>.
</p>
</descr>
<seealso/>
</element>
<element name="TMemoScrollbar.GetHorzScrollBar">
<short>Gets the HorzScrollBar in the associated memo control.</short>
<descr/>
<seealso>
<link id="TCustomMemo.HorzScrollBar"/>
</seealso>
</element>
<element name="TMemoScrollbar.GetHorzScrollBar.Result">
<short>Value for the property.</short>
</element>
<element name="TMemoScrollbar.GetVertScrollBar">
<short>Gets the VertScrollBar in the associated memo control.</short>
<descr/>
<seealso>
<link id="TCustomMemo.VertScrollBar"/>
</seealso>
</element>
<element name="TMemoScrollbar.GetVertScrollBar.Result">
<short>Value for the property.</short>
</element>
<element name="TMemoScrollbar.Increment" link="#lcl.forms.TControlScrollBar.Increment"/>
<element name="TMemoScrollbar.Page" link="#lcl.forms.TControlScrollBar.Page"/>
<element name="TMemoScrollbar.Smooth" link="#lcl.forms.TControlScrollBar.Smooth"/>
<element name="TMemoScrollbar.Position" link="#lcl.forms.TControlScrollBar.Position"/>
<element name="TMemoScrollbar.Range" link="#lcl.forms.TControlScrollBar.Range"/>
<element name="TMemoScrollbar.Size" link="#lcl.forms.TControlScrollBar.Size"/>
<element name="TMemoScrollbar.Visible" link="#lcl.forms.TControlScrollBar.Visible"/>
<element name="TCustomMemo">
<short>The base class for multi-line text controls.</short>
<descr>
<p>
<var>TCustomMemo</var> is a <var>TCustomEdit</var> descendant which implements the base class used for a multi-line edit control. TCustomMemo extends TCustomEdit with additional properties and methods needed for the control. Overridden methods are provided to create and initialize the control using style flags needed for the widgetset class.
</p>
<p>
The textual values in the multi-line control can be accessed using the <var>Lines</var> property. An individual line of text can be accessed by its ordinal position in the list of values. For example:
</p>
<code>
// var sContent: String; ...
sContent := AMemo.Lines[2];
</code>
<p>
This provides access to the third value in List (index positions are zero-based).
</p>
<p>
The values for all of the text in Lines can be retrieved as a single String using the <var>Text</var> property in the <var>TStrings</var> class instance. Each line of text is separated by the <var>LineEnding</var> character sequence for the host platform or operating system. For example:
</p>
<code>
// var sContent: String; ...
sContent := AMemo.Lines.Text;
</code>
<p>
Please note: There is a difference in TCustomMemo / TMemo between the <var>Text</var> and <var>Lines</var> properties. Text is actually the Caption for the control as inherited from TControl. Lines is the multi-line TStrings instance specific to the memo control. Setting the control value using Text does <b>NOT</b> cause the <var>Modified</var> property to be updated. Setting the value using the Lines property does cause the Modified property to be updated.
</p>
<p>
This is important if an <var>OnChange</var> event handler is used to detect changes to the value in the control, and you need to identify whether the change was performed in program code. You can identify a programmatic change by manipulating the value in Modified.
</p>
<p>
For changes in program code, set Modified to False before setting the value using the Text property. If Modified is False when OnChange is signalled, the change occurred in program code. Modified can be set as desired in your program code after the value is assigned to Text. For example:
</p>
<code>
// use Modified and Text to track program changes
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Modified := False;
Memo1.Text := 'Whiskey' + LineEnding + 'Tango' + LineEnding + 'Foxtrot';
Memo1.Modified := True;
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
if not TCustomMemo(Sender).Modified then
StaticText1.Caption := 'Memo changed in code'
else
StaticText1.Caption := 'Memo changed by user';
end;
</code>
<p>
Changes entered by the user are applied when methods update the Lines property in the control. As a result, Modified is set to True. If Modified is True in OnChange, the change was triggered by user interaction with the control.
</p>
<p>
The value in Modified is retained when the control gains or loses focus whether by keyboard navigation or by using the mouse.
</p>
<p>
The text displayed in the control uses the attributes defined in the <var>Font</var> property. No capabilities are provided for formatting individual characters, words, or lines in the content for the control.
</p>
<p>
Both horizontal and vertical scrollbars can be used in the control. Use the <var>ScrollBar</var> property to define the scrollbars displayed for the control. It can be used to enable automatic scrollbars which are only displayed when the content for the control does not fit within its bounds.
</p>
<p>
Use the <var>Append</var> method to add a line of text to the values in Lines.
</p>
<p>
Use the <var>WantTabs</var> and <var>WantReturns</var> properties to determine whether the corresponding keys are captured and stored in Lines. This affects the way control messages are applied to the control.
</p>
<p>
Use <var>WordWrap</var> to indicate if the control should automatically wrap a line of text longer than the visible area for the control.
</p>
<p>
Applications should not create instances of TCustomMemo; use <var>TMemo</var> instead.
</p>
</descr>
<seealso>
<link id="TCustomMemo.ScrollBars"/>
<link id="TCustomMemo.HorzScrollBar"/>
<link id="TCustomMemo.VertScrollBar"/>
<link id="TCustomMemo.Lines"/>
<link id="TCustomMemo.WordWrap"/>
<link id="TCustomMemo.WantTabs"/>
<link id="TCustomMemo.WantReturns"/>
<link id="TCustomEdit.Modified"/>
<link id="TCustomEdit.Text"/>
<link id="TCustomEdit.OnChange"/>
<link id="TCustomEdit"/>
<link id="TMemo"/>
<link id="#lcl.controls.TControl.Font">TControl.Font</link>
</seealso>
</element>
<element name="TCustomMemo.FHorzScrollBar" link="#lcl.stdctrls.TCustomMemo.HorzScrollBar"/>
<element name="TCustomMemo.FLines" link="#lcl.stdctrls.TCustomMemo.Lines"/>
<element name="TCustomMemo.FScrollBars" link="#lcl.stdctrls.TCustomMemo.ScrollBars"/>
<element name="TCustomMemo.FVertScrollBar" link="#lcl.stdctrls.TCustomMemo.VertScrollBar"/>
<element name="TCustomMemo.FWantReturns" link="#lcl.stdctrls.TCustomMemo.WantReturns"/>
<element name="TCustomMemo.FWantTabs" link="#lcl.stdctrls.TCustomMemo.WantTabs"/>
<element name="TCustomMemo.FWordWrap" link="#lcl.stdctrls.TCustomMemo.WordWrap"/>
<element name="TCustomMemo.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TCustomMemo.CreateParams">
<short>Updates creation flags used to create the handle for the control.</short>
<descr>
<p>
<var>CreateParams</var> is overridden in <var>TCustomMemo</var>, and calls the inherited method on entry. CreateParams ensures that style flags needed for the multi-line control are included in the <var>Style</var> property in the <var>Params</var> argument.
</p>
<p>
Values from the <var>ScrollBars</var> and <var>WordWrap</var> properties are checked, and flags are added as needed. ScrollBars causes window style flags to be added like WS_HSCROLL and/or WS_VSCROLL. When <var>WordWrap</var> is set to True, the WS_HSCROLL window style is removed from the creation parameters. Otherwise, the edit style ES_AUTOHSCROLL is added to the creation parameters.
</p>
</descr>
<seealso>
<link id="TCustomEdit.CreateParams"/>
<link id="TCustomMemo.ScrollBars"/>
<link id="TCustomMemo.WordWrap"/>
</seealso>
</element>
<element name="TCustomMemo.CreateParams.Params">
<short>Creation parameters for the control.</short>
</element>
<element name="TCustomMemo.InitializeWnd">
<short>Copies existing string values from the widgetset class.</short>
<descr>
<p>
<var>InitializeWnd</var> is an overridden method in <var>TCustomMemo</var>. InitializeWnd ensures that property values from widgetset class are stored in the current class instance when handle for the control is created (or re-created). InitializeWnd is called after the handle for the control was created, but before the the handle for child controls is created.
</p>
<p>
InitializeWnd ensures that string values in the widgetset class (if any) are copied to a new <var>TStrings</var> instance and assigned to the <var>Lines</var> property. The previous TStrings instance in Lines is freed.
</p>
<p>
InitializeWnd calls the inherited method prior to exit.
</p>
</descr>
<seealso>
<link id="TCustomMemo.Lines"/>
<link id="TCustomEdit.InitializeWnd"/>
<link id="#rtl.classes.TStrings">TStrings</link>
</seealso>
</element>
<element name="TCustomMemo.FinalizeWnd">
<short>Frees resources when the handle for the control is freed.</short>
<descr>
<p>
<var>FinalizeWnd</var> ensures that string values in <var>Lines</var> are freed in the widgetset class before the handle is destroyed for the control. Existing text (and objects) are copied, and assigned to the member variable for Lines after the widgetset class has been notified.
</p>
<p>
FinalizeWnd calls the inherited method proper to exit.
</p>
</descr>
<seealso>
<link id="TCustomMemo.Lines"/>
<link id="#lcl.controls.TWinControl.FinalizeWnd">TWinControl.FinalizeWnd</link>
</seealso>
</element>
<element name="TCustomMemo.RealGetText">
<short>Returns the textual content stored in Lines as a single String value.</short>
<descr/>
<seealso>
<link id="#rtl.classes.TStrings.Text">TStrings.Text</link>
<link id="#LCL.Controls.TControl.RealGetText">TControl.RealGetText</link>
</seealso>
</element>
<element name="TCustomMemo.RealGetText.Result">
<short>The entire text in a single string.</short>
</element>
<element name="TCustomMemo.RealSetText">
<short>Replaces the value in <var>Lines.Text</var>.</short>
<descr/>
<seealso>
<link id="#LCL.Controls.TControl.RealSetText">TControl.RealSetText</link>
</seealso>
</element>
<element name="TCustomMemo.RealSetText.AValue">
<short>
Sets the value for the control from a single string.
</short>
<descr>
<p>
Sets the value for the control from a single string. Lines are separated by LineFeed (LF) and/or CarriageReturn (CR) characters.
</p>
</descr>
</element>
<element name="TCustomMemo.GetCachedText" link="#lcl.controls.TControl.GetCachedText"/>
<element name="TCustomMemo.GetCachedText.Result">
<short>Always False, a cache is not implemented in TCustomMemo.</short>
</element>
<element name="TCustomMemo.GetCachedText.CachedText">
<short>TCaption instance with the cached value for the control.</short>
</element>
<element name="TCustomMemo.GetCaretPos">
<short>Get the value for the CaretPos property.</short>
<descr>
<p>
<var>GetCaretPosition</var> is an overridden method in <var>TCustomMemo</var> used to get the value for the <var>CaretPos</var> property. It calls the GetCaretPos method in the widgetset class to get the return value for the method.
</p>
</descr>
<seealso>
<link id="TCustomEdit.CaretPos"/>
<link id="TCustomMemo.GetCaretPos"/>
<link id="TCustomMemo.SetCaretPos"/>
</seealso>
</element>
<element name="TCustomMemo.GetCaretPos.Result">
<short>Returns the position of the editing cursor or caret.</short>
</element>
<element name="TCustomMemo.KeyUpAfterInterface">
<short>Handles Key Up events forwarded from the LCL interface.</short>
<descr>
<p>
<var>KeyUpAfterInterface</var> handles the <var>VK_RETURN</var> key code for the control when WantReturns is set to True. It sets the value in Key to 0 to indicate that the key code does not finish editing in the control.
</p>
<p>
It calls the inherited method prior to exit to handle the key code normally when WantReturns is set to False.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.KeyUpAfterInterface">TWinControl.KeyUpAfterInterface</link>
</seealso>
</element>
<element name="TCustomMemo.KeyUpAfterInterface.Key">
<short>Virtual key code examined in the method.</short>
</element>
<element name="TCustomMemo.KeyUpAfterInterface.Shift">
<short>Shift, Ctrl, or Alt modifier for the key code.</short>
</element>
<element name="TCustomMemo.SetCaretPos">
<short>
Sets the position for the editing cursor or caret to the specified location.
</short>
<descr>
<p>
<var>SetCaretPos</var> is an overridden method in <var>TCustomMemo</var> used to set the position for the editing cursor (or caret).
</p>
<p>
<var>AValue</var> is a <var>TPoint</var> instance with the character and line coordinates for the editing cursor. The X member contains the 0-based relative column offset to the UTF-8-encoded character where the caret is positioned. 0 is immediately before the first character in the current line of text. The Y member contains the 0-based offset to the line where the caret is positioned.
</p>
<p>
SetCaretPos ensures that the widgetset class is cast to a TWSCustomMemoClass instance, and calls its SetCaretPos method.
</p>
</descr>
<seealso>
<link id="TCustomEdit.SetCaretPos"/>
</seealso>
</element>
<element name="TCustomMemo.SetCaretPos.AValue">
<short>New position for the editing cursor or caret.</short>
</element>
<element name="TCustomMemo.SetLines">
<short>Sets the value for the Lines property.</short>
<descr/>
<seealso>
<link id="TCustomMemo.Lines"/>
</seealso>
</element>
<element name="TCustomMemo.SetLines.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomMemo.SetSelText">
<short>Sets the value for the SelText property.</short>
<descr/>
<seealso>
<link id="TCustomEdit.SelText"/>
</seealso>
</element>
<element name="TCustomMemo.SetSelText.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomMemo.SetWantReturns">
<short>Sets the value for the WantReturns property.</short>
<descr/>
<seealso>
<link id="TCustomMemo.WantReturns"/>
</seealso>
</element>
<element name="TCustomMemo.SetWantReturns.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomMemo.SetWantTabs">
<short>Sets the value for the WantTabs property.</short>
<descr/>
<seealso>
<link id="TCustomMemo.WantTabs"/>
</seealso>
</element>
<element name="TCustomMemo.SetWantTabs.NewWantTabs">
<short>New value for the property.</short>
</element>
<element name="TCustomMemo.SetWordWrap">
<short>Sets the value for the WordWrap property.</short>
<descr/>
<seealso>
<link id="TCustomMemo.WordWrap"/>
</seealso>
</element>
<element name="TCustomMemo.SetWordWrap.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomMemo.SetScrollBars">
<short>Sets the value for the ScrollBars property.</short>
<descr/>
<seealso>
<link id="TCustomMemo.ScrollBars"/>
</seealso>
</element>
<element name="TCustomMemo.SetScrollBars.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomMemo.Loaded">
<short>
Performs actions needed when the component has been loaded using the LCL streaming mechanism.
</short>
<descr>
<p>
<var>Loaded</var> is an overridden method in <var>TCustomMemo</var>, and calls the inherited method on entry. When a handle has been allocated for the control, the widgetset class is notified of the current values in the <var>ScrollBars</var> and <var>WordWrap</var> properties.
</p>
</descr>
<seealso>
<link id="TCustomMemo.ScrollBars"/>
<link id="TCustomMemo.WordWrap"/>
<link id="#lcl.controls.TWinControl.Loaded"/>
</seealso>
</element>
<element name="TCustomMemo.CMWantSpecialKey">
<short>Handles control messages for Return and Tab keys when enabled in the control.</short>
<descr>
<p>
<var>CMWantSpecialKey</var> is an overridden method in <var>TCustomMemo</var>. It ensures that control messages for VK_RETURN and VK_TAB keys are marked as handled when WantReturns or WantTabs are enabled in the control. All other messages are handled by calling the inherited method.
</p>
</descr>
<seealso>
<link id="TCustomEdit.CMWantSpecialKey"/>
</seealso>
</element>
<element name="TCustomMemo.CMWantSpecialKey.Message">
<short>Message examined and updated in the method.</short>
</element>
<element name="TCustomMemo.WMGetDlgCode">
<short>Handles Tab, Return, and Escape characters in control messages.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomMemo.WMGetDlgCode.Message">
<short>Message examined in the method.</short>
</element>
<element name="TCustomMemo.GetControlClassDefaultSize">
<short>Gets the default size used for new instances of the class.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomMemo.GetControlClassDefaultSize.Result">
<short>Returns the default size for the control as a TPoint value.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomMemo.UTF8KeyPress">
<short>Implements the handler for UTF8 key press events in the control.</short>
<descr>
<p>
<var>UTF8KeyPress</var> is an overridden method in <var>TCustomMemo</var> which implements the handler for UTF-8-encoded key press events in the control.
</p>
<p>
UTF8KeyPress calls the inherited method on entry to signal the OnUTF8KeyPress event handler (when assigned). It ensures that a <b>Carriage Return</b> (decimal character 13) key is handled using the setting specified in the <var>WantReturns</var> property. When WantReturns is set to <b>False</b>, the value in <var>UTF8Key</var> is set to an empty string (<b>''</b>) to discard the character.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.UTF8KeyPress">TWinControl.UTF8KeyPress</link>
</seealso>
</element>
<element name="TCustomMemo.UTF8KeyPress.UTF8Key">
<short>Key examined in the method.</short>
</element>
<element name="TCustomMemo.CanShowEmulatedTextHint">
<short>Indicates if an emulated TextHint can be displayed for the control.</short>
<descr>
<p>
<var>CanShowEmulatedTextHint</var> is an overridden <var>Boolean</var> function in <var>TCustomMemo</var>, and does <b>not</b> call the inherited method in its implementation.
</p>
<p>
CanShowEmulatedTextHint determines whether an emulated <var>TextHint</var> can be displayed for the control. Normally, this requires a control handle and an unassigned value in the control text. In addition, some widgetsets implement text hints natively, and do not require LCL to emulate the capability (Windows, QT5). Emulated hint displays can also be suppressed when the widgetset class is being freed (when the Lines in the control have already been destroyed).
</p>
<p>
The current implementation always returns <b>False</b> for Memo controls.
</p>
</descr>
<seealso>
<link id="TCustomEdit.CanShowEmulatedTextHint"/>
</seealso>
</element>
<element name="TCustomMemo.CanShowEmulatedTextHint.Result">
<short>True when an emulated TextHint can be displayed for the control.</short>
</element>
<element name="TCustomMemo.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 constructor on entry.
</p>
<p>
Create allocates resources needed for the <var>Lines</var>, <var>HorzScrollBar</var>, and <var>VertScrollBar</var> properties. It also sets the default values for properties, including: <var>WantTabs</var>, <var>WantReturns</var>, <var>WordWrap</var>, <var>AutoSelect</var>, and <var>AutoSize</var>.
</p>
</descr>
<seealso>
<link id="TCustomMemo.Destroy"/>
</seealso>
</element>
<element name="TCustomMemo.Create.AOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TCustomMemo.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 for the <var>Lines</var>, <var>HorzScrollBar</var>, and <var>VertScrollBar</var> properties are freed by calling the <var>FreeThenNil</var> routine in <file>lazutilities.pas</file>.
</p>
<p>
Destroy calls the inherited destructor prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="TCustomMemo.Create"/>
</seealso>
</element>
<element name="TCustomMemo.Append">
<short>Appends the specified text to the Lines in the control.</short>
<descr>
<p>
<var>Append</var> is a procedure used to append the line of text in <var>AValue</var> to the end of the values in the <var>Lines</var> property. It is a convenience method, and calls the <var>Add</var> method in the Lines member.
</p>
<code>
// var sLine: String;
// the following are equivalent
AMemo.Append(sLine);
AMemo.Lines.Add(sLine);
</code>
</descr>
<seealso/>
</element>
<element name="TCustomMemo.Append.AValue">
<short>The text value added to Lines in the method.</short>
</element>
<element name="TCustomMemo.ScrollBy">
<short>Scrolls the visible area in the control by the specified amounts.</short>
<descr>
<p>
<var>ScrollBy</var> is an overridden method in <var>TCustomMemo</var> used to scroll the visible area for the control by the specified amounts.
</p>
<p>
<var>DeltaX</var> and <var>DeltaY</var> contain the number of pixels the content in the control is scrolled. DeltaX is applied to the horizontal position. DeltaY is applied to the vertical position. A positive value means that he control scrolls towards its bottom or right (respectively). Conversely, a negative value scrolls the content towards its top or left.
</p>
<p>
ScrollBy calls the <var>ScrollBy_WS</var> method in the ancestor class. It essentially replaces the method in the ancestor with the same name, and does not call the inherited method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.ScrollBy">TWinControl.ScrollBy</link>
<link id="#lcl.controls.TWinControl.ScrollBy_WS">TWinControl.ScrollBy_WS</link>
</seealso>
</element>
<element name="TCustomMemo.ScrollBy.DeltaX">
<short>Amount to scroll horizontally.</short>
</element>
<element name="TCustomMemo.ScrollBy.DeltaY">
<short>Amount to scroll vertically.</short>
</element>
<element name="TCustomMemo.Lines">
<short>
Contains the individual lines of text in the multi-line edit control.
</short>
<descr>
<p>
<var>Lines</var> is a <var>TStrings</var> property which contains the individual lines of text in the multi-line edit control. The values in Lines can be accessed using the <var>Strings</var> and <var>Text</var> properties defined in TStrings. The Strings property in Lines allows an individual line of text to be accessed by its ordinal position. For example:
</p>
<code>
// var sContent: String;
sContent := AMemo.Lines.Strings[2];
// equivalent to preceding since Strings is the default property
sContent := AMemo.Lines[2];
</code>
<p>
The Text property in Lines allows access to all of the values stored in Lines. Text lines are separated by the <var>LineEnding</var> character sequence defined for the host platform or operating system. For example:
</p>
<code>
// var sContent: String;
sContent := AMemo.Lines.Text;
</code>
<p>
Changing the values in Lines causes the Modified property to be set to True. Use Text to make changes to the control value that do not cause the Modified property to be updated.
</p>
<p>
Use the <var>Append</var> method to add a line of text to the end of the values in Lines.
</p>
<p>
Set values in the <var>WantTabs</var>, <var>WantReturns</var>, and <var>WordWrap</var> properties to control the content and behavior for the multi-line edit control.
</p>
<p>
Use the <var>OnChange</var> event handler to perform actions needed when the value for the control has been changed.
</p>
</descr>
<seealso>
<link id="TCustomMemo.Append"/>
<link id="TCustomMemo.WantTabs"/>
<link id="TCustomMemo.WantReturns"/>
<link id="TCustomMemo.WordWrap"/>
<link id="TCustomEdit.OnChange"/>
<link id="TCustomEdit.Modified"/>
<link id="#rtl.classes.TStrings">TStrings</link>
<link id="#lazutils.textstrings.TTextStrings">TTextStrings</link>
</seealso>
</element>
<element name="TCustomMemo.HorzScrollBar">
<short>The horizontal scrollbar for the control.</short>
<descr>
<p>
<var>HorzScrollBar</var> is a <var>TMemoScrollBar</var> property which contains the horizontal scrollbar displayed for the control. Resources are allocated to the property in the constructor, and freed in the destructor.
</p>
<p>
Use ScrollBars to determine the scrollbars visible for the control.
</p>
</descr>
<seealso>
<link id="TCustomMemo.ScrollBars"/>
<link id="TCustomMemo.VertScrollBar"/>
</seealso>
</element>
<element name="TCustomMemo.VertScrollBar">
<short>The vertical scrollbar for the control.</short>
<descr>
<p>
<var>VertScrollBar</var> is a <var>TMemoScrollBar</var> property which contains the vertical scrollbar displayed for the control. Resources are allocated to the property in the constructor, and freed in the destructor.
</p>
<p>
Use ScrollBars to determine the scrollbars visible for the control.
</p>
</descr>
<seealso>
<link id="TCustomMemo.ScrollBars"/>
<link id="TCustomMemo.HorzScrollBar"/>
</seealso>
</element>
<element name="TCustomMemo.ScrollBars">
<short>Defines the vertical and/or horizontal scrollbars used in the control.</short>
<descr>
<p>
<var>ScrollBars</var> is a <var>TScrollStyle</var> property which defines whether the horizontal and vertical scrollbars are displayed for the control. It is a single value from the <link id="TScrollStyle">TScrollStyle</link> enumeration.
</p>
<p>
The default value for the property is <var>ssNone</var>, and disables both horizontal and vertical scrollbars in the control.
</p>
<p>
Setting a new value for the property causes the widgetset class to be notified when a handle has been allocated for the control.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomMemo.WantReturns">
<short>Allows the user to insert Return characters (line breaks) into the text.</short>
<descr>
<p>
The <b>Enter</b> key is normally used to press the default button in a form, so it cannot be used to add line breaks into the text by default. Set <var>WantReturns</var> to <b>True</b> to allow line breaks to be entered using <b>Enter</b> when the control has the input focus. <b>Ctrl+Enter</b> can be used to insert a line break, even if WantReturns is set to <b>False</b>.
</p>
</descr>
<seealso>
<link id="TCustomMemo.WantTabs"/>
</seealso>
</element>
<element name="TCustomMemo.WantTabs">
<short>Allows Tab characters to be entered into the text.</short>
<descr>
<p>
The Tab key is normally used to move the input focus to the next control, and does not add Tab characters to the text.
</p>
<p>
When <var>WantTabs</var> is <b>True</b>, the Tab key inserts a Tab character into the text, instead of moving the focus to then next control. Even if WantTabs is <b>True</b>, the Tab key can be used to navigate <b>into</b> the control. But it prevents use of Tab to <b>exit</b> the control.
</p>
</descr>
<seealso>
<link id="TCustomMemo.WantReturns"/>
</seealso>
</element>
<element name="TCustomMemo.WordWrap">
<short>
Allows long lines (paragraphs) to wrap into multiple display lines.
</short>
<descr>
<p>
When <b>False</b>, the display for long lines is truncated at the right margin for the control. It can be made visible when the text can be scrolled horizontally.
</p>
</descr>
<seealso>
<link id="TCustomMemo.ScrollBars"/>
</seealso>
</element>
<element name="TEdit">
<short>Implements an edit control with a single line of text.</short>
<descr>
<p>
<var>TEdit</var> is a <var>TCustomEdit</var> descendant which implements an edit control presenting a single line of text. TEdit sets the visibility for properties and events introduced in the TCustomEdit ancestor, and does not introduce any new methods.
</p>
</descr>
<seealso>
<link id="HowToUseStdCtrls"/>
<link id="TCustomEdit"/>
<link id="TMemo"/>
<link id="#lcl.extctrls.TLabeledEdit">TLabeledEdit</link>
<link id="#lcl.maskedit.TMaskEdit">TMaskEdit</link>
</seealso>
</element>
<element name="TEdit.Action" link="#lcl.controls.TControl.Action"/>
<element name="TEdit.Align" link="#lcl.controls.TControl.Align"/>
<element name="TEdit.Alignment" link="#lcl.stdctrls.TCustomEdit.Alignment"/>
<element name="TEdit.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TEdit.AutoSelect" link="#lcl.stdctrls.TCustomEdit.AutoSelect"/>
<element name="TEdit.AutoSelected" link="#lcl.stdctrls.TCustomEdit.AutoSelected"/>
<element name="TEdit.AutoSize" link="#lcl.stdctrls.TCustomEdit.AutoSize"/>
<element name="TEdit.BidiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TEdit.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TEdit.BorderStyle" link="#lcl.stdctrls.TCustomEdit.BorderStyle"/>
<element name="TEdit.Color" link="#lcl.controls.TControl.Color"/>
<element name="TEdit.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TEdit.DoubleBuffered" link="#lcl.controls.TWinControl.DoubleBuffered"/>
<element name="TEdit.CharCase" link="#lcl.stdctrls.TCustomEdit.CharCase"/>
<element name="TEdit.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TEdit.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TEdit.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TEdit.EchoMode" link="#lcl.stdctrls.TCustomEdit.EchoMode"/>
<element name="TEdit.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TEdit.Font" link="#lcl.controls.TControl.Font"/>
<element name="TEdit.HideSelection" link="#lcl.stdctrls.TCustomEdit.HideSelection"/>
<element name="TEdit.MaxLength" link="#lcl.stdctrls.TCustomEdit.MaxLength"/>
<element name="TEdit.NumbersOnly" link="#lcl.stdctrls.TCustomEdit.NumbersOnly"/>
<element name="TEdit.OnChange" link="#lcl.stdctrls.TCustomEdit.OnChange"/>
<element name="TEdit.OnChangeBounds" link="#lcl.controls.TControl.OnChangeBounds"/>
<element name="TEdit.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TEdit.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TEdit.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element name="TEdit.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TEdit.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TEdit.OnEditingDone" link="#lcl.controls.TControl.OnEditingDone"/>
<element name="TEdit.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TEdit.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
<element name="TEdit.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
<element name="TEdit.OnKeyDown" link="#lcl.controls.TWinControl.OnKeyDown"/>
<element name="TEdit.OnKeyPress" link="#lcl.controls.TWinControl.OnKeyPress"/>
<element name="TEdit.OnKeyUp" link="#lcl.controls.TWinControl.OnKeyUp"/>
<element name="TEdit.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TEdit.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TEdit.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TEdit.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TEdit.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TEdit.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TEdit.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TEdit.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TEdit.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TEdit.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TEdit.ParentBidiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TEdit.ParentColor" link="#lcl.stdctrls.TCustomEdit.ParentColor"/>
<element name="TEdit.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element name="TEdit.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TEdit.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TEdit.PasswordChar" link="#lcl.stdctrls.TCustomEdit.PasswordChar"/>
<element name="TEdit.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TEdit.ReadOnly" link="#lcl.stdctrls.TCustomEdit.ReadOnly"/>
<element name="TEdit.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TEdit.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TEdit.TabStop" link="#lcl.stdctrls.TCustomEdit.TabStop"/>
<element name="TEdit.Text" link="#lcl.stdctrls.TCustomEdit.Text"/>
<element name="TEdit.TextHint" link="#lcl.stdctrls.TCustomEdit.TextHint"/>
<element name="TEdit.OnUTF8KeyPress" link="#lcl.controls.TWinControl.OnUTF8KeyPress"/>
<element name="TEdit.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TMemo">
<short>Control used to display and edit multi-line text.</short>
<descr>
<p>
<var>TMemo</var> is a <var>TCustomMemo</var> descendant which implements a multi-line text edit control. TMemo sets the visibility for properties introduced in TCustomMemo, but does not introduce any new methods.
</p>
<p>
The textual values in the multi-line control can be accessed using the <var>Lines</var> property. An individual line of text can be accessed by its ordinal position in the list of values. For example:
</p>
<code>
// var sContent: String; ...
sContent := AMemo.Lines[2];
</code>
<p>
This provides access to the third value in List (index positions are zero-based).
</p>
<p>
The values for all of the text in Lines can be retrieved as a single String using the <var>Text</var> property in the <var>TStrings</var> class instance. Each line of text is separated by the <var>LineEnding</var> character sequence for the host platform or operating system. For example:
</p>
<code>
// var sContent: String; ...
sContent := AMemo.Lines.Text;
</code>
<p>
Please note: There is a difference in TCustomMemo / TMemo between the <var>Text</var> and <var>Lines</var> properties. Text is actually the Caption for the control as inherited from TControl. Lines is the multi-line TStrings instance specific to the memo control. Setting the control value using Text does <b>NOT</b> cause the <var>Modified</var> property to be updated. Setting the value using the Lines property does cause the Modified property to be updated.
</p>
<p>
This is important if an <var>OnChange</var> event handler is used to detect changes to the value in the control, and you need to identify whether the change was performed in program code. You can identify a programmatic change by manipulating the value in Modified.
</p>
<p>
For changes in program code, set Modified to False before setting the value using the Text property. If Modified is False when OnChange is signalled, the change occurred in program code. Modified can be set as desired in your program code after the value is assigned to Text. For example:
</p>
<code>
// use Modified and Text to track program changes
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Modified := False;
Memo1.Text := 'Whiskey' + LineEnding + 'Tango' + LineEnding + 'Foxtrot';
Memo1.Modified := True;
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
if not TCustomMemo(Sender).Modified then
StaticText1.Caption := 'Memo changed in code'
else
StaticText1.Caption := 'Memo changed by user';
end;
</code>
<p>
Changes entered by the user are applied when methods update the Lines property in the control. As a result, Modified is set to True. If Modified is True in OnChange, the change was triggered by user interaction with the control.
</p>
<p>
The value in Modified is retained when the control gains or loses focus whether by keyboard navigation or by using the mouse.
</p>
<p>
The text displayed in the control uses the attributes defined in the <var>Font</var> property. No capabilities are provided for formatting individual characters, words, or lines in the content for the control.
</p>
<p>
Both horizontal and vertical scrollbars can be used in the control. Use the <var>ScrollBar</var> property to define the scrollbars displayed for the control. It can be used to enable automatic scrollbars which are only displayed when the content for the control does not fit within its bounds.
</p>
<p>
Use the <var>Append</var> method to add a line to text to the values in Lines.
</p>
<p>
Use the <var>WantTabs</var> and <var>WantReturns</var> properties to determine whether the corresponding keys are captured and stored in Lines. This affects the way control messages are applied to the control.
</p>
<p>
Use <var>WordWrap</var> to indicate if the control should automatically wrap a line of text longer than the visible area for the control.
</p>
<p>
Applications should use TEdit for a single line edit control.
</p>
</descr>
<seealso>
<link id="HowToUseStdCtrls"/>
<link id="TCustomMemo"/>
<link id="TEdit"/>
</seealso>
</element>
<element name="TMemo.Align" link="#lcl.controls.TControl.Align"/>
<element name="TMemo.Alignment" link="#lcl.stdctrls.TCustomEdit.Alignment"/>
<element name="TMemo.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TMemo.BidiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TMemo.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TMemo.BorderStyle" link="#lcl.stdctrls.TCustomEdit.BorderStyle"/>
<element name="TMemo.CharCase" link="#lcl.stdctrls.TCustomEdit.CharCase"/>
<element name="TMemo.Color" link="#lcl.controls.TControl.Color"/>
<element name="TMemo.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TMemo.DoubleBuffered" link="#lcl.controls.TWinControl.DoubleBuffered"/>
<element name="TMemo.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TMemo.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TMemo.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TMemo.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TMemo.Font" link="#lcl.controls.TControl.Font"/>
<element name="TMemo.HideSelection" link="#lcl.stdctrls.TCustomEdit.HideSelection"/>
<element name="TMemo.Lines" link="#lcl.stdctrls.TCustomMemo.Lines"/>
<element name="TMemo.MaxLength" link="#lcl.stdctrls.TCustomEdit.MaxLength"/>
<element name="TMemo.OnChange" link="#lcl.stdctrls.TCustomEdit.OnChange"/>
<element name="TMemo.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TMemo.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TMemo.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element name="TMemo.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TMemo.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TMemo.OnEditingDone" link="#lcl.controls.TControl.OnEditingDone"/>
<element name="TMemo.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TMemo.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
<element name="TMemo.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
<element name="TMemo.OnKeyDown" link="#lcl.controls.TWinControl.OnKeyDown"/>
<element name="TMemo.OnKeyPress" link="#lcl.controls.TWinControl.OnKeyPress"/>
<element name="TMemo.OnKeyUp" link="#lcl.controls.TWinControl.OnKeyUp"/>
<element name="TMemo.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TMemo.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TMemo.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TMemo.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TMemo.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TMemo.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TMemo.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TMemo.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TMemo.OnMouseWheelHorz" link="#lcl.controls.TControl.OnMouseWheelHorz"/>
<element name="TMemo.OnMouseWheelLeft" link="#lcl.controls.TControl.OnMouseWheelLeft"/>
<element name="TMemo.OnMouseWheelRight" link="#lcl.controls.TControl.OnMouseWheelRight"/>
<element name="TMemo.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TMemo.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TMemo.OnUTF8KeyPress" link="#lcl.controls.TWinControl.OnUTF8KeyPress"/>
<element name="TMemo.ParentBidiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TMemo.ParentColor" link="#lcl.controls.TControl.ParentColor"/>
<element name="TMemo.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element name="TMemo.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TMemo.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TMemo.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TMemo.ReadOnly" link="#lcl.stdctrls.TCustomEdit.ReadOnly"/>
<element name="TMemo.ScrollBars" link="#lcl.stdctrls.TCustomMemo.ScrollBars"/>
<element name="TMemo.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TMemo.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TMemo.TabStop" link="#lcl.stdctrls.TCustomEdit.TabStop"/>
<element name="TMemo.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TMemo.WantReturns" link="#lcl.stdctrls.TCustomMemo.WantReturns"/>
<element name="TMemo.WantTabs" link="#lcl.stdctrls.TCustomMemo.WantTabs"/>
<element name="TMemo.WordWrap" link="#lcl.stdctrls.TCustomMemo.WordWrap"/>
<element name="TStaticBorderStyle">
<short>Contains border styles used for static text controls.</short>
<descr>
<p>
<var>TStaticBorderStyle</var> is an enumerated type with values that represents border styles used for static text controls. TStaticBorderStyle is the type used for the <var>BorderStyle</var> property in <var>TCustomStaticText</var> and decendants.
</p>
</descr>
<seealso>
<link id="TCustomStaticText.BorderStyle"/>
</seealso>
</element>
<element name="TStaticBorderStyle.sbsNone">
<short>No border.</short>
</element>
<element name="TStaticBorderStyle.sbsSingle">
<short>Single line border.</short>
</element>
<element name="TStaticBorderStyle.sbsSunken">
<short>Sunken 3-D border.</short>
</element>
<element name="TCustomStaticText">
<short>The base class for <var>TStaticText</var>.</short>
<descr>
<p>
Specifies the base ancestor for TStaticText, a control used to display static text. TCustomStaticText is a TWinControl descendant. It can be used in place of TLabel for situations where a TWinControl descendant is required.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomStaticText.FAlignment" link="#lcl.stdctrls.TCustomStaticText.Alignment"/>
<element name="TCustomStaticText.FFocusControl" link="#lcl.stdctrls.TCustomStaticText.FocusControl"/>
<element name="TCustomStaticText.FShowAccelChar" link="#lcl.stdctrls.TCustomStaticText.ShowAccelChar"/>
<element name="TCustomStaticText.FStaticBorderStyle" link="#lcl.stdctrls.TCustomStaticText.BorderStyle"/>
<element name="TCustomStaticText.GetTransparent" link="#lcl.stdctrls.TCustomStaticText.Transparent">
<short>Gets the value for the Transparent property.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomStaticText.GetTransparent.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomStaticText.SetAlignment">
<short>Sets the value for the Alignment property.</short>
<descr/>
<seealso>
<link id="TCustomStaticText.Alignment"/>
</seealso>
</element>
<element name="TCustomStaticText.SetAlignment.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomStaticText.SetStaticBorderStyle">
<short>Sets the value for the BorderStyle property.</short>
<descr/>
<seealso>
<link id="TCustomStaticText.BorderStyle"/>
</seealso>
</element>
<element name="TCustomStaticText.SetStaticBorderStyle.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomStaticText.SetTransparent">
<short>Sets the value for the Transparent property.</short>
<descr/>
<seealso>
<link id="TCustomStaticText.Transparent"/>
</seealso>
</element>
<element name="TCustomStaticText.SetTransparent.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomStaticText.WMActivate">
<short>Handles the window activate message for the control.</short>
<descr>
<p>
Received when the control has a registered activation shortcut for the FocusControl. Defers the focus to FocusControl when assigned and enabled.
</p>
</descr>
<seealso>
<link id="TCustomStaticText.FocusControl"/>
</seealso>
</element>
<element name="TCustomStaticText.WMActivate.Message">
<short>Window message examined in the method.</short>
</element>
<element name="TCustomStaticText.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TCustomStaticText.GetLabelText">
<short>Returns the Caption for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomStaticText.GetLabelText.Result">
<short>The text stored in Caption.</short>
</element>
<element name="TCustomStaticText.RealSetText" link="#lcl.controls.TControl.RealSetText"/>
<element name="TCustomStaticText.RealSetText.AValue">
<short/>
</element>
<element name="TCustomStaticText.Notification">
<short>Handles a notification that a component used in the control has been added or removed.</short>
<descr>
<p>
<var>Notification</var> is an overridden method in <var>TCustomStaticText</var>, and calls the inherited method on entry. Notification ensures that <var>FocusControl</var> is set to <b>Nil</b> when it is the component for the <var>opRemove</var> <var>Operation</var>.
</p>
</descr>
<seealso>
<link id="TCustomStaticText.FocusControl"/>
<link id="#lcl.controls.TControl.Notification">TControl.Notification</link>
</seealso>
</element>
<element name="TCustomStaticText.Notification.AComponent">
<short>Component for the notification.</short>
</element>
<element name="TCustomStaticText.Notification.Operation">
<short>Operation for the notification.</short>
</element>
<element name="TCustomStaticText.SetFocusControl">
<short>Sets the value for the FocusControl property.</short>
<descr/>
<seealso>
<link id="TCustomStaticText.FocusControl"/>
</seealso>
</element>
<element name="TCustomStaticText.SetFocusControl.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomStaticText.SetShowAccelChar">
<short>Sets the value for the ShowAccelChar property.</short>
<descr/>
<seealso>
<link id="TCustomStaticText.ShowAccelChar"/>
</seealso>
</element>
<element name="TCustomStaticText.SetShowAccelChar.Val">
<short>New value for the property.</short>
</element>
<element name="TCustomStaticText.DialogChar">
<short>Handles an accelerator key for the control.</short>
<descr/>
<seealso>
<link id="#lcl.controls.TControl.DialogChar">TControl.DialogChar</link>
</seealso>
</element>
<element name="TCustomStaticText.DialogChar.Result">
<short>True if the message was handled as an accelerator key.</short>
</element>
<element name="TCustomStaticText.DialogChar.Message">
<short>Message examined in the method.</short>
</element>
<element name="TCustomStaticText.GetControlClassDefaultSize" link="#lcl.controls.TControl.GetControlClassDefaultSize"/>
<element name="TCustomStaticText.GetControlClassDefaultSize.Result">
<short>TSize instance with the default size for new instances of the class.</short>
</element>
<element name="TCustomStaticText.Create">
<short>Constructor for the class instance.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomStaticText.Create.AOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TCustomStaticText.Alignment">
<short>The horizontal alignment for the text; centered, left- or right-justified.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomStaticText.BorderStyle">
<short>The border drawn around the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomStaticText.FocusControl">
<short>The control that receives focus instead of this control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomStaticText.ShowAccelChar">
<short>Indicates if an accelerator character is drawn in the displayed text.</short>
<descr>
<p>
<var>ShowAccelChar</var> is a <var>Boolean</var> property which indicates if the character used as an accelerator key is drawn with an underline in the control.
</p>
<p>
An accelerator character is any value with a leading Ampersand (&amp;) character in <var>Caption</var>. To use an Ampersand character as an accelerator, it must be entered as 2 Ampersand characters (&amp;&amp;).
</p>
<p>
Set ShowAccelChar to <b>True</b> to enable underline drawing for the accelerator character. The default value for the property is <b>True</b>. Changing the value in the property causes the <var>InvalidatePreferredSize</var> method to be called to update the bounds for the control.
</p>
<p>
The value in ShowAccelChar is used in widgetset class methods, such as when the text value is assigned and when the handle for the control is created (or re-created).
</p>
<p>
Use <var>FocusControl</var> to specify the control which receives focus when the accelerator key is handled in <var>DialogChar</var>.
</p>
</descr>
<seealso>
<link id="TCustomStaticText.FocusControl"/>
<link id="TCustomStaticText.DialogChar"/>
<link id="TCustomStaticText.GetLabelText"/>
<link id="#lcl.controls.TControl.Caption">TControl.Caption</link>
<link id="#lcl.controls.TControl.InvalidatePreferredSize">TControl.InvalidatePreferredSize</link>
</seealso>
</element>
<element name="TCustomStaticText.Transparent">
<short>Makes the background for the control transparent when True.</short>
<descr/>
<seealso/>
</element>
<element name="TStaticText">
<short>Control to display a text value which does not change.</short>
<descr>
<p>
<var>TStaticText</var> is a <var>TCustomStaticText</var> descendant which implements a control used to display text that does not change. It can be used in place of TLabel for situations where a TWinControl descendant is required. It has a window handle, and allows the accelerator key for the control to be forwarded to another windowed control.
</p>
</descr>
<seealso>
<link id="HowToUseStdCtrls"/>
</seealso>
</element>
<element name="TStaticText.Align" link="#lcl.controls.TControl.Align"/>
<element name="TStaticText.Alignment" link="#lcl.stdctrls.TCustomStaticText.Alignment"/>
<element name="TStaticText.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TStaticText.AutoSize" link="#lcl.controls.TControl.AutoSize"/>
<element name="TStaticText.BidiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TStaticText.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TStaticText.BorderStyle" link="#lcl.stdctrls.TCustomStaticText.BorderStyle"/>
<element name="TStaticText.Caption" link="#lcl.controls.TControl.Caption">
<short>Text displayed in the control.</short>
<descr/>
<seealso/>
</element>
<element name="TStaticText.Color" link="#lcl.controls.TControl.Color"/>
<element name="TStaticText.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TStaticText.DoubleBuffered" link="#lcl.controls.TWinControl.DoubleBuffered"/>
<element name="TStaticText.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TStaticText.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TStaticText.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TStaticText.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TStaticText.FocusControl" link="#lcl.stdctrls.TCustomStaticText.FocusControl"/>
<element name="TStaticText.Font" link="#lcl.controls.TControl.Font"/>
<element name="TStaticText.OnChangeBounds" link="#lcl.controls.TControl.OnChangeBounds"/>
<element name="TStaticText.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TStaticText.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TStaticText.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element name="TStaticText.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TStaticText.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TStaticText.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TStaticText.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TStaticText.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TStaticText.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TStaticText.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TStaticText.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TStaticText.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TStaticText.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TStaticText.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TStaticText.OnMouseWheelHorz" link="#lcl.controls.TControl.OnMouseWheelHorz"/>
<element name="TStaticText.OnMouseWheelLeft" link="#lcl.controls.TControl.OnMouseWheelLeft"/>
<element name="TStaticText.OnMouseWheelRight" link="#lcl.controls.TControl.OnMouseWheelRight"/>
<element name="TStaticText.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TStaticText.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TStaticText.ParentBidiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TStaticText.ParentColor" link="#lcl.controls.TControl.ParentColor"/>
<element name="TStaticText.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element name="TStaticText.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TStaticText.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TStaticText.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TStaticText.ShowAccelChar" link="#lcl.stdctrls.TCustomStaticText.ShowAccelChar"/>
<element name="TStaticText.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TStaticText.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TStaticText.TabStop" link="#lcl.controls.TWinControl.TabStop"/>
<element name="TStaticText.Transparent" link="#lcl.stdctrls.TCustomStaticText.Transparent"/>
<element name="TStaticText.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TButtonControl">
<short>Specifies a base class for button controls.</short>
<descr>
<p>
<var>TButtonControl</var> is a <var>TWinControl</var> descendant which specifies the base class used for controls with button-like behavior, such as: <var>TCustomButton</var>, <var>TButton</var>, <var>TCustomCheckBox</var>, <var>TCheckBox</var>, <var>TToggleBox</var>, and <var>TRadioButton</var>.
</p>
<p>
TButtonControl introduces properties, methods, and events needed to read and write the Checked state for the control, handle Click events, and perform actions using OnChange or an action link.
</p>
<p>
Do not create instances of TButtonControl in an application; use one of the descendent classes.
</p>
</descr>
<seealso>
</seealso>
</element>
<element name="TButtonControl.FClicksDisabled" link="#lcl.stdctrls.TButtonControl.ClicksDisabled"/>
<element name="TButtonControl.FOnChange" link="#lcl.stdctrls.TButtonControl.OnChange"/>
<element name="TButtonControl.IsCheckedStored" link="#lcl.stdctrls.TButtonControl.Checked"/>
<element name="TButtonControl.IsCheckedStored.Result">
<short>True when the value in Checked is included in the LCL streaming mechanism.</short>
</element>
<element name="TButtonControl.WMDefaultClicked">
<short>Implements the default handler for the LM_CLICKED message.</short>
</element>
<element name="TButtonControl.WMDefaultClicked.Message">
<short>Message handled in the method.</short>
</element>
<element name="TButtonControl.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TButtonControl.GetActionLinkClass" link="#lcl.controls.TControl.GetActionLinkClass"/>
<element name="TButtonControl.GetActionLinkClass.Result"/>
<element name="TButtonControl.GetChecked">
<short>Gets the value for the Checked property.</short>
<descr/>
<seealso>
<link id="TButtonControl.Checked"/>
</seealso>
</element>
<element name="TButtonControl.GetChecked.Result">
<short>Value for the property.</short>
</element>
<element name="TButtonControl.SetChecked">
<short>Sets the value for the Checked property.</short>
<descr/>
<seealso>
<link id="TButtonControl.Checked"/>
</seealso>
</element>
<element name="TButtonControl.SetChecked.Value">
<short>New value for the property.</short>
</element>
<element name="TButtonControl.DoOnChange">
<short>Signals the OnEditingDone and OnChange event handlers (when assigned).</short>
<descr>
<p>
<var>DoOnChange</var> performs actions needed when the button control is clicked. DoOnChange calls <var>EditingDone</var> to signal the <var>OnEditingDone</var> event handler (when assigned). The <var>OnChange</var> event handler is also signalled (when assigned).
</p>
<p>
DoOnChange is called from the <var>Click</var> method before the inherited method in TControl is executed. DoOnChange performs no actions at design-time, during component streaming, or when the component is freed.
</p>
</descr>
<seealso>
<link id="TButtonControl.OnChange"/>
<link id="#lcl.controls.TControl.EditingDone">TControl.EditingDone</link>
<link id="#lcl.controls.TControl.OnEditingDone">TControl.OnEditingDone</link>
<link id="#lcl.controls.TControl.Click">TControl.Click</link>
<link id="#rtl.classes.TComponent.ComponentState">TComponent.ComponentState</link>
</seealso>
</element>
<element name="TButtonControl.Click">
<short>Performs actions needed when a click message is handled for the control.</short>
<descr>
<p>
<var>Click</var> is an overridden method in <var>TButtonControl</var>. Click calls the <var>DoOnChange</var> method to signal the <var>OnEditingDone</var> and <var>OnChange</var> event handlers (when assigned). Click calls the inherited method prior to exit.
</p>
<p>
Click is used when messages are handled in the control and <var>csClickEvents</var> is not used in the <var>ControlStyle</var> property.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Click">TControl.Click</link>
</seealso>
</element>
<element name="TButtonControl.CMWantSpecialKey" link="#lcl.controls.TControl.CMWantSpecialKey">
<short>Handles the CM_WANTSPECIALKEY message for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TButtonControl.CMWantSpecialKey.Message">
<short>Control message examined in the method.</short>
</element>
<element name="TButtonControl.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 on entry. <var>TheOwner</var> is the owner for the new class instance, or <b>Nil</b>.
</p>
<p>
Create ensures that values in ControlStyle are updated to remove the csMultiClicks, csAcceptsControls, and csCaptureMouse style flags. The accessibility role and description are set to "Button" for the new class instance.
</p>
</descr>
<seealso/>
</element>
<element name="TButtonControl.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TButtonControl.Checked">
<short>Indicates the checked state for the control.</short>
<descr>
<p>
<var>Checked</var> is a <var>Boolean</var> property which indicates if the control is displayed using its "checked" or "unchecked" state. The value for the property is always <b>False</b> in <var>TButtonControl</var>, and is overridden in a descendent class.
</p>
</descr>
</element>
<element name="TButtonControl.ClicksDisabled">
<short>Disables clicking on the button, without showing the button in a disabled state.</short>
<descr/>
<seealso/>
</element>
<element name="TButtonControl.OnChange">
<short>Event handler for changes to properties in the control.</short>
<descr/>
<seealso/>
</element>
<element name="TButtonActionLink">
<short>Links a button control to a basic action.</short>
<descr>
<p>
<var>TButtonActionLink</var> is a <var>TWinControlActionLink</var> descendant which links a <var>TButtonControl</var> to a <var>TBasicAction</var> component.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControlActionLink">TWinControlActionLink</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TButtonActionLink.FClientButton">
<short>The button control for the action link.</short>
</element>
<element name="TButtonActionLink.AssignClient">
<short>Assigns the button control for the action link.</short>
<descr/>
<seealso/>
</element>
<element name="TButtonActionLink.AssignClient.AClient">
<short>Button assigned in the method.</short>
</element>
<element name="TButtonActionLink.SetChecked">
<short>Sets the value in the Checked property for the linked button.</short>
<descr/>
<seealso>
<link id="#LCL.ActnList.TActionLink.SetChecked">TActionLink.SetChecked</link>
</seealso>
</element>
<element name="TButtonActionLink.SetChecked.Value">
<short>New value for the checked property.</short>
</element>
<element name="TButtonActionLink.IsCheckedLinked" link="#LCL.ActnList.TActionLink.IsCheckedLinked"/>
<element name="TButtonActionLink.IsCheckedLinked.Result" link="#LCL.ActnList.TActionLink.IsCheckedLinked.Result"/>
<element name="TButtonActionLinkClass">
<short>Class reference used to create new instances of TButtonActionLink.</short>
<descr/>
<seealso>
<link id="TButtonActionLink"/>
</seealso>
</element>
<element name="TCustomButton">
<short>The base class for a push button control.</short>
<descr>
<p>
<var>TCustomButton</var> is a <var>TButtonControl</var> descendant which provides the base class for a push button control.
</p>
<p>
TCustomButton / TButton are used to perform an action when the control is clicked. An <var>OnClick</var> event handler is provided to perform actions needed when the push button is clicked.
</p>
<p>
Properties are provided to control the appearance and behavior for the control. This includes whether it is the Default or Cancel button on a modal form, and the modal result returned when the push button is clicked.
</p>
<p>
The control displays a text-based caption and is drawn using a style appropriate for the platform or widgetset. An accelerator key can be defined in the caption which simulates clicking on the push button when the shortcut key is pressed. Support for TBasicAction from the FPC Run-time Library (RTL) is present, but not published in the control.
</p>
<p>
Please note that the Caption is always center aligned on the push button. The values in properties like BiDiMode and UseRightToLeftAlignment are ignored in the control.
</p>
<p>
Please note that the Color for the control defaults to the system-defined color used for button controls (clDefault or clBtnFace).
</p>
<p>
Do not create instances of TCustomButton; use the TButton descendant instead.
</p>
<p>
Use TBitBtn for a push button control which displays a bitmap instead of a text-based caption.
</p>
<p>
Use TSpeedButton for a push button control which can remain in the pressed or down state.
</p>
</descr>
<seealso>
<link id="TButton"/>
<link id="TButtonControl"/>
</seealso>
</element>
<element name="TCustomButton.FModalResult"/>
<element name="TCustomButton.FShortCut"/>
<element name="TCustomButton.FShortCutKey2"/>
<element name="TCustomButton.FCancel"/>
<element name="TCustomButton.FDefault"/>
<element name="TCustomButton.FActive"/>
<element name="TCustomButton.SetCancel">
<short>Sets the value for the Cancel property.</short>
<descr/>
<seealso>
<link id="TCustomButton.Cancel"/>
</seealso>
</element>
<element name="TCustomButton.SetCancel.NewCancel">
<short>New value for the property.</short>
</element>
<element name="TCustomButton.SetDefault">
<short>Sets the value for the Default property.</short>
<descr/>
<seealso>
<link id="TCustomButton.Default"/>
</seealso>
</element>
<element name="TCustomButton.SetDefault.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomButton.SetModalResult">
<short>Sets the value for the ModalResult property.</short>
<descr/>
<seealso>
<link id="TCustomButton.ModalResult"/>
</seealso>
</element>
<element name="TCustomButton.SetModalResult.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomButton.CMUIActivate">
<short>Handles a UIActivate control message.</short>
<descr>
<p>
Calls <var>UpdateFocus</var> to make the button the active control in the parent form.
</p>
</descr>
<seealso>
<link id="TCustomButton.UpdateFocus"/>
</seealso>
</element>
<element name="TCustomButton.CMUIActivate.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomButton.WMSetFocus">
<short>Handles a set focus window message for the control.</short>
<descr>
<p>
<var>WMSetFocus</var> calls the inherited method in <var>TWinControl</var> on entry. Calls <var>UpdateFocus</var> to make the button the active control in the parent form.
</p>
</descr>
<seealso>
<link id="TCustomButton.UpdateFocus"/>
<link id="#lcl.controls.TWinControl.WMSetFocus">TWinControl.WMSetFocus</link>
</seealso>
</element>
<element name="TCustomButton.WMSetFocus.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomButton.WMKillFocus">
<short>Handles a kill focus message for the control.</short>
<descr>
<p>
<var>WMKillFocus</var> calls the inherited method in <var>TWinControl</var> on entry. When the window handle in <var>Message</var> is the <var>Handle</var> for the control, the <var>UpdateFocus</var> method is called to remove the button as the active default control in the parent form.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.WMKillFocus">TWinControl.WMKillFocus</link>
<link id="#lcl.controls.TWinControl.Handle">TWinControl.Handle</link>
<link id="#lcl.lmessages.TLMKillFocus">TLMKillFocus</link>
</seealso>
</element>
<element name="TCustomButton.WMKillFocus.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomButton.UpdateFocus">
<short>Handles changes to the focus for the control.</short>
<descr>
<p>
<var>UpdateFocus</var> is a method used to update the control and its parent form when the control gets or loses focus on its form.
</p>
<p>
<var>AFocused</var> indicates whether the control is getting or losing focus.
</p>
<p>
UpdateFocus calls GetParentForm to get the parent form for the control. No additional actions are performed in the method when the parent form has not been assigned for the control.
</p>
<p>
When AFocused is <b>True</b>, <var>ActiveDefaultControlChanged</var> is called to synchronize values in the control and the parent form. Active (in the control) is updated to reflect its use as the ActiveControl on the parent form. ActiveDefaultControl (in the parent form) is updated when the control is focused.
</p>
<p>
UpdateFocus is called when the LM_SETFOCUS or LM_KILLFOCUS messages are handled for the control. It is also called when the <var>CM_UIACTIVATE</var> message is dispatched by the parent form when it is focused.
</p>
</descr>
<seealso>
<link id="TCustomButton.Active"/>
<link id="TCustomButton.Default"/>
<link id="TCustomButton.ActiveDefaultControlChanged"/>
<link id="#lcl.forms.GetParentForm">GetParentForm</link>
<link id="#lcl.forms.TCustomForm.SetWindowFocus">TCustomForm.SetWindowFocus</link>
</seealso>
</element>
<element name="TCustomButton.UpdateFocus.AFocused">
<short>True when the button is focused, False when it loses focus.</short>
</element>
<element name="TCustomButton.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TCustomButton.CreateWnd">
<short>Creates the handle for the widgetset class instance.</short>
<descr>
<p>
Calls the inherited method on entry. Calls UpdateDefaultCancel to set the Default and Cancel controls on the Parent form (when needed).
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.CreateWnd">TWinControl.CreateWnd</link>
</seealso>
</element>
<element name="TCustomButton.CreateParams">
<short>Updates creation parameters to use values needed for the control.</short>
<descr>
<p>
Calls the inherited method on entry. Ensures that the style flags in <var>Params</var> is updated to include <var>BS_DEFPUSHBUTTON</var> when the <var>Default</var> property is <b>True</b>. Otherwise, <var>BS_PUSHBUTTON</var> is included in the style flags.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.CreateParams">TWinControl.CreateParams</link>
</seealso>
</element>
<element name="TCustomButton.CreateParams.Params">
<short>Creation parameters updated in the method.</short>
</element>
<element name="TCustomButton.ControlKeyDown" link="#lcl.controls.TWinControl.ControlKeyDown"/>
<element name="TCustomButton.ControlKeyDown.Key">
<short>Virtual key code examined in the method.</short>
</element>
<element name="TCustomButton.ControlKeyDown.Shift">
<short>Shift, Ctrl, or Alt modifier for the key.</short>
</element>
<element name="TCustomButton.ControlKeyUp" link="#lcl.controls.TWinControl.ControlKeyUp"/>
<element name="TCustomButton.ControlKeyUp.Key">
<short>Virtual key code examined in the method.</short>
</element>
<element name="TCustomButton.ControlKeyUp.Shift">
<short>Shift, Ctrl, or Alt modifier for the key.</short>
</element>
<element name="TCustomButton.DialogChar">
<short>Handles an accelerator key for the control.</short>
<descr>
<p>
<var>DialogChar</var> is an overridden <var>Boolean</var> function used to handle a <var>TLMKey</var> message received for the control.
</p>
<p>
DialogChar examines the <var>CharCode</var> member in <var>Message</var> to determine if it contains the accelerator key defined in the <var>Caption</var> for the control. If it is found, and the control can receive focus, the <var>Click</var> method is called and the return value is set to <b>True</b>. If the Message has a CharCode that is not the accelerator key, the inherited method is called to handle the message and get the return value for the method.
</p>
<p>
The return value is <b>True</b> when the Message is successfully handled for the control.
</p>
</descr>
<seealso>
<link id="TCustomButton.Click"/>
<link id="#lcl.controls.TControl.DialogChar">TControl.DialogChar</link>
<link id="#lcl.controls.TControl.Caption">TControl.Caption</link>
<link id="#lcl.controls.TControl.OnClick">TControl.OnClick</link>
</seealso>
</element>
<element name="TCustomButton.DialogChar.Result">
<short>True if the message was handled as an accelerator key.</short>
</element>
<element name="TCustomButton.DialogChar.Message">
<short>Message examined in the method.</short>
</element>
<element name="TCustomButton.ChildClassAllowed" link="#lcl.controls.TWinControl.ChildClassAllowed"/>
<element name="TCustomButton.ChildClassAllowed.Result">
<short>True when the widgetset class indicates child controls are allowed.</short>
</element>
<element name="TCustomButton.ChildClassAllowed.ChildClass">
<short>Not used in the current implementation.</short>
</element>
<element name="TCustomButton.GetControlClassDefaultSize">
<short>Gets the default size for new instances of the control.</short>
<descr>
<p>
<var>GetControlClassDefaultSize</var> is an overridden <var>TSize</var> class function used to get the default height and width for new instances of the control. GetControlClassDefaultSize sets the <var>CX</var> and <var>CY</var> members in the return value to the defaults used for the control. CX contains the width and is set to 75 (pixels). CY contains the height and is set to 25 (pixels).
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.GetControlClassDefaultSize">TControl.GetControlClassDefaultSize</link>
<link id="#rtl.types.TSize">TSize</link>
</seealso>
</element>
<element name="TCustomButton.GetControlClassDefaultSize.Result">
<short>TSize instance with the width and height for the new control.</short>
</element>
<element name="TCustomButton.WSSetDefault">
<short>Notifies the widgetset class of a change to the Default property.</short>
<descr>
<p>
<var>WSSetDefault</var> is a method used to notify the widgetset class when the value in the <var>Default</var> property has been changed.
</p>
<p>
WSSetDefault calls the <var>SetDefault</var> method in the widgetset class using the value in the <var>Active</var> property. Active is used because Default represents the design-time setting for the control. At run-time, Active contains the default button clicked when the Enter key is pressed.
</p>
<p>
Called when a new value is assigned to the <var>Default</var> property. Called when the value in <var>Active</var> is changed in the <var>ActiveDefaultControlChanged</var> method. Called when <var>UpdateDefaultCancel</var> sets the default and cancel controls on the parent form.
</p>
</descr>
<seealso>
<link id="TCustomButton.Default"/>
<link id="TCustomButton.Active"/>
<link id="TCustomButton.ActiveDefaultControlChanged"/>
<link id="TCustomButton.UpdateDefaultCancel"/>
</seealso>
</element>
<element name="TCustomButton.WSSetText">
<short>Notifies the widgetset class of a change to the caption text for the control.</short>
<descr>
<p>
<var>WSSetText</var> is an overridden method used to notify the widgetset class instance when the value in the caption text has been changed. No actions are performed in the method when the handle for the control has not been allocated, or at design-time.
</p>
<p>
WSSetText ensures that <b>Ampersand</b> (<b>&amp;</b>) characters used to define an accelerator key in <var>AText</var> are handled for the widgetset class. The Ampersand character(s) are removed from AText, and the virtual key code equivalent is stored in the <var>Shortcut</var> property. By default, the Shortcut uses the <var>ssCtrl</var> shift modifier for the accelerator key.
</p>
<p>
The <var>SetShortCut</var> method in the widgetset class is called to store values from both <var>Shortcut</var> and <var>ShortCutKey2</var>.
</p>
<p>
The inherited <var>WSSetText</var> method is called prior to exit.
</p>
</descr>
<seealso>
<link id="TCustomButton.Shortcut"/>
<link id="TCustomButton.ShortCutKey2"/>
<link id="#lcl.controls.TControl.Text">TControl.Text</link>
<link id="#lcl.controls.TControl.Caption">TControl.Caption</link>
<link id="#lcl.menus.ShortCut">ShortCut</link>
<link id="#lcl.lcltype.Char2VK">Char2VK</link>
</seealso>
</element>
<element name="TCustomButton.WSSetText.AText">
<short>New value for the caption text in the control.</short>
</element>
<element name="TCustomButton.TextChanged">
<short>Performs actions needed when the CM_TEXTCHANGED message is handled in the control.</short>
<descr>
<p>
<var>TextChanged</var> is an overridden method used to performs actions needed when the <var>CM_TEXTCHANGED</var> message is handled in the control.
</p>
<p>
TextChanged calls <var>InvalidatePreferredSize</var> to force the preferred height and width for the control to be recalculated. When <var>Parent</var> has been assigned and its <var>AutoSize</var> property is set to <b>True</b>, the <var>AdjustSize</var> method in Parent is called. The AdjustSize method for the control is called to resize the control or update control flags when delayed auto-sizing is in use.
</p>
<p>
TextChanged calls the inherited method prior to exit.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.TextChanged">TControl.TextChanged</link>
<link id="#lcl.controls.TControl.AdjustSize">TControl.AdjustSize</link>
<link id="#lcl.controls.TControl.AutoSizeDelayed">TControl.AutoSizeDelayed</link>
</seealso>
</element>
<element name="TCustomButton.Loaded">
<short>Performs actions needed when LCL component streaming has been completed.</short>
<descr>
<p>
<var>Loaded</var> is an overridden method used to perform actions needed when LCL component streaming has been completed.
</p>
<p>
Loaded calls the inherited method on entry. Loaded calls <var>UpdateDefaultCancel</var> to update the default and cancel controls on the parent form.
</p>
</descr>
<seealso>
<link id="TCustomButton.UpdateDefaultCancel"/>
<link id="#lcl.controls.TWinControl.Loaded"/>
</seealso>
</element>
<element name="TCustomButton.UpdateDefaultCancel">
<short>Updates the Default and Cancel properties in the parent form.</short>
<descr>
<p>
<var>UpdateDefaultCancel</var> is a method used to update the default and cancel controls on the parent form.
</p>
<p>
UpdateDefaultCancel calls <var>GetParentForm</var> to get the parent for the control. When the parent form has been assigned, its <var>DefaultControl</var> and <var>CancelControl</var> properties are updated when needed. DefaultControl is updated when the <var>Default</var> property is set to <b>True</b>. CancelControl is updated when the <var>Cancel</var> property is set to <b>True</b>.
</p>
<p>
UpdateDefaultCancel calls <var>WSSetDefault</var> to notify the widgetset class when the control is the default control.
</p>
<p>
UpdateDefaultCancel is called from the <var>CreateWnd</var> and <var>Loaded</var> methods.
</p>
</descr>
<seealso>
<link id="TCustomButton.Cancel"/>
<link id="TCustomButton.Default"/>
<link id="TCustomButton.Active"/>
<link id="TCustomButton.WSSetDefault"/>
<link id="#lcl.forms.GetParentForm">GetParentForm</link>
<link id="#lcl.forms.TCustomForm.CancelControl"/>
<link id="#lcl.forms.TCustomForm.DefaultControl">TCustomForm.DefaultControl</link>
</seealso>
</element>
<element name="TCustomButton.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
Create is the overridden constructor for the class instance, and calls the inherited constructor on entry.
</p>
<p>
Create updates the internal component style and <var>ControlStyle</var> with values needed for the control. Create sets the default values for properties, including:
</p>
<dl>
<dt>Color</dt>
<dd>Set to clDefault or clBtnFace (depending on the platform or widgetset).</dd>
<dt>ParentColor</dt>
<dd>Set to False.</dd>
<dt>TabStop</dt>
<dd>Set to True.</dd>
<dt>Align</dt>
<dd>Set to alNone.</dd>
</dl>
<p>
Create calls <var>SetInitialBounds</var> using the height and width returned from <var>GetControlClassDefaultSize</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomButton.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TCustomButton.Click">
<short>Handles a button click event for the control.</short>
<descr>
<p>
<var>Click</var> is an overridden method used to handle a button click event for the control.
</p>
<p>
Click uses the value in <var>ModalResult</var> to determine if the modal result for the button control is posted to the parent form. When ModalResult contains a value other than <var>mrNone</var>, it is stored in the ModalResult property in the parent form (when assigned).
</p>
<p>
Click calls the inherited method to signal other event handlers or an <var>Action</var> used for the control. <var>OnChange</var> is signalled first. <var>OnClick</var> is signalled if an Action is not in use, or the Action does not have an <var>OnExecute</var> event handler.
</p>
<p>
Click is called from <var>ExecuteDefaultAction</var> when the control is both <var>Active</var> and the <var>Default</var> button on the parent form. It is called from <var>ExecuteCancelAction</var> when the control is the <var>Cancel</var> button on the parent form. It is called from <var>DialogChar</var> when the accelerator key in <var>Shortcut</var> is handled for the control.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Click">TControl.Click</link>
</seealso>
</element>
<element name="TCustomButton.ExecuteDefaultAction">
<short>Performs the Click method if the control is an Active or a Default button.</short>
<descr>
<p>
<var>ExecuteDefaultAction</var> is an overridden method used to perform the <var>Click</var> method when the button control is <var>Active</var> or the <var>Default</var> button. No actions are performed in the method when both properties are set to <b>False</b>.
</p>
<p>
See <link id="TCustomButton.Click">Click</link> for more information about the actions performed in the method.
</p>
<p>
ExecuteDefaultAction is called when a <b>Return</b> (<b>VK_RETURN</b>) key is handled in the <var>Application</var> singleton for the ActiveDefaultControl in a Form.
</p>
</descr>
<seealso>
<link id="TCustomButton.Click"/>
<link id="TCustomButton.Active"/>
<link id="TCustomButton.Default"/>
<link id="#lcl.controls.TControl.ExecuteDefaultAction">TControl.ExecuteDefaultAction</link>
<link id="#lcl.forms.TApplication.DoReturnKey">TApplication.DoReturnKey</link>
</seealso>
</element>
<element name="TCustomButton.ExecuteCancelAction">
<short>Performs the Click method if the control is the Cancel button.</short>
<descr>
<p>
<var>ExecuteCancelAction</var> is an overridden method used to perform the <var>Click</var> method when the control is the <var>Cancel</var> button on its parent form. No actions are performed in the method when Cancel is set to <b>False</b>.
</p>
<p>
See <link id="TCustomButton.Click">Click</link> for more information about the actions performed in the method.
</p>
<p>
ExecuteCancelAction is called when an <b>Escape</b> (<b>VK_ESCAPE</b>) key is handled in the <var>Application</var> singleton for the CancelControl in a Form.
</p>
</descr>
<seealso>
<link id="TCustomButton.Click"/>
<link id="TCustomButton.Cancel"/>
<link id="#lcl.controls.TControl.ExecuteCancelAction">TControl.ExecuteCancelAction</link>
<link id="#lcl.forms.TApplication.DoEscapeKey">TApplication.DoEscapeKey</link>
</seealso>
</element>
<element name="TCustomButton.ActiveDefaultControlChanged">
<short>Updates the button and/or parent form when the active default control has been changed.</short>
<descr>
<p>
<var>ActiveDefaultControlChanged</var> is an overridden method used to update properties in the control and/or parent form when active default control has been changed. <var>NewControl</var> contains the control which is the <var>ActiveControl</var> given focus on the parent form, or <b>Nil</b> when a button control loses focus.
</p>
<p>
When NewControl is the current class instance, its Active property is set to True to reflect the active focused control status. The ActiveDefaultControl property in the parent form is set to the current control to indicate it is also the active default control for the form.
</p>
<p>
When NewControl is assigned, but a different control than the current instance, the button control is not focused and its Active property is set to False.
</p>
<p>
When NewControl is unassigned (<b>Nil</b>), the button control has just lost focus and Active is set to the value in the Default property. The control is also removed as the ActiveDefaultControl in the parent form (when needed).
</p>
<p>
ActiveDefaultControlChanged is called from the <var>UpdateFocus</var> method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.ActiveDefaultControlChanged">TControl.ActiveDefaultControlChanged</link>
</seealso>
</element>
<element name="TCustomButton.ActiveDefaultControlChanged.NewControl">
<short>New value assigned as the active default control in the parent form.</short>
</element>
<element name="TCustomButton.UpdateRolesForForm" link="#lcl.controls.TControl.UpdateRolesForForm"/>
<element name="TCustomButton.UseRightToLeftAlignment" link="#lcl.controls.TControl.UseRightToLeftAlignment"/>
<element name="TCustomButton.UseRightToLeftAlignment.Result">
<short>False; always uses center alignment.</short>
</element>
<element name="TCustomButton.Active">
<short>True if the control is the Cancel or Default button.</short>
<descr>
<p>
<var>Active</var> is a read-only <var>Boolean</var> property which indicates if the control is the active default control for the parent form.
</p>
<p>
The property value is updated in <var>ActiveDefaultControlChanged</var> when the focus for the control has been changed. It is set to <var>True</var> when the button gains focus and becomes the <var>ActiveDefaultControl</var> on the parent form. It is set to <var>False</var> when another control is set as the ActiveDefaultControl on the parent form. It is set to the value in the <var>Default</var> property when the ActiveDefaultControl is set to <b>Nil</b>.
</p>
</descr>
<seealso>
<link id="TCustomButton.ActiveDefaultControlChanged"/>
<link id="TCustomButton.Default"/>
<link id="#lcl.forms.TCustomForm.ActiveDefaultControl">TCustomForm.ActiveDefaultControl</link>
</seealso>
</element>
<element name="TCustomButton.Cancel">
<short>True if the button is the modal Cancel button.</short>
<descr>
<p>
<var>Cancel</var> is a <var>Boolean</var> property which indicates if the button is the modal Cancel button on a form. The default value for the property is <b>False</b>.
</p>
<p>
Setting a new value for the property causes the <var>CancelControl</var> in the parent form to be updated. When set to <b>True</b>, the CancelControl property in the parent form is set the current class instance. When set to the <b>False</b>, the form property is set to <b>Nil</b>.
</p>
<p>
No actions are performed in the method when <var>NewCancel</var> has the same value as the Cancel property, or the parent form has not been assigned.
</p>
<p>
The value in Cancel is automatically updated in methods like <var>UpdateRolesForForm</var> and <var>UpdateDefaultCancel</var>. The property value is used in <var>ExecuteCancelAction</var> to determine if the <var>Click</var> method can be called for the control.
</p>
<p>
Pressing <b>Escape (VK_ESCAPE)</b> in a modal form is equivalent to clicking on the Cancel button.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomButton.Color">
<short>Color used for the button face.</short>
<descr>
<p>
<var>Color</var> is a <var>TColor</var> property with color used for the surface (or face) on the button control. The default value for the property in <var>TCustomButton</var> is <var>clDefault</var> or <var>clBtnFace</var>, depending on the platform or widgetset.
</p>
<p>
Changes made to the Color for the control or its Font are ignored in TCustomButton. It is always drawn using the color(s) needed for the platform or widgetset.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Color">TControl.Color</link>
</seealso>
</element>
<element name="TCustomButton.Default">
<short>True if the button is the default button in a modal form.</short>
<descr>
<p>
<var>Default</var> is a <var>Boolean</var> property which indicates if the button can be used as the default button control on a form. Default is essentially a design-time setting that indicates an intent. At run-time, the default button is the ActiveDefaultControl on the form. The default value for the property is <b>False</b>.
</p>
<p>
Setting a new value for the property causes the button control to be assigned to the DefaultControl property in the parent form. The widgetset class is notified when the property value is set.
</p>
<p>
The value in Default is used in the CreateParams method to determine style flags included in the creation parameters for the control. It is used in ExecuteDefaultAction to determine if the Click method can be called for the control.
</p>
<p>
The value in Default is automatically updated in the UpdateRolesForForm method.
</p>
<p>
Pressing <b>Enter</b> in a modal form is equivalent to clicking on the Default button.
</p>
</descr>
</element>
<element name="TCustomButton.ModalResult">
<short>Value returned when the control is clicked in a modal form.</short>
<descr>
<p>
<var>ModalResult</var> is a <var>TModalResult</var> property used to provide the modal result value when the button control is clicked in a modal form.
</p>
<p>
The value in ModalResult is used in the Click method to update the ModalResult value in the parent form (when assigned). The default value for the property is mrNone, and indicates that the property value is not used as a modal result in the Click method.
</p>
<p>
By convention, the value in ModalResult is associated with the usage and caption for the button control. Common values and usage in ModalResult includes:
</p>
<dl>
<dt>mrNone</dt>
<dd>ModalResult is not used.</dd>
<dt>mrOK</dt>
<dd>The OK button was clicked.</dd>
<dt>mrCancel</dt>
<dd>The Cancel button was clicked.</dd>
<dt>mrAbort</dt>
<dd>The Abort button was clicked or the modal dialog was aborted.</dd>
<dt>mrRetry</dt>
<dd>The Retry button was clicked.</dd>
<dt>mrIgnore</dt>
<dd>The Ignore button was clicked.</dd>
<dt>mrYes</dt>
<dd>The Yes button was clicked.</dd>
<dt>mrNo</dt>
<dd>The No button was clicked.</dd>
<dt>mrAll</dt>
<dd>The All button was clicked.</dd>
<dt>mrNoToAll</dt>
<dd>The No To All button was clicked.</dd>
<dt>mrYesToAll</dt>
<dd>The Yes To All button was clicked.</dd>
<dt>mrClose</dt>
<dd>The Close button was clicked.</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="TCustomButton.ParentColor">
<short>Indicates if the parent color is used to draw the control.</short>
<descr>
<p>
The default value for the property is <b>False</b> in <var>TCustomButton</var>. Changes to the property value are ignored in TCustomButton; the control is always drawn using the color(s) needed for the platform or widgetset.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.ParentColor">TControl.ParentColor</link>
</seealso>
</element>
<element name="TCustomButton.ShortCut">
<short>Shortcut key for the control.</short>
<descr>
<p>
ShortCut is a TShortCut property with the primary shortcut key or accelerator key for the control. The property value contains both the virtual key code and the shift modifier for the short cut key.
</p>
<p>
The value in ShortCut is automatically updated when a caption is assigned for the control which includes an accelerator key. The accelerator key is designated using an Ampersand (&amp;) character before the character used as the short cut. A value assigned in this manner always includes the ssCtrl modifier in the short cut value by default.
</p>
<p>
The property value (along with ShortcutKey2) is passed to the widgetset class when the WSSetText method is called.
</p>
<p>
Use the <var>ShortCut</var> and <var>ShortCutToKey</var> routines in the <file>menu.pp</file> unit to convert to and from virtual key codes with shift modifiers.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomButton.ShortCutKey2">
<short>Secondary shortcut key for the control.</short>
<descr>
<p>
ShortCutKey2 is a TShortCut property with the secondary shortcut key or accelerator key for the control. The property value contains both the virtual key code and the shift modifier for the short cut key. The property value (along with Shortcut) is passed to the widgetset class when the WSSetText method is called.
</p>
<p>
Use the <var>ShortCut</var> and <var>ShortCutToKey</var> routines in the <file>menu.pp</file> unit to convert to and from virtual key codes with shift modifiers.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomButton.TabStop">
<short>Enables navigation using the Tab key.</short>
<descr>
<p>
Allows the user to navigate to this control, by pressing the Tab key.
The default value for the property is True in TCustomButton.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.TabStop"/>
</seealso>
</element>
<element name="TButton">
<short>Implements a push button control.</short>
<descr>
<p>
<var>TButton</var> is a <var>TCustomButton</var> descendant which implements a push button control. TButton is used to perform an action when the control is clicked. An <var>OnClick</var> event handler is provided to perform actions needed when the push button is clicked. TButton provides support for the <var>TBasicAction</var> class defined in the FPC Run-time Library (RTL).
</p>
<p>
Properties are provided to control the appearance and behavior for the control. This includes whether it is the Default or Cancel button on a modal form, and the modal result returned when the push button is clicked.
</p>
<p>
The control displays a text-based caption and is drawn using a style appropriate for the platform or widgetset. An accelerator key can be defined in the caption which simulates clicking on the push button when the shortcut key is pressed.
</p>
<p>
Please note that the Caption in the control is always centered. The values in properties like BiDiMode and UseRightToLeftAlignment are ignored in the control.
</p>
<p>
Please note that the Color for the control defaults to the system-defined color used for button controls.
</p>
<p>
TButton sets the visibility for properties defined in the ancestor class, and does not introduce any new methods.
</p>
<p>
Use TBitBtn for a push button control which displays a bitmap instead of a text-based caption.
</p>
<p>
Use TSpeedButton for a push button control which can remain in the pressed or down state.
</p>
</descr>
<seealso>
<link id="TCustomButton"/>
</seealso>
</element>
<element name="TButton.Click" link="#lcl.controls.TControl.Click"/>
<element name="TButton.Action" link="#lcl.controls.TControl.Action"/>
<element name="TButton.Align" link="#lcl.controls.TControl.Align"/>
<element name="TButton.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TButton.AutoSize" link="#lcl.controls.TControl.AutoSize"/>
<element name="TButton.BidiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TButton.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TButton.Cancel" link="#lcl.stdctrls.TCustomButton.Cancel"/>
<element name="TButton.Caption" link="#lcl.controls.TControl.Caption"/>
<element name="TButton.Color" link="#lcl.stdctrls.TCustomButton.Color"/>
<element name="TButton.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TButton.Default" link="#lcl.stdctrls.TCustomButton.Default"/>
<element name="TButton.DoubleBuffered" link="#lcl.controls.TWinControl.DoubleBuffered"/>
<element name="TButton.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TButton.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TButton.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TButton.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TButton.Font" link="#lcl.controls.TControl.Font"/>
<element name="TButton.ParentBidiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TButton.ModalResult" link="#lcl.stdctrls.TCustomButton.ModalResult"/>
<element name="TButton.OnChangeBounds" link="#lcl.controls.TControl.OnChangeBounds"/>
<element name="TButton.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TButton.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TButton.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TButton.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TButton.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TButton.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
<element name="TButton.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
<element name="TButton.OnKeyDown" link="#lcl.controls.TWinControl.OnKeyDown"/>
<element name="TButton.OnKeyPress" link="#lcl.controls.TWinControl.OnKeyPress"/>
<element name="TButton.OnKeyUp" link="#lcl.controls.TWinControl.OnKeyUp"/>
<element name="TButton.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TButton.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TButton.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TButton.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TButton.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TButton.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TButton.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TButton.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TButton.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TButton.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TButton.OnUTF8KeyPress" link="#lcl.controls.TWinControl.OnUTF8KeyPress"/>
<element name="TButton.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element name="TButton.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TButton.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TButton.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TButton.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TButton.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TButton.TabStop" link="#lcl.stdctrls.TCustomButton.TabStop"/>
<element name="TButton.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TCheckBoxState">
<short>Represents the states for a check box.</short>
<descr>
<p>
<var>TCheckBoxState</var> is an enumerated type with values which represent the states for a check box control. TCheckBoxState is the type used to implement the <var>State</var> property in <var>TCustomCheckBox</var> and descendent classes.
</p>
</descr>
<seealso/>
</element>
<element name="TCheckBoxState.cbUnchecked">
<short>
The check box has no check mark, indicating that the item is not selected.
</short>
</element>
<element name="TCheckBoxState.cbChecked">
<short>
The check box has a check mark in it, indicating that the item is selected.
</short>
</element>
<element name="TCheckBoxState.cbGrayed">
<short>
The check box state cannot be changed by the user, or is disabled.
</short>
</element>
<element name="TCustomCheckBox">
<short>The base class for a check box component.</short>
<descr>
<p>
<var>TCustomCheckBox</var> is a <var>TButtonControl</var> descendant which specifies an interface used for a check box component. It is the common ancestor for <var>TCheckBox</var>, <var>TToggleBox</var>, and <var>TRadioButton</var> descendants.
</p>
<p>
A check box control allows the user to choose the state for the control independent of other check box controls (unlike a radio button). TCustomCheckBox introduces the <var>State</var> property which contains the check, unchecked, or grayed state for the control. The <var>AllowGrayed</var> property indicates if the grayed state is allowed in the control; otherwise only checked and unchecked are used. The <var>Checked</var> property allows the value in State to be updated by setting a <var>Boolean</var> value that indicates if the control is check or unchecked.
</p>
</descr>
<seealso>
<link id="TButtonControl"/>
<link id="TCheckBox"/>
<link id="TToggleBox"/>
<link id="TRadioButton"/>
</seealso>
</element>
<element name="TCustomCheckBox.FAllowGrayed" link="#lcl.stdctrls.TCustomCheckBox.AllowGrayed"/>
<element name="TCustomCheckBox.FState" link="#lcl.stdctrls.TCustomCheckBox.State"/>
<element name="TCustomCheckBox.FShortCut" link="#lcl.stdctrls.TCustomCheckBox.ShortCut"/>
<element name="TCustomCheckBox.FShortCutKey2" link="#lcl.stdctrls.TCustomCheckBox.ShortCutKey2"/>
<element name="TCustomCheckBox.SetState">
<short>Sets the value for the State property.</short>
<descr/>
<seealso>
<link id="TCustomCheckBox.State"/>
</seealso>
</element>
<element name="TCustomCheckBox.SetState.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomCheckBox.GetState">
<short>Gets the value for the State property.</short>
<descr/>
<seealso>
<link id="TCustomCheckBox.State"/>
</seealso>
</element>
<element name="TCustomCheckBox.GetState.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomCheckBox.DoChange">
<short>Handles the LM_CHANGED message for the control.</short>
<descr>
<p>
Performs either the <var>OnClick</var> or the <var>OnChange</var> event handler. Use <var>ClicksDisabled</var> is control the event handler signalled.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomCheckBox.DoChange.Msg">
<short>Message examined in the method.</short>
</element>
<element name="TCustomCheckBox.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TCustomCheckBox.Click">
<short>Performs actions when the control is clicked.</short>
<descr>
<p>
Overridden in <var>TCustomCheckBox</var> to ignore mouse up event notifications.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Click">TControl.Click</link>
</seealso>
</element>
<element name="TCustomCheckBox.DoClickOnChange">
<short>Implements the Click behavior for the control.</short>
<descr>
<p>
<var>DoClickOnChange</var> is a procedure used to signal event handler(s) when the <b>LC_CHANGED</b> message is handled for the control. DoClickOnChange calls the <var>Changed</var> method to dispatch the control message. DoClickOnChange uses the value in <var>ClicksDisabled</var> to determine the event handler(s) signalled in the method.
</p>
<p>
When ClicksDisabled is <b>False</b>, the inherited <var>Click</var> method is called. When set to <b>True</b>, the <var>DoOnChange</var> method is called to signal the <var>OnEditingDone</var> and <var>OnChange</var> event handlers. This emulates the <var>OnClick</var> behavior in the Delphi VCL.
</p>
<p>
DoClickOnChange is called from the <var>DoChange</var> method after the value in <var>State</var> has been updated. It is also called when a new value is assigned to the <var>Checked</var> property.
</p>
</descr>
<seealso>
<link id="TCustomCheckBox.State"/>
<link id="TButtonControl.ClicksDisabled"/>
<link id="TButtonControl.Click"/>
<link id="TButtonControl.Checked"/>
<link id="TButtonControl.DoOnChange"/>
<link id="TButtonControl.OnChange"/>
<link id="#lcl.controls.TControl.Changed">TControl.Changed</link>
<link id="#lcl.controls.TControl.EditingDone">TControl.EditingDone</link>
<link id="#lcl.controls.TControl.OnEditingDone">TControl.OnEditingDone</link>
</seealso>
</element>
<element name="TCustomCheckBox.RetrieveState">
<short>Gets the checked state for the control from the widgetset class.</short>
<descr>
<p>
<var>RetrieveState</var> is a <var>TCheckBoxState</var> function used to get the checked, unchecked, or grayed state for the control from the widgetset class. Access to the widgetset class requires a valid handle in the control. If the handle has not been assigned, the return value is set to the existing value in the <var>State</var> member.
</p>
<p>
RetrieveState calls the RetrieveState method in the widgetset class to get the return value for the method.
</p>
<p>
RetrieveState is used to get the value for the <var>State</var> property. It is called from <var>DoChange</var> when the <var>LM_CHANGED</var> control message is handled for the control. It is also called when setting a new value for the <var>Checked</var> property.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomCheckBox.RetrieveState.Result">
<short>TCheckBoxState value returned from the widgetset class.</short>
</element>
<element name="TCustomCheckBox.InitializeWnd" link="#lcl.controls.TWinControl.InitializeWnd"/>
<element name="TCustomCheckBox.Toggle">
<short>Alternates between the checked and the unchecked state in the control.</short>
<descr>
<p>
Calls <var>GetChecked</var> to retrieve the current checked <var>State</var> for the control. Negates the value and calls <var>SetChecked</var> to store the toggled state value. Called from <var>DialogChar</var> when the accelerator key is handled for the focused control.
</p>
</descr>
<seealso>
<link id="TCustomCheckBox.DialogChar"/>
<link id="TCustomCheckBox.State"/>
<link id="TCustomCheckBox.GetChecked"/>
<link id="TCustomCheckBox.SetChecked"/>
<link id="TCustomCheckBox.ShortCut"/>
</seealso>
</element>
<element name="TCustomCheckBox.DialogChar">
<short>Implements support for accelerator keys in the control.</short>
<descr>
<p>
<var>DialogChar</var> is an overridden <var>Boolean</var> function in <var>TCustomCheckBox</var> which handles accelerator keys in messages for the control. The return value is set to <b>True</b> when the check box is successfully toggled in the method.
</p>
<p>
<var>Message</var> is the TLMKey instance with the key code examined in the method. When the key code matches the accelerator key in <var>Caption</var>, the control is focused and its <var>State</var> is toggled. If the control cannot be focused, or Message does not represent an accelerator key code, the inherited method is called to get the return value.
</p>
<p>
This method is called even if the control is disabled or hidden. Provided for Delphi VCL compatibility.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.DialogChar">TControl.DialogChar</link>
</seealso>
</element>
<element name="TCustomCheckBox.DialogChar.Result">
<short>True when the control state is toggled by the accelerator key.</short>
</element>
<element name="TCustomCheckBox.DialogChar.Message">
<short>Control message examined in the method.</short>
</element>
<element name="TCustomCheckBox.GetChecked">
<short>Gets the value for the Checked property.</short>
<descr/>
<seealso>
<link id="TCustomCheckBox.State"/>
<link id="TButtonControl.Checked"/>
</seealso>
</element>
<element name="TCustomCheckBox.GetChecked.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomCheckBox.SetChecked">
<short>Sets the value for the Checked property.</short>
<descr/>
<seealso>
<link id="TCustomCheckBox.State"/>
<link id="TButtonControl.Checked"/>
</seealso>
</element>
<element name="TCustomCheckBox.SetChecked.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomCheckBox.RealSetText" link="#lcl.controls.TControl.RealSetText"/>
<element name="TCustomCheckBox.RealSetText.Value">
<short>New value stored in the text/caption for the control.</short>
</element>
<element name="TCustomCheckBox.ApplyChanges">
<short>Sets the checked state in the widgetset class and redraws the control.</short>
<descr>
<p>
No actions are performed in the method if a handle has not been allocated for the control, or during component streaming.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomCheckBox.GetControlClassDefaultSize" link="#lcl.controls.TControl.GetControlClassDefaultSize"/>
<element name="TCustomCheckBox.GetControlClassDefaultSize.Result">
<short>Size used for new instances of the class.</short>
</element>
<element name="TCustomCheckBox.Loaded">
<short>
Performs actions needed after the control is loaded using LCL component streaming.
</short>
<descr>
<p>
<var>Loaded</var> is an overridden method in <var>TCustomCheckBox</var>. Loaded ensures that the value in <var>State</var> is passed to the widgetset class when a handle has been allocated for the control. This prevents loss of the stored value in State during component streaming. The inherited method is called prior to exit.
</p>
</descr>
<seealso>
<link id="TCustomCheckBox.State"/>
<link id="#lcl.controls.TWinControl.Loaded">TWinControl.Loaded</link>
</seealso>
</element>
<element name="TCustomCheckBox.WSSetText" link="#lcl.controls.TWinControl.WSSetText"/>
<element name="TCustomCheckBox.WSSetText.AText">
<short>New value for Text.</short>
</element>
<element name="TCustomCheckBox.TextChanged">
<short>Performs actions needed when the CM_TEXTCHANGED message is handled for the control.</short>
<descr>
<p>
<var>TextChanged</var> is an overridden method in <var>TCustomCheckBox</var> used to perform actions needed when the <var>CM_TEXTCHANGED</var> control message is handled for the control.
</p>
<p>
TextChanged calls <var>InvalidatePreferredSize</var> to update the sizing flags for the control and its Parent. When <var>Parent</var> has been assigned and its <var>AutoSize</var> property is <b>True</b>, its <var>AdjustSize</var> method is called. The <var>AdjustSize</var> method in the control is called to resize the visible control.
</p>
<p>
TextChanged calls the inherited method prior to exit.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.TextChanged">TControl.TextChanged</link>
<link id="#lcl.controls.TControl.InvalidatePreferredSize">TControl.InvalidatePreferredSize</link>
<link id="#lcl.controls.TControl.AdjustSize">TControl.AdjustSize</link>
</seealso>
</element>
<element name="TCustomCheckBox.CreateParams" link="#lcl.controls.TWinControl.CreateParams"/>
<element name="TCustomCheckBox.CreateParams.Params">
<short>Creation parameters updated in the method.</short>
</element>
<element name="TCustomCheckBox.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 on entry. <var>TheOwner</var> is the owner for the new class instance. Create sets the default value for the <var>Alignment</var> property to <var>taRightJustify</var>. Create calls <var>SetInitialBounds</var> to set the initial control size to the values returned from the <var>GetControlClassDefaultSize</var> class method.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomCheckBox.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TCustomCheckBox.Alignment">
<short>Indicates the alignment for the caption text in the control.</short>
<descr>
<p>
<var>Alignment</var> is a <var>TLeftRight</var> property with the horizontal alignment for the caption text relative to the check box. The default value for the property is <var>taRightJustify</var>, and causes the text to be drawn to the right of the check box. Use <var>taLeftJustify</var> to draw the caption text in front of the check box.
</p>
<p>
Changing the value for the property causes the widgetset class to be updated when its <var>Handle</var> has been allocated.
</p>
<p>
The value in Alignment is used to set the creation parameters for the control.
</p>
</descr>
<seealso>
<link id="TCustomCheckBox.CreateParams"/>
<link id="#rtl.classes.TLeftRight">TLeftRight</link>
</seealso>
</element>
<element name="TCustomCheckBox.AllowGrayed">
<short>Allows the check box to use a "grayed" state.</short>
<descr>
<p>
If <var>AllowGrayed</var> is set to <b>True</b>, the check box has three possible states: checked, unchecked and grayed. If <var>AllowGrayed</var> is set to <b>False</b>, the check box has only two possible states: checked and unchecked.
</p>
</descr>
<example file="stdctrls/tcustomcheckbox_allowgrayed.pas"/>
</element>
<element name="TCustomCheckBox.State">
<short>The check, unchecked, or grayed state for the control.</short>
<descr>
<p>
Indicates whether the check box is checked (selected), unchecked (deselected) or grayed (disabled). See <var>TCheckBoxState</var> for the possible values in <var>State</var>.
</p>
</descr>
<seealso>
<link id="TCheckBoxState"/>
</seealso>
<example file="stdctrls/tcustomcheckbox_allowgrayed.pas"/>
</element>
<element name="TCustomCheckBox.ShortCut">
<short>Shortcut key for the control.</short>
<descr>
<p>
<var>ShortCut</var> is a <var>TShortCut</var> property with the primary shortcut key or accelerator key for the control. The property value contains both the virtual key code and the shift modifier for the short cut key.
</p>
<p>
The value in ShortCut is automatically updated when a caption is assigned for the control which includes an accelerator key. The accelerator key is designated using an Ampersand (&amp;) character before the character used as the short cut. A value assigned in this manner always includes the ssCtrl modifier in the short cut value by default.
</p>
<p>
Use the <var>ShortCut</var> and <var>ShortCutToKey</var> routines in the <file>menu.pp</file> unit to convert to and from virtual key codes with shift modifiers.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomCheckBox.ShortCutKey2">
<short>Secondary shortcut key for the control.</short>
<descr>
<p>
<var>ShortCutKey2</var> is a <var>TShortCut</var> property with the secondary shortcut key or accelerator key for the control. The property value contains both the virtual key code and the shift modifier combined to form the short cut key.
</p>
<p>
The property value (along with Shortcut) is passed to the widgetst class when the WSSetText method is called.
</p>
<p>
Use the <var>ShortCut</var> and <var>ShortCutToKey</var> routines in the <file>menu.pp</file> unit to convert to and from virtual key codes with shift modifiers.
</p>
<remark>
ShortCutKey2 may not be implemented for all platforms supported in the LCL.
</remark>
</descr>
<seealso/>
</element>
<element name="TCustomCheckBox.TabStop" link="#lcl.controls.TWinControl.TabStop"/>
<element name="TCustomCheckBox.OnChange" link="#lcl.stdctrls.TButtonControl.OnChange"/>
<element name="TCheckBox">
<short>A label with a box which can contain a check mark.</short>
<descr>
<p>
<var>TCheckBox</var> is a <var>TCustomCheckBox</var> descendant which implements a check box component. A check box control allows the user to choose the state for the control independent of other check box controls (unlike a radio button).
</p>
<p>
The <var>State</var> property contains the checked, unchecked, or grayed state for the control. The <var>AllowGrayed</var> property indicates if the grayed state is allowed in the control; otherwise only checked and unchecked are used. The <var>Checked</var> property allows the value in State to be updated by setting a <var>Boolean</var> value that indicates if the control is check or unchecked.
</p>
</descr>
<seealso>
<link id="HowToUseStdCtrls"/>
<link id="TButtonControl"/>
<link id="TCustomCheckBox"/>
<link id="TToggleBox"/>
<link id="TRadioButton"/>
</seealso>
</element>
<element name="TCheckBox.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
Create is the overridden constructor for the class instance, and calls the inherited method on entry. Creates sets the internal component style for the control to <var>csCheckbox</var>, and sets the default values for properties including <var>TabStop</var> (<b>True</b>) and <var>AutoSize</var> (<b>True</b>).
</p>
</descr>
<seealso/>
</element>
<element name="TCheckBox.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TCheckBox.Action" link="#lcl.controls.TControl.Action"/>
<element name="TCheckBox.Align" link="#lcl.controls.TControl.Align"/>
<element name="TCheckBox.Alignment" link="#lcl.stdctrls.TCustomCheckBox.Alignment"/>
<element name="TCheckBox.AllowGrayed" link="#lcl.stdctrls.TCustomCheckBox.AllowGrayed"/>
<element name="TCheckBox.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TCheckBox.AutoSize">
<short>
Allows automatic adjustment of the size for the control, according to its content.
</short>
<descr>
<p>
The action performed depends on the control type. For example, a label or button can become bigger or smaller to accommodate a longer or shorter caption. The default value for the property is True in TCheckBox, and enables auto-sizing for the control instance.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.AutoSize">TControl.AutoSize</link>
</seealso>
</element>
<element name="TCheckBox.BidiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TCheckBox.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TCheckBox.Caption" link="#lcl.controls.TControl.Caption"/>
<element name="TCheckBox.Checked" link="#lcl.stdctrls.TButtonControl.Checked"/>
<element name="TCheckBox.Color" link="#lcl.controls.TControl.Color"/>
<element name="TCheckBox.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TCheckBox.DoubleBuffered" link="#lcl.controls.TWinControl.DoubleBuffered"/>
<element name="TCheckBox.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TCheckBox.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TCheckBox.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TCheckBox.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TCheckBox.Font" link="#lcl.controls.TControl.Font"/>
<element name="TCheckBox.Hint" link="#lcl.controls.TControl.Hint"/>
<element name="TCheckBox.OnChange" link="#lcl.stdctrls.TButtonControl.OnChange"/>
<element name="TCheckBox.OnChangeBounds" link="#lcl.controls.TControl.OnChangeBounds"/>
<element name="TCheckBox.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TCheckBox.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TCheckBox.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TCheckBox.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TCheckBox.OnEditingDone" link="#lcl.controls.TControl.OnEditingDone"/>
<element name="TCheckBox.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TCheckBox.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
<element name="TCheckBox.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
<element name="TCheckBox.OnKeyDown" link="#lcl.controls.TWinControl.OnKeyDown"/>
<element name="TCheckBox.OnKeyPress" link="#lcl.controls.TWinControl.OnKeyPress"/>
<element name="TCheckBox.OnKeyUp" link="#lcl.controls.TWinControl.OnKeyUp"/>
<element name="TCheckBox.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TCheckBox.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TCheckBox.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TCheckBox.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TCheckBox.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TCheckBox.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TCheckBox.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TCheckBox.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TCheckBox.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TCheckBox.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TCheckBox.OnUTF8KeyPress" link="#lcl.controls.TWinControl.OnUTF8KeyPress"/>
<element name="TCheckBox.ParentBidiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TCheckBox.ParentColor" link="#lcl.controls.TControl.ParentColor"/>
<element name="TCheckBox.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element name="TCheckBox.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TCheckBox.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TCheckBox.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TCheckBox.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TCheckBox.State" link="#lcl.stdctrls.TCustomCheckBox.State"/>
<element name="TCheckBox.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TCheckBox.TabStop">
<short>Enables navigation using the Tab key.</short>
<descr>
<p>
Allows the user to navigate to this control, by pressing the Tab key.
The default value for the property is True in TCheckBox.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.TabStop">TWinControl.TabStop</link>
</seealso>
</element>
<element name="TCheckBox.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TToggleBox">
<short>A labelled box capable of being checked or unchecked.</short>
<descr>
<p>
<var>TToggleBox</var> is <var>TCustomCheckBox</var> descendant which implements a labelled control with state values like a check box control. TToggleBox differs from <var>TCheckBox</var> in that it displays only the <var>Caption</var> text for the control; the graphical check mark representation is not used. TToggleBox is similar in appearance to a push button control. The control state determines whether the button is drawn using its up or down position.
</p>
<p>
The programmer must ensure that the <var>OnClick</var> event handler recognizes the <var>State</var> of the control, takes the appropriate <var>Action</var>, and stores the <var>State</var> into the appropriate storage.
</p>
</descr>
<seealso>
<link id="HowToUseStdCtrls"/>
<link id="TCustomCheckBox"/>
<link id="TCheckBox"/>
<link id="TButton"/>
</seealso>
</element>
<element name="TToggleBox.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TToggleBox.GetControlClassDefaultSize" link="#lcl.controls.TControl.GetControlClassDefaultSize"/>
<element name="TToggleBox.GetControlClassDefaultSize.Result">
<short>Bounds used for new instances of the class.</short>
</element>
<element name="TToggleBox.CreateParams" link="#lcl.controls.TWinControl.CreateParams"/>
<element name="TToggleBox.CreateParams.Params">
<short>Creation parameters with style flags updated in the method.</short>
</element>
<element name="TToggleBox.ParentColor" link="#lcl.controls.TControl.ParentColor"/>
<element name="TToggleBox.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
Create is the overridden constructor for the class instance, and calls the inherited method using <var>TheOwner</var> as the owner for the new class instance. Create ensures that the internal component style for the control is set to <var>csToggleBox</var>, and sets the default values for the TabStop (<b>True</b>) and ParentColor (<b>False</b>) properties.
</p>
</descr>
<seealso/>
</element>
<element name="TToggleBox.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TToggleBox.AllowGrayed" link="#lcl.stdctrls.TCustomCheckBox.AllowGrayed"/>
<element name="TToggleBox.Align" link="#lcl.controls.TControl.Align"/>
<element name="TToggleBox.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TToggleBox.AutoSize" link="#lcl.controls.TControl.AutoSize"/>
<element name="TToggleBox.BidiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TToggleBox.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TToggleBox.Caption" link="#lcl.controls.TControl.Caption"/>
<element name="TToggleBox.Checked" link="#lcl.stdctrls.TButtonControl.Checked"/>
<element name="TToggleBox.Color" link="#lcl.controls.TControl.Color"/>
<element name="TToggleBox.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TToggleBox.DoubleBuffered" link="#lcl.controls.TWinControl.DoubleBuffered"/>
<element name="TToggleBox.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TToggleBox.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TToggleBox.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TToggleBox.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TToggleBox.Font" link="#lcl.controls.TControl.Font"/>
<element name="TToggleBox.Hint" link="#lcl.controls.TControl.Hint"/>
<element name="TToggleBox.OnChange" link="#lcl.stdctrls.TButtonControl.OnChange"/>
<element name="TToggleBox.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TToggleBox.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TToggleBox.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TToggleBox.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TToggleBox.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TToggleBox.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
<element name="TToggleBox.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
<element name="TToggleBox.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TToggleBox.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TToggleBox.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TToggleBox.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TToggleBox.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TToggleBox.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TToggleBox.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TToggleBox.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TToggleBox.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TToggleBox.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TToggleBox.ParentBidiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TToggleBox.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element name="TToggleBox.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TToggleBox.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TToggleBox.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TToggleBox.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TToggleBox.State" link="#lcl.stdctrls.TCustomCheckBox.State"/>
<element name="TToggleBox.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TToggleBox.TabStop">
<short>Enables navigation using the Tab key.</short>
<descr>
<p>
Allows the user to navigate to this control, by pressing the Tab key.
The default value for the property is True in TToggleBox.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.TabStop">TWinControl.TabStop</link>
</seealso>
</element>
<element name="TToggleBox.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TRadioButton">
<short>Implement a radio button control.</short>
<descr>
<p>
<var>TRadioButton</var> is a <var>TCustomCheckBox</var> descendant which implements a selection button that works with other radio buttons in a mutually exclusive way. If one radio button is selected, none of the others in the group can be selected.
</p>
<p>
Ensure that the <var>OnClick</var> event handler for each button has a unique <var>Action</var>, and that Actions for the other (deselected and therefore inactive) buttons are turned off.
</p>
<p>
<var>TRadioGroup</var> behaves differently from a group of <var>TRadioButton</var> controls placed on a form.
</p>
<p>
In the case of <var>TRadioButton</var>, the mutual exclusivity is a feature that applies to any <var>RadioButton</var> anywhere in the Form, and the <var>RadioButtons</var> can be rearranged in any order or placed anywhere within the containing <var>Form</var>, while in <var>TRadioGroup</var> the exclusivity applies only to buttons within the Group, which are ordered strictly according to their <var>ItemIndex</var> within the <var>Items</var> stringlist.
</p>
<p>
<var>TRadioButton</var> is an entity in itself, with a number of additional properties, whereas the buttons within <var>TRadioGroup</var> are not separate entities, but rather are simply entries in a list of strings, each of which is associated with the on-screen image of a <var>RadioButton</var>.
</p>
<p>
The example shows the difference between the use of <var>TRadioButton</var> and <var>TRadioGroup</var>.
</p>
</descr>
<seealso>
<link id="HowToUseStdCtrls"/>
<link id="#lcl.extctrls.TRadioGroup">TRadioGroup</link>
</seealso>
<example file="extctrls/radiobutton.pas"/>
</element>
<element name="TRadioButton.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TRadioButton.ApplyChanges">
<short>Updates the state for sibling radio buttons in the parent.</short>
<descr>
<p>
<var>ApplyChanges</var> is an overridden method in <var>TRadioButton</var>. ApplyChanges ensures that other radio buttons in the <var>Parent</var> control are unchecked when the current class instance is <var>Checked</var>.
</p>
<p>
The siblings controls are normally unchecked by methods in the widgetset class. ApplyChanges performs the actions needed when a handle has not been allocated for the control (widgetset class). This involves iterating over the controls in Parent, and setting the Checked state for sibling TRadioButton instances to <b>False</b>.
</p>
<p>
ApplyChanges is called when the value in the <var>State</var> property is changed.
</p>
</descr>
<seealso>
<link id="TRadioButton.Checked"/>
<link id="TCustomCheckBox.State"/>
<link id="TCustomCheckBox.ApplyChanges"/>
<link id="#lcl.controls.TControl.Parent">TControl.Parent</link>
</seealso>
</element>
<element name="TRadioButton.DialogChar">
<short>Implements support for an accelerator key in the control.</short>
<descr>
<p>
<var>DialogChar</var> is an overridden <var>Boolean</var> function in <var>TRadioButton</var> which handles accelerator keys in messages for the control. The return value is set to <b>True</b> when the radio button is successfully toggled in the method.
</p>
<p>
<var>Message</var> is the TLMKey instance with the key code examined in the method. When the key code matches the accelerator key in <var>Caption</var>, the control is focused and the return value is set to True. If the control cannot be focused, or Message does not represent an accelerator key code, the inherited method is called to get the return value.
</p>
<p>
This method is called even if the control is disabled or hidden. Provided for Delphi VCL compatibility.
</p>
</descr>
<seealso>
<link id="TCustomCheckBox.DialogChar"/>
</seealso>
</element>
<element name="TRadioButton.DialogChar.Result">
<short>True when the message is handled and the control is focused.</short>
</element>
<element name="TRadioButton.DialogChar.Message">
<short>Message examined for the accelerator key.</short>
</element>
<element name="TRadioButton.RealSetText">
<short>Sets the value for the text and/or caption in the control.</short>
<descr>
<p>
<var>RealSetText</var> is an overridden method used to set value for the control using the <var>TCaption</var> instance in <var>Value</var>. In TRadioButton, the method ensures that the value in the caption is updated and that the control size is invalidated and adjusted using auto-sizing.
</p>
</descr>
<seealso>
<link id="TCustomCheckBox.RealSetText"/>
</seealso>
</element>
<element name="TRadioButton.RealSetText.Value">
<short>New value for the control.</short>
</element>
<element name="TRadioButton.DoClickOnChange">
<short>Performs actions needed when the control has been changed using a mouse click.</short>
<descr>
<p>
<var>DoClickOnChange</var> is an overridden method used to signal an <var>OnChange</var> event handler when the mouse is clicked on the control. DoClickOnChange ensures the value in <var>TabStop</var> is updated to reflect the <var>State</var> for the control. When State contains <var>cbChecked</var>, TabStop is set to <b>True</b>. Otherwise, it is set to <b>False</b>.
</p>
<p>
DoClickOnChange also ensures that the correct click/change behavior is used for the current control State. If the control is Checked, the inherited DoClickOnChange method is called. This also emulates the Delphi Click behavior where the <var>OnChange</var> event handler is signalled when <var>ClicksDiabled</var> is <b>True</b>. When the control is not Checked, the <var>DoOnChange</var> method is called to signal both the <var>OnEditingDone</var> and <var>OnChange</var> event handlers.
</p>
<p>
DoClickOnChange is called from the <var>DoChange</var> method in the <var>TCustomCheckBox</var> ancestor class.
</p>
</descr>
<seealso>
<link id="TCustomCheckBox.DoClickOnChange"/>
<link id="TButtonControl.DoOnChange"/>
</seealso>
</element>
<element name="TRadioButton.CreateParams">
<short>Initializes the creation parameters for the class instance.</short>
<descr>
<p>
<var>CreateParams</var> is an overridden method used to update creation parameters for the class instance, and calls the inherited method on entry. CreateParams ensures that <var>Style</var> flags in the <var>Params</var> argument are updated to include the <var>BS_RADIOBUTTON</var> style flag, and to exclude the <var>BS_3STATE</var> style flag.
</p>
</descr>
<seealso>
<link id="TCustomCheckBox.CreateParams"/>
</seealso>
</element>
<element name="TRadioButton.CreateParams.Params">
<short>Creation parameters updated in the method.</short>
</element>
<element name="TRadioButton.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 constructor on entry. Create ensures that the <var>csRadioButton</var> style flag is included in the component style flags for the control. The default value for the <var>AutoSize</var> property is set to <b>True</b>.
</p>
</descr>
<seealso/>
</element>
<element name="TRadioButton.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TRadioButton.Align" link="#lcl.controls.TControl.Align"/>
<element name="TRadioButton.Alignment" link="#lcl.stdctrls.TCustomCheckBox.Alignment"/>
<element name="TRadioButton.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TRadioButton.AutoSize">
<short>Enables or disables auto-sizing the control to its content.</short>
<descr>
<p>
The default value for the property is <b>True</b> in <var>TRadioButton</var>.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.AutoSize">TControl.AutoSize</link>
</seealso>
</element>
<element name="TRadioButton.BidiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TRadioButton.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TRadioButton.Caption" link="#lcl.controls.TControl.Caption"/>
<element name="TRadioButton.Checked" link="#lcl.stdctrls.TButtonControl.Checked"/>
<element name="TRadioButton.Color" link="#lcl.controls.TControl.Color"/>
<element name="TRadioButton.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TRadioButton.DoubleBuffered" link="#lcl.controls.TWinControl.DoubleBuffered"/>
<element name="TRadioButton.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TRadioButton.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TRadioButton.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TRadioButton.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TRadioButton.Font" link="#lcl.controls.TControl.Font"/>
<element name="TRadioButton.Hint" link="#lcl.controls.TControl.Hint"/>
<element name="TRadioButton.OnChange" link="#lcl.stdctrls.TButtonControl.OnChange"/>
<element name="TRadioButton.OnChangeBounds" link="#lcl.controls.TControl.OnChangeBounds"/>
<element name="TRadioButton.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TRadioButton.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TRadioButton.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TRadioButton.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TRadioButton.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TRadioButton.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
<element name="TRadioButton.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
<element name="TRadioButton.OnKeyDown" link="#lcl.controls.TWinControl.OnKeyDown"/>
<element name="TRadioButton.OnKeyPress" link="#lcl.controls.TWinControl.OnKeyPress"/>
<element name="TRadioButton.OnKeyUp" link="#lcl.controls.TWinControl.OnKeyUp"/>
<element name="TRadioButton.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TRadioButton.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TRadioButton.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TRadioButton.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TRadioButton.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TRadioButton.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TRadioButton.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TRadioButton.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TRadioButton.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TRadioButton.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TRadioButton.ParentBidiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TRadioButton.ParentColor" link="#lcl.controls.TControl.ParentColor"/>
<element name="TRadioButton.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element name="TRadioButton.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TRadioButton.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TRadioButton.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TRadioButton.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TRadioButton.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TRadioButton.TabStop">
<short>Enables navigation using the Tab key.</short>
<descr>
<p>
Allows the user to navigate to this control, by pressing the Tab key.
The default value for the property is True in TRadioButton.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.TabStop">TWinControl.TabStop</link>
</seealso>
</element>
<element name="TRadioButton.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TCustomLabel">
<short>Control used to show static text optionally using multiple lines.</short>
<descr>
<p>
<var>TCustomLabel</var> is a <var>TWinControl</var> descendant which specifies a control to display static text on a form. The value in the control is not editable visually, and can be used to label or describe another control or a container on the form. Since it cannot be edited, it is not allowed to receive the input focus. It can, however, be used to set focus to an associated control using an accelerator key defined in the Caption for the control.
</p>
<p>
TCustomLabel is the ancestor class for <var>TLabel</var>. Do not create instances of TCustomLabel; use the TLabel descendant.
</p>
<p>
Use TStaticText to display static text and respond to keyboard input directly in the control.
</p>
</descr>
<seealso>
<link id="HowToUseStdCtrls"/>
<link id="TLabel"/>
<link id="TStaticText"/>
<link id="#lcl.controls.TWinControl">TWinControl</link>
</seealso>
</element>
<element name="TCustomLabel.FAlignment" link="#lcl.stdctrls.TCustomLabel.Alignment"/>
<element name="TCustomLabel.FFocusControl" link="#lcl.stdctrls.TCustomLabel.FocusControl"/>
<element name="TCustomLabel.FOptimalFill" link="#lcl.stdctrls.TCustomLabel.OptimalFill"/>
<element name="TCustomLabel.FShowAccelChar" link="#lcl.stdctrls.TCustomLabel.ShowAccelChar"/>
<element name="TCustomLabel.FWordWrap" link="#lcl.stdctrls.TCustomLabel.WordWrap"/>
<element name="TCustomLabel.FLayout" link="#lcl.stdctrls.TCustomLabel.Layout"/>
<element name="TCustomLabel.FInternalSetBounds"/>
<element name="TCustomLabel.SetAlignment">
<short>Sets the value for the Alignment property.</short>
<descr/>
<seealso>
<link id="TCustomLabel.Alignment"/>
</seealso>
</element>
<element name="TCustomLabel.SetAlignment.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomLabel.SetOptimalFill">
<short>Sets the value for the OptimalFill property.</short>
<descr/>
<seealso>
<link id="TCustomLabel.OptimalFill"/>
</seealso>
</element>
<element name="TCustomLabel.SetOptimalFill.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomLabel.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>
<element name="TCustomLabel.CanTab">
<short>Always False, since you cannot tab into a label control.</short>
<descr>
<p>
<var>CanTab</var> is an overridden method in <var>TCustomLabel</var>. The return value is always <b>False</b> since the <b>Tab</b> key cannot be used to give focus to the control.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.CanTab">TControl.CanTab</link>
</seealso>
</element>
<element name="TCustomLabel.CanTab.Result">
<short>Always False in TCustomLabel.</short>
</element>
<element name="TCustomLabel.DoDrawText">
<short>Performs actions needed to draw the text for the label.</short>
<descr>
<p>
<var>DoDrawText</var> performs action needed to draw the text for the label.
</p>
<p>
The <var>GetLabelText</var> method is called to get the text value drawn in the method.
</p>
<p>
The <var>Font</var> color may be temporarily changed when when the <var>Enabled</var> property is <b>False</b>. If themes are enabled, the Font color is set to <var>clGrayText</var>. When themes are not enabled, the Font color is set to <var>clBtnHighlight</var>. The original Font color is restored prior to exiting the method.
</p>
<p>
DoDrawText calls the <var>DrawText</var> routine to draw the text on the <var>Canvas</var> using the text rectangle and flags passed as arguments. DrawText is called a second time to render the shadow for the label text when themes are not enabled. The shadow text uses the color <var>clBtnShadow</var>.
</p>
<p>
DoDrawText is called from the <var>Paint</var> method.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomLabel.DoDrawText.Rect">
<short>Text rectangle used to draw the label text.</short>
</element>
<element name="TCustomLabel.DoDrawText.Flags">
<short>DrawText flags used to render the text.</short>
</element>
<element name="TCustomLabel.HasMultiLine">
<short>Checks for CR or LF characters in the label text for the control.</short>
<descr>
<p>
<var>HasMultiLine</var> is a <var>Boolean</var> function used to determine if <b>CR</b> (Carriage Return, Decimal 13) or <b>LF</b> (LineFeed, Decimal 10) characters are included in the text for the control. HasMultiLine calls GetLabelText to get the text stored in the label.
</p>
<p>
The return value is <b>True</b> when either character occurs in the text for the label.
</p>
<p>
HasMultiLine is used in the <var>CalculateSize</var> method to determine whether the <var>DT_SINGLELINE</var> flag is included in the drawing flags for the control.
</p>
</descr>
<seealso>
<link id="TCustomLabel.CalculateSize"/>
<link id="TCustomLabel.GetLabelText"/>
<link id="#lcl.lcltype.DT_SINGLELINE">DT_SINGLELINE</link>
</seealso>
</element>
<element name="TCustomLabel.HasMultiLine.Result">
<short>True when CR or LF characters are used in the text for the label.</short>
</element>
<element name="TCustomLabel.CalculatePreferredSize">
<short>Calculates the preferred size for the control using its anchoring and constraints.</short>
<descr>
<p>
<var>CalculatePreferredSize</var> is an overridden method used to calculated the preferred size for the control. Values stored in the <var>Anchors</var>, <var>Constraints</var>, and <var>WordWrap</var> properties are used to determine the effective width for the control. CalculateSize is called to calculate the text rectangle for the control using the requested dimensions.
</p>
<p>
CalculatePreferredSize checks the assigned <var>Font</var> for the control to determine whether text rotation is used in its <var>Orientation</var> property. When a value other than <b>0</b> (<b>zero</b>) is used, the text rectangle is rotated by the number of radians needed for the property value. The values in <var>PreferredWidth</var> and <var>PreferredHeight</var> are updated for the new text rectangle.
</p>
<p>
No actions are performed in the method if <var>Parent</var> has not been assigned (contains Nil), or when a handle has not been allocated in the Parent control.
</p>
<p>
Please note: CalculatePreferredSize does <b>not</b> call the inherited method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.CalculatePreferredSize">TControl.CalculatePreferredSize</link>
</seealso>
</element>
<element name="TCustomLabel.CalculatePreferredSize.PreferredWidth">
<short>Preferred width calculated for the control.</short>
</element>
<element name="TCustomLabel.CalculatePreferredSize.PreferredHeight">
<short>Preferred height calculated for the control.</short>
</element>
<element name="TCustomLabel.CalculatePreferredSize.WithThemeSpace">
<short>True to reserve space for theme element details.</short>
</element>
<element name="TCustomLabel.CalculateSize">
<short>Gets the height and width needed for the label text.</short>
<descr>
<p>
Calculates the size for the label text using the formatting defined in related property values.
</p>
<p>
<var>NeededWidth</var> and <var>NeededHeight</var> are variable parameters updated in the method to reflect the values needed after applying DrawText flags to the label text. The DrawText flags include constants which represent the following properties:
</p>
<ul>
<li>WordWrap</li>
<li>HasMultiLine</li>
<li>ShowAccelChar</li>
<li>UseRightToLeftReading</li>
</ul>
<p>
The following constants are also used in the DrawText flags:
</p>
<ul>
<li>DT_CALCRECT</li>
<li>DT_EXPANDTABS</li>
<li>DT_NOCLIP</li>
</ul>
</descr>
<seealso/>
</element>
<element name="TCustomLabel.CalculateSize.MaxWidth">
<short>Maximum width for the text rectangle in the label.</short>
</element>
<element name="TCustomLabel.CalculateSize.NeededWidth">
<short>Width needed for the text.</short>
</element>
<element name="TCustomLabel.CalculateSize.NeededHeight">
<short>Height needed for the text.</short>
</element>
<element name="TCustomLabel.DoAutoSize" link="#lcl.controls.TControl.DoAutoSize"/>
<element name="TCustomLabel.DialogChar" link="#lcl.controls.TControl.DialogChar">
<short>Handles an accelerator key for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomLabel.DialogChar.Result">
<short>True when the message is handled as an accelerator key.</short>
</element>
<element name="TCustomLabel.DialogChar.Message">
<short>Message examined in the method.</short>
</element>
<element name="TCustomLabel.TextChanged" link="#lcl.controls.TControl.TextChanged">
<short>Performs actions when the CM_TEXTCHANGED message is handled for the control.</short>
<descr>
<p>
<var>TextChanged</var> is an overridden method used to perform actions needed when the <var>CM_TEXTCHANGED</var> message is handled for the control. TextChanged calls <var>Invalidate</var> to force the control to be redrawn. <var>UpdateSize</var> is called to perform auto-sizing, and recalculate the dimensions for the control and its font.
</p>
<p>
TextChanged does <b>not</b> calls the inherited method.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomLabel.DoSetBounds">
<short>Performs a bounds change for the control.</short>
<descr>
<p>
<var>DoSetBounds</var> is an overridden method in <var>TCustomLabel</var>. It calls the inherited method to store the values in ALeft, ATop, AWidth, and AHeight to the corresponding properties in the control. Values in <var>OptimalFill</var>, <var>WordWrap</var>, and <var>Autosize</var> are used to determine if additional actions are needed for the bounds change.
</p>
<p>
When <var>OptimalFill</var> is <b>True</b> and <var>AutoSize</var> is <b>False</b>, the <var>AdjustFontForOptimalFill</var> method is called. If <var>Width</var> was changed and <var>WordWrap</var> is <b>True</b>, both the <var>InvalidatePreferredSize</var> and <var>AdjustSize</var> methods are called.
</p>
<p>
DoSetBounds is called from the <var>ChangeBounds</var> method in an ancestor class.
</p>
</descr>
<seealso>
<link id="TCustomLabel.OptimalFill"/>
<link id="TCustomLabel.AutoSize"/>
<link id="TCustomLabel.WordWrap"/>
<link id="TCustomLabel.AdjustFontForOptimalFill"/>
<link id="#lcl.controls.TControl.DoSetBounds">TControl.DoSetBounds</link>
</seealso>
</element>
<element name="TCustomLabel.DoSetBounds.ALeft">
<short>New value for the Left property.</short>
</element>
<element name="TCustomLabel.DoSetBounds.ATop">
<short>New value for the Top property.</short>
</element>
<element name="TCustomLabel.DoSetBounds.AWidth">
<short>New value for the Width property.</short>
</element>
<element name="TCustomLabel.DoSetBounds.AHeight">
<short>New value for the Height property.</short>
</element>
<element name="TCustomLabel.FontChanged">
<short>Implements the OnChange event handler for the Font in the control.</short>
<descr>
<p>
<var>FontChanged</var> is an overridden method in <var>TCustomLabel</var> which implements the <var>OnChange</var> event handler for the <var>Font</var> in the control. FontChanged calls the inherited method on entry, and calls <var>UpdateSize</var> to resize the control for any changes to font properties.
</p>
</descr>
<seealso>
<link id="TCustomLabel.UpdateSize"/>
<link id="#lcl.controls.TControl.FontChanged">TControl.FontChanged</link>
<link id="#lcl.graphics.TFont">TFont</link>
</seealso>
</element>
<element name="TCustomLabel.FontChanged.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TCustomLabel.GetControlClassDefaultSize">
<short>Gets the size used for new instances of the class.</short>
<descr>
<p>
<var>GetControlClassDefaultSize</var> is an overridden <var>TSize</var> class function used to get the height and width for new instances of the control. GetControlClassDefaultSize uses 65 pixels for the width, and 17 pixels for the height.
</p>
<p>
The return value is the TSize instance where the values are stored; the <var>CX</var> member is used for the width and the <var>CY</var> member is used for the height.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.GetControlClassDefaultSize">TControl.GetControlClassDefaultSize</link>
</seealso>
</element>
<element name="TCustomLabel.GetControlClassDefaultSize.Result">
<short>Size used for new instances of the class.</short>
</element>
<element name="TCustomLabel.WMActivate">
<short>Defers the focus to the control in the FocusControl property.</short>
<descr>
<p>
<var>WMActivate</var> is a procedure used to handle <b>LM_ACTIVATE</b> messages for the control.
</p>
<p>
WMActivate ensures that the control in the <var>FocusControl</var> property receives the input focus by calling its <var>SetFocus</var> method. No actions are performed in the method when FocusControl has not been assigned (contains <b>Nil</b>) or its <var>CanFocus</var> method returns <b>False</b>.
</p>
</descr>
<seealso>
<link id="TCustomLabel.FocusControl"/>
<link id="#lcl.controls.TWinControl.CanFocus">TWinControl.CanFocus</link>
<link id="#lcl.controls.TWinControl.SetFocus">TWinControl.SetFocus</link>
</seealso>
</element>
<element name="TCustomLabel.WMActivate.Message">
<short>Message examined in the method.</short>
</element>
<element name="TCustomLabel.Notification">
<short>
Handles a notification that a component used in the control has been added or removed.
</short>
<descr>
<p>
<var>Notification</var> is an overridden method in <var>TCustomLabel</var>, and calls the inherited method on entry. Notification ensures that <var>FocusControl</var> is set to <b>Nil</b> when it is the component for the <var>opRemove</var> <var>Operation</var>.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Notification">TControl.Notification</link>
</seealso>
</element>
<element name="TCustomLabel.Notification.AComponent">
<short>Component for the notification.</short>
</element>
<element name="TCustomLabel.Notification.Operation">
<short>Operation for the notification.</short>
</element>
<element name="TCustomLabel.GetLabelText">
<short>Returns the string value in the Caption for the control.</short>
<descr/>
<seealso>
<link id="#lcl.controls.TControl.Caption">TControl.Caption</link>
</seealso>
</element>
<element name="TCustomLabel.GetLabelText.Result">
<short>Text displayed in the control.</short>
</element>
<element name="TCustomLabel.GetTransparent">
<short>Gets the value for the Transparent property.</short>
<descr/>
<seealso>
<link id="TCustomLabel.Transparent"/>
</seealso>
</element>
<element name="TCustomLabel.GetTransparent.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomLabel.SetColor">
<short>Sets the value for the Color property.</short>
<descr/>
<seealso>
<link id="#lcl.controls.TControl.SetColor">TControl.SetColor</link>
<link id="#lcl.controls.TControl.Color">TControl.Color</link>
</seealso>
</element>
<element name="TCustomLabel.SetColor.NewColor">
<short>New value for the property.</short>
</element>
<element name="TCustomLabel.SetFocusControl">
<short>Sets the value for the FocusControl property.</short>
<descr/>
<seealso>
<link id="TCustomLabel.FocusControl"/>
</seealso>
</element>
<element name="TCustomLabel.SetFocusControl.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomLabel.SetLayout">
<short>Sets the value for the Layout property.</short>
<descr/>
<seealso>
<link id="TCustomLabel.Layout"/>
</seealso>
</element>
<element name="TCustomLabel.SetLayout.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomLabel.SetShowAccelChar">
<short>Sets the value for the ShowAccelChar property.</short>
<descr/>
<seealso>
<link id="TCustomLabel.ShowAccelChar"/>
</seealso>
</element>
<element name="TCustomLabel.SetShowAccelChar.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomLabel.SetTransparent">
<short>Sets the value for the Transparent property.</short>
<descr/>
<seealso>
<link id="TCustomLabel.Transparent"/>
</seealso>
</element>
<element name="TCustomLabel.SetTransparent.NewTransparent">
<short>New value for the property.</short>
</element>
<element name="TCustomLabel.SetWordWrap">
<short>Sets the value for the WordWrap property.</short>
<descr/>
<seealso>
<link id="TCustomLabel.WordWrap"/>
</seealso>
</element>
<element name="TCustomLabel.SetWordWrap.Value">
<short>New value for the property.</short>
</element>
<element name="TCustomLabel.Loaded">
<short>Performs actions when the component has been loaded using LCL component streaming.</short>
<descr>
<p>
<var>Loaded</var> is overridden in <var>TCustomLabel</var>, and calls the inherited method on Entry. Loaded calls the <var>AdjustSize</var> method to handle delayed calls to <var>AutoSize</var> during component streaming.
</p>
</descr>
<seealso>
<link id="TCustomLabel.AutoSize"/>
<link id="#lcl.controls.TControl.Loaded">TControl.Loaded</link>
<link id="#lcl.controls.TControl.AdjustSize">TControl.AdjustSize</link>
<link id="#lcl.controls.TControl.AutoSizeDelayed">TControl.AutoSizeDelayed</link>
</seealso>
</element>
<element name="TCustomLabel.UpdateSize">
<short>Adjusts the size for the control based on settings in AutoSize and OptimalFill.</short>
<descr>
<p>
<var>UpdateSizevar</var> is a method used to adjust the size for the control based on settings in the <var>AutoSize</var> and <var>OptimalFill</var> properties. UpdateSize calls <var>InvalidatePreferredSize</var>.
</p>
<p>
When <var>OptimalFill</var> is <b>True</b> and <var>AutoSize</var> is <b>False</b>, the <var>AdjustFontForOptimalFill</var> method is called to adjust the font size used in the control. <var>AdjustSize</var> is called to resize the control (and any parent controls). When <var>Alignment</var> is set to <var>taRightJustify</var>, the value in <var>Left</var> may be changed to reflect the new <var>Width</var> for the control.
</p>
<p>
UpdateSize is called from the implementation of the <var>FontChanged</var> and <var>TextChanged</var> methods, and when setting a new value for the <var>ShowAccelChar</var> or <var>WordWrap</var> properties.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomLabel.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 constructor on entry to the method.
</p>
<p>
Create updates the values in <var>ControlStyle</var> to enable mouse capture and both click and double-click events. Create calls <var>SetInitialBounds</var> using the default dimensions for the class instance. Create sets the default values for properties, including: <var>ShowAccelChar</var>, <var>Color</var>, <var>AutoSize</var>, and <var>AccessibleRole</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomLabel.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TCustomLabel.CalcFittingFontHeight">
<short>Calculates the font height needed to fill the specified width and height constraints.</short>
<descr>
<p>
<var>CalcFittingFontHeight</var> is a <var>Boolean</var> function used to calculate the maximum font height needed to make the specified string fill the available space, given the MaxWidth and MaxHeight constraints.
</p>
<p>
The return value is <b>True</b> when the text rectangle using the new font height fits within the size constraints in MaxWidth and MaxHeight. NeedWidth and NeedHeight are set to the values indicated in the text rectangle. The return value is <b>False</b> when the text rectangle is either too wide or too tall, or cannot be calculated using the specified parameter values.
</p>
<p>
No actions are performed in the method when AutoSizeDelayed is set to <b>True</b>, when TheText is an empty string, or when MaxHeight or MaxWidth contain 0 or a negative value.
</p>
<p>
The font height is calculated using a temporary TFont instance with the current Font for the control, setting its drawing flags to calculate the text rectangle. The drawing flags include wrapping when the WordWrap property is set to <b>True</b>. The font height is incrementally increased or decreased until the maximum font height which fits with MaxHeight and MaxWidth is determined.
</p>
<p>
CalcFittingFontHeight is used in the implementation of the <var>AdjustFontForOptimalFill</var> method.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomLabel.CalcFittingFontHeight.Result">
<short>True when the text fits within the size constraints in MaxWidth and MaxHeight.</short>
</element>
<element name="TCustomLabel.CalcFittingFontHeight.TheText">
<short>Text measured in the method.</short>
</element>
<element name="TCustomLabel.CalcFittingFontHeight.MaxWidth">
<short>Width constraint for the text rectangle.</short>
</element>
<element name="TCustomLabel.CalcFittingFontHeight.MaxHeight">
<short>Height constraint for the text rectangle.</short>
</element>
<element name="TCustomLabel.CalcFittingFontHeight.FontHeight">
<short>Font height calculated in the method.</short>
</element>
<element name="TCustomLabel.CalcFittingFontHeight.NeededWidth">
<short>Width needed for the text using the calculated font size.</short>
</element>
<element name="TCustomLabel.CalcFittingFontHeight.NeededHeight">
<short>Height needed for the text using the calculated font size.</short>
</element>
<element name="TCustomLabel.ColorIsStored">
<short>Implements the storage specifier for the Color property.</short>
<descr/>
<seealso>
<link id="TCustomLabel.Color"/>
</seealso>
</element>
<element name="TCustomLabel.ColorIsStored.Result">
<short>True when a value other than clNone has been assigned to the Color property.</short>
</element>
<element name="TCustomLabel.AdjustFontForOptimalFill">
<short>Adjusts the font height for the control text to fill the available client area.</short>
<descr>
<p>
<var>AdjustFontForOptimalFill</var> is a <var>Boolean</var> function used to adjust the font height so that text in the label expands to fill the available client area for the control. AdjustFontForOptimalFill calls <var>CalcFittingFontHeight</var> to determine the font height needed to make the label text (caption) fill the Width for the control. The calculated font height is stored in the <var>Font</var> property.
</p>
<p>
The return value is <b>True</b> when the Font height was changed in the method.
</p>
<p>
AdjustFontForOptimalFill is called from <var>DoSetBounds</var> and <var>UpdateSize</var> when <var>OptimalFill</var> is set to <b>True</b> and <var>AutoSize</var> is set to <b>False</b>. It is also called when a new value is assigned to the <var>OptimalFill</var> property.
</p>
</descr>
<seealso>
<link id="TCustomLabel.CalcFittingFontHeight"/>
<link id="TCustomLabel.OptimalFill"/>
<link id="TCustomLabel.AutoSize"/>
<link id="TCustomLabel.UpdateSize"/>
<link id="TCustomLabel.DoSetBounds"/>
<link id="#lcl.controls.TControl.Font">TControl.Font</link>
</seealso>
</element>
<element name="TCustomLabel.AdjustFontForOptimalFill.Result">
<short>True when the font height was changed in the method.</short>
</element>
<element name="TCustomLabel.Paint">
<short>Performs actions needed to draw the control on its Canvas.</short>
<descr>
<p>
<var>Paint</var> is an overridden method in <var>TCustomLabel</var> used to draw the control on its <var>Canvas</var>. Paint ensures that property values in the control are applied to the Canvas before measuring and drawing its Text, including:
</p>
<ul>
<li>AutoSize</li>
<li>Alignment</li>
<li>Layout</li>
<li>WordWrap</li>
<li>Transparent</li>
<li>Color</li>
<li>Font</li>
<li>ShowAccel</li>
<li>Enabled</li>
<li>Alignment</li>
<li>UseRightToLeftAlignment</li>
<li>UseRightToLeftReading</li>
</ul>
<p>
DoDrawText is called to render the label text using the DrawText flags needed for the property values.
</p>
<remark>
Paint does <b>not</b> call the inherited method in <var>TGraphicControl</var>. As a result, it does not signal the <var>OnPaint</var> event handler in the ancestor class.
</remark>
</descr>
<seealso>
<link id="TCustomLabel.GetLabelText"/>
<link id="#lcl.controls.TControl.Caption">TControl.Caption</link>
<link id="#lcl.controls.TGraphicControl.Canvas">TGraphicControl.Canvas</link>
<link id="#lcl.controls.TGraphicControl.Paint">TGraphicControl.Paint</link>
<link id="#lcl.controls.TGraphicControl.OnPaint">TGraphicControl.OnPaint</link>
</seealso>
</element>
<element name="TCustomLabel.SetBounds">
<short>Sets the bounds (Top, Left, Width, Height) for the control.</short>
<descr>
<p>
Overridden to call <var>InvalidatePreferredSize</var> the first time the method is used and both <var>AutoSize</var> and <var>WordWrap</var> are enabled in the control. Calls the inherited method prior to exit.
</p>
</descr>
<seealso>
<link id="TCustomLabel.AutoSize"/>
<link id="TCustomLabel.WordWrap"/>
<link id="#lcl.controls.TControl.InvalidatePreferredSize">TControl.InvalidatePreferredSize</link>
<link id="#lcl.controls.TControl.SetBounds">TControl.SetBounds</link>
</seealso>
</element>
<element name="TCustomLabel.SetBounds.aLeft">
<short>Horizontal coordinate for the left-hand edge of the control.</short>
</element>
<element name="TCustomLabel.SetBounds.aTop">
<short>Vertical coordinate for the top edge of the control.</short>
</element>
<element name="TCustomLabel.SetBounds.aWidth">
<short>New width for the control.</short>
</element>
<element name="TCustomLabel.SetBounds.aHeight">
<short>New Height for the control.</short>
</element>
<element name="TCustomLabel.Alignment">
<short>Horizontal text justification in the control (centered, left- or right-justified).</short>
<descr>
<p>
<var>Alignment</var> is a <var>TAlignment</var> property which controls the horizontal justification of the text displayed in the control. The default value for the property is <var>taLeftJustify</var>. When a new value is assigned to the Alignment property, the <var>Invalidate</var> method is called to repaint the control.
</p>
<p>
Alignment (and other properties) are used in the <var>Paint</var> method when the text is rendered to the <var>Canvas</var> for the control. It is also used in <var>UpdateSize</var> when right alignment needs to be considered for an auto-sized or optimal-filled control.
</p>
<p>
Use the <var>Layout</var> property to control the vertical alignment of the text displayed in the control.
</p>
<p>
Use <var>OptimalFill</var> to indicate if the font height can be adjust to fill the client area for the control.
</p>
</descr>
<seealso>
<link id="TCustomLabel.AutoSize"/>
<link id="TCustomLabel.Layout"/>
<link id="TCustomLabel.OptimalFill"/>
<link id="TCustomLabel.Paint"/>
<link id="TCustomLabel.UpdateSize"/>
<link id="#lcl.controls.TControl.Invalidate">TControl.Invalidate</link>
<link id="#rtl.classes.TAlignment">TAlignment</link>
</seealso>
</element>
<element name="TCustomLabel.AutoSize">
<short>Enables or disables auto-sizing for the control to its content.</short>
<descr>
<p>
The action performed depends on the control type. For example, a label or button can become bigger or smaller to accommodate a longer or shorter caption.
</p>
<p>
The default value for the property is <b>True</b> in <var>TCustomLabel</var>.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.AutoSize">TControl.AutoSize</link>
</seealso>
</element>
<element name="TCustomLabel.Color">
<short>Sets the color used for the background in the control.</short>
<descr>
<p>
The default value for the property is <var>clNone</var> in <var>TCustomLabel</var>. This value is used because labels, by default, are transparent in the LCL. Please note that this differs from the Delphi VCL where the default value for Transparent is <b>False</b>.
</p>
<p>
Set Transparent to <b>False</b> to fill the control background with a given <var>TColor</var> value. Set <var>ParentColor</var> to <b>True</b> to use the Color defined for the parent control or form.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Color">TControl.Color</link>
</seealso>
</element>
<element name="TCustomLabel.FocusControl">
<short>The control associated with the label and its accelerator key (AccelChar).</short>
<descr>
<p>
Set <var>FocusControl</var> to the control which is focused when the accelerator key in the label is pressed.
</p>
<p>
A label control cannot receive the input focus (it is read-only), but can display an accelerator key indicator, just like a menu entries. A windowed control (Edit...) can receive focus, but cannot indicate an accelerator key.
</p>
<p>
Using a combination of a label and another control allows setting the accelerator key in the label caption. The other control receives focus when the user presses the accelerator key.
</p>
<p>
An accelerator key is marked by an Ampersand '&amp;' in the label caption, immediately preceding the character to be used as the accelerator key. The marked character appears underlined on screen, when ShowAccelChar is set to <b>True</b>.
</p>
<p>
For example: When you have a NameEdit1 control on a form, preceded by a label NameLabel1, you can set NameLabel1.FocusControl to NameEdit1, and NameLabel1.Caption to '&amp;Name'.
</p>
</descr>
<seealso>
<link id="TCustomLabel.ShowAccelChar"/>
</seealso>
</element>
<element name="TCustomLabel.Layout">
<short>Vertical alignment for control text (at the top, bottom, or center).</short>
<descr>
<p>
<var>Layout</var> is a <var>TTextLayout</var> property with the vertical alignment used for the text displayed in the control. The default value for the property is <var>tlTop</var>. Changing the value in Layout causes the <var>Invalidate</var> method to be called to redraw the control.
</p>
<p>
Use the <var>Alignment</var> property to control the horizontal alignment for the text in the control.
</p>
<p>
Use <var>OptimalFill</var> to indicate if the font height can be adjusted to fill the client area for the control.
</p>
</descr>
<seealso>
<link id="TCustomLabel.Alignment"/>
<link id="TCustomLabel.OptimalFill"/>
<link id="#lcl.graphics.TTextLayout">TTextLayout</link>
<link id="#lcl.controls.TControl.Invalidate">TControl.Invalidate</link>
</seealso>
</element>
<element name="TCustomLabel.OptimalFill">
<short>If True, the font size is adjusted for optimal fill of the available space.</short>
<descr>
<p>
<var>OptimalFill</var> is a <var>Boolean</var> property which indicates that the <var>Font</var> height should be maximized to fill the available width in the control. The default value for the property is <b>False</b>.
</p>
<p>
Setting OptimalFill to <b>True</b> causes <var>AutoSize</var> to be set to <b>False</b>. The <var>AdjustFontForOptimalFill</var> method is called to get and apply the maximum font height allowed for the <var>Width</var> and <var>Height</var> in the control.
</p>
<p>
Changing the value for the property causes <var>Invalidate</var> to be called to redraw the control.
</p>
</descr>
<seealso>
<link id="TCustomLabel.AutoSize"/>
<link id="TCustomLabel.AdjustFontForOptimalFill"/>
<link id="#lcl.controls.TControl.Width">TControl.Width</link>
<link id="#lcl.controls.TControl.Height">TControl.Height</link>
<link id="#lcl.controls.TControl.Font">TControl.Font</link>
<link id="#lcl.controls.TControl.Invalidate">TControl.Invalidate</link>
</seealso>
</element>
<element name="TCustomLabel.ShowAccelChar">
<short>Underlines the character in the label that acts as the accelerator or short cut key.</short>
<descr>
<p>
When <b>False</b>, an <b>Ampersand (&amp;)</b> character in the label caption is displayed as an ordinary character (as used in the Object Inspector).
</p>
<p>
When <b>True</b>, the character following the <b>Ampersand</b> is drawn with an underline. When the user presses the accelerator key, input focus is given to the associated <var>FocusControl</var>.
</p>
</descr>
<seealso>
<link id="TCustomLabel.FocusControl"/>
<link id="#lcl.controls.TControl.Caption">TControl.Caption</link>
</seealso>
</element>
<element name="TCustomLabel.Transparent">
<short>Indicates whether the viewer can see through the control.</short>
<descr>
<p>
Opaque labels have their enclosing rectangle filled with the background Color for the label. This can be the color of the Parent control, when ParentColor is <b>True</b>. Setting Transparent to <b>True</b> makes the label transparent, and does not fill the background for the control or hide any background details.
</p>
<p>
Please note: The default value of this property in the LCL is <b>True</b>, which differs from the default value in the Delphi VCL.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.ParentColor">TControl.ParentColor</link>
</seealso>
</element>
<element name="TCustomLabel.WordWrap">
<short>
Allows the caption to wrap into multiple lines when it is too long for the available Width.
</short>
<descr>
<p>
<var>WordWrap</var> is a <var>Boolean</var> property which indicates if the caption in the control can be wrapped into multiple lines when its length exceeds the value in <var>Width</var>. The default value for the property is <b>False</b>.
</p>
<p>
When a new value is assigned to the property, the <var>Invalidate</var> and <var>UpdateSize</var> methods are called to auto-size and repaint the control.
</p>
<p>
When WordWrap is <b>False</b>, the text is truncated at the right boundary when it is too long for the control Width. When WordWrap is <b>True</b> and <var>AutoSize</var> is <b>True</b>, the maximum <var>Width</var> is determined by anchoring the left and right sides for the control to its Parent.
</p>
</descr>
<seealso>
<link id="TCustomLabel.AutoSize"/>
<link id="TCustomLabel.UpdateSize"/>
<link id="#lcl.controls.TControl.Width">TControl.Width</link>
<link id="#lcl.controls.TControl.Invalidate">TControl.Invalidate</link>
</seealso>
</element>
<element name="TCustomLabel.ParentColor">
<short>Uses the color from the parent control, when enabled.</short>
<descr>
<p>
ParentColor determines if the control should use the Color from the Parent control, when enabled. The default value is False in TCustomLabel.
</p>
<p>
When this property is True, all changes to the Color of the parent will also be applied to the Color of the control, ensuring that they both contain same value. If the Color of the control is changed by the application, then ParentColor will be automatically set to False.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.ParentColor">TControl.ParentColor</link>
</seealso>
</element>
<element name="TLabel">
<short>Control used to display static text, possibly in multiple lines.</short>
<descr>
<p>
<var>TLabel</var> is a <var>TCustomLabel</var> descendant which implements a control to display static text on a form. The value in the control is not editable visually, and can be used to label or describe another control on the form or a container. Since it cannot be edited, it is not allowed to receive the input focus. It can, however, be used to set focus to an associated control using an accelerator key defined in the Caption for the control.
</p>
<p>
Use <var>TStaticText</var> to display static text and respond to keyboard input directly in the control.
</p>
</descr>
<seealso>
<link id="HowToUseStdCtrls"/>
<link id="TStaticText"/>
</seealso>
</element>
<element name="TLabel.Align" link="#lcl.controls.TControl.Align"/>
<element name="TLabel.Alignment" link="#lcl.stdctrls.TCustomLabel.Alignment"/>
<element name="TLabel.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TLabel.AutoSize" link="#lcl.stdctrls.TCustomLabel.AutoSize"/>
<element name="TLabel.BidiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TLabel.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TLabel.Caption" link="#lcl.controls.TControl.Caption"/>
<element name="TLabel.Color" link="#lcl.stdctrls.TCustomLabel.Color"/>
<element name="TLabel.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TLabel.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TLabel.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TLabel.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TLabel.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TLabel.FocusControl" link="#lcl.stdctrls.TCustomLabel.FocusControl"/>
<element name="TLabel.Font" link="#lcl.controls.TControl.Font"/>
<element name="TLabel.Layout" link="#lcl.stdctrls.TCustomLabel.Layout"/>
<element name="TLabel.OnChangeBounds" link="#lcl.controls.TControl.OnChangeBounds"/>
<element name="TLabel.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TLabel.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TLabel.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element name="TLabel.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TLabel.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TLabel.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TLabel.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TLabel.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TLabel.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TLabel.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TLabel.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TLabel.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TLabel.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TLabel.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TLabel.OnMouseWheelHorz" link="#lcl.controls.TControl.OnMouseWheelHorz"/>
<element name="TLabel.OnMouseWheelLeft" link="#lcl.controls.TControl.OnMouseWheelLeft"/>
<element name="TLabel.OnMouseWheelRight" link="#lcl.controls.TControl.OnMouseWheelRight"/>
<element name="TLabel.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TLabel.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TLabel.OptimalFill" link="#lcl.stdctrls.TCustomLabel.OptimalFill"/>
<element name="TLabel.ParentBidiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TLabel.ParentColor" link="#lcl.stdctrls.TCustomLabel.ParentColor"/>
<element name="TLabel.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TLabel.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TLabel.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TLabel.ShowAccelChar" link="#lcl.stdctrls.TCustomLabel.ShowAccelChar"/>
<element name="TLabel.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TLabel.Transparent" link="#lcl.stdctrls.TCustomLabel.Transparent"/>
<element name="TLabel.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TLabel.WordWrap" link="#lcl.stdctrls.TCustomLabel.WordWrap"/>
<element name="CreateEmulatedTextHintFont">
<short>Gets the font instance used for an emulated TextHint display.</short>
<descr>
<p>
<var>CreateEmulatedTextHintFont</var> is a <var>TFont</var> function which gets the font instance used to display an emulated TextHint in the control. It is retrieved by calling the <var>CreateEmulatedTextHintFont</var> method in the widgetset class. Widgetset classes use the font assigned to the control, but change the font color to <b>clGrayText</b>.
</p>
<p>
CreateEmulatedTextHintFont is called from <var>FontChanged</var>, and the private <var>ShowEmulatedTextHint</var> method.
</p>
</descr>
<seealso>
<link id="TCustomEdit.FontChanged"/>
<link id="TCustomEdit.TextHint"/>
</seealso>
</element>
<element name="CreateEmulatedTextHintFont.Result">
<short>TFont instance used for the emulated TextHint.</short>
</element>
<element name="Register">
<short>Registers components declared in the unit.</short>
<descr>
<p>
<var>Register</var> is a procedure used to register components in the <file>stdctrls.pp</file> unit for use in the Lazarus IDE.
</p>
<p>
Register calls <var>RegisterComponents</var> to add the following components to the <b>Standard</b> tab in the IDE:
</p>
<ul>
<li>TButton</li>
<li>TLabel</li>
<li>TEdit</li>
<li>TMemo</li>
<li>TToggleBox</li>
<li>TCheckBox</li>
<li>TRadioButton</li>
<li>TListBox</li>
<li>TComboBox</li>
<li>TScrollBar</li>
<li>TGroupBox</li>
</ul>
<p>
Register calls RegisterComponents to add the following components to the <b>Additional</b> tab in the IDE:
</p>
<ul>
<li>TStaticText</li>
</ul>
</descr>
</element>
<topic name="HowToUseStdCtrls">
<short>
How to use <var>StdCtrls</var>, <var>ComCtrls</var> or <var>ExtCtrls</var>.
</short>
<descr>
<p>
The Units <var>StdCtrls</var>, <var>ComCtrls</var> and <var>ExtCtrls</var> contain definitions and descriptions of many of the most commonly used controls for constructing Forms and other objects in Lazarus GUI applications.
</p>
<p>
Most controls are split into a final class, such as <var>TButton</var>, <var>TMemo</var>, <var>TScrollBar</var> etc., and a corresponding ancestor class such as <var>TCustomButton</var>, <var>TCustomMemo</var> or <var>TCustomScrollBar</var>. The final class is designed for immediate use, it almost only publishes the properties of the control. The corresponding custom ancestor class (<var>TCustomXXX</var>) can be used to derive controls with special (customized) appearance or behavior.
</p>
<p>
If you drop a component from the component palette on the form editor you don't need to add code explicitly to create it. The component is automatically created by the IDE together with the form, and destroyed when the form is destroyed.
</p>
<p>
However, if you create the component yourself by code, and don't specify an Owner for it (Create(Nil)), you are responsible for freeing the component when it is no longer needed. You better construct it with Create(Self), where Self means the containing Form or Parent control.
</p>
<p>
A control also must have a Parent control, maybe the Form, so that it can become visible within the client area of its Parent. The Top and Left properties specify the placement of the control within its <b>Parent</b>. The Object Tree reflects the Parent-Client relationships of all controls on the form.
</p>
<p>
Unlike controls, mere <var>components</var> are invisible at run-time (Open Dialogs...). Controls can be made invisible at run-time as well, by setting their Visible property to <b>False</b>.
</p>
<p>
If you place a component on the Form Designer and look at the Object Inspector, you can observe the Top and Left properties change as you move the component around. The same for the Width and Height properties, when you resize a control by dragging it's size grips.
</p>
<p>
When you modify the properties in the Object Inspector, the control on the form will reflect the changes as well.
</p>
<p>
You can also explicitly change the properties of the object in code by typing (in the appropriate Implementation section of the Source editor), for example
</p>
<code>Form1.Button1.Height := 48;</code>
<p>
In summary, there are usually about three different ways to determine each property of a component:
</p>
<ul>
<li>by using the mouse,</li>
<li>by setting the values in the Object Inspector,</li>
<li>or explicitly by writing code.</li>
</ul>
<p>
The components defined in these Units have several properties that are common to most of them, and other properties that are specific to the individual components. We shall describe the most common ones here. Unusual or control-specific properties will be described for the individual controls.
</p>
<p>
Additional Help can always be obtained by selecting a property or keyword, in either the Object Inspector or the Source Editor, and pressing <b>F1</b>. You will be taken by your Help browser to the appropriate page in the documentation.
</p>
<p>
If the description of a property on that page is insufficient, you can navigate to the corresponding description in the ancestor classes, by selecting the links in the Inheritance listing or by selecting the ancestor Type in the declaration of the object.
</p>
<p>
<b>Some commonly listed properties</b>
</p>
<table>
<th>
<td>Property</td>
<td>Meaning</td>
</th>
<tr>
<td>Action</td>
<td>
Use Action when e.g. a button and a menu entry shall perform the same task, e.g. the <var>Close</var> action.
</td>
</tr>
<tr>
<td>Align</td>
<td>
Defines how a control is lined up within its parent control. Possible values are alTop, alBottom (stacked at the top or bottom, using the full available width), alLeft, alRight (placed at the left or right, using the full available height), alNone (place anywhere on parent control) or alClient (takes all available space left over by other controls).
</td>
</tr>
<tr>
<td>Anchor</td>
<td>
Used to keep a control at a fixed distance from the edges of its Parent control, when the Parent is resized. For example <b>[akBottom, akRight]</b> will keep the control a fixed distance from the bottom right corner. Anchoring both [akLeft, akRight] will make the control extend or shrink in Width, together with its Parent.
</td>
</tr>
<tr>
<td>AutoSelect</td>
<td>
When <b>True</b>, a text control will select all its text when it receives focus or when the Enter key is pressed.
</td>
</tr>
<tr>
<td>AutoSelected</td>
<td>
<b>True</b> indicate that the edit or combo-box control has performed an AutoSelect operation, so that subsequent mouse-clicks and keystrokes proceed normally without selecting the text.
</td>
</tr>
<tr>
<td>BorderSpacing</td>
<td>The space around the edge between an control and its siblings.</td>
</tr>
<tr>
<td>Caption</td>
<td>
The text that is displayed on the control; it should preferably give some clue as to the function of the control, or an instruction such as 'Close' or 'Execute'. By default Caption is set to be the same as the 'Name' property, and the application designer should substitute meaningful text instead of the default values.
</td>
</tr>
<tr>
<td>CharCase</td>
<td>
Indicates how text is displayed in a text editing control: Normal (retaining the case of the letters typed by the user), converted to uppercase, or converted to lowercase
</td>
</tr>
<tr>
<td>Constraints</td>
<td>
Sets the minimum and maximum sizes for a control. If a control is resized the new dimensions are always within the ranges given here. You should take care when setting these options that they do not conflict with the Anchors and Align settings.
</td>
</tr>
<tr>
<td>Color</td>
<td>The Color to be used to draw the control's background.
</td>
</tr>
<tr>
<td>Enabled</td>
<td>
Determines whether a control can be selected or perform an action. If it is not <var>Enabled</var>, it is often <b>Grayed</b> out on the Form.
</td>
</tr>
<tr>
<td>Font</td>
<td>
The Font to be used for writing the text associated with the control - either the caption or label, or the text-strings contained within the control. The entry on the Object Inspector usually has a (+) box on the left, and selecting this box reveals further options such as character set, color and size.
</td>
</tr>
<tr>
<td>Hint</td>
<td>A short informative pop-up text that appears when the mouse-cursor moves over the control.</td>
</tr>
<tr>
<td>Items</td>
<td>
The list of 'Things' that the object contains, such as a group of images, a series of lines of text, a number of actions in an actionlist, etc.
</td>
</tr>
<tr>
<td>Lines</td>
<td>
An array of strings, containing the paragraph texts in Memo controls. The array index is zero-based, i.e. the lines are numbered 0..numLines-1.
</td>
</tr>
<tr>
<td>Name</td>
<td>
The identifier by which the control is known in the program. The IDE gives it a default name based on the underlying type, for example successive instances of TBitButton would be named Form1.BitBitton1 and Form1.BitButton2; it is up to the application programmer to give them more meaningful names such as ExitButton or OKButton. By default the Name of the control is applied to the Caption for the control, but the text of the Caption may be changed separately.
</td>
</tr>
<tr>
<td>PopUpMenu</td>
<td>
A window containing context-sensitive menu entries, that pops up when the right mouse button is clicked on the object.
</td>
</tr>
<tr>
<td>Position (or Top, Left)</td>
<td>Determines where the control is located on the parent form or control.</td>
</tr>
<tr>
<td>ReadOnly</td>
<td>If <b>True</b>, the user cannot change the text in the control.</td>
</tr>
<tr>
<td>ShowHint</td>
<td>Allows to enable or suppress <var>Hints</var>.</td>
</tr>
<tr>
<td>Size (or Height and Width)</td>
<td>The dimensions of the control</td>
</tr>
<tr>
<td>Style</td>
<td>
The options available for Style depend upon the sort of Control being considered: for instance the Style may be defined by TFormStyle, TBorderStyle, TButtonStyle etc.
</td>
</tr>
<tr>
<td>TabOrder</td>
<td>
Specifies the sequence of controls, that are entered when the user presses the Tab key.
</td>
</tr>
<tr>
<td>TabStop</td>
<td>Specifies whether the control can be reached (or is skipped) by pressing the Tab key.</td>
</tr>
<tr>
<td>Text</td>
<td>
Like Caption, the <b>user editable</b> text that appears in the control. Applies particularly to Edit, Memo and Combo-Box types of controls. Most of the editing operations (such as <var>Select</var>, <var>Clear</var>, <var>Cut</var>, <var>Copy</var>) are performed in this property. If the control contains more than a single line of text, then the textual elements are arranged as a zero-based array of strings in <var>Lines</var> (<var>TMemo</var>) or <var>Items</var> (<var>TListBox</var>, <var>TComboBox</var>).
</td>
</tr>
<tr>
<td>Visible</td>
<td>If <b>True</b>, the control can be seen on the Form; if <b>False</b>, it is hidden.</td>
</tr>
<tr>
<td>WordWrap</td>
<td>
Allows wrapping the Text into multiple lines. When <b>False</b>, the text is clipped at the right margin of the control, but it still can be inspected by moving the caret within the text.
</td>
</tr>
</table>
<p>
The 'Events' tab in the Object Inspector contains a list with events, which can occur for this control. If you select an entry in the list, a combo-box appears with a drop-down list showing any event handlers that have already been defined, and allowing you to choose one for this event. Alternatively you can select the ellipsis (three dots ...) and you will be taken to the Source Editor, where the Object Inspector created an new event handler method for you. You also can type the name of your handler in the Object Inspector and press Enter, to create a new handler method.
</p>
<p>
While a large number of events is available for any given control, in practice it is only necessary to populate a few of them. For most controls, it is sufficient to provide coding for 'OnClick'; for more complex controls it may be necessary also to provide for 'OnEntry' (when the control receives the focus) and 'OnExit' (when the control looses the focus); or you may need to write an event handler for 'OnChange' or 'OnScroll', depending on the nature of the particular control with which you are dealing.
</p>
<p>
Many controls have a default event, usually OnClick, for which an handler is created with a double click on the control. Or right click on the control, and select the first entry: 'Create default event'.
</p>
<p>
A common strategy in Object-Oriented programming is to provide an <link id="#lcl.ActnList.TActionList">ActionList</link> with the facility for entering, removing or editing a number of predefined actions, from which the most appropriate can be selected to use in any particular instance.
</p>
<p>
<b>Some commonly listed Actions</b>
</p>
<table>
<th>
<td>Event</td>
<td>Meaning</td>
</th>
<tr>
<td>OnChange</td>
<td>
Action to be taken if any change is detected (e.g. by mouse click, key press, edit text, etc).
</td>
</tr>
<tr>
<td>OnClick</td>
<td>
Action to be taken when the (left) mouse button is clicked. This is usually the main or default action of the control; for example clicking on a button or check box initiates the action associated with the check box. It may alternatively initiate a process of selection, for instance in a TextBox or Memo.
</td>
</tr>
<tr>
<td>Click</td>
<td>
A method to emulate in code the effect of clicking on a control. This method is most often found in Button-type controls (TButton, TBitBtn, TSpeedButton etc). A procedure can be written that calls the same code as the OnClick action. This facility can be particularly useful if the activation of one control by clicking causes a cascade of other controls to be activated, and the Click method can be used to initiate the action rather than having the user explicitly click on a lot of controls.
</td>
</tr>
<tr>
<td>OnDragDrop</td>
<td>
Action to be taken when a dragged control has been dropped onto this control.
</td>
</tr>
<tr>
<td>OnEntry</td>
<td>
Action to be taken when the control receives the focus. This might include changes in the appearance of the object such as highlighting or raising the border.
</td>
</tr>
<tr>
<td>OnExit</td>
<td>
Action to be taken when control is about to loose the focus. This is the right place for validity checks of user input, with a chance to disallow moving to a different control when the input is invalid.
</td>
</tr>
<tr>
<td>OnKeyPress</td>
<td>Action to be taken on an entered character. Checks...???</td>
</tr>
<tr>
<td>OnKeyDown</td>
<td>
Action to be taken if a key is down while focus is in this control. This allows one to filter or process control characters in a special way.
</td>
</tr>
<tr>
<td>OnKeyUp</td>
<td>
Action to be taken if a key goes up. This event occurs only once, while auto-repeated keystrokes trigger multiple OnKeyDown or OnKeyPress events.
</td>
</tr>
<tr>
<td>OnMouseMove</td>
<td>
Action to be taken if the mouse cursor moves over the control. This event fires with every small move, while OnMouseEnter and OnMouseLeave occur only when the mouse enters or leaves the control.
</td>
</tr>
<tr>
<td>OnMouseDown</td>
<td>Action to be taken when a mouse button is pressed over the control.</td>
</tr>
<tr>
<td>OnMouseUp</td>
<td>Action to be taken if a mouse button goes up over the control.
</td>
</tr>
<tr>
<td>OnResize</td>
<td>
Action to be taken when the control is resized. Might include re-alignment of text or selection of a different font size etc. Do not mix up with AutoSize, or you ask for trouble!
</td>
</tr>
</table>
<p>
<var>Constructors</var> such as <var>Create</var> allocate memory and system resources needed by the object. They also call the constructor of any sub-objects present in the class.
</p>
<p>
<var>Destructors</var> remove the object and de-allocate memory and other resources. If you call <var>Destroy</var> for an object which hasn't being initialized yet it will generate an error. Always use the <var>Free</var> method to deallocate objects, because it checks whether an object's value is <b>nil</b> before invoking <var>Destroy</var>.
</p>
<p>
Take the following precautions when creating your own <var>Destroy</var> method:
</p>
<ul>
<li>
Declare <var>Destroy</var> with the <b>override</b> directive, because it is a <b>virtual</b> method.
</li>
<li>
Always call the inherited Destroy method as the last action in the destructor code.
</li>
<li>
Be aware that an <var>exception</var> may be raised by the <var>constructor</var> when there is not enough memory to create an object, or something else goes wrong. If the <var>exception</var> is not handled inside the constructor, the object will be destroyed immediately. In this case <var>Destroy</var> will be called with a partially initialized object, so your destructor must check if the resources were really allocated before disposing of them.
</li>
<li>Remember to call <var>Free</var> for all objects created on the constructor.</li>
</ul>
</descr>
</topic>
</module>
<!-- StdCtrls -->
</package>
</fpdoc-descriptions>