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

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

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

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

-->
<fpdoc-descriptions>
<package name="lcl">
<!--
====================================================================
Forms
====================================================================
-->
<module name="Forms">
<short>
Implements Forms which are the basis for the LCL Graphical User Interface.
</short>
<descr>
<p>
<file>forms.pp</file> contains classes, types, and routines used to implement 
forms, which are the basis for the graphical user interface in the Lazarus 
Component Library (<b>LCL</b>).
</p>
<p>
The following components are added to the Lazarus IDE component palette:
</p>
<p>
<b>Standard</b> Tab
</p>
<ul>
<li>TFrame</li>
</ul>
<p>
<b>Additional</b> Tab
</p>
<ul>
<li>TScrollBox</li>
<li>TApplicationProperties</li>
</ul>
<p>
The unit also includes the <var>TApplication</var> and <var>TScreen</var> 
classes used in the <var>Application</var> and <var>Screen</var> singletons.
</p>
</descr>

<element name="Classes"/>
<element name="SysUtils"/>
<element name="Types"/>
<element name="TypInfo"/>
<element name="Math"/>
<element name="CustApp"/>
<element name="LCLStrConsts"/>
<element name="LCLType"/>
<element name="LCLProc"/>
<element name="LCLIntf"/>
<element name="LCLVersion"/>
<element name="LCLClasses"/>
<element name="InterfaceBase"/>
<element name="LResources"/>
<element name="Graphics"/>
<element name="Menus"/>
<element name="LMessages"/>
<element name="CustomTimer"/>
<element name="ActnList"/>
<element name="ClipBrd"/>
<element name="HelpIntfs"/>
<element name="Controls"/>
<element name="ImgList"/>
<element name="Themes"/>
<element name="LazFileUtils"/>
<element name="LazUTF8"/>
<element name="Maps"/>
<element name="IntegerList"/>
<element name="LazMethodList"/>
<element name="LazLoggerBase"/>
<element name="LazUtilities"/>
<element name="GraphType"/>
<element name="UITypes"/>
<element name="System.UITypes"/>

<element name="TProcedure">
<short>Type used for a procedure that takes no arguments.</short>
<descr>
<p>
Used to define members in control classes.
</p>
</descr>
<seealso/>
</element>

<element name="TProcedureOfObject">
<short>
Type used for an object procedure that takes no arguments.
</short>
<descr>
<p>
<var>TProcedureOfObject</var> is a type which represents a parameter-less 
object procedure. It is used in control classes to represent an event handler 
which when signalled expects no arguments - not even a Sender object instance. 
For example: TCustomUpDown uses it for its internal mouse timer event.
</p>
</descr>
<seealso/>
</element>

<element name="TPosition">
<short>Represents the Position and Size of a Form on Screen.</short>
<descr>
<p>
<var>TPosition</var> is an enumerated type with values that describe the 
policy used to position and size a form instance in an application. TPosition 
is the type used to implement the <var>Position</var> property in 
<var>TCustomForm</var>. TPosition is used in the implementation of the 
<var>MoveToDefaultPosition</var> method in TCustomForm.
</p>
</descr>
<seealso>
<link id="TCustomForm.Position"/>
<link id="TCustomForm.MoveToDefaultPosition"/>
</seealso>
</element>
<element name="TPosition.poDesigned">
<short>
The Form appears exactly as it is positioned and sized in the Form Designer.
</short>
</element>
<element name="TPosition.poDefault">
<short>
The window manager decides how the form is to appear, in a default position 
and size.
</short>
</element>
<element name="TPosition.poDefaultPosOnly">
<short>
Keeps the designed form size, but position determined by window manager.
</short>
</element>
<element name="TPosition.poDefaultSizeOnly">
<short>
Keeps the designed form position, but size determined by window manager.
</short>
</element>
<element name="TPosition.poScreenCenter">
<short>Centers the form on screen.</short>
</element>
<element name="TPosition.poDesktopCenter">
<short>
Centers the form on the desktop (not recommended, use poScreenCenter).
</short>
</element>
<element name="TPosition.poMainFormCenter">
<short>Centers the form on the Main Form.</short>
</element>
<element name="TPosition.poOwnerFormCenter">
<short>Centers the form on its Owner form.</short>
</element>

<element name="TWindowState">
<short>Represents the actual State of the window on the screen.</short>
<descr>
<p>
The actual meaning of each value depends on the platform:
</p>
<dl>
<dt>Windows and Mac OS X</dt>
<dd>These operating systems support all values.</dd>
<dt>X11</dt>
<dd>
The window state is a hint sent to the Window Manager, so more primitive 
Window Managers might ignore these hints.
</dd>
<dt>Windows CE</dt>
<dd>
In Windows CE platforms where Application.ApplicationType = atKeyPadDevice or 
atPDA (like in Windows Phone, PocketPC and Windows Mobile), wsMinimized and 
wsNormal are understood as wsMaximized, which is the normal state for windows 
in this platform. An exception are windows with BorderStyle=bsDialog or 
bsNone, which are allowed to have a custom position and size. For more 
information please read the <url 
href="http://wiki.lazarus.freepascal.org/Windows_CE_Development_Notes#Positioning_and_size_of_Dialogs_and_Forms">Lazarus 
Wiki article</url>.
</dd>
<dt>Android</dt>
<dd>In this platform windows are always fullscreen.</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="TWindowState.wsNormal">
<short>Neither maximized nor minimized.</short>
</element>
<element name="TWindowState.wsMinimized">
<short>
The window is minimized and is not shown in the screen, but only in the 
taskbar.
</short>
</element>
<element name="TWindowState.wsMaximized">
<short>
The window appears maximized. The exact behavior is up to the window manager, 
but usually the window appear occupying all of the work area of a monitor.
</short>
</element>
<element name="TWindowState.wsFullScreen">
<short>
The window appears in full screen mode, when allowed by the platform. It 
will, for example, attempt to appear on the top of task bars and other static 
platform user interface elements. wsFullScreen is converted to wsMaximized 
for use on the Windows platform; the API does not provide a full screen 
option.
</short>
</element>

<element name="TCloseAction">
<short>
Represents actions that can occur when a form is closed.
</short>
<descr/>
<version>
Modified in LCL 3.0 to be an alias to TCloseAction in System.UITypes for FPC 
3.3.0 or higher.
</version>
<seealso>
<link id="TCustomForm.OnClose">TCustomForm.OnClose</link>
<!-- 
Uncomment when the topic exists in RTL documentation.
<link id="#rtl.system.uitypes.TCloseAction">TCloseAction</link> 
-->
</seealso>
</element>
<element name="TCloseAction.caNone">
<short>Do nothing.</short>
</element>
<element name="TCloseAction.caHide">
<short>The form is hidden.</short>
</element>
<element name="TCloseAction.caFree">
<short>The form is destroyed.</short>
</element>
<element name="TCloseAction.caMinimize">
<short>The form is minimized.</short>
</element>

<element name="caNone">
<short>
Represents the caNone enumeration value in TCloseAction.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the constant in SystemUITypes for FPC 3.3.0 or 
higher.
</version>
<seealso/>
</element>

<element name="caHide">
<short>
Represents the caHide enumeration value in TCloseAction.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the constant in SystemUITypes for FPC 3.3.0 or 
higher.
</version>
<seealso/>
</element>

<element name="caFree">
<short>
Represents the caFree enumeration value in TCloseAction.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the constant in SystemUITypes for FPC 3.3.0 or 
higher.
</version>
<seealso/>
</element>

<element name="caMinimize">
<short>
Represents the caMinimize enumeration value in TCloseAction.
</short>
<descr/>
<version>
Added in LCL 3.0 as an alias to the constant in SystemUITypes for FPC 3.3.0 or 
higher.
</version>
<seealso/>
</element>

<element name="TCustomHintAction">
<short>
Represents a standard action used to get a Hint value.
</short>
<descr>
<p>
<var>TCustomHintAction</var> is a <var>TCustomAction</var> descendant. 
TCustomHintAction publishes the Hint property available in the ancestor. 
TCustomHintAction is the base class for THintAction defined in the 
<file>StdActns</file> unit.
</p>
<p>
TCustomHintAction is used in <var>TApplication</var> when setting the value 
for its Hint property and its <var>OnHint</var> event handler has not been 
assigned. TCustomHintAction is also used in the <var>ExecuteAction</var> 
method in <var>TStatusBar</var> when its <var>AutoHint</var> property is 
enabled.
</p>
</descr>
<seealso>
<link id="TApplication.Hint"/>
<link id="TApplication.OnHint"/>
<link id="#lcl.comctrls.TStatusBar.ExecuteAction">TStatusBar.ExecuteAction</link>
<link id="#lcl.stdactns.THintAction">THintAction</link>
</seealso>
</element>

<element name="TCustomHintAction.Hint" link="#lcl.actnlist.TCustomAction.Hint"/>

<element name="TScrollBarKind">
<short>The orientation of a scroll bar.</short>
<descr/>
<seealso/>
</element>
<element name="TScrollBarKind.sbHorizontal">
<short>Horizontal scroll bar.</short>
</element>
<element name="TScrollBarKind.sbVertical">
<short>Vertical scroll bar.</short>
</element>

<element name="TScrollBarInc">
<short>The range for scroll bar increments.</short>
<descr/>
<seealso/>
</element>

<element name="TScrollBarStyle">
<short>Scroll bar style flags.</short>
<descr/>
<seealso/>
</element>
<element name="TScrollBarStyle.ssRegular">
<short>Default style; not used in the current LCL version.</short>
</element>
<element name="TScrollBarStyle.ssFlat">
<short>
Scroll bar appears flat; Not used in the current LCL version.
</short>
</element>
<element name="TScrollBarStyle.ssHotTrack">
<short>
Scroll bar sends HotTrack messages; Not used in the current LCL version.
</short>
</element>

<element name="EScrollBar">
<short>Exception class raised in <link id="TControlScrollBar"/>.</short>
<descr/>
<seealso/>
</element>

<element name="TControlScrollBar">
<short>Scroll bar type used in TScrollingWinControl.</short>
<descr>
<p>
Scrollable controls supply their own <b>integrated</b> scroll bars, one for 
horizontal and one for vertical scrolling. This class allows access to (one 
of) these integrated scroll bars.
</p>
<p>
A scrollable control has both a physical (visible) client size, and a logical 
(virtual) client size.
</p>
<p>
The <var>Range</var> property reflects the total virtual client size, in 
pixels.
</p>
<p>
The <var>Page</var> property corresponds to physical (visible) client size, 
in pixels, excluding the scroll bars. It also determines the size of the 
slider, relative to the total Range.
</p>
<p>
The <var>Position</var> property reflects the virtual origin of the visible 
client area, equivalent to the top coordinate of the slider. The Position can 
be changed by the user or by code.
</p>
<p>
Scroll bars usually appear only when Range is larger than Page, i.e. when the 
entire content cannot be shown in the visible area for a control. See the 
scroll bar properties in <var>TScrollingWinControl</var> for more details.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl"/>
<link id="TScrollBox"/>
<link id="TCustomForm"/>
</seealso>
</element>

<element name="TControlScrollBar.FAutoRange">
<short>
The virtual scroll range (Range - ClientSize), at least zero and never 
negative.
</short>
</element>


<element name="TControlScrollBar.FIncrement" link="#lcl.forms.TControlScrollBar.Increment"/>
<element name="TControlScrollBar.FKind" link="#lcl.forms.TControlScrollBar.Kind"/>
<element name="TControlScrollBar.FPage" link="#lcl.forms.TControlScrollBar.Page"/>
<element name="TControlScrollBar.FRange" link="#lcl.forms.TControlScrollBar.Range"/>
<element name="TControlScrollBar.FSmooth" link="#lcl.forms.TControlScrollBar.Smooth"/>
<element name="TControlScrollBar.FTracking" link="#lcl.forms.TControlScrollBar.Tracking"/>
<element name="TControlScrollBar.FVisible" link="#lcl.forms.TControlScrollBar.Visible"/>
<element name="TControlScrollBar.FOldScrollInfo"/>
<element name="TControlScrollBar.FOldVisible"/>
<element name="TControlScrollBar.FOldScrollInfoValid"/>
<element name="TControlScrollBar.FControl">
<short>The associated TScrollingWinControl instance.</short>
</element>
<element name="TControlScrollBar.FPosition" link="#lcl.forms.TControlScrollBar.Position"/>

<element name="TControlScrollBar.ControlHandle">
<short>
Gets the Handle for the associated TScrollingWinControl instance.
</short>
<descr>
<p>
Provides the handle passed as an argument to routines in the LCL interface, 
including:
</p>
<ul>
<li>GetScrollInfo</li>
<li>SetScrollInfo</li>
<li>GetScrollbarSize</li>
<li>GetScrollbarVisible</li>
</ul>
</descr>
<seealso>
<link id="#lcl.lclintf.GetScrollInfo">GetScrollInfo</link>
<link id="#lcl.lclintf.SetScrollInfo">SetScrollInfo</link>
<link id="#lcl.lclintf.GetScrollbarSize">GetScrollbarSize</link>
<link id="#lcl.lclintf.GetScrollbarVisible">GetScrollbarVisible</link>
</seealso>
</element>
<element name="TControlScrollBar.ControlHandle.Result">
<short>The handle for the associated control.</short>
</element>

<element name="TControlScrollBar.GetAutoScroll">
<short>
Gets the AutoScroll state for the associated TScrollingWinControl control.
</short>
<descr>
<remark>
<var>GetAutoScroll</var> is <b>not</b> used as the read access specifier for 
the AutoScroll property. It is used in methods to ensure that the class 
reflects the current state for its associated control.
</remark>
</descr>
<seealso>
<link id="TScrollingWinControl.AutoScroll"/>
</seealso>
</element>
<element name="TControlScrollBar.GetAutoScroll.Result">
<short>
<b>True</b> when the Control for the class instance has set its AutoScroll 
property.
</short>
</element>

<element name="TControlScrollBar.GetIncrement">
<short>Gets the value for the Increment property.</short>
<descr/>
<seealso>
<link id="TControlScrollBar.Increment"/>
</seealso>
</element>
<element name="TControlScrollBar.GetIncrement.Result">
<short>Value for the property.</short>
</element>

<element name="TControlScrollBar.GetPage">
<short>Gets the value for the Page property.</short>
<descr/>
<seealso>
<link id="TControlScrollBar.Page"/>
</seealso>
</element>
<element name="TControlScrollBar.GetPage.Result">
<short>Value for the property.</short>
</element>

<element name="TControlScrollBar.GetPosition">
<short>Gets the value for the Position property.</short>
<descr/>
<seealso>
<link id="TControlScrollBar.Position"/>
</seealso>
</element>
<element name="TControlScrollBar.GetPosition.Result">
<short>Value for the property.</short>
</element>

<element name="TControlScrollBar.GetRange">
<short>Gets the value for the Range property.</short>
<descr/>
<seealso>
<link id="TControlScrollBar.Range"/>
</seealso>
</element>
<element name="TControlScrollBar.GetRange.Result">
<short>Value for the property.</short>
</element>

<element name="TControlScrollBar.GetSize">
<short>Gets the value for the Size property.</short>
<descr/>
<seealso>
<link id="TControlScrollBar.Size"/>
</seealso>
</element>
<element name="TControlScrollBar.GetSize.Result">
<short>Value for the property.</short>
</element>

<element name="TControlScrollBar.GetSmooth">
<short>Gets the value for the Smooth property.</short>
<descr/>
<seealso>
<link id="TControlScrollBar.Smooth"/>
</seealso>
</element>
<element name="TControlScrollBar.GetSmooth.Result">
<short>Value for the property.</short>
</element>

<element name="TControlScrollBar.HandleAllocated">
<short>
<b>True</b> when the associated TScrollingWinControl and its handle are valid.
</short>
<descr>
<p>
Used in methods which call LCL interface routines to avoid exceptions 
resulting from an unassigned control or an invalid handle value.
</p>
</descr>
<seealso/>
</element>
<element name="TControlScrollBar.HandleAllocated.Result">
<short>
<b>True</b> when the associated TScrollingWinControl and its handle are valid.
</short>
</element>

<element name="TControlScrollBar.IsRangeStored">
<short>Implements the storage specifier for the Range property.</short>
<descr/>
<seealso>
<link id="TControlScrollBar.Range"/>
<link id="TScrollingWinControl.AutoScroll"/>
</seealso>
</element>
<element name="TControlScrollBar.IsRangeStored.Result">
<short><b>True</b> when AutoScroll is enabled for the scroll bar.</short>
</element>

<element name="TControlScrollBar.ControlUpdateScrollBars">
<short>Forces the associated control to update its scroll bars.</short>
<descr>
<p>
Calls the <var>UpdateScrollBars</var> method in the associated 
<var>TScrollingWinControl</var> instance when its handle has been allocated. 
No actions are performed in the method during LCL component streaming and 
when the component is freed.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.UpdateScrollBars"/>
</seealso>
</element>

<element name="TControlScrollBar.InternalSetRange">
<short>
Validates and applies the specified Range and updates the scroll bars.
</short>
<descr>
<p>
Ensures that <var>AValue</var> is not less than zero (<b>0</b>). Applies the 
range limited value to the member for the <var>Range</var> property, and 
calls <var>ControlUpdateScrollBars</var> to refresh the scroll bars for the 
associated <var>TScrollingWinControl</var> instance.
</p>
<p>
InternalSetRange is called when the <var>SetRange</var> method updates the 
value for the Range property.
</p>
</descr>
<seealso>
<link id="TControlScrollBar.ControlUpdateScrollBars"/>
<link id="TControlScrollBar.SetRange"/>
<link id="TControlScrollBar.Range"/>
<link id="TScrollingWinControl.UpdateScrollBars"/>
</seealso>
</element>
<element name="TControlScrollBar.InternalSetRange.AValue">
<short>Value checked and applied to the Range property.</short>
</element>

<element name="TControlScrollBar.ScrollHandler">
<short>Handler for scroll bar movement messages.</short>
<descr>
<p>
<var>ScrollHandler</var> is a method used to ensure that the control message 
in <var>Message</var> is applied to the <var>Position</var> property for the 
scroll bar. ScrollHandler uses the <var>ScrollCode</var> member from the 
<var>TLMScroll</var> instance to determine the actions needed in the method. 
It handles the following ScrollCode values:
</p>
<dl>
<dt>SB_LINEUP</dt>
<dd>Decreases Position by the value in Increment.</dd>
<dt>SB_LINEDOWN</dt>
<dd>Increases Position by the value in Increment.</dd>
<dt>SB_PAGEUP</dt>
<dd>Decreases Position by the value in Page.</dd>
<dt>SB_PAGEDOWN</dt>
<dd>Increases Position by the value in Page.</dd>
<dt>SB_THUMBPOSITION</dt>
<dd>Sets Position to the value in the Pos member in Message.</dd>
<dt>SB_THUMBTRACK</dt>
<dd>
Sets Position to the value in the Pos member in Message when Tracking is 
enabled. No actions are performed when Tracking is set to <b>False</b>.
</dd>
<dt>SB_TOP</dt>
<dd>Sets Position to 0 (zero).</dd>
<dt>SB_BOTTOM</dt>
<dd>Sets Position to the value in the Range property.</dd>
</dl>
<p>
No actions are performed in the method if Message has any other value in its 
ScrollCode member. No actions are performed in the method at design-time.
</p>
<p>
ScrollHandler ensures the new value for the Position property is in the 
range <b>0..<var>Range</var></b>. Calls <var>InvalidateScrollInfo</var> to 
force scroll bar information to be re-initialized. Calls 
<var>SetPosition</var> to apply the new value for the Position property and 
scrolls the associated <var>TScrollingWinControl</var> accordingly. Sets the 
<var>Result</var> member in Message to <b>1</b> to indicate the control 
message was handled in the method.
</p>
<p>
ScrollHandler is called when the <var>WMHScroll</var> or <var>WMVScroll</var> 
methods in the associated TScrollingWinControl instance are used to handle 
scroll messages.
</p>
</descr>
<seealso>
<link id="TControlScrollBar.Increment"/>
<link id="TControlScrollBar.Page"/>
<link id="TControlScrollBar.Position"/>
<link id="TControlScrollBar.Range"/>
<link id="TScrollingWinControl.WMHScroll"/>
<link id="TScrollingWinControl.WMVScroll"/>
</seealso>
</element>
<element name="TControlScrollBar.ScrollHandler.Message">
<short>Control message examined in the method.</short>
</element>

<element name="TControlScrollBar.SetIncrement" link="#lcl.forms.TControlScrollBar.Increment"/>
<element name="TControlScrollBar.SetIncrement.AValue">
<short>New value for the property.</short>
</element>
<element name="TControlScrollBar.SetPage" link="#lcl.forms.TControlScrollBar.Page"/>
<element name="TControlScrollBar.SetPage.AValue">
<short>New value for the property.</short>
</element>
<element name="TControlScrollBar.SetPosition" link="#lcl.forms.TControlScrollBar.Position"/>
<element name="TControlScrollBar.SetPosition.Value">
<short>New value for the property.</short>
</element>
<element name="TControlScrollBar.SetRange" link="#lcl.forms.TControlScrollBar.Range"/>
<element name="TControlScrollBar.SetRange.AValue">
<short>New value for the property.</short>
</element>
<element name="TControlScrollBar.SetSize" link="#lcl.forms.TControlScrollBar.Size"/>
<element name="TControlScrollBar.SetSize.AValue">
<short>New value for the property.</short>
</element>
<element name="TControlScrollBar.SetSmooth" link="#lcl.forms.TControlScrollBar.Smooth"/>
<element name="TControlScrollBar.SetSmooth.AValue">
<short>New value for the property.</short>
</element>
<element name="TControlScrollBar.SetTracking" link="#lcl.forms.TControlScrollBar.Tracking"/>
<element name="TControlScrollBar.SetTracking.AValue">
<short>New value for the property.</short>
</element>
<element name="TControlScrollBar.SetVisible" link="#lcl.forms.TControlScrollBar.Visible"/>
<element name="TControlScrollBar.SetVisible.AValue">
<short>New value for the property.</short>
</element>

<element name="TControlScrollBar.UpdateScrollBar">
<short>
Updates the state and position for the scroll bar on the associated control.
</short>
<descr>
<p>
<var>UpdateScrollBar</var> is a procedure used to update the state and 
position for the scroll bar on the associated control.
</p>
<p>
If the associated control is a <var>TScrollingWinControl</var> instance, 
<var>TScrollInfo</var> is captured using the Range, Position, and Page  
properties. The scroll bar information is applied to the associated control by 
calling SetScrollInfo. The visibility for the scroll bar is updated by calling 
ShowScrollBar.
</p>
<remark>
TScrollInfo values and visibility are not applied when a handle has not been 
allocated for the control, when the scroll information has not been changed, or 
when when the control is not a TScrollingWinControl class instance.
</remark>
<p>
UpdateScrollBar applies the current value in Position to a visible scroll bar 
in the class instance. If the associated control is a TScrollingWinControl 
instance, the Smooth property is used to determine whether Increment needs to 
be adjusted to a value that is 10% of the Page size for the control. Increment 
is not modified if Smooth is set to <b>False</b>.
</p>
<p>
UpdateScrollBar is used in the implementation of the ControlUpdateScrollBars 
method.
</p>
</descr>
<version>
Modified in LCL version 3.0 to omit updates to scroll bar information if the 
values have not been changed.
</version>
<seealso>
<link id="TControlScrollBar.Increment"/>
<link id="TControlScrollBar.Page"/>
<link id="TControlScrollBar.Position"/>
<link id="TControlScrollBar.Smooth"/>
<link id="TControlScrollBar.Range"/>
<link id="TControlScrollBar.Visible"/>
<link id="TControlScrollBar.ControlUpdateScrollBars"/>
</seealso>
</element>

<element name="TControlScrollBar.InvalidateScrollInfo">
<short>Renders scroll information invalid for the control.</short>
<descr>
<p>
<var>InvalidateScrollInfo</var> is used to mark the current 
<var>TScrollInfo</var> in the control as invalid. This occurs when a new 
value is assigned to the <var>Position</var> property, and when 
<var>ScrollHandler</var> applies position information found in 
<var>TLMScroll</var> messages. Calling InvalidateScrollInfo results in 
TScrollInfo being updated and applied for scrolling window controls in the 
<var>UpdateScrollBar</var> method.
</p>
</descr>
<seealso>
<link id="TControlScrollBar.Position"/>
<link id="TControlScrollBar.UpdateScrollBar"/>
<link id="TControlScrollBar.ScrollHandler"/>
<link id="#lcl.lmessages.TLMScroll">TLMScroll</link>
</seealso>
</element>

<element name="TControlScrollBar.GetHorzScrollBar">
<short>Gets the horizontal scroll bar for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TControlScrollBar.GetHorzScrollBar.Result">
<short>TControlScrollBar instance representing the scroll bar.</short>
</element>

<element name="TControlScrollBar.GetVertScrollBar">
<short>Get the vertical scroll bar for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TControlScrollBar.GetVertScrollBar.Result">
<short>
Scroll bar for the control, or Nil when not a TScrollingWinControl descendant.
</short>
</element>

<element name="TControlScrollBar.ScrollBarShouldBeVisible">
<short>Determines whether a scroll bar is required.</short>
<descr/>
<seealso>
<link id="TControlScrollBar.Page"/>
<link id="TControlScrollBar.Range"/>
<link id="TControlScrollBar.Visible"/>
</seealso>
</element>
<element name="TControlScrollBar.ScrollBarShouldBeVisible.Result">
<short>
<b>True</b> when Visible, and Range is larger than the Page size.
</short>
</element>

<element name="TControlScrollBar.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
Create is the constructor for the class instance, and calls the inherited 
constructor on entry.
</p>
<p>
Create sets the associated control for the class instance and the Kind 
property to the values specified in the AControl and AKind arguments. Create 
sets the default values for properties, including:
</p>
<dl>
<dt>Page</dt>
<dd>Set to 80.</dd>
<dt>Increment</dt>
<dd>Set to 8.</dd>
<dt>Position and Range</dt>
<dd>Set to 0 (zero).</dd>
<dt>Smooth, Tracking</dt>
<dd>Both are set to <b>False</b>.</dd>
<dt>Visible</dt>
<dd>Set to <b>True</b>.</dd>
</dl>
</descr>
<seealso>
<link id="#rtl.system.TObject.Create">TObject.Create</link>
</seealso>
</element>
<element name="TControlScrollBar.Create.AControl">
<short>The windowed control in which the scroll bar is found.</short>
</element>
<element name="TControlScrollBar.Create.AKind">
<short>The scroll bar orientation.</short>
</element>

<element name="TControlScrollBar.Assign">
<short>
If Source is a <var>TControlScrollBar</var>, copies properties to itself, 
else performs inherited <var>Assign</var>.
</short>
<descr>
<p>
Assigns the contents of the source object to the current object; in 
particular finds the Increment, Position, Range and whether smooth scrolling 
is to be feature and whether the scroll bar is visible.
</p>
</descr>
<seealso>
<link id="TControlScrollBar.Increment"/>
<link id="TControlScrollBar.Position"/>
<link id="TControlScrollBar.Range"/>
<link id="#rtl.classes.TPersistent.Assign">TPersistent.Assign</link>
</seealso>
</element>
<element name="TControlScrollBar.Assign.Source">
<short>
TControlScrollBar instance with the values copied in the method.
</short>
</element>

<element name="TControlScrollBar.IsScrollBarVisible">
<short>
Determines if the scroll bar is visible using the state from the widgetset 
class.
</short>
<descr>
<p>
<var>IsScrollBarVisible</var> is a <var>Boolean</var> function used to 
determine if the scroll bar for the associated control is visible. The return 
value defaults to the value in the <var>Visible</var> property. If the handle 
has been allocated for the control, the <var>GetScrollbarVisible</var> 
routine from the LCL interface is used to get the visibility for the scroll 
bar <var>Kind</var>.
</p>
<p>
IsScrollBarVisible is used in the implementation of the 
<var>ClientSizeWithBar</var> and <var>ClientSizeWithoutBar</var> methods.
</p>
</descr>
<seealso/>
</element>
<element name="TControlScrollBar.IsScrollBarVisible.Result">
<short><b>True</b> if the scroll bar is visible.</short>
</element>

<element name="TControlScrollBar.ScrollPos">
<short>The Position for the scroll bar, or zero if not Visible.</short>
<descr/>
<seealso/>
</element>
<element name="TControlScrollBar.ScrollPos.Result">
<short>The scroll bar Position, or zero if not Visible.</short>
</element>

<element name="TControlScrollBar.GetOtherScrollBar">
<short>
Gets the scroll bar with the opposite orientation (horz/vert) of the current 
instance.
</short>
<descr/>
<seealso/>
</element>
<element name="TControlScrollBar.GetOtherScrollBar.Result">
<short>TControlScrollBar instance for the opposite orientation.</short>
</element>

<element name="TControlScrollBar.Size">
<short>Height or width for the scroll bar.</short>
<descr>
<p>
<var>Size</var> is a read-only <var>Integer</var> property with the width or 
height in pixels for the scroll bar indicated in the Kind property. For a 
horizontal scroll bar (Kind is sbHorizontal), the return value is the height 
of the scroll bar. Conversely, for a vertical scroll bar (Kind is sbVertical) 
the value is the width of the scroll bar.
</p>
<p>
Size calls the GetScrollbarSize routine in the LCL interface to get the 
return value when the Handle for the control has been allocated. Otherwise, 
the GetSystemMetrics method in the widgetset class is called to get 
the return value.
</p>
<p>
Use ControlSize, ClientSize, ClientSizeWithBar, and ClientSizeWithoutBar methods to get the control or client width for the control.
</p>
</descr>
<seealso>
<link id="TControlScrollBar.Kind"/>
<link id="TControlScrollBar.ControlSize"/>
<link id="TControlScrollBar.ClientSize"/>
<link id="TControlScrollBar.ClientSizeWithBar"/>
<link id="TControlScrollBar.ClientSizeWithoutBar"/>
<link id="TScrollBarKind"/>
</seealso>
</element>

<element name="TControlScrollBar.ControlSize">
<short>Returns the size for the associated control.</short>
<descr>
<p>
<var>ControlSize</var> is an <var>Integer</var> function used to get the size 
for the associated control in the class instance. Uses the value in 
<var>Kind</var> to determine the control property used as the return value. 
When Kind is <var>sbVertical</var>, the <var>Width</var> for the associated 
Control is used. When Kind is <var>sbHorizontal</var>, the <var>Height</var> 
for the associated Control is used.
</p>
</descr>
<seealso>
<link id="TControlScrollBar.Kind"/>
<link id="TControlScrollBar.Create"/>
<link id="TScrollBarKind"/>
</seealso>
</element>
<element name="TControlScrollBar.ControlSize.Result">
<short>Size for the associated control.</short>
</element>

<element name="TControlScrollBar.ClientSize">
<short>
Gets the size for the scroll bar based on the client area in the associated 
control.
</short>
<descr>
<p>
<var>ClientSize</var> is an <var>Integer</var> function used to get the size 
from the client area in the associated control. ClientSize uses the value in 
Kind to determine whether the height or width for the associated control is 
used as the return value. For example:
</p>
<dl>
<dt>sbVertical</dt>
<dd>Returns the client width from the associated control.</dd>
<dt>sbHorizontal</dt>
<dd>Returns the client height from the associated control.</dd>
</dl>
<p>
ClientSize is used in methods like <var>ClientSizeWithBar</var> and 
<var>ClientSizeWithoutBar</var> to get the size for the scroll bar adjusted 
for scroll bar spacing returned from <var>GetSystemMetrics</var>.
</p>
</descr>
<seealso>
<link id="TControlScrollBar.Kind"/>
<link id="TControlScrollBar.FControl"/>
<link id="TControlScrollBar.ClientSizeWithBar"/>
<link id="TControlScrollBar.ClientSizeWithoutBar"/>
</seealso>
</element>
<element name="TControlScrollBar.ClientSize.Result">
<short>Size from the client area in the associated control.</short>
</element>

<element name="TControlScrollBar.ClientSizeWithBar">
<short>
Calculates the size of the associated control when the scroll bar is Visible.
</short>
<descr>
<p>
<var>ClientSizeWithBar</var> is an <var>Integer</var> function used to 
calculate the client area for the associated control when the scroll bar is 
<var>Visible</var>. The return value contains the calculated value from 
<var>ClientSize</var>. If the scroll bar is not Visible, additional spacing 
(for the SM_SWSCROLLBARSPACING system metric) between the scroll bar and its 
associated control is removed from the return value.
</p>
<p>
ClientSizeWithBar is used in the implementation of the 
<var>ComputeScrollbars</var> method in <var>TScrollingWinControl</var> when 
the <var>Range</var> for the scroll bar would exceed the space available on 
the control, and in the <var>GetPreferredSizeClientFrame</var> method.
</p>
</descr>
<seealso>
<link id="TControlScrollBar.ClientSize"/>
<link id="TControlScrollBar.Visible"/>
<link id="TControlScrollBar.Range"/>
<link id="TScrollingWinControl.ComputeScrollbars"/>
<link id="TScrollingWinControl.GetPreferredSizeClientFrame"/>
</seealso>
</element>
<element name="TControlScrollBar.ClientSizeWithBar.Result">
<short>
Size for the client area after adjusting for a visible scroll bar.
</short>
</element>

<element name="TControlScrollBar.ClientSizeWithoutBar">
<short>
Calculates the size of the associated control when the scroll bar is not 
Visible.
</short>
<descr>
<p>
<var>ClientSizeWithoutBar</var> is an <var>Integer</var> function used to 
calculate the client area for the associated control when the scroll bar is 
<var>Visible</var>. The return value contains the calculated value from 
<var>ClientSize</var>. If the scroll bar is Visible, additional spacing (for 
the SM_SWSCROLLBARSPACING system metric) between the scroll bar and its 
associated control is added to the return value.
</p>
<p>
ClientSizeWithoutBar is used in the implementation of the 
<var>ComputeScrollbars</var> and <var>GetPreferredSizeClientFrame</var> 
methods in <var>TScrollingWinControl</var>.
</p>
</descr>
<seealso>
<link id="TControlScrollBar.ClientSize"/>
<link id="TControlScrollBar.Visible"/>
<link id="TControlScrollBar.Range"/>
<link id="TScrollingWinControl.ComputeScrollbars"/>
<link id="TScrollingWinControl.GetPreferredSizeClientFrame"/>
</seealso>
</element>
<element name="TControlScrollBar.ClientSizeWithoutBar.Result">
<short>Size for the client area when the scroll bar is hidden.</short>
</element>

<element name="TControlScrollBar.Increment">
<short>
Number of pixels the display area is scrolled for scroll bar or mouse wheel 
movements.
</short>
<descr>
<p>
<var>Increment</var> is a <var>TScrollBarInc</var> property which indicates 
the amount the client area in the associated control is scrolled when the 
<b>Up</b> or <b>Down</b> navigation arrows on the scroll bar are clicked. It is also used for movements of the mouse wheel on the control. The default 
value is <b>8</b> pixels.
</p>
<p>
The value in Increment may be automatically recalculated in the 
<var>UpdateScrollBar</var> method when the <var>Smooth</var> property is 
enabled and the associated control is a <var>TScrollingWinControl</var> 
descendant. This is done to ensure that Increment contains 10% of the value 
for the <var>Page</var> property.
</p>
<p>
Increment is used in the <var>ScrollHandler</var> method when updating the 
<var>Position</var> property for scroll bar messages received in the control.
</p>
</descr>
<seealso>
<link id="TControlScrollBar.UpdateScrollBar"/>
<link id="TControlScrollBar.ControlUpdateScrollBars"/>
<link id="TControlScrollBar.Smooth"/>
<link id="TControlScrollBar.Page"/>
<link id="TControlScrollBar.ScrollHandler"/>
<link id="TScrollingWinControl"/>
<link id="TScrollBarInc"/>
</seealso>
</element>

<element name="TControlScrollBar.Kind">
<short>The orientation for the scroll bar: horizontal or vertical.</short>
<descr>
<p>
<var>Kind</var> is a read-only <var>TScrollBarKind</var> property which 
indicates the orientation for the scroll bar. The value for Kind is passed as 
an argument to the <var>Create</var> constructor, and stored in the property. 
The value in Kind is used in methods which update properties or state for the 
control, such as:
</p>
<ul>
<li>Position</li>
<li>Range</li>
<li>Page</li>
<li>Tracking</li>
<li>Size</li>
<li>ClientSize</li>
<li>ControlSize</li>
<li>IsScrollBarVisible</li>
<li>GetOtherScrollBar</li>
<li>UpdateScrollBar</li>
</ul>
</descr>
<seealso>
<link id="TControlScrollBar.Create"/>
</seealso>
</element>

<element name="TControlScrollBar.Page">
<short>
Number of pixels needed for a page on the associated control.
</short>
<descr>
<p>
<var>Page</var> is a <var>TScrollBarInc</var> property with the number of 
pixels needed for a page using the orientation in Kind for the scroll bar. 
This is the amount that the associated control is scrolled when the track bar 
or direction indicators are clicked on the scroll bar. The default value for 
the property is 80 pixels.
</p>
<p>
When the associated control is a TScrollingWinControl descendant, the scroll 
information is retrieved using the Handle for the control. The property value 
may be changed when the associated control calls its UpdateScrollbars method. 
This can occur when the handle is created for the associated control, or when 
its AutoScroll property is changed.
</p>
<p>
Changing the value for the property causes the ControlUpdateScrollBars method 
to be called to update the scroll bars in the associated control.
</p>
</descr>
<seealso/>
</element>

<element name="TControlScrollBar.Smooth">
<short>
Enables smooth scrolling, with automatic adjustment of Increment and Page.
</short>
<descr>
<p>
<var>Smooth</var> is a <var>Boolean</var> property that indicates if the 
associated control is scrolled using an Increment value computed to be 10% of 
the Page size for the scroll bar. Set Smooth to <b>True</b> when the scroll 
bar should use a scrolling increment based on the size of the client area in 
the associated control. When Smooth is set to <b>False</b>, the 
<var>Increment</var> property determines the size for the scroll operation 
when the Up or Down arrows are clicked.
</p>
<p>
Smooth is used in the <var>UpdateScrollBar</var> method, and when set to 
<b>True</b> causes the value in Increment to be recalculated using the 
proportional size value. Smooth is relevant when the associated control is 
descended from <var>TScrollingWinControl</var>.
</p>
<p>
The default value for the property is <b>False</b>.
</p>
</descr>
<seealso>
<link id="TControlScrollBar.Increment"/>
<link id="TControlScrollBar.Page"/>
<link id="TControlScrollBar.UpdateScrollBar"/>
<link id="TScrollingWinControl"/>
</seealso>
</element>

<element name="TControlScrollBar.Position">
<short>Position of the scroll bar slider in the range 0..Range-Page.</short>
<descr>
<p>
The Position reflects the top coordinate of the slider, which is Range-Page 
when the slider is at the bottom of the bar.
</p>
</descr>
<seealso/>
</element>

<element name="TControlScrollBar.Range">
<short>
The size of the logical display area on the associated control for the scroll 
bar orientation.
</short>
<descr>
<p>
<var>Range</var> is an <var>Integer</var> property with the number of pixels 
needed for the logical display area on the control where the scroll bar is 
used. It measures the size of the scrolled content in the direction indicated 
by the Kind property. The default value for the property is 0, and indicates 
the dimensions for the scrollable content is smaller than the Page size for 
the scroll bar.
</p>
<p>
The values in Range and other properties are updated when the associated 
control recalculates sizes and positions for its scroll bars.
</p>
<p>
Use Position to determine the origin for the scrollable content displayed in 
the visible area on the associated control.
</p>
<p>
Use Page to determine the number of pixels along the scroll bar orientation 
needed for the visible area on the associated control.
</p>
</descr>
<seealso/>
</element>

<element name="TControlScrollBar.Tracking">
<short>
Enables feedback when the slider is dragged.
</short>
<descr>
<p>
If it takes a significant amount of time to repaint the associated control at 
a new position, Tracking should be set to <b>False</b> to prevent flicker. 
This causes the control to be updated when the slider is released.
</p>
</descr>
<seealso>
</seealso>
</element>

<element name="TControlScrollBar.Visible">
<short>Hides the scroll bar when <b>False</b> (default <b>True</b>).</short>
<descr>
<p>
The scroll bar is visible only if (Visible = True) <b>and</b> 
(Range &gt; Page).
</p>
<p>
Set Visible to <b>False</b> to hide the scroll bar. The content on the associated control can still be scrolled in program code.
</p>
<p>
Use IsScrollBarVisible to get the current visible state for the scroll bar.
</p>
</descr>
<seealso>
<link id="TControlScrollBar.IsScrollBarVisible"/>
</seealso>
</element>

<element name="TScrollingWinControl">
<short>Implements a windowed control with scroll bars.</short>
<descr>
<p>
This class introduces a logical (virtual) client area, part of which is 
visible in the physical (visible) client area. <link 
id="TControlScrollBar">ScrollBars</link> allow the user to scroll through the 
logical client area.
</p>
<p>
TScrollingWinControl is the ancestor for components like 
<var>TScrollBox</var> and <var>TCustomDesignControl</var>, and indirectly for 
<var>TCustomFrame</var> and <var>TCustomForm</var>.
</p>
</descr>
<seealso>
<link id="TControlScrollBar"/>
<link id="TScrollBox"/>
<link id="TCustomDesignControl"/>
<link id="TCustomFrame"/>
<link id="TCustomForm"/>
<link id="TFrame"/>
<link id="TForm"/>
</seealso>
</element>

<element name="TScrollingWinControl.FHorzScrollBar"/>
<element name="TScrollingWinControl.FVertScrollBar"/>
<element name="TScrollingWinControl.FAutoScroll"/>

<element name="TScrollingWinControl.FIsUpdating">
<short>
Prevents recursive updates, <b>True</b> while an update is already in 
progress.
</short>
</element>

<element name="TScrollingWinControl.SetHorzScrollBar"/>
<element name="TScrollingWinControl.SetHorzScrollBar.Value"/>

<element name="TScrollingWinControl.SetVertScrollBar"/>
<element name="TScrollingWinControl.SetVertScrollBar.Value"/>

<element name="TScrollingWinControl.HideScrollbars">
<short>Hides scroll bars with valid handles.</short>
</element>

<element name="TScrollingWinControl.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>

<element name="TScrollingWinControl.AlignControls">
<short>
Aligns the controls which have the class instance as their Parent.
</short>
<descr>
<p>
Calls the inherited method to align the specified control and its children to 
the parent control. Ensures that the page, range, and position in the scroll 
bars are recalculated when <var>AutoScroll</var> is enabled and both 
<var>HorzScrollBar</var> and <var>VertScrollBar</var> are assigned.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.AutoScroll"/>
<link id="TScrollingWinControl.HorzScrollBar"/>
<link id="TScrollingWinControl.VertScrollBar"/>
<link id="#lcl.controls.TWinControl.AlignControls">TWinControl.AlignControls</link>
</seealso>
</element>
<element name="TScrollingWinControl.AlignControls.AControl">
<short>Control aligned in the method.</short>
</element>
<element name="TScrollingWinControl.AlignControls.ARect">
<short>Client rectangle used in the operation.</short>
</element>

<element name="TScrollingWinControl.AutoScrollEnabled">
<short>Indicates if automatic scrolling is enabled for the control.</short>
<descr>
<p>
<var>AutoScrollEnabled</var> is a <var>Boolean</var> function which indicates 
if automatic scrolling is enabled for the control. The return value is 
<b>True</b> when the control is <b>NOT</b> automatically resized, or used as 
a dock site by an active docking manager.
</p>
<p>
Use the <var>AutoSize</var> property to enabled or disable automatic control 
resizing. Set the <var>UseDockManager</var> property to <b>False</b> to 
disable using the control as a <var>DockSite</var> for other controls.
</p>
</descr>
<seealso>
<link id="TScrollBox.AutoSize"/>
<link id="TScrollBox.DockSite"/>
<link id="TWinControl.UseDockManager"/>
</seealso>
</element>
<element name="TScrollingWinControl.AutoScrollEnabled.Result">
<short>
<b>True</b> when not automatically resized or used as a dock site.
</short>
</element>

<element name="TScrollingWinControl.CalculateAutoRanges">
<short>Sets or resets the ranges used for scroll bars on the control.</short>
<descr>
<p>
<var>CalculateAutoRanges</var> calculates the preferred size for the control 
- both with and without scroll bars. The Range properties in HorzScrollBar 
and VertScrollBar are updated to reflect the logical (virtual) size for the 
content on the control. The Range value is set to 0 if the scroll bar is not 
visible.
</p>
<p>
Used in the implementation of the ComputeScrollbars method.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.ComputeScrollbars"/>
<link id="TScrollingWinControl.HorzScrollBar"/>
<link id="TScrollingWinControl.VertScrollBar"/>
<link id="TScrollingWinControl.GetPreferredSizeClientFrame"/>
<link id="#lcl.controls.TControl.GetPreferredSize">TControl.GetPreferredSize</link>
</seealso>
</element>

<element name="TScrollingWinControl.CreateWnd">
<short>Creates the window handle for the control.</short>
<descr>
<p>
Ensures that the scroll bar page, range, and visibility are assigned when 
the handles for the windowed control are created. Temporarily disables 
auto-sizing in the method, and re-enables auto-sizing prior to exit. Calls 
the inherited method to create the window and its handles.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.UpdateScrollBars"/>
<link id="#lcl.controls.TWinControl.CreateWnd">TWinControl.CreateWnd</link>
</seealso>
</element>

<element name="TScrollingWinControl.DestroyWnd">
<short>
Frees or invalidates resources in the class instance when the window Handle is 
freed.
</short>
<descr>
<p>
<var>DestroyWnd</var> is an overridden method in 
<var>TScrollingWinControl</var> used to maintain resources allocated in the 
class instance when the window Handle for the control is freed. It calls the 
inherited method on entry to free handles allocated for the control Canvas and 
the widgetset class instance. It ensures that scroll bar information allocated 
in either HorzScrollBar or VertScrollBar is invalidated when the handle(s) are 
freed.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.HorzScrollBar"/>
<link id="TScrollingWinControl.VertScrollBar"/>
<link id="#lcl.controls.TCustomControl.Canvas">TCustomControl.Canvas</link>
<link id="#lcl.controls.TCustomControl.DestroyWnd">TCustomControl.DestroyWnd</link>
<link id="#lcl.controls.TWinControl.Handle">TWinControl.Handle</link>
<link id="#lcl.controls.TWinControl.DestroyHandle">TWinControl.DestroyHandle</link>
</seealso>
</element>

<element name="TScrollingWinControl.GetClientScrollOffset">
<short>The origin for the physical client area.</short>
<descr/>
<seealso>
<link id="#lcl.controls.TControl.GetClientScrollOffset">TControl.GetClientScrollOffset</link>
</seealso>
</element>
<element name="TScrollingWinControl.GetClientScrollOffset.Result">
<short>The scroll bar Positions, or (0,0) if scroll bars are not used.</short>
</element>

<element name="TScrollingWinControl.GetLogicalClientRect">
<short>Returns the logical size of the client area on the control.</short>
<descr>
<p>
<var>GetLogicalClientRect</var> is an overridden method in 
<var>TScrollingWinControl</var>; it re-implements the method introduced in 
the ancestor class. The return value contains the value in the ClientRect 
property. It ensures that the Right and Bottom members in the return value 
are updated (when needed) to reflect the current Range values for the 
respective visible scroll bars.
</p>
</descr>
<seealso>
<link id="TControlScrollBar.Visible"/>
<link id="TControlScrollBar.Range"/>
<link id="#lcl.controls.TControl.GetLogicalClientRect">TControl.GetLogicalClientRect</link>
<link id="#lcl.controls.TControl.ClientRect">TControl.ClientRect</link>
</seealso>
</element>
<element name="TScrollingWinControl.GetLogicalClientRect.Result">
<short>
TRect instance with the client rectangle adjusted for scroll bars visible on 
the control.
</short>
</element>

<element name="TScrollingWinControl.DoOnResize">
<short>Performs actions needed when the control has been resized.</short>
<descr>
<p>
<var>DoOnResize</var> is an overridden method in 
<var>TScrollingWinControl</var>. It calls the inherited method on entry to 
signal the OnResize event handler (when assigned). Other OnResize handlers 
for the application are also signalled.
</p>
<p>
When AutoScroll is enabled, the UpdateScrollbars method is called to 
recalculate the page, range, and visibility for the scroll bars on the 
control. This action is <b>not</b> performed if either VertScrollBar or 
HorzScrollBar has not been assigned.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.AutoScroll"/>
<link id="TScrollingWinControl.UpdateScrollbars"/>
<link id="TScrollingWinControl.VertScrollBar"/>
<link id="TScrollingWinControl.HorzScrollBar"/>
<link id="#lcl.controls.TControl.DoOnResize">TControl.DoOnResize</link>
<link id="#lcl.controls.TControl.OnResize">TControl.OnResize</link>
<link id="#lcl.controls.TControl.DoCallNotifyHandler">TControl.DoCallNotifyHandler</link>
</seealso>
</element>

<element name="TScrollingWinControl.GetPreferredSizeClientFrame">
<short>
Calculates the size of the client area for the control excluding visible 
scroll bars.
</short>
<descr/>
<seealso>
<link id="TScrollingWinControl.AutoScroll"/>
<link id="TScrollingWinControl.VertScrollBar"/>
<link id="TScrollingWinControl.HorzScrollBar"/>
<link id="#lcl.controls.TControl.Height">TControl.Height</link>
<link id="#lcl.controls.TControl.Width">TControl.Width</link>
<link id="#lcl.controls.TControl.ClientHeight">TControl.ClientHeight</link>
<link id="#lcl.controls.TControl.ClientWidth">TControl.ClientWidth</link>
</seealso>
</element>
<element name="TScrollingWinControl.GetPreferredSizeClientFrame.aWidth">
<short>Width of the client area.</short>
</element>
<element name="TScrollingWinControl.GetPreferredSizeClientFrame.aHeight">
<short>Height of the client area.</short>
</element>

<element name="TScrollingWinControl.WMSize">
<short>Performs actions needed to handle WMSize messages.</short>
<descr>
<p>
<var>WMSize</var> is a procedure used to perform actions needed to handle 
WMSize messages for the control. WMSize calls the inherited WMSize method to 
set the bounds for the control, optionally using the bounds from the parent 
control.
</p>
<p>
WMSize provides support for setting the window state based on size messages 
that originate in the LCL interface, and calls <var>Resizing</var> to realize 
the new window state.
</p>
</descr>
<seealso>
<link id="TCustomForm.WMSize"/>
<link id="TControl.WMSize"/>
<link id="TScrollingWinControl.Resizing"/>
<link id="TWindowState"/>
</seealso>
</element>
<element name="TScrollingWinControl.WMSize.Message">
<short>Message examined in the method.</short>
</element>

<element name="TScrollingWinControl.WMHScroll">
<short>
Delegates scroll messages to the handler for the horizontal scroll bar.
</short>
<descr/>
<seealso>
<link id="TScrollingWinControl.HorzScrollBar"/>
<link id="TControlScrollBar.ScrollHandler"/>
</seealso>
</element>
<element name="TScrollingWinControl.WMHScroll.Message">
<short>
Message forwarded to the scroll bar.
</short>
</element>

<element name="TScrollingWinControl.WMVScroll">
<short>
Delegates scroll messages to the handler for the vertical scroll bar.
</short>
<descr/>
<seealso>
<link id="TScrollingWinControl.VertScrollBar"/>
<link id="TControlScrollBar.ScrollHandler"/>
</seealso>
</element>
<element name="TScrollingWinControl.WMVScroll.Message">
<short>
Message forwarded to the scroll bar.
</short>
</element>

<element name="TScrollingWinControl.ComputeScrollbars">
<short>
Updates Page, AutoRange, IsScrollBarVisible, and returns <b>True</b> when 
changed.
</short>
<descr/>
<seealso/>
</element>
<element name="TScrollingWinControl.ComputeScrollbars.Result">
<short>
<b>True</b> when something has been changed in the scroll bar settings.
</short>
</element>

<element name="TScrollingWinControl.SetAutoScroll">
<short>Sets the value for the AutoScroll property.</short>
<descr>
<p>
When the property is changed to <b>True</b>, the <var>UpdateScrollBars</var> 
method is called to calculate the page, range, and visibility for 
<var>HorzScrollBar</var> and <var>VertScrollBar</var>. When changed to 
<b>False</b>, the <var>HideScrollbars</var> method is called to reset the 
page, range, and visibility for the scroll bars. If the BoundsRect is updated 
in either method, the original value is restored prior to exit.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.HorzScrollBar"/>
<link id="TScrollingWinControl.VertScrollBar"/>
<link id="TScrollingWinControl.UpdateScrollBars"/>
<link id="#lcl.forms.TScrollingWinControl.AutoScroll">TScrollingWinControl.AutoScroll</link>
</seealso>
</element>
<element name="TScrollingWinControl.SetAutoScroll.Value">
<short>New value for the property.</short>
</element>

<element name="TScrollingWinControl.Loaded">
<short>
Performs actions when the component has been loaded from the LCL streaming 
mechanism.
</short>
<descr>
<p>
<var>Loaded</var> is an overridden method in <var>TScrollingWinControl</var>, 
and calls the inherited method on entry. It calls <var>UpdateScrollBars</var> 
to compute the page, auto ranges, and visibility for the scroll bars when 
<var>AutoScroll</var> is enabled.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.AutoScroll"/>
<link id="TScrollingWinControl.HorzScrollBar"/>
<link id="TScrollingWinControl.VertScrollBar"/>
<link id="TScrollingWinControl.UpdateScrollBars"/>
<link id="#lcl.controls.TWinControl.Loaded">TWinControl.Loaded</link>
</seealso>
</element>

<element name="TScrollingWinControl.Resizing">
<short>
Performs actions needed when the control processes the WMSize message.
</short>
<descr>
<p>
Resizing is an empty implementation in TScrollingWinControl. It must be 
implemented in a descendent class.
</p>
</descr>
<seealso>
<link id="TCustomForm.WindowState"/>
<link id="TCustomForm.Resizing"/>
<link id="TWindowState"/>
</seealso>
</element>
<element name="TScrollingWinControl.Resizing.State">
<short>
Window state for the windowed control.
</short>
</element>

<element name="TScrollingWinControl.AutoScroll">
<short>
Indicates whether scroll bars are automatically displayed or hidden when 
needed.
</short>
<descr>
<p>
<var>AutoScroll</var> is a <var>Boolean</var> property which indicates if 
scroll bars are automatically displayed or hidden on the control as needed. 
The default value for the property is <b>False</b>.
</p>
<p>
Changing the value for the property causes the <var>Visible</var> property in 
both <var>HorzScrollBar</var> and <var>VertScrollBar</var> to be updated (if 
needed). When set to <b>True</b>, the <var>UpdateScrollBars</var> method is 
called to calculate the page, range, and visibility for the scroll bars. When 
set to <var>False</var>, the <var>HideScrollbars</var> method is called to 
reset and hide the scroll bars (when assigned).
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.UpdateScrollbars"/>
<link id="TScrollingWinControl.HorzScrollBar"/>
<link id="TScrollingWinControl.VertScrollBar"/>
</seealso>
</element>

<element name="TScrollingWinControl.SetAutoSize">
<short>Sets the value for the AutoSize property.</short>
<descr/>
<seealso>
<link id="#lcl.controls.TControl.AutoSize">TControl.AutoSize</link>
</seealso>
</element>
<element name="TScrollingWinControl.SetAutoSize.Value">
<short>New value for the property.</short>
</element>

<element name="TScrollingWinControl.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. It allocates resources needed for the 
<var>VertScrollBar</var> and <var>HorzScrollBar</var> properties, sets the 
default value in <var>AutoScroll</var> to <b>False</b>, and sets the initial 
bounds for the class instance.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.VertScrollBar"/>
<link id="TScrollingWinControl.HorzScrollBar"/>
<link id="TScrollingWinControl.AutoScroll"/>
</seealso>
</element>
<element name="TScrollingWinControl.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>

<element name="TScrollingWinControl.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>HorzScrollBar</var> and 
<var>VertScrollBar</var> properties. Destroy calls the inherited destructor 
prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.HorzScrollBar"/>
<link id="TScrollingWinControl.VertScrollBar"/>
</seealso>
</element>

<element name="TScrollingWinControl.ScreenToClient">
<short>
Converts the specified screen coordinates to client-relative coordinates.
</short>
<descr>
<p>
<var>ScreenToClient</var> is an overridden method in 
<var>TScrollingWinControl</var>.
</p>
<p>
ScreenToClient calls the inherited method to get the TPoint instance with the 
client coordinates used in the return value. The X and Y members in the 
return value are updated to reflect the current scroll offsets for the 
control. This gives the origin on the logical display area for the visible 
area on the control.
</p>
<p>
ScreenToClient is used, along with ClientToScreen, in inherited methods which 
respond to changes in the mouse pointer position for a control. This includes 
context menu display and drag-and-dock operations.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.ClientToScreen"/>
<link id="#lcl.controls.TControl.ScreenToClient">TControl.ScreenToClient</link>
</seealso>
</element>
<element name="TScrollingWinControl.ScreenToClient.Result">
<short>
TPoint instance with the client-relative coordinates for the specified value.
</short>
</element>
<element name="TScrollingWinControl.ScreenToClient.APoint">
<short>
TPoint instance with the screen coordinates converted in the method.
</short>
</element>

<element name="TScrollingWinControl.ClientToScreen">
<short>
Converts the specified client coordinates to absolute screen coordinates.
</short>
<descr>
<p>
<var>ClientToScreen</var> is an overridden method in 
<var>TScrollingWinControl</var>.
</p>
<p>
ClientToScreen calls the inherited method to get the TPoint instance with the 
screen coordinates for the client coordinates in APoint. The X and Y members 
in the return value are updated to reflect the current scroll offsets for the 
control. This gives the screen coordinates where the origin for the logical 
display area is located on the control.
</p>
<p>
ClientToScreen is used, along with ScreenToClient, in inherited methods which 
respond to changes in the mouse pointer position for a control. This includes 
context menu display and drag-and-dock operations.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.ScreenToClient"/>
<link id="#lcl.controls.TControl.ClientToScreen">TControl.ClientToScreen</link>
</seealso>
</element>
<element name="TScrollingWinControl.ClientToScreen.Result">
<short>
TPoint instance with the screen coordinates for the specified value.
</short>
</element>
<element name="TScrollingWinControl.ClientToScreen.APoint">
<short>
TPoint instance with the client-relative coordinates converted in the method.
</short>
</element>

<element name="TScrollingWinControl.UpdateScrollbars">
<short>Initializes or updates the scroll bars for the control.</short>
<descr>
<p>
<var>UpdateScrollbars</var> is a method used to update the scroll bars used 
on the windowed control.
</p>
<p>
When automatic scrollbars are enabled using AutoScroll, the scroll bar 
information is initialized as needed for the visible scroll bars. The 
UpdateScrollBar method in both VertScrollBar and HorzScrollBar is called to 
recalculate the current page and range for the scroll bars.
</p>
<p>
No actions are performed in the method if a handle has not been allocated for 
the control, or when either HorzScrollBar or VertScrollBar has not been 
assigned.
</p>
<p>
Recursive calls to the method are ignored.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.AutoScroll"/>
<link id="TScrollingWinControl.ComputeScrollbars"/>
<link id="TControlScrollBar.UpdateScrollBar"/>
</seealso>
</element>

<element name="TScrollingWinControl.GetControlClassDefaultSize" link="#lcl.controls.TControl.GetControlClassDefaultSize"/>
<element name="TScrollingWinControl.GetControlClassDefaultSize.Result"/>

<element name="TScrollingWinControl.ScrollBy">
<short>
Tells the widget to scroll the client area by the specified relative values.
</short>
<descr>
<p>
ScrollBy calls the inherited ScrollBy_WS to apply the relative horizontal and 
vertical values to the widgetset class instance. An exception is raised if 
the handle has not been allocated. The still visible part doesn't deserve a 
repaint (optimization).
</p>
</descr>
<seealso/>
</element>
<element name="TScrollingWinControl.ScrollBy.DeltaX">
<short>Horizontal distance for the scroll operation.</short>
</element>
<element name="TScrollingWinControl.ScrollBy.DeltaY">
<short>Vertical distance for the scroll operation.</short>
</element>

<element name="TScrollingWinControl.ScrollInView">
<short>
Aligns the specified control to its parent and scrolls it into view.
</short>
<descr>
<p>
<var>ScrollInView</var> is a method used to align and scroll the control in 
<var>AControl</var> into the visible area for the scrolling window control. 
No actions are performed in the method under the following conditions:
</p>
<ul>
<li>AControl has not been assigned (contains <b>Nil</b>).</li>
<li>The control is not the Parent (or ancestor) for AControl.</li>
<li>
Neither horizontal nor vertical scroll bars are displayed for the 
control.
</li>
</ul>
<p>
The origin for AControl relative to its <var>Parent</var> is determined by 
calling the <var>ClientToParent</var> method. <var>OffsetRect</var> (in Types) 
is called to apply the offset to the display rectangle for AControl. The 
adjusted coordinates are used to reposition the visible scroll bars so that 
AControl is visible in the client area for the scrolling window control.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.VertScrollBar"/>
<link id="TScrollingWinControl.HorzScrollBar"/>
<link id="TScrollingWinControl.AlignControls"/>
<link id="TControlScrollBar.Position"/>
<link id="#lcl.controls.TControl.ClientToParent">TControl.ClientToParent</link>
<link id="#rtl.types.OffsetRect">OffsetRect</link>
</seealso>
</element>
<element name="TScrollingWinControl.ScrollInView.AControl">
<short>Control to make visible in the scrolling window control.</short>
</element>

<element name="TScrollingWinControl.HorzScrollBar">
<short>The horizontal scroll bar for the control.</short>
<descr>
<p>
<var>HorzScrollBar</var> is a <var>TControlScrollBar</var> property with the 
horizontal scroll bar for the scrolling window control. The scroll bar is 
displayed for the control when its <var>Visible</var> property is 
<b>True</b>, or when <var>Width</var> is larger than the 
<var>ClientWidth</var> for the control and <var>AutoScroll</var> is enabled.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.AutoScroll"/>
<link id="TScrollingWinControl.AutoScrollEnabled"/>
<link id="TControlScrollBar.Visible"/>
<link id="#lcl.controls.TControl.ClientWidth">TControl.ClientWidth</link>
<link id="#lcl.controls.TControl.Width">TControl.Width</link>
</seealso>
</element>

<element name="TScrollingWinControl.VertScrollBar">
<short>The vertical scroll bar for the control.</short>
<descr>
<p>
VertScrollBar is a TControlScrollBar property with the vertical scroll bar 
for the scrolling window control. The scroll bar is displayed for the control 
when its <var>Visible</var> property is <b>True</b>, or when 
<var>Height</var> is larger than the <var>ClientHeight</var> for the control 
and <var>AutoScroll</var> is enabled.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.AutoScroll"/>
<link id="TScrollingWinControl.AutoScrollEnabled"/>
<link id="TControlScrollBar.Visible"/>
<link id="#lcl.controls.TControl.ClientHeight">TControl.ClientHeight</link>
<link id="#lcl.controls.TControl.Height">TControl.Height</link>
</seealso>
</element>

<element name="TScrollBox">
<short>Implements a windowed control with scroll bars.</short>
<descr>
<p>
<var>TScrollBox</var> is a <var>TScrollingWinControl</var> descendant that 
implements a windowed control with scroll bars. It uses the logical and 
physical display areas introduced in the ancestor class, and allows a 
scrollable area to be displayed on a form or panel. The logical (or virtual) 
client area represents the dimensions needed for the child Controls added to 
the class instance. When the logical display area is larger than the visible 
area for the control, scroll bars allow the content to be moved into the 
visible area for the control.
</p>
<p>
TScrollBox sets the visibility for properties inherited from the ancestor 
class. TScrollBox includes an overridden constructor which sets the default 
values for properties in the class instance.
</p>
<p>
Child Controls can be added to the class instance at design-time, or at 
run-time by setting the scroll box as the Parent for a control.
</p>
<p>
The AutoScroll property indicates whether the scroll bars are automatically 
displayed (or hidden) as needed when the control is resized, or when child 
Controls are updated. This includes setting the page, range, and visibility 
for the scroll bars. Use the HorzScrollBar and VertScrollBar properties to 
access scroll bar page, range, and visibility when AutoScroll is not enabled.
</p>
<p>
An example application using TScrollBox is located in the 
<url href="https://gitlab.com/freepascal.org/lazarus/lazarus/-/tree/main/examples/imgviewer">
<file>examples/imgviewer</file>
</url> directory.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl"/>
</seealso>
</element>

<element name="TScrollBox.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>

<element name="TScrollBox.SetParentBackground">
<short>
Sets the value for the ParentBackground property.
</short>
<descr>
<p>
<var>SetParentBackground</var> is an overridden method in 
<var>TScrollBox</var> which implements the write access specifier for the 
ParentBackground property. It calls the inherited method on entry to update 
the values in the ControlStyle property and invalidate the control. It calls 
the UpdateParentColorChange method to include or exclude csOpaque as needed in 
ControlStyle; the value is included when ParentBackground is changed to 
<b>True</b>.
</p>
</descr>
<seealso>
<link id="TScrollBox.ParentBackground"/>
<link id="TScrollBox.UpdateParentColorChange"/>
<link id="TControl.SetParentBackground">TControl.SetParentBackground</link>
</seealso>
</element>
<element name="TScrollBox.SetParentBackground.AParentBackground">
<short>
New value for the ParentBackground property.
</short>
</element>

<element name="TScrollBox.CMParentColorChanged">
<short>
Handles the CM_PARENTCOLORCHANGED message for the control.
</short>
<descr>
<p>
<var>CMParentColorChanged</var> is an overridden method in 
<var>TScrollBox</var> used to handle a <b>CM_PARENTCOLORCHANGED</b> message 
received for the control. It calls the UpdateParentColorChange method to 
include or exclude csOpaque in the ControlStyle property; csOpaque is included 
if either ParentColor or ParentBackground is set to <b>True</b>. Otherwise, 
the value is excluded from ControlStyle. 
</p>
<p>
CMParentColorChanged calls the inherited method to update the Color property 
when ParentColor is enabled.
</p>
</descr>
<seealso>
<link id="TScrollBox.ParentBackground"/>
<link id="TScrollBox.ParentColor"/>
<link id="TScrollBox.Color"/>
<link id="#lcl.controls.TControl.CMParentColorChanged">TControl.CMParentColorChanged</link>
<link id="#lcl.controls.TControl.ControlStyle">TControl.ControlStyle</link>
<link id="#lcl.controls.TControlStyleType">TControlStyleType</link>
</seealso>
</element>
<element name="TScrollBox.CMParentColorChanged.Message">
<short>
Control message handled in the method.
</short>
</element>

<element name="TScrollBox.Loaded">
<short>
Performs actions when a component has been loaded during LCL component 
streaming. 
</short>
<descr>
<p>
<var>Loaded</var> is an overridden method in <var>TScrollBox</var> used to 
perform actions needed when a component has been loaded from a resource during 
LCL streaming. It calls the inherited method (in TScrollingWinControl) on 
entry to resize its child Controls and update its scroll bars. It calls the 
UpdateParentColorChange method to set the opacity for the control based on the 
values in ParentColor and ParentBackground.
</p>
</descr>
<seealso>
<link id="TScrollBox.ParentBackground"/>
<link id="TScrollBox.ParentColor"/>
<link id="TScrollBox.Color"/>
<link id="TScrollBox.UpdateParentColorChange"/>
<link id="#lcl.controls.TControl.ControlStyle">TControl.ControlStyle</link>
<link id="#lcl.controls.TControlStyleType">TControlStyleType</link>
</seealso>
</element>

<element name="TScrollBox.UpdateParentColorChange">
<short>
Updates ControlStyle flags to set the opacity for the control.
</short>
<descr>
<p>
<var>UpdateParentColorChange</var> is method used to update the ControlStlye 
property when the value in ParentColor or ParentBackground has been changed.
</p>
<p>
If either ParentColor or ParentBackground is set to True, the control needs to 
be transparent so that the parent background color is seen as the control 
background color. This is achieved by excluding the value csOpaque from the 
ControlStyle property.
</p>
<p>
If both ParentColor and ParentBackground are set to False, csOpaque is 
included in the ControlStyle property.
</p>
<p>
UpdateParentColorChange is also called when the control is Loaded during LCL 
streaming or when the CM_PARENTCOLORCHANGED message is handled for the control.
</p>
</descr>
<seealso/>
</element>

<element name="TScrollBox.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 method on entry, an updates the component and control 
style flags as needed for the class instance. It sets the default values for 
the following properties:
</p>
<ul>
<li>AutoScroll (True)</li>
<li>BorderStyle (bsSingle)</li>
</ul>
</descr>
<seealso>
<link id="#lcl.forms.TScrollingWinControl.Create">TScrollingWinControl.Create</link>
</seealso>
</element>
<element name="TScrollBox.Create.AOwner">
<short>Owner of the class instance.</short>
</element>

<element name="TScrollBox.Align" link="#lcl.controls.TControl.Align"/>
<element name="TScrollBox.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TScrollBox.AutoSize" link="#lcl.controls.TControl.AutoSize"/>

<element name="TScrollBox.AutoScroll">
<short>
Indicates whether scroll bars are automatically displayed or hidden when 
needed.
</short>
<descr>
<p>
<var>AutoScroll</var> is a <var>Boolean</var> property which indicates if 
scroll bars are automatically displayed or hidden on the control as needed. 
The default value for the property is <b>True</b> in TScrollBox.
</p>
<p>
Changing the value for the property causes the Visible property in both 
HorzScrollBar and VertScrollBar to be updated (if needed). When set to 
<b>True</b>, the UpdateScrollBars method is called to calculate the page, 
range, and visibility for the scroll bars. When set to <b>False</b>, the 
HideScrollbars method is called to reset and hide the scroll bars (when 
assigned).
</p>
</descr>
<seealso>
<link id="#lcl.forms.TScrollingWinControl.AutoScroll">TScrollingWinControl.AutoScroll</link>
<link id="#lcl.forms.TScrollingWinControl.UpdateScrollbars">TScrollingWinControl.UpdateScrollbars</link>
<link id="#lcl.forms.TScrollingWinControl.HorzScrollBar">TScrollingWinControl.HorzScrollBar</link>
<link id="#lcl.forms.TScrollingWinControl.VertScrollBar">TScrollingWinControl.VertScrollBar</link>
</seealso>
</element>

<element name="TScrollBox.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TScrollBox.BiDiMode" link="#lcl.controls.TControl.BiDiMode"/>

<element name="TScrollBox.BorderStyle">
<short>Line style used to draw the border around the control.</short>
<descr>
<p>
The default value for the property is bsSingle in TScrollBox.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.BorderStyle">TWinControl.BorderStyle</link>
</seealso>
</element>

<element name="TScrollBox.ChildSizing" link="#lcl.controls.TWinControl.ChildSizing"/>
<element name="TScrollBox.ClientHeight" link="#lcl.controls.TControl.ClientHeight"/>
<element name="TScrollBox.ClientWidth" link="#lcl.controls.TControl.ClientWidth"/>
<element name="TScrollBox.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TScrollBox.DockSite" link="#lcl.controls.TWinControl.DockSite"/>
<element name="TScrollBox.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TScrollBox.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TScrollBox.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TScrollBox.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TScrollBox.Color" link="#lcl.controls.TControl.Color"/>
<element name="TScrollBox.Font" link="#lcl.controls.TControl.Font"/>

<element name="TScrollBox.ParentBackground">
<short>
Indicates if the control uses the background from its Parent control.
</short>
<descr>
<p>
ParentBackground is a Boolean property which indicates if the background for 
the Parent control is drawn as the background for the current control 
instance. The default value in TScrollBox is <b>True</b>.
</p>
<p>
ParentBackground is <b>True</b> when csParentBackground is included in the 
ControlStyle property. Setting the value in ParentBackground causes 
ControlStyle to be updated to include or exclude the csParentBackground 
enumeration value. csOpaque is added to or removed from ControlStyle by 
calling the UpdateParentColorChange method. The style flags are included in 
ControlStyle when ParentBackground is set to <b>True</b>, and excluded when 
set to <b>False</b>.
</p>
</descr>
<seealso>
<link id="TScrollBox.UpdateParentColorChange"/>
<link id="#lcl.controls.TControl.ParentBackground">TControl.ParentBackground</link>
<link id="#lcl.controls.TControl.ParentColor">TControl.ParentColor</link>
<link id="#lcl.controls.TControl.Color">TControl.Color</link>
<link id="#lcl.controls.TControl.ControlStyle">TControl.ControlStyle</link>
<link id="#lcl.controls.TControl.Parent">TControl.Parent</link>
<link id="#lcl.controls.TControlStyle">TControlStyle</link>
<link id="#lcl.controls.TControlStyleType">TControlStyleType</link>
</seealso>
</element>

<element name="TScrollBox.ParentBiDiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TScrollBox.ParentColor" link="#lcl.controls.TControl.ParentColor"/>
<element name="TScrollBox.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TScrollBox.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TScrollBox.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TScrollBox.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TScrollBox.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TScrollBox.TabStop" link="#lcl.controls.TWinControl.TabStop"/>
<element name="TScrollBox.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TScrollBox.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TScrollBox.OnConstrainedResize" link="#lcl.controls.TControl.OnConstrainedResize"/>
<element name="TScrollBox.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element name="TScrollBox.OnDockDrop" link="#lcl.controls.TWinControl.OnDockDrop"/>
<element name="TScrollBox.OnDockOver" link="#lcl.controls.TWinControl.OnDockOver"/>
<element name="TScrollBox.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TScrollBox.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TScrollBox.OnEndDock" link="#lcl.controls.TControl.OnEndDock"/>
<element name="TScrollBox.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TScrollBox.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
<element name="TScrollBox.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
<element name="TScrollBox.OnGetSiteInfo" link="#lcl.controls.TWinControl.OnGetSiteInfo"/>
<element name="TScrollBox.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TScrollBox.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TScrollBox.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TScrollBox.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TScrollBox.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TScrollBox.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TScrollBox.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TScrollBox.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TScrollBox.OnMouseWheelHorz" link="#lcl.controls.TControl.OnMouseWheelHorz"/>
<element name="TScrollBox.OnMouseWheelLeft" link="#lcl.controls.TControl.OnMouseWheelLeft"/>
<element name="TScrollBox.OnMouseWheelRight" link="#lcl.controls.TControl.OnMouseWheelRight"/>
<element name="TScrollBox.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TScrollBox.OnStartDock" link="#lcl.controls.TControl.OnStartDock"/>
<element name="TScrollBox.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TScrollBox.OnUnDock" link="#lcl.controls.TWinControl.OnUnDock"/>
<element name="TScrollBox.OnPaint" link="#lcl.controls.TCustomControl.OnPaint"/>

<element name="TCustomDesignControl">
<short>
Provides a designer surface for scaling and layout of its child controls.
</short>
<descr>
<p>
<var>TCustomDesignControl</var> is a <var>TScrollingWinControl</var> 
descendant which provides a designer surface used for scaling and layout of 
its child controls.
</p>
<p>
Properties are provided to set the display density (Pixels Per Inch) for 
design-time and run-time usage, and to Scale child controls. Methods are also 
provided to use <var>TLayoutAdjustmentPolicy</var> to layout and to re-size 
the child controls.
</p>
<p>
An overridden <var>Loaded</var> method is provided to adjust the design-time 
PPI (when scaling is enabled in the application).
</p>
<p>
TCustomDesignControl is used as the ancestor for <var>TCustomFrame</var> and 
<var>TCustomForm</var>.
</p>
</descr>
<seealso>
<link id="TApplication.Scaled"/>
<link id="TCustomForm"/>
<link id="TCustomFrame"/>
<link id="GetParentDesignControl"/>
<link id="NeedParentDesignControl"/>
</seealso>
</element>

<element name="TCustomDesignControl.FScaled"/>
<element name="TCustomDesignControl.FDesignTimePPI"/>
<element name="TCustomDesignControl.FPixelsPerInch"/>
<element name="TCustomDesignControl.DesignTimePPIIsStored"/>
<element name="TCustomDesignControl.DesignTimePPIIsStored.Result"/>

<element name="TCustomDesignControl.SetDesignTimePPI">
<short>Sets the value for the DesignTimePPI property.</short>
<descr/>
<seealso>
<link id="TCustomDesignControl.DesignTimePPI"/>
</seealso>
</element>
<element name="TCustomDesignControl.SetDesignTimePPI.ADesignTimePPI">
<short>New value for the property.</short>
</element>

<element name="TCustomDesignControl.SetScaled">
<short>Sets the value for the Scaled property.</short>
<descr/>
<seealso>
<link id="TCustomDesignControl.Scaled"/>
</seealso>
</element>
<element name="TCustomDesignControl.SetScaled.AScaled">
<short>New value for the property.</short>
</element>
<element name="TCustomDesignControl.DoAutoAdjustLayout">
<short>
Applies size and layout changes to the design surface and its Parent control.
</short>
<descr>
<p>
<var>DoAutoAdjustLayout</var> is a procedure used to perform actions needed 
to apply size and layout changes to the design surface and its 
<var>Parent</var> control.
</p>
<p>
<var>DoAutoAdjustLayout</var> adjusts the height and width for the design 
surface by the specified scaling factors. Similarly, the 
<var>BorderSpacing</var> and <var>Constraints</var> in the control are 
adjusted using the scaling factors. Finally, the <var>SetBounds</var> method 
is called to apply the new values for Height and Width to the design surface.
</p>
<remark>
No actions are performed in the method when the Parent property has not been 
assigned (contains <b>Nil</b>). In addition, no actions are performed when 
<var>AMode</var> omits the <var>lapAutoAdjustWithoutHorizontalScrolling</var> 
and <var>lapAutoAdjustForDPI</var> enumeration values.
</remark>
</descr>
<seealso>
<link id="#lcl.controls.TControl.AutoAdjustLayout">TControl.AutoAdjustLayout</link>
<link id="#lcl.controls.TControl.Constraints">TControl.Constraints</link>
<link id="#lcl.controls.TControl.BorderSpacing">TControl.BorderSpacing</link>
<link id="#lcl.controls.TControl.Parent">TControl.Parent</link>
<link id="#lcl.controls.TLayoutAdjustmentPolicy">TLayoutAdjustmentPolicy</link>
</seealso>
</element>
<element name="TCustomDesignControl.DoAutoAdjustLayout.AMode">
<short>TLayoutAdjustmentPolicy applied in the method.</short>
</element>
<element name="TCustomDesignControl.DoAutoAdjustLayout.AXProportion">
<short>Horizontal scaling factor applied in the method.</short>
</element>
<element name="TCustomDesignControl.DoAutoAdjustLayout.AYProportion">
<short>Vertical scaling factor applied in the method.</short>
</element>

<element name="TCustomDesignControl.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance. 
Create calls the inherited method using the value in <var>TheOwner</var> as 
the owner of the class instance. Create sets the default values for the 
following properties:
</p>
<ul>
<li>Scaled</li>
<li>DesignTimePPI</li>
<li>PixelsPerInch</li>
</ul>
<p>
When scaling is enabled in the Application, the value in 
<var>DesignTimePPI</var> is used as the <var>PixelsPerInch</var> setting in 
the <var>Font</var> property.
</p>
</descr>
<seealso>
<link id="TCustomDesignControl.Scaled"/>
<link id="TCustomDesignControl.PixelsPerInch"/>
<link id="TCustomDesignControl.Scaled"/>
<link id="TApplication.Scaled"/>
<link id="#lcl.controls.TControl.Font">TControl.Font</link>
</seealso>
</element>
<element name="TCustomDesignControl.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>

<element name="TCustomDesignControl.AutoAdjustLayout">
<short>
Applies a new display density (Pixels Per Inch) for a layout policy to the 
control.
</short>
<descr>
<p>
<var>AutoAdjustLayout</var> is used to set the value in the 
<var>PixelsPerInch</var> property to the value specified in <var>AToPPI</var> 
for the <var>lapAutoAdjustForDPI</var> layout policy. AutoAdjustLayout calls 
the inherited method.
</p>
<remark>
No additional actions are performed in the method when <var>AMode</var> 
contains a value other than <var>lapAutoAdjustForDPI</var>.
</remark>
</descr>
<seealso>
<link id="TCustomDesignControl.PixelsPerInch"/>
<link id="TCustomDesignControl.DoAutoAdjustLayout"/>
<link id="TLayoutAdjustmentPolicy"/>
</seealso>
</element>
<element name="TCustomDesignControl.AutoAdjustLayout.AMode">
<short>Layout policy to use for the design surface.</short>
</element>
<element name="TCustomDesignControl.AutoAdjustLayout.AFromPPI">
<short>Original display density setting.</short>
</element>
<element name="TCustomDesignControl.AutoAdjustLayout.AToPPI">
<short>New display density setting.</short>
</element>
<element name="TCustomDesignControl.AutoAdjustLayout.AOldFormWidth">
<short>Original form width.</short>
</element>
<element name="TCustomDesignControl.AutoAdjustLayout.ANewFormWidth">
<short>New form width.</short>
</element>
<element name="TCustomDesignControl.DesignTimePPI">
<short>Design-time Pixels Per Inch for the designer surface.</short>
<descr>
<p>
<var>DesignTimePPI</var> is an <var>Integer</var> property that contains the 
display density (or Pixels Per Inch) used on the designer surface. The 
default value for the property is <b>96</b>.
</p>
<p>
The property value is normally set when the component is loaded using the LCL 
streaming mechanism. It can be assigned at design-time to the value in 
<var>ADesignTimePPI</var> only when the new value matches the display density 
for the current Screen where the designer surface is used. The value can be 
changed at run-time, but the programmer must ensure that the value is valid 
for the intended usage.
</p>
<p>
An <var>EInvalidOperation</var> exception is raised if an invalid value is 
specified at design-time.
</p>
<p>
When scaling is enabled in the Application, the value in DesignTimePPI is 
assigned to the <var>Font</var> for the designer surface.
</p>
<p>
Use <var>PixelsPerInch</var> to access the run-time display density for the 
designer surface.
</p>
</descr>
<seealso>
<link id="TCustomDesignControl.PixelsPerInch"/>
<link id="TCustomDesignControl.Scaled"/>
<link id="TApplication.Scaled"/>
<link id="#lcl.controls.TControl.Font">TControl.Font</link>
</seealso>
</element>
<element name="TCustomDesignControl.PixelsPerInch">
<short>Run-time Pixels Per Inch for the designer surface.</short>
<descr/>
<seealso/>
</element>

<element name="TCustomDesignControl.Scaled">
<short>
Indicates if the design surface is scaled to reflect changes in display 
density (Pixels Per Inch).
</short>
<descr/>
<seealso/>
</element>

<element name="TCustomFrame">
<short>The base type for <var>TFrame</var>.</short>
<descr>
<p>
<var>TCustomFrame</var> is a <var>TCustomDesignControl</var> descendant which 
implements the base class for <var>TFrame</var>. A Frame is a named container 
for related components. Groups of controls can be place on a frame, and 
re-used in your applications.
</p>
<p>
A Frame has behavior very similar to a Form. Their unique ability is that 
they can be embedded into forms or other frames in the designer. Like forms, 
they are stored in two separate files: the code is stored in a .pas unit 
file, and the design is stored in a .lfm file.
</p>
<p>
Frames can be created and designed in the Lazarus IDE by creating a new Frame 
module, and using the unit in your application. An existing frame can be 
added using the TFrame component on the Standard tab in the Lazarus IDE; you 
will be prompted for the TFrame class to use for the component.
</p>
<p>
Frames can also be created in code at run-time. They do not have to be 
installed in the Lazarus IDE. For example:
</p>
<code>
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    GroupBox1: TGroupBox;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
    Frame: TFrame;
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation
uses
  Unit2{TFrame1}, Unit3{TFrame2}, Unit4{TFrame3};

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  Frame := TFrame1.Create(GroupBox1);
  Frame.Parent := GroupBox1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not Assigned(Frame) then
  begin
    Frame := TFrame1.Create(GroupBox1);
    Frame.Parent := GroupBox1;
  end else if Frame is TFrame1 then begin
    Frame.Free;
    Frame := TFrame2.Create(GroupBox1);
    Frame.Parent := GroupBox1;
  end else if Frame is TFrame2 then begin
    Frame.Free;
    Frame := TFrame3.Create(GroupBox1);
    Frame.Parent := GroupBox1;
  end else begin
    FreeAndNil(Frame);
  end;
end;

end.
</code>
<p>
One drawback is that complex inheritance hierarchies for <var>TFrame</var> 
classes can be problematic; they do not propagate changes to all derived 
frames in a multi-level inheritance tree.
</p>
</descr>
<seealso>
<link id="TFrame"/>
<link id="TCustomDesignControl"/>
</seealso>
</element>

<element name="TCustomFrame.AddActionList">
<short>
Adds the specified list of Actions to the Parent form for the frame class.
</short>
<descr>
<remark>
No actions are performed in the method when a Parent form has not been 
assigned for the class instance.
</remark>
<p>
AddActionList is called from the Notification method when a TCustomActionList 
instance has been added to the control. This occurs when a new Parent is 
assigned for the frame instance.
</p>
</descr>
<seealso>
<link id="TCustomFrame.Notification"/>
<link id="GetParentForm"/>
<link id="#lcl.controls.TControl.Parent">TControl.Parent</link>
</seealso>
</element>
<element name="TCustomFrame.AddActionList.ActionList">
<short>List of Actions added in the method.</short>
</element>

<element name="TCustomFrame.RemoveActionList">
<short>Removes the specified list of Actions from the Parent form.</short>
<descr>
<remark>
No actions are performed in the method when a Parent form has not been 
assigned for the class instance.
</remark>
<p>
RemoveActionList is called from the Notification method when the 
TCustomActionList instance has been added to the control. This occurs when a 
new Parent which contains an action list is assigned for the frame instance.
</p>
</descr>
<seealso>
<link id="TCustomFrame.Notification"/>
<link id="GetParentForm"/>
<link id="#lcl.controls.TControl.Parent">TControl.Parent</link>
</seealso>
</element>
<element name="TCustomFrame.RemoveActionList.ActionList">
<short>List of Actions removed in the method.</short>
</element>

<element name="TCustomFrame.ReadDesignLeft">
<short>Implements reading the Left property for the designer surface.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomFrame.ReadDesignLeft.Reader"/>

<element name="TCustomFrame.ReadDesignTop">
<short>Implements reading the Right property for the designer surface.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomFrame.ReadDesignTop.Reader"/>

<element name="TCustomFrame.WriteDesignLeft">
<short>Implements writing the Left property for the designer surface.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomFrame.WriteDesignLeft.Writer"/>

<element name="TCustomFrame.WriteDesignTop">
<short>Implements writing the Top property for the designer surface.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomFrame.WriteDesignTop.Writer"/>

<element name="TCustomFrame.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>

<element name="TCustomFrame.GetChildren">
<short>
Invokes <var>Proc</var> for all Controls and also for all Components without 
a Parent.
</short>
<descr/>
<seealso>
<link id="#lcl.controls.TWinControl.GetChildren">TWinControl.GetChildren</link>
</seealso>
</element>
<element name="TCustomFrame.GetChildren.Proc">
<short>The callback method.</short>
</element>
<element name="TCustomFrame.GetChildren.Root">
<short>Components are enumerated only if Root=Self.</short>
</element>

<element name="TCustomFrame.Notification">
<short>Adds or removes an action list for the control.</short>
<descr/>
<seealso>
<link id="#lcl.controls.TControl.Notification">TControl.Notification</link>
<link id="#rtl.classes.TComponent.Notification">TComponent.Notification</link>
</seealso>
</element>
<element name="TCustomFrame.Notification.AComponent">
<short>Component for the notification.</short>
</element>
<element name="TCustomFrame.Notification.Operation">
<short>Operation for the notification.</short>
</element>

<element name="TCustomFrame.SetColor">
<short>Sets the value for the Color property.</short>
<descr>
<p>
<var>SetColor</var> is an overridden method in <var>TCustomFrame</var> used 
to set the value for 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="TCustomFrame.ParentBackground"/>
<link id="#lcl.controls.TControl.Color">TControl.Color</link>
</seealso>
</element>
<element name="TCustomFrame.SetColor.Value">
<short>New value for the property.</short>
</element>

<element name="TCustomFrame.SetParent">
<short>Sets the value for the Parent property.</short>
<descr>
<p>
Updates the action list for child components or nested frames by calling 
AddActionList or RemoveActionList. Frees the Handle for the control when 
Parent has not already been assigned. Calls the inherited method to update 
the value in Parent. Performs automatic layout adjustments when the 
PixelsPerInch settings for the Parent and the frame instance have different 
value.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Parent">TControl.Parent</link>
<link id="#lcl.controls.TControl.SetParent">TControl.SetParent</link>
</seealso>
</element>
<element name="TCustomFrame.SetParent.AParent">
<short>New value for the Parent property.</short>
</element>

<element name="TCustomFrame.SetParentBackground">
<short>
Sets the value for the ParentBackground property.
</short>
<descr>
<p>
Ensures that Color is changed to the value in the Parent control when the 
property is set to <b>True</b>. Color is set to clDefault when the property 
is set to <b>False</b>. Calls UpdateOpaque to ensure that the csOpaque style 
flag is applied to the ControlStyle property as needed.
</p>
</descr>
<seealso>
<link id="TCustomFrame.ParentBackground"/>
</seealso>
</element>
<element name="TCustomFrame.SetParentBackground.AParentBackground">
<short>
New value for the ParentBackground property.
</short>
</element>

<element name="TCustomFrame.CMParentColorChanged">
<short>Handles the CM_PARENTCOLORCHANGED message for the control.</short>
<descr>
<p>
<var>CMParentColorChanged</var> is an overridden method in TCustomFrame. It 
calls the inherited method on entry to update the values in Color and 
ParentColor. If the control has finished loading using the LCL component 
streaming mechanism, the UpdateOpaque method is called to update flag values 
in the ControlStyle property. ControlStyle is not updated if csLoading is 
included in the ComponentState property.
</p>
</descr>
<seealso>
<link id="TCustomFrame.UpdateOpaque"/>
<link id="#lcl.controls.TControl.CMParentColorChanged">TControl.CMParentColorChanged</link>
<link id="#lcl.controls.TControl.ParentColor">TControl.ParentColor</link>
<link id="#lcl.controls.TControl.Color">TControl.Color</link>
<link id="#rtl.classes.TComponent.ComponentState">TComponent.ComponentState</link>
</seealso>
</element>
<element name="TCustomFrame.CMParentColorChanged.Message">
<short>Control message handled in the method.</short>
</element>

<element name="TCustomFrame.DefineProperties">
<short>
Defines non-published properties that are included in LCL component streaming.
</short>
<descr>
<p>
<var>DefineProperties</var> is an overridden method used to include 
non-published properties in the values read and written during LCL component 
streaming. In TCustomFrame, design-time information for the Top and Left 
coordinates for the frame are included (when available) in the specified 
TFiler instance.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.DefineProperties">TControl.DefineProperties</link>
</seealso>
</element>
<element name="TCustomFrame.DefineProperties.Filer">
<short>TFiler instance where property definitions are added.</short>
</element>

<element name="TCustomFrame.CalculatePreferredSize">
<short>
Gets the preferred height and width for the control used during auto-sizing.
</short>
<descr>
<p>
<var>CalculatePreferredSize</var> is an overridden method in 
<var>TCustomFrame</var>. It ensures that the inherited method is <b>not</b> 
called when the frame is an un-parented component and visible on the form 
designer. This allows the dimensions to be freely resized on the design 
surface. Values in the PreferredWidth, PreferredHeight, and WithThemeSpace 
arguments are not modified at design-time.
</p>
<p>
If the frame has an Owner (parent form) at run-time, the inherited method is 
called to get the values used in the LCL auto-sizing algorithms.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.CalculatePreferredSize">TWinControl.CalculatePreferredSize</link>
</seealso>
</element>
<element name="TCustomFrame.CalculatePreferredSize.PreferredWidth">
<short>Preferred width for the control.</short>
</element>
<element name="TCustomFrame.CalculatePreferredSize.PreferredHeight">
<short>Preferred height for the control.</short>
</element>
<element name="TCustomFrame.CalculatePreferredSize.WithThemeSpace">
<short>
<b>True</b> if additional space is reserved in the width or height for theme 
details.
</short>
</element>

<element name="TCustomFrame.UpdateOpaque">
<short>
Updates control style flags to reflect the transparency for the frame.
</short>
<descr>
<p>
<var>UpdateOpaque</var> is a method used to update <var>ControlStyle</var> 
flags to reflect the transparency for the frame. When 
<var>ParentBackground</var> is <b>True</b>, the value <var>csOpaque</var> is 
excluded from the <var>ControlStyle</var> property to allow the frame to be 
drawn with transparency. When set to <b>False</b>, csOpaque is included in 
ControlStyle.
</p>
<p>
UpdateOpaque is called when the value for the ParentBackground has been 
changed, and when the <var>CM_PARENTCOLORCHANGED</var> control message is 
handled for the frame.
</p>
</descr>
<seealso>
<link id="TCustomFrame.ParentBackground"/>
<link id="#lcl.controls.TControl.ControlStyle">TControl.ControlStyle</link>
</seealso>
</element>

<element name="TCustomFrame.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
Create is the overridden constructor for the class instance. Create calls the 
inherited method using AOwner as the owner for the class instance. Create 
sets the ControlStyle property to the following enumeration values:
</p>
<ul>
<li>csAcceptsControls</li>
<li>csCaptureMouse</li>
<li>csClickEvents</li>
<li>csSetCaption</li>
<li>csDoubleClicks</li>
<li>csParentBackground</li>
</ul>
<p>
Create uses the default size for its class type to set the initial bounds for 
the control.
</p>
</descr>
<errors>
Raises an EResNotFound exception at run-time if the ClassType for the class 
instance
is not derived from TFrame.
</errors>
<seealso>
<link id="#rtl.classes.TComponent.Create">TComponent.Create</link>
</seealso>
</element>
<element name="TCustomFrame.Create.AOwner">
<short>Owner of the class instance.</short>
</element>

<element name="TCustomFrame.GetControlClassDefaultSize">
<short>Gets the default dimensions for a new instance of the class.</short>
<descr>
<p>
GetControlClassDefaultSize is an overridden method in TCustomFrame, and does 
not call the inherited method. The return value is a TSize instance with the 
width and height for the new class instance in its X and Y members. The 
default dimensions in TCustomFrame are 320 pixels wide (X member) by 240 
pixels tall (Y member).
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.GetControlClassDefaultSize"/>
</seealso>
</element>
<element name="TCustomFrame.GetControlClassDefaultSize.Result">
<short>
TSize type with the width and height for the new class instance.
</short>
</element>

<element name="TCustomFrame.ParentBackground">
<short>Indicates if the control uses the background from the parent.</short>
<descr>
<p>
The write access specifier is overridden in <var>TCustomFrame</var>. It calls 
the inherited method on entry.
</p>
<p>
If the new property value is <b>True</b> and ParentColor is <b>True</b>, the 
color assigned to the <var>Parent</var> control is stored in the 
<var>Color</var> property. Otherwise, Color is set to the value 
<var>clDefault</var>. The <var>UpdateOpaque</var> method is called to adjust 
the control style flags for the control.
</p>
<p>
The default value for the property is <b>True</b>.
</p>
</descr>
<seealso>
<link id="TCustomFrame.UpdateOpaque"/>
<link id="#lcl.controls.TControl.ParentBackground">TControl.ParentBackground</link>
<link id="#lcl.controls.TControl.Color">TControl.Color</link>
<link id="#lcl.controls.TControl.Parent">TControl.Parent</link>
</seealso>
</element>

<element name="TCustomFrameClass">
<short>Class type used to create new instances of TCustomFrame.</short>
<descr/>
<seealso>
<link id="TCustomFrame"/>
</seealso>
</element>

<element name="TFrame">
<short>
Frames can be designed like Forms and used like custom controls, without much 
coding or installation in the IDE.
</short>
<descr>
<p>
<var>TFrame</var> is a <var>TCustomFrame</var> descendant which implements a 
named container for related components. Groups of controls can be place on a 
frame, and re-used in your applications.
</p>
<p>
A Frame has behavior very similar to a Form. Their unique ability is that 
they can be embedded into forms or other frames in the designer. Like forms, 
they are stored in two separate files: the code is stored in a .pas unit 
file, and the design is stored in a .lfm file.
</p>
<p>
Frames can be created and designed in the Lazarus IDE by creating a new Frame 
module, and using the unit in your application. An existing frame can be 
added using the TFrame component on the Standard tab in the Lazarus IDE; you 
will be prompted for the TFrame class to use for the component.
</p>
<p>
Frames can be created and designed in the Lazarus IDE by creating a new Frame 
module, and using the unit in your application. An existing frame can be 
added using the TFrame component on the Standard tab in the Lazarus IDE; you 
will be prompted for the TFrame class to use for the component.
</p>
<p>
Frames can also be created in code at run-time. They do not have to be 
installed in the Lazarus IDE. For example:
</p>
<code>
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    GroupBox1: TGroupBox;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
    Frame: TFrame;
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation
uses
  Unit2{TFrame1}, Unit3{TFrame2}, Unit4{TFrame3};

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  Frame := TFrame1.Create(GroupBox1);
  Frame.Parent := GroupBox1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not Assigned(Frame) then
  begin
    Frame := TFrame1.Create(GroupBox1);
    Frame.Parent := GroupBox1;
  end else if Frame is TFrame1 then begin
    Frame.Free;
    Frame := TFrame2.Create(GroupBox1);
    Frame.Parent := GroupBox1;
  end else if Frame is TFrame2 then begin
    Frame.Free;
    Frame := TFrame3.Create(GroupBox1);
    Frame.Parent := GroupBox1;
  end else begin
    FreeAndNil(Frame);
  end;
end;

end.
</code>
<p>
One drawback is that complex inheritance hierarchies for <var>TFrame</var> 
classes can be problematic; they do not propagate changes to all derived 
frames in a multi-level inheritance tree.
</p>
<p>
TFrame contains a new property which indicates the LCL (Lazarus Component 
Library) version number used in the container. An overridden constructor is 
also introduced to initialize the value in the LCLVersion property. TFrame 
sets the visibility for properties defined in ancestor classes.
</p>
</descr>
<seealso/>
</element>
<element name="TFrame.FLCLVersion"/>
<element name="TFrame.LCLVersionIsStored" link="#lcl.forms.TFrame.LCLVersion"/>
<element name="TFrame.LCLVersionIsStored.Result"/>

<element name="TFrame.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance. It 
sets the value for the LCLVersion property to the lcl_version constant 
defined in the <file>lclversion.pas</file> unit. Create calls the inherited 
constructor prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="TFrame.LCLVersion"/>
<link id="TCustomFrame.Create"/>
<link id="#lcl.lclversion.lcl_version">lcl_version</link>
</seealso>
</element>
<element name="TFrame.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>

<element name="TFrame.Align" link="#lcl.controls.TControl.Align"/>
<element name="TFrame.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TFrame.AutoScroll" link="#lcl.forms.TScrollingWinControl.AutoScroll"/>
<element name="TFrame.AutoSize" link="#lcl.controls.TControl.AutoSize"/>
<element name="TFrame.BiDiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TFrame.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TFrame.ChildSizing" link="#lcl.controls.TWinControl.ChildSizing"/>
<element name="TFrame.ClientHeight" link="#lcl.controls.TControl.ClientHeight"/>
<element name="TFrame.ClientWidth" link="#lcl.controls.TControl.ClientWidth"/>
<element name="TFrame.Color" link="#lcl.controls.TControl.Color"/>
<element name="TFrame.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TFrame.DesignTimePPI" link="#lcl.forms.TCustomDesignControl.DesignTimePPI"/>
<element name="TFrame.DockSite" link="#lcl.controls.TWinControl.DockSite"/>
<element name="TFrame.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TFrame.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TFrame.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TFrame.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TFrame.Font" link="#lcl.controls.TControl.Font"/>

<element name="TFrame.LCLVersion">
<short>
LCL version number for the frame instance.
</short>
<descr>
<p>
The value in <var>LCLVersion</var> is assigned in the Create constructor 
using the lcl_version constant defined in the <file>lclversion.pas</file> 
unit. Its value is stored during LCL component streaming if the ComponentState 
indicates the TFrame instance was instantiated at design-time 
(csDesignInstance).
</p>
</descr>
<seealso>
<link id="TFrame.LCLVersion"/>
<link id="TFrame.Create"/>
<link id="#lcl.lclversion.lcl_version">lcl_version</link>
<link id="#rtl.classes.TComponent.ComponentState">TComponent.ComponentState</link>
</seealso>
</element>

<element name="TFrame.ParentBackground" link="#lcl.forms.TCustomFrame.ParentBackground"/>
<element name="TFrame.ParentBiDiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TFrame.ParentColor" link="#lcl.controls.TControl.ParentColor"/>
<element name="TFrame.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TFrame.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TFrame.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TFrame.Scaled" link="#lcl.forms.TCustomDesignControl.Scaled"/>
<element name="TFrame.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TFrame.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TFrame.TabStop" link="#lcl.controls.TWinControl.TabStop"/>
<element name="TFrame.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TFrame.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TFrame.OnConstrainedResize" link="#lcl.controls.TControl.OnConstrainedResize"/>
<element name="TFrame.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TFrame.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element name="TFrame.OnDockDrop" link="#lcl.controls.TWinControl.OnDockDrop"/>
<element name="TFrame.OnDockOver" link="#lcl.controls.TWinControl.OnDockOver"/>
<element name="TFrame.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TFrame.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TFrame.OnEndDock" link="#lcl.controls.TControl.OnEndDock"/>
<element name="TFrame.OnEndDrag" link="#lcl.controls.TControl.OnEndDrag"/>
<element name="TFrame.OnEnter" link="#lcl.controls.TWinControl.OnEnter"/>
<element name="TFrame.OnExit" link="#lcl.controls.TWinControl.OnExit"/>
<element name="TFrame.OnGetSiteInfo" link="#lcl.controls.TWinControl.OnGetSiteInfo"/>
<element name="TFrame.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TFrame.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TFrame.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TFrame.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TFrame.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TFrame.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TFrame.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TFrame.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TFrame.OnMouseWheelHorz" link="#lcl.controls.TControl.OnMouseWheelHorz"/>
<element name="TFrame.OnMouseWheelLeft" link="#lcl.controls.TControl.OnMouseWheelLeft"/>
<element name="TFrame.OnMouseWheelRight" link="#lcl.controls.TControl.OnMouseWheelRight"/>
<element name="TFrame.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TFrame.OnStartDock" link="#lcl.controls.TControl.OnStartDock"/>
<element name="TFrame.OnStartDrag" link="#lcl.controls.TControl.OnStartDrag"/>
<element name="TFrame.OnUnDock" link="#lcl.controls.TWinControl.OnUnDock"/>

<element name="TWindowMagnetOptions">
<short>
Implements options which control magnetic window behavior in form instances.
</short>
<descr>
<p>
<var>TWindowMagnetOptions</var> is a class which implements options needed to 
control magnetic window behavior when a form is snapped to another form or to 
an edge on the screen. It introduces properties with default values which 
enable or disable the snapping behaviors for forms or the screen. It also 
includes a property to set the proximity or threshold where snapping behavior 
is engaged.
</p>
<p>
TWindowMagnetOptions is the type used to implement the SnapOptions property in 
TCustomForm and descendent classes. It is also passed as an argument to the 
SnapToMonitor and SnapToForms methods in TWindowMagnetManager.
</p>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TCustomForm.SnapOptions"/>
<link id="TWindowMagnetManager.SnapToMonitor"/>
<link id="TWindowMagnetManager.SnapToForms"/>
</seealso>
</element>

<!-- private -->
<element name="TWindowMagnetOptions.FSnapMonitor"/>
<element name="TWindowMagnetOptions.FSnapForms"/>
<element name="TWindowMagnetOptions.FSnapFormTarget"/>
<element name="TWindowMagnetOptions.FDistance"/>

<!-- public -->
<element name="TWindowMagnetOptions.Create">
<short>
Constructor for the class instance.
</short>
<descr>
<p>
Create sets the default values for properties in the class instance, including:
</p>
<ul>
<li>SnapToMonitor (False)</li>
<li>SnapToForms (False)</li>
<li>SnapFormTarget (True)</li>
<li>Distance (10 pixels)</li>
</ul>
</descr>
<seealso>
<link id="TWindowMagnetOptions.SnapToMonitor"/>
<link id="TWindowMagnetOptions.SnapToForms"/>
<link id="TWindowMagnetOptions.SnapFormTarget"/>
<link id="TWindowMagnetOptions.Distance"/>
</seealso>
</element>

<element name="TWindowMagnetOptions.AssignTo">
<short>
Implements object persistence for TWindowMagnetOptions instances.
</short>
<descr>
<p>
<var>AssignTo</var> is an overridden method in 
<var>TWindowMagnetOptions</var>. It reimplements the AssignTo method 
introduced in the TPersistent ancestor to support the TWindowMagnetOptions 
type.
</p>
<p>
If Dest is a TWindowMagnetOptions instance, properties from the current class 
are copied to Dest. The properties include:
</p>
<ul>
<li>Distance</li>
<li>SnapToMonitor</li>
<li>SnapToForms</li>
<li>SnapFormTarget</li>
</ul>
<p>
No actions are performed in the method if Dest is not derived from 
TWindowMagnetOptions. AssignTo does not call the inherited method which raises 
an EConvertError exception.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TPersistent.Assign">TPersistent.Assign</link>
</seealso>
</element>
<element name="TWindowMagnetOptions.AssignTo.Dest">
<short>
TWindowMagnetOptions instance where properties from the current instance are 
stored.
</short>
</element>

<!-- published -->
<element name="TWindowMagnetOptions.SnapToMonitor">
<short>
Enables or disables snapping a form to one of the edges on the monitor.
</short>
<descr>
<p>
<var>SnapToMonitor</var> is a <var>Boolean</var> property which determines 
whether magnetic window snapping to an edge on the monitor is enabled. The 
default value for the property is <b>False</b> and disables snapping a form to 
an edge on the monitor. When set to <b>True</b>, the magnetic window manager 
will snap the form to the monitor edge when the snapping threshold is reached.
</p>
<p>
Use Distance to specify the proximity or threshold (in pixels) where the 
snapping behavior is automatically engaged.
</p>
<p>
Use SnapToForms to control whether a form instance can be snapped to an edge 
on other forms in the application.
</p>
<p>
Use SnapFormTarget to indicate whether a form can be a snap target for other 
forms in an application.
</p>
</descr>
<seealso/>
</element>

<element name="TWindowMagnetOptions.SnapToForms">
<short>
Enables or disables snapping the current form to other forms in the 
application.
</short>
<descr/>
<seealso/>
</element>

<element name="TWindowMagnetOptions.SnapFormTarget">
<short>
Enables or disables snapping another form in the application to the form 
instance.
</short>
<descr/>
<seealso/>
</element>

<element name="TWindowMagnetOptions.Distance">
<short>
Distance from (or proximity to) a snap target where the snapping behavior is 
automatically engaged.
</short>
<descr/>
<seealso/>
</element>

<element name="TWindowMagnetManager">
<short>
Implements a manager for form and screen snapping behavior in an application.
</short>
<descr>
<p>
<var>TWindowMagnetManager</var> is a class used to manage magnetic window 
snapping behavior for windows in an application. TWindowMagnetManager is the 
type used to implement the MagnetManager property in TScreen. It provides 
properties, methods, and members needed to:
</p>
<ul>
<li>
Track the position for a window on the screen.
</li>
<li>
Adjust the window position when it reaches the snapping threshold for an edge 
on another form or the screen.
</li>
<li>
Snap a specific form to an adjusted window position.
</li>
</ul>
<p>
The Enabled property determines whether the magnetic window manager is enabled 
or disabled in the global Screen instance.
</p>
<remark>
Use  of TWindowMagnetManager depends on the LM_WINDOWPOSCHANGING message 
dispatched when the position for a form (window) is changed. In the current 
LCL release, the LM_WINDOWPOSCHANGING message is dispatched for the Windows 
platform only. None of the other widgetsets checked for or apply the message.
</remark>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso/>
</element>

<!-- private -->
<element name="TWindowMagnetManager.FEnabled"/>
<element name="TWindowMagnetManager.FActiveForm"/>
<element name="TWindowMagnetManager.FPreviousSource"/>
<element name="TWindowMagnetManager.FPreviousReturn"/>
<element name="TWindowMagnetManager.FCompositorBorders"/>

<element name="TWindowMagnetManager.SnapToSides">
<short>
Performs actions needed to resize or reposition a form to another form or an 
edge on the screen.
</short>
<descr>
<p>
Parameters passed to the method are variable arguments, and may be updated in 
the method to reflect the new position or size for the window when snapping 
behavior is applied.
</p>
<p>
On the Windows platform the Desktop Window Manager API is called to adjust the 
dimensions for the form instance using the shadow offsets returned by the 
Compositor. For other platforms (which do not lie about the size of the form  
instance), this step is not needed.
</p>
<p>
SnapToSides is used to implement the SnapToMonitor and SnapToForms methods in 
the class.
</p>
</descr>
<seealso/>
</element>
<element name="TWindowMagnetManager.SnapToSides.Result">
<short/>
</element>
<element name="TWindowMagnetManager.SnapToSides.x">
<short/>
</element>
<element name="TWindowMagnetManager.SnapToSides.cx">
<short/>
</element>
<element name="TWindowMagnetManager.SnapToSides.px">
<short/>
</element>
<element name="TWindowMagnetManager.SnapToSides.pcx">
<short/>
</element>
<element name="TWindowMagnetManager.SnapToSides.pxout">
<short/>
</element>
<element name="TWindowMagnetManager.SnapToSides.dist">
<short/>
</element>
<element name="TWindowMagnetManager.SnapToSides.leftsides">
<short/>
</element>
<element name="TWindowMagnetManager.SnapToSides.rightsides">
<short/>
</element>

<element name="TWindowMagnetManager.SnapToMonitor">
<short>
Snaps a window to an edge on the monitor.
</short>
<descr>
<p>
<var>SnapToMonitor</var> converts the window position information in WindowPos 
to a TRect instance used to locate the monitor and position on its work area. 
The SnapToSides method is called to adjust the window position when snapping 
behavior is applied for the window.
</p>
<p>
The return value is <b>True</b> if the window was successfully snapped to an 
edge on a monitor, and value(s) in WindowPos were changed.
</p>
<p>
No actions are performed in the method if SnapToMonitor is not enabled in the 
Opts argument. In this case, the return value is <b>False</b>.
</p>
</descr>
<seealso/>
</element>
<element name="TWindowMagnetManager.SnapToMonitor.Result">
<short>
Returns <b>True</b> if the form was successfully snapped to a monitor edge in 
the method. Returns <b>False</b> if SnapToMonitor is not enabled in the Opts 
parameter.
</short>
</element>
<element name="TWindowMagnetManager.SnapToMonitor.Opts">
<short>
Snapping options used in the method.
</short>
</element>
<element name="TWindowMagnetManager.SnapToMonitor.WindowPos">
<short>
Structure with the window handle, position, and flags for the form affected in 
the method. The variable parameter can be updated in the method.
</short>
</element>

<element name="TWindowMagnetManager.SnapToForms">
<short>
Snaps a form to an edge on another form in the application which is a valid 
snap target.
</short>
<descr/>
<seealso/>
</element>
<element name="TWindowMagnetManager.SnapToForms.Result">
<short/>
</element>
<element name="TWindowMagnetManager.SnapToForms.Opts">
<short/>
</element>
<element name="TWindowMagnetManager.SnapToForms.WindowPos">
<short/>
</element>

<!-- public -->
<element name="TWindowMagnetManager.Create">
<short>
Constructor for the class instance.
</short>
<descr>
<p>
<var>Create</var> is an override method which implements the virtual 
constructor for the class instance. Create initializes internal members in the 
class instance to their default values.
</p>
</descr>
<seealso/>
</element>

<element name="TWindowMagnetManager.Enabled">
<short>
Enables or disables form and/or screen snapping behavior using the manager 
class.
</short>
<descr>
<p>
<var>Enabled</var> is a <var>Boolean</var> property which indicates whether 
the magnetic window snapping behavior is enabled in the class.
</p>
<p>
When set to <b>True</b>, the following behaviors are enabled using the class:
</p>
<ul>
<li>
A dragged form can be snapped to an edge of another form.
</li>
<li>
A dragged form can be snapped to an edge on the monitor.
</li>
</ul>
<p>
When set to <b>False</b>, these behaviors are disabled.
</p>
<p>
The default value for the property is <b>True</b> and enables the snapping 
behavior in the global Screen variable.
</p>
<p>
Use the SnapOptions property in each TForm instance to define whether the form 
can be snapped to another form or an edge on the screen, or allows other forms 
to be snapped to its edges. It also controls the distance at which the 
snapping behavior is automatically engaged.
</p>
</descr>
<seealso>
<link id="TCustomForm.SnapOptions"/>
<link id="TCustomForm.WMWindowPosChanging"/>
<link id="TScreen.MagnetManager"/>
<link id="Screen"/>
<link id="TWindowMagnetOptions"/>
</seealso>
</element>

<element name="TWindowMagnetManager.SnapForm">
<short>
Snaps the specified form to the nearest snap target.
</short>
<descr>
<p>
No actions are performed in the method when the Enabled property is set to 
<b>False</b>, when the window flags indicate that the window is being shown or 
hidden, or at design-time.
</p>
<p>
SnapForm calls the GetCompositorExtendedBorder routine to determine if the 
size for the window is inaccurate for borders or shadows added by the 
compositor for the desktop window manager. Both the SnapToMonitor and 
SnapToForms methods are called to determine the return value for the method.
</p>
<p>
The return value is <b>True</b> if the window position was snapped to either 
an edge on the monitor or another form instance in the application.
</p>
<p>
SnapForm is called from the WMWindowPosChanging method when a 
LM_WINDOWPOSCHANGING message is received and handled for a form instance.
</p>
<remark>
In the current LCL release, the LM_WINDOWPOSCHANGING message is dispatched for 
the Windows platform only. None of the other widgetsets checked for or apply 
the message.
</remark>
</descr>
<seealso>
<link id="TWindowMagnetManager.Enabled"/>
<link id="TWindowMagnetManager.SnapToMonitor"/>
<link id="TWindowMagnetManager.SnapToForms"/>
</seealso>
</element>
<element name="TWindowMagnetManager.SnapForm.Result">
<short>
Returns <b>True</b> if the specified form was repositioned (or resized) due to 
snapping behavior for the form or application.
</short>
</element>
<element name="TWindowMagnetManager.SnapForm.Form">
<short>
Form instance examined and updated in the method.
</short>
</element>
<element name="TWindowMagnetManager.SnapForm.WindowPos">
<short>
Structure with the window handle and position examined and updated in the 
method.
</short>
</element>

<element name="TBorderIcon">
<short>
Represents a visual element in a window title bar; depends on window manager 
support.
</short>
<descr>
<dl>
<dt>biSystemMenu</dt>
<dd>The form has a System menu (Maybe not all windowmanager supports 
this)</dd>
<dt>biMinimize</dt>
<dd>The form has an minimize button</dd>
<dt>biMaximize</dt>
<dd>The form has a maximize button</dd>
<dt>biHelp</dt>
<dd>When you click this button a Question Cursor appears, and the help 
routines are
called if you click on an control</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="TBorderIcon.biSystemMenu">
<short>Window has a system menu.</short>
</element>
<element name="TBorderIcon.biMinimize">
<short>Window has an Minimize button.</short>
</element>
<element name="TBorderIcon.biMaximize">
<short>Window has an Maximize button.</short>
</element>
<element name="TBorderIcon.biHelp">
<short>Window has an Help button.</short>
</element>
<element name="TBorderIcons" link="#lcl.forms.TBorderIcon"/>
<element name="TDefaultMonitor">
<short>The preferred monitor for showing a form.</short>
<descr>
<p>
When a form is not assigned to a specific monitor, assume the following 
display context:
</p>
<dl>
<dt>dmDesktop</dt>
<dd>No attempt to choose specific monitor</dd>
<dt>dmPrimary</dt>
<dd>On the primary monitor</dd>
<dt>dmMainForm</dt>
<dd>
On the same monitor as the main form; if there is no main form then use
dmPrimary behavior
</dd>
<dt>dmActiveForm</dt>
<dd>
On the same monitor as the currently active form; if there is no active form
then use dmMainForm behavior
</dd>
</dl>
</descr>
</element>
<element name="TDefaultMonitor.dmDesktop">
<short>Place the form on the full desktop.</short>
</element>
<element name="TDefaultMonitor.dmPrimary">
<short>Place the form on the primary monitor.</short>
</element>
<element name="TDefaultMonitor.dmMainForm">
<short>
Place the form on the same monitor as the main form. If there is no such form 
then use the primary monitor.
</short>
</element>
<element name="TDefaultMonitor.dmActiveForm">
<short>
Place the form on the same monitor as the currently active form. If there is 
no such form then use the primary monitor.
</short>
</element>
<element name="TFormStateType">
<short>Form state flags.</short>
<descr>
<p>The form states are:</p>
<dl>
<dt>fsCreating</dt>
<dd>initializing (form streaming)</dd>
<dt>fsVisible</dt>
<dd>form should be shown</dd>
<dt>fsShowing</dt>
<dd>form handling WM_SHOWWINDOW message</dd>
<dt>fsModal</dt>
<dd>form is modal</dd>
<dt>fsCreatedMDIChild</dt>
<dd>not yet implemented</dd>
<dt>fsBorderStyleChanged</dt>
<dd>border style changed before window handle creation</dd>
<dt>fsFormStyleChanged</dt>
<dd>form style is changed before window handle creation</dd>
<dt>fsFirstShow</dt>
<dd>form is shown for the first time</dd>
<dt>fsDisableAutoSize</dt>
<dd>disable auto-size</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="TFormStateType.fsCreating">
<short>initializing (form streaming).</short>
</element>
<element name="TFormStateType.fsVisible">
<short>form should be shown.</short>
</element>
<element name="TFormStateType.fsShowing">
<short>form handling WM_SHOWWINDOW message.</short>
</element>
<element name="TFormStateType.fsModal">
<short>form is modal.</short>
</element>
<element name="TFormStateType.fsCreatedMDIChild">
<short>not yet implemented.</short>
</element>
<element name="TFormStateType.fsBorderStyleChanged">
<short>border style changed before window handle creation.</short>
</element>
<element name="TFormStateType.fsFormStyleChanged">
<short>form style is changed before window handle creation.</short>
</element>
<element name="TFormStateType.fsFirstShow">
<short>form is shown for the first time.</short>
</element>
<element name="TFormStateType.fsDisableAutoSize">
<short>disable auto-size.</short>
</element>

<element name="TFormState" link="#lcl.forms.TFormStateType">
<short>Set type used to store values from the TFormState enumeration.</short>
<descr>
<p>
TFormState is the type used to implement the FormState property in 
TCustomForm and descendent classes.
</p>
</descr>
<seealso>
<link id="TCustomForm.FormState"/>
</seealso>
</element>

<element name="TModalResult">
<short>
Dummy type for the values that can be returned as a modal result.
</short>
<descr>
<p>
Even though the type is defined as an integer, only the defined constant 
values should be used (mrOK, mrCancel, et. al.).
</p>
</descr>
<seealso>
<link id="controls.mrNone"/>
<link id="controls.mrOK"/>
<link id="controls.mrCancel"/>
<link id="controls.mrAbort"/>
<link id="controls.mrRetry"/>
<link id="controls.mrIgnore"/>
<link id="controls.mrYes"/>
<link id="controls.mrNo"/>
<link id="controls.mrAll"/>
</seealso>
</element>

<element name="PModalResult" link="#lcl.forms.TModalResult"/>

<element name="TFormHandlerType">
<short>TForm Notification handler types.</short>
<descr/>
<seealso/>
</element>
<element name="TFormHandlerType.fhtFirstShow">
<short>Notified on first form Show.</short>
</element>
<element name="TFormHandlerType.fhtClose">
<short>Notified on form Close.</short>
</element>
<element name="TFormHandlerType.fhtCreate">
<short>Notified after form Create.</short>
</element>

<element name="TShowInTaskbar">
<short>
Identifies the display preference for a form on the TaskBar.
</short>
<descr>
<p>
<var>TShowInTaskbar</var> is an enumerated type with values that indicate 
whether a form should be displayed on the task bar for the application. 
TShowInTaskbar is the type used to implement the ShowInTaskBar and 
EffectiveShowInTaskBar properties in TCustomForm.
</p>
<p>
stDefault has a special meaning. It enables use of the setting in 
Application.TaskBarBehavior to determine whether one or more icon buttons can 
be displayed for the forms in the application. The resulting value is the 
effective task bar visibility for a given form.
</p>
<p>
stDefault also indicates that widgetset features and rules for form display 
on the task bar are used.
</p>
<p>
For Windows, it causes the Parent for the form to be set to the AppHandle in 
the widgetset if the form is not the MainForm in the Application. Otherwise, 
the MainFormHandle in the Application is used.
</p>
<p>
On QT platforms, only the MainForm for the application is visible on the task 
bar (single button mode) when set to stDefault.
</p>
<p>
On GTK platforms, the SkipTaskBarHint for the GDK window is set to False for 
the value.
</p>
<p>
Some display managers, like Cinnamon, also do not allow multiple buttons to 
be displayed; only the main form for the application is visible on the task 
bar. 
</p>
<p>
The widgetset implementation may also impose restrictions based on the 
display protocol used at run-time, like X-11 or Wayland.
</p>
</descr>
<seealso>
<link id="TCustomForm.ShowInTaskBar"/>
<link id="TCustomForm.EffectiveShowInTaskBar"/>
</seealso>
</element>
<element name="TShowInTaskbar.stDefault">
<short>
Uses the default rules for the widgetset / platform to determine form 
visibility on the TaskBar.
</short>
</element>
<element name="TShowInTaskbar.stAlways">
<short>Always show the form on the TaskBar.</short>
</element>
<element name="TShowInTaskbar.stNever">
<short>Never show the form on the TaskBar.</short>
</element>

<element name="TPopupMode">
<short>
Defines the handling performed for a parent window in forms and dialogs.
</short>
<descr>
<p>
<var>TPopupMode</var> is an enumerated type with values that specify how the 
parent is determined for a form or dialog. <var>TPopupMode</var> is the type 
used for the <var>PopupMode</var> property in <var>TCustomForm</var>.
</p>
</descr>
<seealso>
<link id="TCustomForm.PopupMode"/>
<link id="TCustomForm.PopupParent"/>
<link id="TCustomForm.GetRealPopupParent"/>
</seealso>
</element>
<element name="TPopupMode.pmNone">
<short>
modal: align to active form or main form; non-modal: no window parent.
</short>
<descr>
<p>
For modal windows, the handle has to be recreated in ShowModal. If this is 
not wanted, please use explicitly pmAuto before calling ShowModal.
</p>
</descr>
</element>
<element name="TPopupMode.pmAuto">
<short>
modal and non-modal: align to active form or main form.
</short>
</element>
<element name="TPopupMode.pmExplicit">
<short>
modal and non-modal: align to PopupParent or main form.
</short>
</element>

<element name="TCloseEvent">
<short>Type used for an OnClose event handler in a form.</short>
<descr>
<p>Closing a form can have several meanings:</p>
<dl>
<dt>caNone</dt>
<dd>Do nothing (don't close).</dd>
<dt>caHide</dt>
<dd>Hide the form (default for modal forms).</dd>
<dt>caFree</dt>
<dd>Destroy the form.</dd>
<dt>caMinimize</dt>
<dd>Minimize the form (MDI child default).</dd>
</dl>
<p>The handler can set CloseAction to the desired value for the action.</p>
</descr>
<seealso/>
</element>
<element name="TCloseEvent.Sender">
<short>The form that received an Close request.</short>
</element>
<element name="TCloseEvent.CloseAction">
<short>Set this to caNone, to prevent the form from closing.</short>
</element>

<element name="TCloseQueryEvent">
<short>Specifies an OnCloseQuery handler event handler.</short>
<descr>
<p>
<var>TCloseQueryEvent</var> is an object procedure type which specifies the 
event handler signalled to determine if a form can be closed.
</p>
<p>
TCloseQueryEvent is the type used to implement the <var>OnCloseQuery</var> 
property in <var>TCustomForm</var>. An application must implement an object 
procedure using the signature for the event handler to allow responding to 
the notification.
</p>
</descr>
<seealso>
<link id="TCustomForm.OnCloseQuery"/>
</seealso>
</element>
<element name="TCloseQueryEvent.Sender">
<short>The form that received an Close request.</short>
</element>
<element name="TCloseQueryEvent.CanClose">
<short>Set to <b>False</b> to deny closing.</short>
</element>

<element name="TDropFilesEvent">
<short>Type used for an OnDropFiles event handler.</short>
<descr>
<p>
<var>TDropFilesEvent</var> is an object procedure which specifies an event 
handler triggered when files are dropped on a drag and drop-enabled control.
</p>
<p>
<var>TDropFilesEvent</var> is the type used to implement the 
<var>OnDropFiles</var> property in <var>TCustomForm</var> and 
<var>TApplication</var>. Applications must implement a procedure using the 
signature for the event handler, and assign it to the property.
</p>
</descr>
<seealso>
<link id="TCustomForm.OnDropFiles"/>
<link id="TApplication.OnDropFiles"/>
<link id="TApplicationProperties.OnDropFiles"/>
</seealso>
</element>
<element name="TDropFilesEvent.Sender">
<short>
The object (TCustomForm) for the dropped files notification.
</short>
</element>
<element name="TDropFilesEvent.FileNames">
<short>
Array with the list of file names for the drop event.
</short>
</element>

<element name="THelpEvent">
<short>Type used for an OnHelp event handler.</short>
<descr>
<p>
<var>THelpEvent</var> is an object function which specifies an event handler 
signalled when Help is requested in an application or form. 
<var>THelpEvent</var> is the type used to implement the <var>OnHelp</var> 
event handler in <var>TCustomForm</var> and <var>TApplication</var>. 
Applications must implement a function using the signature for the event 
handler, and assign it to the property.
</p>
</descr>
<seealso>
<link id="TCustomForm.OnHelp"/>
<link id="TApplication.OnHelp"/>
<link id="TApplicationProperties.OnHelp"/>
</seealso>
</element>
<element name="THelpEvent.Result">
<short>
Indicates if the help request is satisfied by the event handler; <b>False</b> 
causes the default help handler for the application to be used.
</short>
</element>
<element name="THelpEvent.Command">
<short>
Help command type requested; either HELP_CONTEXT or HELP_COMMAND.
</short>
</element>
<element name="THelpEvent.Data">
<short>Context data for the help request.</short>
</element>
<element name="THelpEvent.CallHelp">
<short><b>False</b> suppresses help display.</short>
</element>

<element name="TShortCutEvent">
<short>Type used for an OnShortcut event handler.</short>
<descr>
<p>
A shortcut handler is invoked when a key is pressed, before any other 
processing. It can interpret the key as an shortcut and act accordingly. In 
this case, <var>Handled</var> should be set to <b>True</b> to prevent further 
processing of the key.
</p>
</descr>
<seealso/>
</element>
<element name="TShortCutEvent.Msg">
<short>The key event message.</short>
</element>
<element name="TShortCutEvent.Handled">
<short>
Set Handled to <b>True</b> to prevent further processing of the key.
</short>
</element>

<element name="TModalDialogFinished">
<short>
Specifies an event handler signalled when a modal message dialog is completed.
</short>
<descr>
<p>
<var>TModalDialogFinished</var> is an object procedure which specifies an 
event handler signalled when a modal message dialog is completed. The 
<var>AResult</var> argument contains the modal result constant returned from 
the message dialog.
</p>
<p>
<var>TModalDialogFinished</var> is the type used to implement the 
<var>TCustomForm.OnShowModalFinished</var> and 
<var>TApplication.OnMessageDialogFinished</var> properties.
</p>
</descr>
<seealso>
<link id="TCustomForm.OnShowModalFinished"/>
<link id="TApplication.OnMessageDialogFinished"/>
<link id="TModalResult"/>
</seealso>
</element>
<element name="TModalDialogFinished.Sender">
<short>TObject instance for the event notification.</short>
</element>
<element name="TModalDialogFinished.AResult">
<short>Modal result value from the dialog.</short>
</element>

<element name="TCustomForm">
<short>The base type for <var>TForm</var> classes.</short>
<descr>
<p>
<var>TCustomForm</var> is a <var>TCustomDesignControl</var> descendant that 
implements the base type for <var>TForm</var> classes.
</p>
<p>
Forms represent a window or a dialog used as the user interface for a GUI 
application. It is a container where visual components (such as buttons, 
labels, edit fields, images, etc.) can be placed. It is also a designer 
surface which provides design-time support for configuration and layout of 
the content placed on the form.
</p>
<p>
<var>TCustomForm</var> acts an abstraction layer which masks 
implementation-specific routines required for the various widgetsets 
supported in the Lazarus Component Library (<b>LCL</b>). Methods and 
properties are provided which interact with the underlying Operating System 
or platform, and provide a common API for form-related operations.
</p>
</descr>
<seealso>
<link id="TForm"/>
<link id="TCustomDesignControl"/>
</seealso>
</element>

<element name="TCustomForm.FActive" link="#lcl.forms.TCustomForm.Active"/>
<element name="TCustomForm.FActiveControl" link="#lcl.forms.TCustomForm.ActiveControl"/>
<element name="TCustomForm.FActiveDefaultControl" link="#lcl.forms.TCustomForm.ActiveDefaultControl"/>
<element name="TCustomForm.FAllowDropFiles" link="#lcl.forms.TCustomForm.AllowDropFiles"/>
<element name="TCustomForm.FAlphaBlend" link="#lcl.forms.TCustomForm.AlphaBlend"/>
<element name="TCustomForm.FAlphaBlendValue" link="#lcl.forms.TCustomForm.AlphaBlendValue"/>
<element name="TCustomForm.FBorderIcons" link="#lcl.forms.TCustomForm.BorderIcons"/>
<element name="TCustomForm.FDefaultControl" link="#lcl.forms.TCustomForm.DefaultControl"/>
<element name="TCustomForm.FCancelControl" link="#lcl.forms.TCustomForm.CancelControl"/>
<element name="TCustomForm.FDefaultMonitor" link="#lcl.forms.TCustomForm.DefaultMonitor"/>
<element name="TCustomForm.FDesigner" link="#lcl.forms.TCustomForm.Designer"/>
<element name="TCustomForm.FFormStyle" link="#lcl.forms.TCustomForm.FormStyle"/>
<element name="TCustomForm.FFormUpdateCount" link="#lcl.forms.TCustomForm.FormIsUpdating"/>
<element name="TCustomForm.FFormHandlers">
<short>Lists of installed Form notification handlers.</short>
</element>
<element name="TCustomForm.FHelpFile" link="#lcl.forms.TCustomForm.HelpFile"/>
<element name="TCustomForm.FIcon" link="#lcl.forms.TCustomForm.Icon"/>
<element name="TCustomForm.FOnShowModalFinished" link="#lcl.forms.TCustomForm.OnShowModalFinished"/>
<element name="TCustomForm.FPopupMode" link="#lcl.forms.TCustomForm.PopupMode"/>
<element name="TCustomForm.FPopupParent" link="#lcl.forms.TCustomForm.PopupParent"/>
<element name="TCustomForm.FSmallIconHandle" link="#lcl.forms.TCustomForm.SmallIconHandle"/>
<element name="TCustomForm.FBigIconHandle" link="#lcl.forms.TCustomForm.BigIconHandle"/>
<element name="TCustomForm.FKeyPreview" link="#lcl.forms.TCustomForm.KeyPreview"/>
<element name="TCustomForm.FMenu" link="#lcl.forms.TCustomForm.Menu"/>
<element name="TCustomForm.FModalResult" link="#lcl.forms.TCustomForm.ModalResult"/>
<element name="TCustomForm.FLastFocusedControl" link="#lcl.forms.TCustomForm.SetLastFocusedControl">
<short>Used to track Focus changes (Enter/Exit events).</short>
</element>
<element name="TCustomForm.FOldBorderStyle" link="#lcl.forms.TCustomForm.DoDock"/>
<element name="TCustomForm.FOnActivate" link="#lcl.forms.TCustomForm.OnActivate"/>
<element name="TCustomForm.FOnClose" link="#lcl.forms.TCustomForm.OnClose"/>
<element name="TCustomForm.FOnCloseQuery" link="#lcl.forms.TCustomForm.OnCloseQuery"/>
<element name="TCustomForm.FOnCreate" link="#lcl.forms.TCustomForm.OnCreate"/>
<element name="TCustomForm.FOnDeactivate" link="#lcl.forms.TCustomForm.OnDeactivate"/>
<element name="TCustomForm.FOnDestroy" link="#lcl.forms.TCustomForm.OnDestroy"/>
<element name="TCustomForm.FOnDropFiles" link="#lcl.forms.TCustomForm.OnDropFiles"/>
<element name="TCustomForm.FOnHelp" link="#lcl.forms.TCustomForm.OnHelp"/>
<element name="TCustomForm.FOnHide" link="#lcl.forms.TCustomForm.OnHide"/>
<element name="TCustomForm.FOnShortcut" link="#lcl.forms.TCustomForm.OnShortcut"/>
<element name="TCustomForm.FOnShow" link="#lcl.forms.TCustomForm.OnShow"/>
<element name="TCustomForm.FOnWindowStateChange" link="#lcl.forms.TCustomForm.OnWindowStateChange"/>
<element name="TCustomForm.FPosition" link="#lcl.forms.TCustomForm.Position"/>
<element name="TCustomForm.FRestoredLeft" link="#lcl.forms.TCustomForm.RestoredLeft"/>
<element name="TCustomForm.FRestoredTop" link="#lcl.forms.TCustomForm.RestoredTop"/>
<element name="TCustomForm.FRestoredWidth" link="#lcl.forms.TCustomForm.RestoredWidth"/>
<element name="TCustomForm.FRestoredHeight" link="#lcl.forms.TCustomForm.RestoredHeight"/>
<element name="TCustomForm.FShowInTaskbar" link="#lcl.forms.TCustomForm.ShowInTaskBar"/>
<element name="TCustomForm.FWindowState" link="#lcl.forms.TCustomForm.WindowState"/>
<element name="TCustomForm.FDelayedEventCtr"/>
<element name="TCustomForm.FDelayedOnChangeBounds"/>
<element name="TCustomForm.FDelayedOnResize"/>
<element name="TCustomForm.FIsFirstOnShow"/>
<element name="TCustomForm.FSnapOptions"/>

<element name="TCustomForm.GetClientHandle" link="#lcl.forms.TCustomForm.ClientHandle"/>
<element name="TCustomForm.GetClientHandle.Result"/>

<!-- private -->
<element name="TCustomForm.GetEffectiveShowInTaskBar">
<short>
Gets the value for the EffectiveShowInTaskBar property.
</short>
<descr/>
<seealso/>
</element>
<element name="TCustomForm.GetEffectiveShowInTaskBar.Result">
<short>Value for the EffectiveShowInTaskBar property.</short>
</element>

<element name="TCustomForm.GetMonitor">
<short>Gets the value for the Monitor property.</short>
<seealso>
<link id="TCustomForm.Monitor"/>
</seealso>
</element>
<element name="TCustomForm.GetMonitor.Result">
<short>Value for the property.</short>
</element>

<element name="TCustomForm.IsAutoScrollStored" link="#lcl.forms.TCustomForm.AutoScroll"/>
<element name="TCustomForm.IsAutoScrollStored.Result"/>

<element name="TCustomForm.IsForm">
<short>
Indicates whether Form properties should be stored in the stream.
</short>
<descr>
<p>
<var>IsForm</var> is used as the storage specifier for selected properties in 
the class instance. Always returns <b>True</b> in <var>TCustomForm</var>.
</p>
</descr>
<seealso>
<link id="TCustomForm.Caption"/>
<link id="TCustomForm.OnClose"/>
<link id="TCustomForm.OnCloseQuery"/>
<link id="TCustomForm.OnResize"/>
<link id="TCustomForm.IsIconStored"/>
<link id="TCustomForm.IsAutoScrollStored"/>
</seealso>
</element>
<element name="TCustomForm.IsForm.Result">
<short>
<b>True</b> when the value for the various properties should be included in 
the LCL streaming mechanism.
</short>
</element>

<element name="TCustomForm.IsIconStored" link="#lcl.forms.TCustomForm.Icon"/>
<element name="TCustomForm.IsIconStored.Result"/>

<element name="TCustomForm.CloseModal">
<short>Closes a modal form.</short>
<descr>
<p>
<var>CloseModal</var> is a procedure which attempts to close a form that has 
been displayed by calling the <var>ShowModal</var> method.
</p>
<p>
CloseModal calls <var>CloseQuery</var> to determine the action performed in 
the method. When CloseQuery returns <b>True</b>, the close action is set to 
<var>caHide</var> and the <var>OnClose</var> event handler is signalled when 
assigned. Form handlers are notified of the close action.
</p>
<p>
When CloseQuery is <b>False</b>, the close action is used to determine how 
the request is handled. If the CloseAction is <var>caNone</var>, the value in 
<var>ModalResult</var> is set to <b>0</b> (<b>zero</b>). If the CloseAction 
is <var>caFree</var>, the <var>Release</var> method is called to allow the 
<var>Application</var> to free the form component.
</p>
<p>
If an exception occurs in the method, the value in <var>ModalResult</var> is 
set to <b>0</b> (<b>zero</b>) and the <var>Application.HandleException</var> 
method is called.
</p>
<remark>
<var>CloseModal</var> does not forward the action to the widgetset class; 
that is performed in the <var>ShowModal</var> method to ensure it is executed 
in the widgetset class.
</remark>
</descr>
<seealso>
<link id="TCustomForm.CloseQuery"/>
<link id="TCustomForm.OnClose"/>
<link id="TCustomForm.ModalResult"/>
<link id="TCustomForm.Release"/>
<link id="TCustomForm.AddHandlerClose"/>
<link id="TApplication.HandleException"/>
<link id="TCloseAction"/>
</seealso>
</element>

<element name="TCustomForm.FreeIconHandles">
<short>Destroys the form icons.</short>
<descr/>
<seealso/>
</element>

<element name="TCustomForm.IconChanged">
<short>
Resets icon handle(s) for the form when CMIconChanged is called for the class 
instance.
</short>
<descr>
<p>
<var>IconChanged</var> is a method used to to perform actions needed when the 
CMIconChanged method is executed to handle a CM_ICONCHANGED message for the 
form. It is assigned in the CreateNew constructor as the OnChange event handler 
for the Icon property in the class instance.
</p>
<p>
IconChanged recreates handles for icons used on the form instance. If the 
handle for the form instance has been allocated, values in SmallIconHandle and 
BigIconHandle are reset to the unassigned handle value (0). IconChanged calls 
SetIcon in the widgetset class to send modified values to the widget. If the 
form is the MainForm for the Application, or the form has a BorderStyle 
<b>other than</b> bsDialog or bsNone, the values in SmallIconHandle and 
BigIconHandle are sent to the widget. For form instances with a different value 
in BorderStyle, the unassigned handle value (0) is used for both icon handles.
</p>
<p>
Changing the value in BorderStyle or Icon at run-time causes IconChanged to be 
performed for the form instance.
</p>
</descr>
<seealso>
<link id="TCustomForm.SmallIconHandle"/>
<link id="TCustomForm.BigIconHandle"/>
<link id="TCustomForm.Icon"/>
<link id="TCustomForm.BorderStyle"/>
<link id="TCustomForm.CreateNew"/>
<link id="TApplication.MainForm"/>
<link id="Application"/>
<link id="#lcl.graphics.TIcon.OnChange">TIcon.OnChange</link>
<link id="#lcl.controls.TWinControl.HandleAllocated">TWinControl.HandleAllocated</link>
</seealso>
</element>
<element name="TCustomForm.IconChanged.Sender">
<short>
Object instance (TCustomForm) for the change notification.
</short>
</element>

<element name="TCustomForm.DelayedEvent">
<short>
Performs actions needed for delayed window move, resize, show, and activate 
messages.
</short>
<descr>
<p>
<var>DelayedEvent</var> is a mechanism used to reduce the number of move, 
resize, show, and activate messages that occur for forms and their child 
controls.
</p>
<p>
<var>DelayedEvent</var> discards duplicate calls to the method; only the most 
recent message is processed. It is executed using the 
<var>QueueAsyncCall</var> method in <var>TApplication</var>. DelayedEvent 
decrements an internal counter used to track the number of pending delayed 
event messages. When the counter reaches zero (0), the message is applied.
</p>
<p>
When <var>WindowState</var> is changed to <var>wsNormal</var>, the window 
origin and size is saved internally for use when the bounds or size is 
restored.
</p>
<p>
When handling delayed <var>OnChangeBounds</var> and <var>OnChangeBounds</var> 
messages, methods like <var>DoOnShow</var> and/or <var>Activate</var> are 
called when the form is <var>Visible</var>. If the form has not already been 
displayed and activated, the DoOnResize or the DoOnChangeBounds method is 
called for the corresponding delayed message. The internal flags for the 
delayed events are reset prior to exit.
</p>
</descr>
<version>
Modified in LCL 2.2.6 to check form visibility before showing or activating 
the form.
</version>
<seealso>
<link id="TApplication.QueueAsyncCall"/>
<link id="TCustomForm.WindowState"/>
<link id="TCustomForm.WMSize"/>
<link id="TCustomForm.Activate"/>
<link id="TCustomForm.DoShow"/>
<link id="TScrollingWinControl.DoOnResize"/>
<link id="TControl.DoOnChangeBounds"/>
</seealso>
</element>
<element name="TCustomForm.DelayedEvent.Data">
<short>
An integer pointer to the data for the event; not used in the current 
implementation.
</short>
</element>

<element name="TCustomForm.SetActive" link="#lcl.forms.TCustomForm.Active"/>
<element name="TCustomForm.SetActive.AValue"/>

<element name="TCustomForm.SetActiveControl" link="#lcl.forms.TCustomForm.ActiveControl"/>
<element name="TCustomForm.SetActiveControl.AWinControl"/>

<element name="TCustomForm.SetActiveDefaultControl" link="#lcl.forms.TCustomForm.ActiveDefaultControl"/>
<element name="TCustomForm.SetActiveDefaultControl.AControl"/>

<element name="TCustomForm.SetAllowDropFiles" link="#lcl.forms.TCustomForm.AllowDropFiles"/>
<element name="TCustomForm.SetAllowDropFiles.AValue"/>

<element name="TCustomForm.SetAlphaBlend" link="#lcl.forms.TCustomForm.AlphaBlend"/>
<element name="TCustomForm.SetAlphaBlend.AValue"/>

<element name="TCustomForm.SetAlphaBlendValue" link="#lcl.forms.TCustomForm.AlphaBlendValue"/>
<element name="TCustomForm.SetAlphaBlendValue.AValue"/>

<element name="TCustomForm.SetBorderIcons" link="#lcl.forms.TCustomForm.BorderIcons"/>
<element name="TCustomForm.SetBorderIcons.NewIcons"/>

<element name="TCustomForm.SetFormBorderStyle" link="#lcl.forms.TCustomForm.BorderStyle"/>
<element name="TCustomForm.SetFormBorderStyle.NewStyle"/>

<element name="TCustomForm.SetCancelControl" link="#lcl.forms.TCustomForm.CancelControl"/>
<element name="TCustomForm.SetCancelControl.NewControl"/>

<element name="TCustomForm.SetDefaultControl" link="#lcl.forms.TCustomForm.DefaultControl"/>
<element name="TCustomForm.SetDefaultControl.NewControl"/>

<element name="TCustomForm.SetFormStyle" link="#lcl.forms.TCustomForm.FormStyle"/>
<element name="TCustomForm.SetFormStyle.Value"/>

<element name="TCustomForm.SetIcon" link="#lcl.forms.TCustomForm.Icon"/>
<element name="TCustomForm.SetIcon.AValue"/>

<element name="TCustomForm.SetMenu" link="#lcl.forms.TCustomForm.Menu"/>
<element name="TCustomForm.SetMenu.Value"/>

<element name="TCustomForm.SetModalResult" link="#lcl.forms.TCustomForm.ModalResult"/>
<element name="TCustomForm.SetModalResult.AValue"/>

<element name="TCustomForm.SetPopupMode" link="#lcl.forms.TCustomForm.PopupMode"/>
<element name="TCustomForm.SetPopupMode.AValue"/>

<element name="TCustomForm.SetPopupParent" link="#lcl.forms.TCustomForm.PopupParent"/>
<element name="TCustomForm.SetPopupParent.AValue"/>

<element name="TCustomForm.SetPosition" link="#lcl.forms.TCustomForm.Position"/>
<element name="TCustomForm.SetPosition.Value"/>

<element name="TCustomForm.SetShowInTaskbar" link="#lcl.forms.TCustomForm.ShowInTaskBar"/>
<element name="TCustomForm.SetShowInTaskbar.Value"/>

<element name="TCustomForm.SetLastFocusedControl">
<short>Remembers the last focused control.</short>
<descr/>
<seealso>
<link id="TCustomForm.SetFocusedControl"/>
</seealso>
</element>
<element name="TCustomForm.SetLastFocusedControl.AControl">
<short>
Control to store as the last focused control in the form instance, or 
<b>Nil</b> if the control has been freed.
</short>
</element>

<element name="TCustomForm.SetWindowFocus">
<short>Called when the Focus changed.</short>
<descr>
<p>
<var>SetWindowFocus</var> is a procedure used to ensure that the active 
control in the form instance has the input focus when the forms receives 
focus. At run-time, the control in <var>ActiveControl</var> (when assigned) 
is used as the active control. At design-time, the active control is the 
design surface for the current form instance.
</p>
<p>
No actions are performed in the method when a handle has not been allocated 
for the active control, or the control cannot be focused.
</p>
<p>
SetWindowFocus calls the <var>SetFocus</var> routine in <file>LCLIntf</file> 
to change the focus to the handle for the active control, and when successful 
calls the <var>Perform</var> method in the control to post the 
<b>CM_UIACTIVATE</b> control message.
</p>
<p>
SetWindowFocus is used in the implementation of the <var>SetFocus</var> and 
SetActive methods.
</p>
</descr>
<seealso>
<link id="TCustomForm.SetFocus"/>
<link id="TCustomForm.WMActivate"/>
<link id="TCustomForm.ActiveControl"/>
<link id="TCustomForm.Active"/>
</seealso>
</element>

<element name="TCustomForm.SetWindowState">
<short>Sets the value for the WindowState property.</short>
<descr>
<p>
<var>SetWindowState</var> sets the value for the <var>WindowState</var> 
property. Calls the <var>ShowWindow</var> routine at run-time when 
<var>Showing</var> is set to <b>True</b>.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.SetWindowState.Value">
<short>New value for the property.</short>
</element>

<element name="TCustomForm.AddHandler">
<short>
Adds a form notification handler with the specified type and code.
</short>
<descr>
<p>
<var>AddHandler</var> is a procedure used to add a form notification handler 
to the list of handlers in the form instance.
</p>
<p>
<var>HandlerType</var> is a <var>TFormHandlerType</var> enumeration value 
that defines the situation(s) where the form handler can be executed. See 
<link id="TFormHandlerType">TFormHandlerType</link> for more information 
about values in the enumeration.
</p>
<p>
<var>Handler</var> is a <var>TMethod</var> record with pointers to the code 
and optional data executed when the handler is invoked.
</p>
<p>
<var>AsFirst</var> indicates if the handler should be inserted as the initial 
handler in the method list (when <b>True</b>), or appended to the end of the 
list (when <b>False</b>).
</p>
<p>
AddHandler calls <var>RaiseGDBException</var> to raise an exception when the 
pointer to the Code in Handler has not been assigned.
</p>
<p>
AddHandler ensures that a <var>TMethodList</var> exists for handlers using 
the value in HandlerType, and calls the <var>Add</var> method in the 
<var>TMethodList</var> to store the Handler at the position needed for 
AsFirst.
</p>
<p>
AddHandler is called from the implementation of more specialized methods like 
<var>AddHandlerClose</var>, <var>AddHandlerCreate</var>, and 
<var>AddHandlerFirstShow</var>.
</p>
</descr>
<errors>
<p>
Raises a catchable exception if the Code property has not been assigned for 
the TMethod instance in Handler. Raised with the message 
'TCustomForm.AddHandler'.
</p>
</errors>
<seealso>
<link id="TCustomForm.AddHandlerClose"/>
<link id="TCustomForm.AddHandlerCreate"/>
<link id="TCustomForm.AddHandlerFirstShow"/>
<link id="TFormHandlerType"/>
<link id="#lazutils.lazmethodlist.TMethodList">TMethodList</link>
<link id="#rtl.classes.TMethod">TMethod</link>
</seealso>
</element>
<element name="TCustomForm.AddHandler.HandlerType">
<short>Form handler type added in the method.</short>
</element>
<element name="TCustomForm.AddHandler.Handler">
<short>Code to execute for the form handler.</short>
</element>
<element name="TCustomForm.AddHandler.AsFirst">
<short>
<b>True</b> if the new form handler is stored first in the list of handlers.
</short>
</element>

<element name="TCustomForm.RemoveHandler">
<short>Removes a form notification handler of the specified type.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomForm.RemoveHandler.HandlerType">
<short>
Form handler type for the routine removed in the method.
</short>
</element>
<element name="TCustomForm.RemoveHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TCustomForm.FindDefaultForActiveControl"/>
<element name="TCustomForm.FindDefaultForActiveControl.Result"/>

<element name="TCustomForm.UpdateMenu">
<short>Called when the main menu has been changed.</short>
<descr>
<p>
Ensures that handles for the <var>Menu</var> are valid for the form display 
style. The Menu is not displayed at run-time for a modal dialog form 
(<var>BorderStyle</var> is set to <var>bsDialog</var>); in this case, the 
<var>DestroyHandle</var> method in Menu is called to free the 
<var>Handle</var> for the Menu. (This is Delphi compatible).
</p>
<p>
The <var>WindowHandle</var> for the Menu is set to the Handle property from 
the form instance.
</p>
<p>
No actions are performed in the method if the Handle has not been allocated, 
or when Menu has not been assigned for the form.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomForm.UpdateShowInTaskBar">
<short>
Updates the widgetset class with the effective form visibility in the task 
bar.
</short>
<descr>
<p>
Uses values in ShowInTaskBar and the TaskBarBehavior setting in Application 
to determine the effective visibility for the form in the task bar. Calls the 
SetShowInTaskbar method in the widgetset class to update the effective form 
visibility.
</p>
<p>
No actions are performed in the method for the following conditions:
</p>
<ul>
<li>
When the form instance is the MainForm for the Application (it is handled by 
the application).
</li>
<li>
When the handle has not been allocated for the form instance.
</li>
<li>
When the form has a Parent control, or has been configured as a MDI Child 
form (FormStyle is fsMDIChild).
</li>
<li>
The form has not been made visible (Showing is <b>False</b>).
</li>
</ul>
</descr>
<seealso/>
</element>

<element name="TCustomForm.GetScreenSnap">
<short>
Gets the value for the ScreenSnap property.
</short>
<descr/>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TCustomForm.ScreenSnap"/>
</seealso>
</element>
<element name="TCustomForm.GetScreenSnap.Result">
<short>
Value for the ScreenSnap property.
</short>
</element>

<element name="TCustomForm.SetScreenSnap">
<short>
Sets the value for the ScreenSnap property.
</short>
<descr/>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TCustomForm.ScreenSnap"/>
</seealso>
</element>
<element name="TCustomForm.SetScreenSnap.AValue">
<short>
New value for the ScreenSnap property.
</short>
</element>

<element name="TCustomForm.GetSnapBuffer">
<short>
Gets the value for the SnapBuffer property.
</short>
<descr/>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TCustomForm.SnapBuffer"/>
</seealso>
</element>
<element name="TCustomForm.GetSnapBuffer.Result">
<short>
Value for the SnapBuffer property.
</short>
</element>

<element name="TCustomForm.SetSnapBuffer">
<short>
Sets the value for the SnapBuffer property.
</short>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TCustomForm.SnapBuffer"/>
</seealso>
</element>
<element name="TCustomForm.SetSnapBuffer.AValue">
<short>
New value for the SnapBuffer property.
</short>
</element>

<element name="TCustomForm.SetSnapOptions">
<short>
Sets the value for the SnapOptions property.
</short>
<descr/>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TCustomForm.SnapOptions"/>
</seealso>
</element>
<element name="TCustomForm.SetSnapOptions.AValue">
<short>
New value for the SnapOptions property.
</short>
</element>

<element name="TCustomForm.WMActivate">
<short>
Handles the LM_ACTIVATE message which activates or deactivates the form.
</short>
<descr>
<p>
Calls SetActive to update the value in the Active property to reflect the 
value for the Active member in Message.
</p>
<p>
When the form is being de-activated, the Deactivate method in Application is 
called. Otherwise, the Activate method in Application is called. The 
UpdateShowInTaskBar method is called ShowInTaskBar to determine the effective 
visibility for the form in the task bar.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.WMActivate.Message">
<short>Control message examined in the method.</short>
</element>

<element name="TCustomForm.WMCloseQuery">
<short>Handles the LM_CLOSEQUERY message used to close the window.</short>
<descr>
<p>
Calls the Close method to process and apply the ModalResult and CloseAction 
for the form. Sets the Result member in Message to 0 (zero) to indicate that 
WndProc should ignore the message; it has been handled in this method (and 
Close).
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.WMCloseQuery.message">
<short>Control message examined in the method.</short>
</element>

<element name="TCustomForm.WMHelp">
<short>Handles the LM_HELP window message for the form.</short>
<descr>
<p>
No actions are performed in the method at design-time, or when values have 
not been assigned to the HelpInfo member in Message.
</p>
<p>
When HelpInfo has a HELPINFO_WINDOW context type, FindControl is called to 
locate and display the help for the control with the item handle in Message. 
When HELPINFO_MENUITEM is the context type, GetHelpContext in Menu is called 
to locate the control ID in Message. If not found, the item handle in Message 
is used. As a default, the value in the Context property is used to display 
the context help.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.WMHelp.Message">
<short>Message examined in the method.</short>
</element>

<element name="TCustomForm.WMShowWindow">
<short>Handles the LM_SHOWWINDOW window message for the form.</short>
<descr>
<p>
No actions are performed in the method when the form has already been made 
visible (FormState contains the value fsShowing).
</p>
<p>
Updates FormState to include the value fsShowing. Calls DoShowWindow to focus 
a control on the form (when needed). Removes fsShowing from FormState prior 
to exiting from the method.
</p>
<p>
Re-implements the method from the ancestor class; does not call the inherited 
method.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.WMShowWindow.message">
<short>Message examined in the method.</short>
</element>

<element name="TCustomForm.WMSize">
<short>Handles the LM_SIZE window message for the form.</short>
<descr>
<p>
Re-implements the method from the ancestor class.
</p>
<p>
Ensures that auto-sizing is disabled for a size message for a top-level form 
(where <var>Parent</var> is not assigned) or from the LCL interface. This is 
done by including the value <var>fsDisableAutoSize</var> in the 
<var>FormState</var> property.
</p>
<p>
Calls the inherited method to apply the width, height, and window state 
values in <var>Message</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.WMSize.message">
<short>Message examined in the method.</short>
</element>


<element name="TCustomForm.WMWindowPosChanging">
<short>
Notifies the magnetic window manager when the position for a form is being 
updated.
</short>
<descr>
<p>
<var>WMWindowPosChanging</var> is a method used to notify the MagnetManager in 
TScreen when the position for the window in Message is being updated. The 
SnapForm method in the TWindowMagnetManager instance is called to update the 
Form instance with the window position in Message. The SnapForm method may 
update the window position if it is within the distance where snapping 
behavior is engaged for the form.
</p>
<p>
Use the SnapOptions property to specify which snapping behaviors are enabled 
for the form, and the distance at which the snapping behavior is engaged. You 
can also use the SnapBuffer and ScreenSnap properties to maintain Delphi VCL 
code compatibility.
</p>
<remark>
In the current LCL release, the LM_WINDOWPOSCHANGING message is dispatched for 
the Windows platform only. None of the other widgetsets check for or apply the 
message.
</remark>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TCustomForm.SnapOptions"/>
<link id="TCustomForm.SnapBuffer"/>
<link id="TCustomForm.ScreenSnap"/>
<link id="TWindowMagnetManager.SnapForm"/>
<link id="TScreen.MagnetManager"/>
<link id="Screen"/>
</seealso>
</element>
<element name="TCustomForm.WMWindowPosChanging.Message">
<short/>
</element>

<element name="TCustomForm.WMWindowPosChanged">
<short>Handles the LM_WINDOWPOSCHANGED window message for the form.</short>
<descr>
<p>
Re-implements the method from the ancestor class.
</p>
<p>
Ensures that auto-sizing is disabled for a position message to a top-level 
form (where <var>Parent</var> is not assigned), or from the LCL interface 
when new height or width values are provided. This is done by including the 
value <var>fsDisableAutoSize</var> in the <var>FormState</var> property.
</p>
<p>
Calls the inherited method prior to exit to apply the position and bounds for 
the form.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.WMWindowPosChanged.Message">
<short>Message examined in the method.</short>
</element>

<element name="TCustomForm.CMBiDiModeChanged">
<short>Handles the CM_BIDIMODECHANGED control message for the form.</short>
<descr>
<p>
Re-implements the method from the ancestor class. Calls the inherited method 
on entry using the value in Message to set the BiDiMode and adjust the size 
for the control.
</p>
<p>
Ensures that all components owned by the form are notified of the change to 
the BiDiMode property. This is needed for menus on the form. A TLMessage 
instance is constructed with the CM_PARENTBIDIMODECHANGED message and 
dispatched to all of the Components on the form not derived from TWinControl. 
TWinControl handles the notification for its descendants. Alignment is 
temporarily disabled during the process, and re-enabled prior to exiting from 
the method.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.CMBiDiModeChanged.Message">
<short>Control message examined in the method.</short>
</element>

<element name="TCustomForm.CMParentBiDiModeChanged">
<short>
Handles the CM_PARENTBIDIMODECHANGED control message for the form.
</short>
<descr>
<p>
Sets the BidiMode property to the value in Parent when ParentBiDiMode is 
<b>True</b> and Parent has been assigned. When Parent has not been assigned, 
the BiDiMode property in Application is copied to the form instance.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.CMParentBiDiModeChanged.Message">
<short>Control message examined in the method.</short>
</element>

<element name="TCustomForm.CMAppShowBtnGlyphChanged">
<short>
Handles the CM_APPSHOWBTNGLYPHCHANGED control message for the form.
</short>
<descr>
<p>
Ensures that controls with a Glyph are notified when a change has occurred to 
a button glyph. Calls NotifyControls to broadcast Message to all Controls on 
the form.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.CMAppShowBtnGlyphChanged.Message">
<short>Control message examined in the method.</short>
</element>

<element name="TCustomForm.CMAppShowMenuGlyphChanged">
<short>
Handles the CM_APPSHOWMENUGLYPHCHANGED control message for the form.
</short>
<descr>
<p>
Ensures that menus and menus items are notified of a change to a Glyph. 
Dispatches the value in Message to all Components on the form.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.CMAppShowMenuGlyphChanged.Message">
<short>Control message examined in the method.</short>
</element>

<element name="TCustomForm.CMIconChanged">
<short>
Handles the CM_ICONCHANGED control message for the form.
</short>
<descr>
<p>
CMIconChanged is a method used to perform actions needed when the 
CM_ICONCHANGED control message is handled for a form. CMIconChanged calls a 
private method (IconChanged) to free and re-create handle(s) for icons used on 
the form.
</p>
<p>
The CM_ICONCHANGED control message occurs when a new value is assigned to the 
Icon property, and when the BorderStyle property is changed. At run-time, the 
widgetset class is notified by calling its SetIcon method when BorderStyle 
contains a value that allows icons. bsDialog and bsNone do not display icons.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use assigned handles in SmallIconHandle and 
BigIconHandle when BorderStyle is changed to a value other than bsNone or 
bsDialog.
</version>
<seealso>
<link id="TCustomForm.BorderStyle"/>
<link id="TCustomForm.Icon"/>
<link id="TCustomForm.SmallIconHandle"/>
<link id="TCustomForm.BigIconHandle"/>
</seealso>
</element>
<element name="TCustomForm.CMIconChanged.Message">
<short>
Control message for the notification.
</short>
</element>

<element name="TCustomForm.CMRelease">
<short>Handles the CM_RELEASE control message for the form.</short>
<descr>
<p>
Calls the Free method to destroy the form instance.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.CMRelease.Message">
<short>Control message for the notification.</short>
</element>

<element name="TCustomForm.CMActivate">
<short>Handles the CM_ACTIVATE control message for the form.</short>
<descr>
<p>
Ensures that the Menu for the MainForm in the Application is merged into the 
Menu for the form instance when FormStyle is fsMDIChild. This action is not 
performed at design-time, or when the MainForm or the Menu for the 
Application has not been assigned.
</p>
<p>
Calls Activate to signal the OnActivate event handler (when assigned) if 
needed.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.CMActivate.Message">
<short>Control message for the notification.</short>
</element>

<element name="TCustomForm.CMDeactivate">
<short>Handles the CM_DEACTIVATE control message for the form.</short>
<descr>
<p>
This message occurs when the form loses focus within the application.
</p>
<p>
Calls the Deactivate method to signal the OnDeactivate event handler (when 
assigned). Ensures that the Menu merged to the application MainForm during 
activation is removed from the Menu for the Application. This action is not 
performed at design-time, or when Menu has not been assigned. It applies to a 
form using the fsMDIChild form style in an application using the fsMDIForm 
style in its MainForm.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.CMDeactivate.Message">
<short>Control message processed in the method.</short>
</element>

<element name="TCustomForm.CMShowingChanged">
<short>Handles the CM_SHOWINGCHANGED control message for the form.</short>
<descr>
<p>
Uses the value in <var>Showing</var> to determine whether the 
<var>DoShow</var> or the <var>DoHide</var> method is called. When Showing is 
<b>True</b>, the DoShow method is called to signal the <var>OnShow</var> 
event handler (when assigned) if needed. When Showing is <b>False</b>, the 
DoHide method is called to signal the <var>OnHide</var> event handler (when 
assigned).
</p>
<p>
If either event handler raises an <var>Exception</var>, it is ignored when 
<var>HandleShowHideException</var> is set to <b>True</b>. It is re-raised 
when HandleShowHideException is <b>False</b>.
</p>
<p>
Calls the inherited method prior to exit to notify the widgetset class of the 
window state change, and to update window control flags for the form.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.CMShowingChanged.Message">
<short>Control message processed in the method.</short>
</element>

<element name="TCustomForm.WMDPIChanged">
<short>Handles the LM_DPICHANGED window message for the form.</short>
<descr>
<p>
Calls AutoAdjustLayout to apply the DPI setting in Message. This action is 
performed when:
</p>
<ul>
<li>The Parent for the form has not been assigned.</li>
<li>Scaled is enabled for both the Application and the form instance.</li>
<li>
The DPI setting in Message is different than the PixelsPerInch value for the 
form.
</li>
</ul>
</descr>
<seealso/>
<notes>
<note>
Problem (Windows): if the form is shown the first time on a secondary monitor 
with a different DPI settings, the WM_DPICHANGED message is sent within 
UpdateBounds when BoundsLockCount>0 which means the bounds are not scaled. We 
force to update the bounds. See issue 32162. (A better solution is welcome.)
</note>
</notes>
</element>
<element name="TCustomForm.WMDPIChanged.Msg">
<short>Window message handled in the method.</short>
</element>

<element name="TCustomForm.FActionLists">
<short>Member used to store the action lists associated with the form.</short>
</element>

<element name="TCustomForm.FFormBorderStyle" link="#lcl.forms.TCustomForm.BorderStyle"/>
<element name="TCustomForm.FFormState" link="#lcl.forms.TCustomForm.FormState"/>

<element name="TCustomForm.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>

<element name="TCustomForm.DoShowWindow">
<short>
Chooses the active control when the form becomes visible at run-time.
</short>
<descr>
<p>
Calls a private method to locate the first visible and enabled control in the 
tab order for the form. Sets the value in ActiveControl to the control 
instance located in the method.
</p>
<p>
No actions are performed in the method at design-time, when ActiveControl has 
already been assigned, or when the form instance has a Parent.
</p>
<p>
DoShowWindow is called from the WMShowWindow method where the LM_SHOWWINDOW 
window message is handled for the form.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomForm.Activate">
<short>
Signals the OnActivate event handler when a form is focused in an application.
</short>
<descr>
<p>
<var>Activate</var> is a procedure used to signal the <var>OnActivate</var> 
event handler (if assigned) when the form is focused in an application.  
Activate is called when the <b>CM_Activate</b> message is handled for the form. 
It is called after the OnShow event is signalled in the DoShow method.
</p>
<p>
Activate uses an internal member to determine whether the form is being 
focused for the first time, or following a change of focus between forms. 
No actions are performed in the method when the form is being focused for 
the first time and the <var>WindowState</var> property contains 
<var>wsMaximized</var> or <var>wsFullScreen</var>.
</p>
<p>
Use <var>OnShow</var> to respond to the event notification performed when the 
form is displayed for the first time.
</p>
<p>
Use <var>OnChangeBounds</var> or <var>OnResize</var> to respond to delayed 
changes to the form bounds (position) or resize events.
</p>
<p>
See <var>Deactivate</var> for the actions performed when the form instance 
loses focus.
</p>
</descr>
<seealso>
<link id="TCustomForm.OnActivate"/>
<link id="TCustomForm.OnShow"/>
<link id="TCustomForm.OnResize"/>
<link id="TCustomForm.OnWindowStateChange"/>
<link id="TCustomForm.Deactivate"/>
<link id="TCustomForm.Visible"/>
<link id="TForm.OnChangeBounds"/>
<link id="TCustomForm.WindowState"/>
<link id="#lcl.controls.TControl.OnChangeBounds">TControl.OnChangeBounds</link>
<link id="#lcl.controls.TControl.OnResize">TControl.OnResize</link>
</seealso>
</element>

<element name="TCustomForm.ActiveChanged">
<short>An empty implementation in TCustomForm.</short>
<descr>
<p>
Can be implemented in a descendant to perform actions needed when the active 
form is changed. Just like Delphi VCL.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomForm.AdjustClientRect">
<short>Excludes borders from the given rectangle.</short>
<descr>
<p>
<var>AdjustClientRect</var> is an overridden method in <var>TCustomForm</var> 
which re-implements the method from the ancestor class. It is used to 
decrease the width and height for the client rectangle specified in 
<var>Rect</var> by the number of pixels in the <var>BorderWidth</var> 
property. It is used in the <var>AlignControls</var> method, and when 
auto-sizing is performed for <var>Controls</var>.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.AdjustClientRect">TWinControl.AdjustClientRect</link>
</seealso>
</element>
<element name="TCustomForm.AdjustClientRect.Rect">
<short>Client rectangle adjusted in the method.</short>
</element>

<element name="TCustomForm.BeginFormUpdate">
<short>
Increments the form update counter, and disables auto-sizing on the initial 
update lock.
</short>
<descr>
<p>
Used with the <var>EndFormUpdate</var> method to manage auto-sizing during 
form updates. For the initial call to <var>BeginFormUpdate</var>, 
<var>DisableAutoSizing</var> is called to suspend auto-sizing.
</p>
<p>
<var>EndFormUpdate</var> decrements the internal update counter. When the 
update count reaches <b>0</b>, auto-sizing is re-enabled.
</p>
<p>
BeginFormUpdate is called from the CreateNew method and disables auto-sizing 
while the new form instance is configured. EndFormUpdate is called from the 
AfterConstruction method, and occurs after the bounds for the form have been 
updated but before the form is scaled using AutoAdjustLayout.
</p>
</descr>
<seealso>
<link id="TCustomForm.EndFormUpdate"/>
<link id="TCustomDesignControl.AutoAdjustLayout"/>
<link id="TCustomForm.CreateNew"/>
<link id="TCustomForm.Create"/>
<link id="#lcl.controls.TControl.DisableAutoSizing">TControl.DisableAutoSizing</link>
<link id="#lcl.controls.TControl.EnableAutoSizing">TControl.EnableAutoSizing</link>
</seealso>
</element>

<element name="TCustomForm.ColorIsStored">
<short>Implements the storage specifier for the Color property.</short>
<descr/>
<seealso>
<link id="#lcl.controls.TControl.Color">TControl.Color</link>
</seealso>
</element>
<element name="TCustomForm.ColorIsStored.Result">
<short>
<b>True</b> when Color has value other than clDefault or clBtnFace.
</short>
</element>

<element name="TCustomForm.CreateParams">
<short>
Initializes parameters used to create the handle for the form instance.
</short>
<descr>
<p>
<var>CreateParams</var> is used to initialize parameters needed to create the 
handle for the form instance.
</p>
<p>
CreateParams is an overridden procedure in <var>TCustomForm</var>, and calls 
the inherited method on entry. CreateParams ensures that values in the 
<var>Params</var> argument are valid. This includes setting the realized 
parent form and window handle for a form which is not the main form in the 
application. <var>Style</var> flags are also updated to indicate how the form 
is displayed in the task bar.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.CreateParams">TWinControl.CreateParams</link>
</seealso>
</element>
<element name="TCustomForm.CreateParams.Params">
<short>Values examined and updated in the method.</short>
</element>

<element name="TCustomForm.CreateWnd">
<short>
Creates the handle for the widgetset class and updates it Menu and Icons.
</short>
<descr>
<p>
<var>CreateWnd</var> is an overridden method in <var>TCustomForm</var> used 
to create (or re-create) the <var>Handle</var> for the widgetset class. It 
sets the initial values for <var>FormState</var>, and calls the inherited 
method to handle auto-sizing and scroll bars.
</p>
<p>
CreateWnd ensures that a handle is allocated for the <var>Menu</var> and the 
Handle for the form is used as its <var>WindowHandle</var>. The 
<b>CM_ICONCHANGED</b> control message is performed to (re-)create handles for 
menu glyphs, and to post the changes to the widgetset class.
</p>
</descr>
<seealso>
<link id="#lcl.forms.TScrollingWinControl.CreateWnd">TScrollingWinControl.CreateWnd</link>
<link id="#lcl.controls.TWinControl.CreateWnd">TWinControl.CreateWnd</link>
</seealso>
</element>

<element name="TCustomForm.Deactivate">
<short>
Performs actions when the form loses focus.
</short>
<descr>
<p>
Called when the form loses focus in the application. It signals the 
<var>OnDeactivate</var> event handler (when assigned). Called from the 
<var>CMDeactivate</var> and <var>WndProc</var> methods.
</p>
</descr>
<seealso>
<link id="TCustomForm.OnDeactivate"/>
<link id="TCustomForm.Activate"/>
<link id="TCustomForm.OnActivate"/>
<link id="TCustomForm.CMDeactivate"/>
<link id="TCustomForm.WndProc"/>
</seealso>
</element>

<element name="TCustomForm.DoClose">
<short>Notifies handlers of the close action for the form.</short>
<descr>
<p>
<var>DoClose</var> is a method used to notify close handlers for the form 
instance of the action requested in the <var>CloseAction</var> parameter.
</p>
<p>
It is called from the <var>Close</var> method for a form that is not 
displayed as a modal dialog; i. e. <var>FormState</var> does not contain 
<var>fsModal</var>. It occurs after <var>CloseQuery</var> (and 
<var>OnCloseQuery</var>)  have been called to determine if the form can in 
fact be closed, and the <var>CloseAction</var> has been set for the form 
style.
</p>
<p>
DoClose signals the <var>OnClose</var> event handler (when assigned) to allow 
the form instance to modify the CloseAction argument. It iterates over the 
close handlers in the form instance, and signals each of the 
<var>TCloseEvent</var> instances in the method list using CloseAction as an 
argument.
</p>
</descr>
<seealso>
<link id="TCustomForm.OnClose"/>
<link id="TCustomForm.Close"/>
<link id="TCustomForm.CloseQuery"/>
<link id="TCustomForm.OnCloseQuery"/>
<link id="TCustomForm.FormState"/>
<link id="TCustomForm.FormStyle"/>
<link id="TFormHandlerType"/>
<link id="TCloseEvent"/>
</seealso>
</element>
<element name="TCustomForm.DoClose.CloseAction">
<short>Close action to perform for the from instance.</short>
</element>

<element name="TCustomForm.DoCreate">
<short>Notifies the create handlers for the form instance.</short>
<descr>
<p>
<var>DoCreate</var> is a method used to signal the create handlers for the 
form instance. DoCreate signals the <var>OnCreate</var> event handler (when 
assigned) to perform any actions needed for the new form instance. DoCreate 
also signals other create handlers to perform the methods using the current 
form instance as an argument.
</p>
<p>
If an <var>Exception</var> occurs in one of the event handlers, it is handled 
in the method when <var>HandleCreateException</var> returns <b>True</b>. When 
it returns <b>False</b>, the exception is re-raised in the method.
</p>
<p>
DoCreate calls <var>LockRealizeBounds</var> on entry to disable sending 
bounds changes to the widgetset class. <var>UnlockRealizeBounds</var> is 
called prior to exit to re-enable sending bounds changes to the widgetset 
class.
</p>
<p>
DoCreate is a called from the <var>AfterConstruction</var> method after the 
initial bounds for the form have been set, and before scaling and automatic 
layout adjustment are performed (if needed) for the new form instance.
</p>
</descr>
<seealso>
<link id="TCustomForm.OnCreate"/>
<link id="TCustomForm.HandleCreateException"/>
<link id="TCustomForm.AfterConstruction"/>
<link id="TFormHandlerType"/>
<link id="#lcl.controls.TWinControl.LockRealizeBounds">TWinControl.LockRealizeBounds</link>
<link id="#lcl.controls.TWinControl.UnlockRealizeBounds">TWinControl.UnlockRealizeBounds</link>
</seealso>
</element>

<element name="TCustomForm.DoDestroy">
<short>Signals the OnDestroy event handler for the form instance.</short>
<descr>
<p>
<var>DoDestroy</var> is a method used to signal the <var>OnDestroy</var> 
event handlers assigned for the form instance. If an <var>Exception</var> 
occurs in the event handler, it is handled in the method when 
<var>HandleDestroyException</var> is set to <b>True</b>. When set to 
<b>False</b>, the exception is re-raised in the method.
</p>
<p>
DoDestroy is called from the <var>BeforeDestruction</var> method, and allows 
the application to perform actions needed before the form instance is 
physically freed. It is called after the form has been removed from the focus 
list for the <var>Screen</var>, hidden by calling the <var>Hide</var> method, 
and merged menu items have been removed from the MainForm for the Application.
</p>
</descr>
<seealso>
<link id="TCustomForm.OnDestroy"/>
<link id="TCustomForm.HandleDestroyException"/>
<link id="TCustomForm.BeforeDestruction"/>
<link id="TCustomForm.Hide"/>
<link id="TCustomForm.Menu"/>
<link id="Screen"/>
<link id="TScreen"/>
<link id="Application"/>
<link id="TApplication"/>
</seealso>
</element>

<element name="TCustomForm.DoHide">
<short>Signals the OnHide event handler for the form instance.</short>
<descr>
<p>
Called from the <var>CMShowingChanged</var> method when <var>Showing</var> is 
set to <b>False</b>.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomForm.DoShow">
<short>Signals the OnShow event handler when needed.</short>
<descr>
<p>
No actions are performed in the method when a maximized or full-screen window 
(<var>WindowState</var> contains <var>wsMaximized</var> or 
<var>wsFullScreen</var>) is displayed for the first time. It signals the 
OnShow event handler (when assigned) to perform the event notification.
</p>
<p>
DoShow is called from the <var>DelayedEvent</var> method in response to 
queued <var>OnResize</var> or <var>OnChangeBounds</var> events, and from the 
<var>CMShowingChanged</var> method when <var>Showing</var> is set to 
<b>True</b>.
</p>
</descr>
<seealso>
<link id="TCustomForm.OnShow"/>
<link id="TCustomForm.WindowState"/>
<link id="#lcl.controls.TWinControl.Showing">TWinControl.Showing</link>
<link id="#lcl.controls.TControl.Parent">TControl.Parent</link>
</seealso>
</element>

<element name="TCustomForm.EndFormUpdate">
<short>
Decrements the form update counter, and re-enables auto-sizing on the form.
</short>
<descr>
<p>
EndFormUpdate is used along with <var>BeginFormUpdate</var> method to manage 
auto-sizing during form updates. An initial call to <var>BeginFormUpdate</var> 
disables auto-sizing when the form instance is created.
</p>
<p>
<var>EndFormUpdate</var> decrements the internal update counter. When the 
update count reaches <b>0</b>, auto-sizing is re-enabled.
</p>
<p>
BeginFormUpdate is called from the CreateNew method and disables auto-sizing 
while the new form instance is configured. EndFormUpdate is called from the 
AfterConstruction method, and occurs after the bounds for the form have been 
updated but before the form is scaled using AutoAdjustLayout.
</p>
</descr>
<seealso>
<link id="TCustomForm.BeginFormUpdate"/>
<link id="TCustomDesignControl.AutoAdjustLayout"/>
<link id="TCustomForm.CreateNew"/>
<link id="TCustomForm.Create"/>
<link id="TCustomForm.AfterConstruction"/>
<link id="#lcl.controls.TWinControl.FormEndUpdated">TWinControl.FormEndUpdated</link>
</seealso>
</element>

<element name="TCustomForm.HandleCreateException">
<short>
Indicates if an exception in the OnCreate event handler is handled by the 
application.
</short>
<descr>
<p>
<var>HandleCreateException</var> is a <var>Boolean</var> function which 
indicates if an exception raised in the <var>OnCreate</var> event handler is 
handled in the form instance. The return value is <b>True</b> when the 
<var>Application.CaptureExceptions</var> property is set to <b>True</b>; the 
<var>HandleException</var> method in <var>Application</var> is called to 
notify its exception handlers of the exception. When the return value is 
<b>False</b>, the exception is re-raised in the caller.
</p>
<p>
HandleCreateException is called from the DoCreate method.
</p>
</descr>
<seealso>
<link id="TApplication.HandleException"/>
<link id="TApplication.CaptureExceptions"/>
</seealso>
</element>
<element name="TCustomForm.HandleCreateException.Result">
<short><b>True</b> when the exception is handled by the application.</short>
</element>

<element name="TCustomForm.HandleDestroyException">
<short>Placeholder for exception handlers in derived classes.</short>
<descr>
<p>
By default the Application exception handler is invoked.
</p>
</descr>
<seealso>
<link id="TApplication.HandleException"/>
<link id="TApplication.CaptureExceptions"/>
</seealso>
</element>

<element name="TCustomForm.HandleDestroyException.Result">
<short><b>True</b> when the exception was handled.</short>
</element>
<element name="TCustomForm.HandleShowHideException">
<short>Placeholder for exception handlers in derived classes.</short>
<descr>
<p>
By default the Application exception handler is invoked.
</p>
</descr>
<seealso>
<link id="TApplication.HandleException"/>
<link id="TApplication.CaptureExceptions"/>
</seealso>
</element>
<element name="TCustomForm.HandleShowHideException.Result">
<short><b>True</b> when the exception was handled.</short>
</element>

<element name="TCustomForm.InitializeWnd">
<short>Initializes the widget, also for AlphaBlend and AllowDropFiles.</short>
<descr/>
<seealso>
<link id="#lcl.controls.TWinControl.InitializeWnd">TWinControl.InitializeWnd</link>
</seealso>
</element>

<element name="TCustomForm.Loaded">
<short>
Performs actions when the component has been loaded using the LCL streaming 
mechanism.
</short>
<descr>
<p>
<var>Loaded</var> is an overridden method in <var>TCustomForm</var>.
</p>
<p>
It disables alignment in the form, and adjusts the PixelsPerInch setting for 
the Font when it differs from the design-time setting. It is performed when 
<var>Scaled</var> is enabled for the form and the Application. This action is 
also performed for any child Controls. Calls the inherited Loaded method, and 
re-enables alignment for the form instance.
</p>
<p>
Ensures that the <var>ActiveControl</var> (when assigned) can receive focus. 
ActiveControl is set to <b>Nil</b> if the control cannot be focused for the 
form instance. Sets the <var>Visible</var> property to <var>True</var> when 
<var>FormState</var> contains the value <var>fsVisible</var>.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.Loaded"/>
<link id="#rtl.classes.TComponent">TComponent</link>
</seealso>
</element>

<element name="TCustomForm.ChildHandlesCreated">
<short>
Called when handles for child control are created in the form instance.
</short>
<descr>
<p>
ChildHandlesCreated is called after all handles for child controls are 
created. When this is a top-level form (<var>Parent</var> is Nil), the 
ParentFormHandleInitialized method is also called.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.ChildHandlesCreated">TWinControl.ChildHandlesCreated</link>
</seealso>
</element>

<element name="TCustomForm.Notification">
<short>
Handles the notification when a component is added to or removed from the 
form.
</short>
<descr>
<p>
<var>Notification</var> is an overridden method in <var>TCustomForm</var> 
used to handle the notification when the component in <var>AComponent</var> 
has been added to or removed from the form instance. Operation is the action 
performed for the component.
</p>
<p>
Notification calls the inherited method on entry, and performs additional 
actions for the ActionList, Menu, and pop-up parent form used in the control.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Notification">TControl.Notification</link>
</seealso>
</element>
<element name="TCustomForm.Notification.AComponent">
<short>Component for the notification.</short>
</element>
<element name="TCustomForm.Notification.Operation">
<short>Operation performed for the component.</short>
</element>

<element name="TCustomForm.PaintWindow">
<short>
Calls the Paint method using the specified device context in the control 
Canvas.
</short>
<descr>
<p>
<var>PaintWindow</var> is an overridden method in <var>TCustomForm</var>. It 
re-implements the method from the ancestor class, and does <b>not</b> call 
the inherited method.
</p>
<p>
PaintWindow assigns the device context in <var>dc</var> to the 
<var>Canvas</var> handle. The <var>Paint</var> method is called to signal the 
<var>OnPaint</var> event handler (when assigned). If a design surface is 
active for the form instance, its <var>PaintGrid</var> method is called. The 
Canvas handle is reset to 0 prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TCustomControl.PaintWindow">TCustomControl.PaintWindow</link>
</seealso>
</element>
<element name="TCustomForm.PaintWindow.dc">
<short>Device context (Handle) assigned to the Canvas for the form.</short>
</element>

<element name="TCustomForm.RequestAlign">
<short>
Calls the user Alignment handler (AlignControls). Here: NOP for a top-level 
form.
</short>
<descr/>
<seealso>
<link id="#lcl.controls.TControl.RequestAlign">TControl.RequestAlign</link>
</seealso>
</element>

<element name="TCustomForm.Resizing">
<short>
Performs actions needed when the form processes the WMSize message.
</short>
<descr>
<p>
Uses the value in <var>State</var> to determine the action required in the 
method. The LCL interface is used to determine if the window state is valid 
for the widgetset. When allowed, the following methods are called for the 
corresponding <var>TWindowState</var> value:
</p>
<dl>
<dt>wsMinimized</dt>
<dd>
Calls the Minimize method in Application, or Restore if the Form is already 
minimized.
</dd>
</dl>
<p>
If the value in WindowState has been changed, the method honors the value in 
the Position property if it was set to maximized at design-time. When the 
<var>OnWindowStateChange</var> event handler has been assigned for the form, 
it is signalled for the current class instance.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.Resizing"/>
<link id="TCustomForm.WMSize"/>
<link id="TScrollingWinControl.WMSize"/>
<link id="TCustomForm.OnWindowStateChange"/>
</seealso>
</element>
<element name="TCustomForm.Resizing.State">
<short>Window state applied in the method.</short>
</element>

<element name="TCustomForm.CalculatePreferredSize">
<short>
Calculates the clipping width and height for a top-level form on the monitor 
WorkArea.
</short>
<descr>
<p>
<var>CalculatePreferredSize</var> is an overridden method in 
<var>TCustomForm</var>. It calls the inherited method on entry to calculate 
the default dimensions for the new class instance, and to notify the 
widgetset class when its Handle has been allocated.
</p>
<p>
CalculatePreferredSize ensures that a form anchored to the bottom or right 
fits within the WorkArea rectangle on the Monitor. The value in 
PreferredWidth or PreferredHeight is updated when Anchors contains akRight or 
akBottom.
</p>
</descr>
<seealso>
<link id="TCustomForm.Monitor"/>
<link id="TMonitor.WorkAreaRect"/>
<link id="#lcl.controls.TControl.CalculatePreferredSize">TControl.CalculatePreferredSize</link>
<link id="#lcl.controls.TControl.Anchors">TControl.Anchors</link>
</seealso>
</element>
<element name="TCustomForm.CalculatePreferredSize.PreferredWidth">
<short>Default width for a new instance of the class.</short>
</element>
<element name="TCustomForm.CalculatePreferredSize.PreferredHeight">
<short>Default height for a new instance of the class.</short>
</element>
<element name="TCustomForm.CalculatePreferredSize.WithThemeSpace">
<short>
<b>True</b> if additional space is reserved for theme element details.
</short>
</element>

<element name="TCustomForm.DoOnResize">
<short>
Performs a delayed resize action using the DelayedEvent for the control.
</short>
<descr>
<p>
<var>DoOnResize</var> is an overridden method in <var>TCustomForm</var>. It 
re-implements the method from the ancestor class, and does not call the 
inherited method.
</p>
<p>
DoOnResize sets an internal flag to indicate that a delayed resize event has 
been requested. It increments an internal counter to track the number of 
pending delayed events.
</p>
<p>
DoOnResize uses the QueueAsyncCall method in the TApplication instance to 
queue execution of the private DelayedEvent method. DelayedEvent will discard 
duplicate requests, and call the inherited method to signal OnResize event 
handlers (when assigned) and update scroll bars (when needed).
</p>
<p>
No actions are performed in the method when the component is being freed 
(csDestroying in ComponentState).
</p>
</descr>
<seealso>
<link id="TApplication.QueueAsyncCall"/>
<link id="TScrollingWinControl.DoOnResize"/>
<link id="#lcl.controls.TControl.OnResize">TControl.OnResize</link>
<link id="#rtl.classes.TComponent.ComponentState">TComponent.ComponentState</link>
</seealso>
</element>

<element name="TCustomForm.DoOnChangeBounds">
<short>
Performs a delayed bounds change using the DelayedEvent for the control.
</short>
<descr>
<p>
<var>DoOnChangeBounds</var> is an overridden method in 
<var>TCustomForm</var>. It re-implements the method from the ancestor class, 
and does not call the inherited method.
</p>
<p>
DoOnChangeBounds sets an internal flag to indicate that a delayed bounds 
change event has been requested. It increments an internal counter to track 
the number of pending delayed events.
</p>
<p>
DoOnChangeBounds uses the QueueAsyncCall method in the TApplication instance 
to queue execution of the private DelayedEvent method. DelayedEvent will 
discard duplicate requests, and handle changes to the restored bounds for the 
control. DoShow or Activate are called if the form is being displayed or 
activated for the first time.
</p>
<p>
No actions are performed in the method when the component is being freed 
(csDestroying in ComponentState).
</p>
</descr>
<seealso>
<link id="TCustomForm.DoShow"/>
<link id="TCustomForm.Activate"/>
<link id="TApplication.QueueAsyncCall"/>
<link id="#lcl.controls.TControl.DoOnChangeBounds">TControl.DoOnChangeBounds</link>
<link id="#rtl.classes.TComponent.ComponentState">TComponent.ComponentState</link>
</seealso>
</element>

<element name="TCustomForm.SetZOrder">
<short>Moves a top-level form in front of or behind all other forms.</short>
<descr>
<p>
<var>SetZOrder</var> is an overridden method in <var>TCustomForm</var>. It 
ensures that a request to bring the current form to the top of the Z-Order is handled properly. 
</p>
<p>
If a Parent control has not been assigned, the form instance is moved to the 
top of the Z-Order in the Screen singleton and the SetForegroundWindow 
routine is called using the Handle for the form instance. No actions are 
performed in the method if the Handle has not been allocated for the control, 
or when another form has been displayed modally on the Screen.
</p>
<p>
If Parent has been assigned, the inherited method is called to change the 
Z-Order using the SetChildZPosition method in the parent control.
</p>
<p>
SetZOrder is called from the BringToFront and SendToBack methods in the 
TControl ancestor.
</p>
</descr>
<seealso>
<link id="TScreen.GetCurrentModalForm"/>
<link id="TScreen.MoveFormToZFront"/>
<link id="#lcl.controls.TControl.SetZOrder">TControl.SetZOrder</link>
<link id="#lcl.controls.TControl.Parent">TControl.Parent</link>
<link id="#lcl.controls.TControl.BringToFront">TControl.BringToFront</link>
<link id="#lcl.controls.TControl.SendToBack">TControl.SendToBack</link>
<link id="#lcl.lclintf.SetForegroundWindow">SetForegroundWindow</link>
</seealso>
</element>
<element name="TCustomForm.SetZOrder.Topmost">
<short>
<b>True</b> to bring the form to the front or top of the Z-order.
</short>
</element>

<element name="TCustomForm.SetParent">
<short>Sets the value for the Parent property.</short>
<descr>
<p>
<var>SetParent</var> is an overridden method in <var>TCustomForm</var> used 
to set the value for the <var>Parent</var> property.
</p>
<p>
SetParent disables auto-sizing before updating the property value. The 
<var>Handle</var> for the form is destroyed and re-created when Parent is 
both assigned and <var>Visible</var>.
</p>
<p>
SetParent ensures that the <var>PixelsPerInch</var> settings for the form 
instance and its Parent are the same. <var>AutoAdjustLayout</var> is called 
when the values differ and <var>Scaled</var> has been enabled for both the 
Parent form and the <var>Application</var>.
</p>
<p>
SetParent re-enables auto-sizing prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Parent">TControl.Parent</link>
<link id="#lcl.controls.TControl.SetParent">TControl.SetParent</link>
</seealso>
</element>
<element name="TCustomForm.SetParent.NewParent">
<short>New value for the property.</short>
</element>

<element name="TCustomForm.MoveToDefaultPosition">
<short>
Moves the form to the location specified in the Position property.
</short>
<descr>
<p>
<var>MoveToDefaultPosition</var> is a method used to move a form instance to 
the location specified in its <var>Position</var> property. It ensures that 
the form appears on the correct monitor for the values in the DefaultMonitor 
and Position properties.
</p>
<p>
DefaultMonitor is used to determine whether the form needs to be moved to a 
different monitor for the value in Position. For instance:
</p>
<dl>
<dt>dmDesktop</dt>
<dd>
The form does not need to be moved, and the current monitor is used.
</dd>
<dt>dmPrimary</dt>
<dd>
The PrimaryMonitor in Screen is used to display the form.
</dd>
<dt>dmMainForm</dt>
<dd>
If the Application has a MainForm, the monitor for the main form is used. 
Otherwise, the form is not relocated to another monitor.
</dd>
<dt>dmActiveForm</dt>
<dd>
If the Screen has an ActiveForm, the monitor for the active form is used. 
Otherwise, the form is not moved to another monitor.
</dd>
</dl>
<p>
Position specifies an associated form and the relative position for the 
relocated form instance. For instance:
</p>
<dl>
<dt>poOwnerFormCenter</dt>
<dd>
Uses the Owner form to center align the relocated form instance. If the Owner 
is not a TCustomForm instance, Position is converted to poMainFormCenter to 
center the form to the MainForm in the application.
</dd>
<dt>poMainFormCenter</dt>
<dd>
Centers the form to the MainForm for the Application. When not assigned, 
Position is converted to poScreenCenter to center the form on the Screen.
</dd>
<dt>poScreenCenter</dt>
<dd>
Centers the form on the default monitor.
</dd>
<dt>poDesktopCenter</dt>
<dd>
Centers the form to the desktop (width for all screens).
</dd>
<dt>poWorkAreaCenter</dt>
<dd>
Centers the form on work area for the default monitor.
</dd>
<dt>poDesigned, poDefaultSizeOnly</dt>
<dd>
Ignored in the method.
</dd>
<dt>poDefault, poDefaultPosOnly</dt>
<dd>
Uses the size / relative position provided by the widgetset class instance.
</dd>
</dl>
<p>
MoveToDefaultPosition gets the display rectangle for the form instance, and 
translates the form coordinates to the correct Monitor. <var>SetBounds</var> 
is called to apply the translated origin using the height and width for the 
form instance.
</p>
<p>
No actions are performed in the method when either <var>Parent</var> or the 
<var>ParentWindow</var> handle has been assigned for the form instance. No 
actions are performed in the method when <var>WindowState</var> contains 
<var>wsFullScreen</var> or <var>wsMaximized</var>.
</p>
<p>
MoveToDefaultPosition is called from the <var>AllAutoSized</var>, 
<var>SetRestoredBounds</var>, and <var>UpdateShowing</var> methods. It is 
also called when a new value is assigned to the <var>Position</var> property.
</p>
</descr>
<version>
The implementation for the method was changed in LCL version 2.3.0.
</version>
<seealso>
<link id="TCustomForm.Position"/>
<link id="TCustomForm.DefaultMonitor"/>
</seealso>
</element>

<element name="TCustomForm.UpdateShowing">
<short>
Configures and position the form when its visibility has been changed.
</short>
<descr>
<p>
<var>UpdateShowing</var> is an overridden method used to configure and 
position the form instance when the visibility for the form has been changed.
</p>
<p>
When <var>Visible</var> is set to <b>True</b> at run-time, the 
<var>MoveToDefaultPosition</var> method is called to move the form to the 
monitor / location in the <var>Position</var> property. This action is not 
needed (or allowed) at design-time. When <var>FormState</var> indicates it is 
the first time the form is being displayed, the <var>DoFirstShow</var> method 
is called to notify event handlers for the form.
</p>
<p>
UpdateShowing calls the inherited method to update the <var>Handle</var> for 
the form and the visibility for any child <var>Controls</var>.
</p>
<p>
If <var>ActiveControl</var> is not assigned, and there is no 
<var>Parent</var> form, the <var>FindDefaultForActiveControl</var> method is 
called to locate the first visible and enabled child control on the form. Its 
Handle is used to focus the control using the LCL <var>SetFocus</var> routine.
</p>
<p>
Finally, the visibility of the form in the task bar is updated and passed to 
the widgetset class.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.UpdateShowing">TWinControl.UpdateShowing</link>
</seealso>
</element>

<element name="TCustomForm.SetVisible">
<short>Sets the value for the Visible property.</short>
<descr>
<p>
<var>SetVisible</var> is an overridden method used to set the value for the 
<var>Visible</var> property. It ensures that <var>FormState</var> is updated 
to reflect the new value for the property. When set to <b>True</b>, 
<var>fsVisible</var> is included in the FormState property. Otherwise, 
fsVisible is excluded from FormState. No actions are performed in the method 
if FormState already already reflects the new value for the property.
</p>
<p>
SetVisible calls the inherited method to store the new property value, and to 
perform resizing and control messages as needed. The <var>UpdateVisible</var> 
method in <var>Application</var> is called to ensure that the application is 
visible in the task bar when one of its forms is visible.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.SetVisible">TControl.SetVisible</link>
</seealso>
</element>
<element name="TCustomForm.SetVisible.Value">
<short>New value for the property.</short>
</element>

<element name="TCustomForm.AllAutoSized">
<short>If the form is about to show, calculate its metrics.</short>
<descr>
<p>
<var>AllAutoSized</var> is an overridden method used to apply the position 
and layout for a visible form that about to be displayed. AllAutoSized 
implements the virtual method defined in the ancestor class.
</p>
<p>
AllAutoSized is called from the <var>DoAllAutoSize</var> method when 
<var>AutoSize</var> has been enabled, and occurs after the bounds for the 
form have been calculated. It calls the <var>MoveToDefaultPosition</var> 
method to move the form to the monitor and relative location in 
<var>Position</var>.
</p>
<p>
No actions are performed in the method if the form is already 
<var>Showing</var> or it is not <var>Visible</var>.
</p>
</descr>
<seealso>
<link id="TCustomForm.Visible"/>
<link id="TCustomForm.MoveToDefaultPosition"/>
<link id="TCustomForm.Position"/>
<link id="#lcl.controls.TWinControl.Showing">TWinControl.Showing</link>
<link id="#lcl.controls.TWinControl.AllAutoSized">TWinControl.AllAutoSized</link>
<link id="#lcl.controls.TWinControl.DoAllAutoSize">TWinControl.DoAllAutoSize</link>
</seealso>
</element>

<element name="TCustomForm.DoFirstShow">
<short>Executes handlers using the FirstShow handler type.</short>
<descr>
<p>
Calls <var>CallNotifyEvents</var> in the internal method list for any methods 
using the <var>fhtFirstShow</var> handler type. The form instance is passed 
as an argument to the handler(s).
</p>
<p>
Called from the <var>UpdateShowing</var> method when the form is 
<var>Visible</var> and its <var>Showing</var> property is changed to 
<b>True</b>. Occurs after <var>MoveToDefaultPosition</var> has been to called 
to position the form on its monitor, and after the value 
<var>fsFirstShow</var> has been included in the <var>FormState</var> property.
</p>
</descr>
<seealso>
<link id="TCustomForm.UpdateShowing"/>
<link id="TCustomForm.Visible"/>
<link id="TCustomForm.MoveToDefaultPosition"/>
<link id="TCustomForm.FormState"/>
<link id="TFormHandlerType"/>
<link id="TFormStateType"/>
<link id="#lcl.controls.TWinControl.Showing">TWinControl.Showing</link>
</seealso>
</element>

<element name="TCustomForm.UpdateWindowState">
<short>UpdateWindowState is an empty implementation in TCustomForm.</short>
<descr>
<p>
Has an empty implementation in the current LCL version.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomForm.VisibleChanging">
<short>Notifies all <var>VisibleChanging</var> handlers.</short>
<descr>
<p>
Calls the inherited method prior to exit. Called prior to setting the new 
value for the Visible property in a control (or form) in the SetVisible 
method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.VisibleChanging">TControl.VisibleChanging</link>
</seealso>
</element>

<element name="TCustomForm.VisibleChanged">
<short>
Notifies all handlers when the visibility for the form has been changed.
</short>
<descr>
<p>
Calls the inherited method on entry.
</p>
<p>
When the <var>Screen</var> singleton has been assigned, its 
<var>NotifyScreenFormHandler</var> method is called to signal all 
<var>snFormVisibleChanged</var> handlers in the class instance.
</p>
<p>
Called after a new value has been assigned to the <var>Visible</var> property 
for the control (or form).
</p>
</descr>
<seealso>
<link id="Screen"/>
<link id="TScreenNotification"/>
</seealso>
</element>

<element name="TCustomForm.WndProc" link="#lcl.controls.TControl.WndProc"/>
<element name="TCustomForm.WndProc.TheMessage">
<short>
Handled messages include: Activate, SetFocus, KillFocus, Exit, Enter, Window 
Position Changing, and DrawItem.
</short>
<descr>
<p>
<var>WndProc</var> is an overridden method which implements the processing 
loop for window and control messages received for the form instance. It 
extends the method from the ancestor class to provide form-specific support 
for messages including:
</p>
<dl>
<dt>LM_SETFOCUS</dt>
<dd>
Chooses the active control for the form at run-time, and ensures that the 
control is focused.
</dd>
<dt>CM_EXIT</dt>
<dd>
Deactivates a HostDockSite (when assigned) when the form loses focus.
</dd>
<dt>CM_ENTER</dt>
<dd>
Activates a HostDockSite (when assigned) when the form receives focus.
</dd>
<dt>LM_WINDOWPOSCHANGING</dt>
<dd>
Suppresses move or resize window messages as needed for the Position or 
BorderStyle properties.
</dd>
<dt>LM_DRAWITEM</dt>
<dd>
Handles owner-drawn Menu items for the item and command in the message.
</dd>
</dl>
<p>
WndProc calls the inherited method to handle control-specific messages not 
handled in the method.
</p>
</descr>
</element>

<element name="TCustomForm.VisibleIsStored">
<short>Implements the storage specifier for the Visible property.</short>
<descr>
<p>
Returns the value in the Visible property.
</p>
</descr>
<seealso>
<link id="TCustomForm.Visible"/>
</seealso>
</element>
<element name="TCustomForm.VisibleIsStored.Result">
<short><b>True</b> when the Visible property is set to <b>True</b>.</short>
</element>

<element name="TCustomForm.DoAutoSize" link="#lcl.controls.TControl.DoAutoSize"/>

<element name="TCustomForm.SetAutoSize">
<short>Sets the value for the AutoSize property.</short>
<descr>
<p>
<var>SetAutoSize</var> is an overridden method in <var>TCustomForm</var> used 
to set the value for the <var>AutoSize</var> property.
</p>
<p>
When set to <b>True</b>, it updates <var>FormState</var> to exclude the value 
<var>fsDisableAutoSize</var>, and modifies <var>Position</var> to use 
<var>poDefault</var> when it contains <var>poDefaultPosOnly</var>.
</p>
</descr>
<seealso>
<link id="TScrollingWinControl.SetAutoSize"/>
<link id="TCustomForm.FormState"/>
<link id="TCustomForm.Position"/>
<link id="#lcl.controls.TControl.AutoSize">TControl.AutoSize</link>
</seealso>
</element>
<element name="TCustomForm.SetAutoSize.Value">
<short>New value for the property.</short>
</element>

<element name="TCustomForm.SetAutoScroll">
<short>Sets the value for the AutoScroll property.</short>
<descr>
<p>
<var>SetAutoScroll</var> is an overridden method in <var>TCustomForm</var> 
used to set the value for the <var>AutoScroll</var> property. It calls the 
inherited method to apply the new property value, but includes an additional 
test for the <var>BorderStyle</var> used on the form. AutoScroll 
<b>cannot</b> be set to <b>True</b> when BorderStyle has a value other than 
<var>bsSizeable</var> or <var>bsSizeToolWin</var>.
</p>
</descr>
<seealso>
<link id="TCustomForm.AutoScroll"/>
<link id="TCustomForm.BorderStyle"/>
<link id="TScrollingWinControl.SetAutoScroll"/>
</seealso>
</element>
<element name="TCustomForm.SetAutoScroll.Value">
<short>New value for the property.</short>
</element>

<element name="TCustomForm.SetScaled">
<short>Sets the value for the Scaled property.</short>
<descr>
<p>
<var>SetScaled</var> is an overridden method in <var>TCustomForm</var> used 
to set the value for the <var>Scaled</var> property. It calls the inherited 
method on entry. At run-time, the <var>AutoScale</var> method is called when 
the new property value is set to <b>True</b> and differs from the existing 
property value.
</p>
</descr>
<seealso>
<link id="TCustomForm.AutoScale"/>
<link id="TCustomDesignControl.Scaled"/>
<link id="TCustomDesignControl.SetScaled"/>
<link id="TApplication.Scaled"/>
</seealso>
</element>
<element name="TCustomForm.SetScaled.AScaled">
<short>New value for the property.</short>
</element>

<element name="TCustomForm.DoAddActionList">
<short>
Adds the specified list of actions to the ActionList for the form.
</short>
<descr>
<p>
Ensures that the <var>TList</var> instance is allocated for the internal 
member. Calls the <var>IndexOf</var> method in the list to locate the value 
in the <var>List</var> argument. If it is not found, the <var>Add</var> 
method for the list is called to append the value.
</p>
<p>
DoAddActionList is called from the <var>Notification</var> method when a 
<var>TCustomActionList</var> instance is added to the form (during LCL 
streaming).
</p>
</descr>
<seealso>
<link id="TCustomForm.DoRemoveActionList"/>
</seealso>
</element>
<element name="TCustomForm.DoAddActionList.List">
<short>List with actions added to the form instance.</short>
</element>

<element name="TCustomForm.DoRemoveActionList">
<short>Removes the specified list of actions from the internal list.</short>
<descr>
<p>
Calls the <var>Remove</var> method in the <var>TList</var> member to delete 
the <var>TCustomActionList</var> specified in <var>List</var>.
</p>
<p>
DoRemoveActionList is called from the <var>Notification</var> method when a 
<var>TCustomActionList</var> instance is removed from the form.
</p>
</descr>
<seealso>
<link id="TCustomForm.DoAddActionList"/>
<link id="TCustomForm.Notification"/>
<link id="#lcl.actnlist.TCustomActionList">TCustomActionList</link>
</seealso>
</element>
<element name="TCustomForm.DoRemoveActionList.List">
<short>TCustomActionList instance removed in the method.</short>
</element>

<element name="TCustomForm.ProcessResource">
<short>Loads resources needed for the form.</short>
<descr>
<p>
Calls <var>InitResourceComponent</var> to load resources for the current form 
instance.
</p>
</descr>
<errors>
Raises an <var>EResNotFound</var> exception if 
<var>RequireDerivedFormResource</var> is set for the application, and a 
resource is not found for the form.
</errors>
<seealso/>
</element>

<element name="TCustomForm.BeginAutoDrag">
<short>Re-implements the auto-drag behavior for forms.</short>
<descr>
<p>
<var>BeginAutoDrag</var> is an overridden method in <var>TCustomForm</var> 
which re-implements the auto-drag and dock behavior for form instances. It 
allows form dragging only if it is docked (HostDockSite is assigned) to a 
site where a DockManager is not used (UseDockManager is <b>False</b>). It 
does <b>not</b> call the inherited method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.HostDockSite">TControl.HostDockSite</link>
<link id="#lcl.controls.TWinControl.UseDockManager">TWinControl.UseDockManager</link>
</seealso>
</element>

<element name="TCustomForm.DoDock">
<short>Docks or undocks the form in the specified dock site.</short>
<descr>
<p>
<var>DoDock</var> is an overridden method used to dock / undock the form 
instance in the dock site specified in <var>NewDockSite</var>. When 
NewDockSite is unassigned (contains <b>Nil</b>), the form instance is 
undocked from the host dock site.
</p>
<p>
<var>ARect</var> contains the bounds for the new dock site after resizing and 
alignment (when needed).
</p>
<p>
When a form is docked, its <var>BorderStyle</var> is set to 
<var>bsNone</var>. DoDock ensures that the value in the BorderStyle property 
is saved or restored for the form when the value in <var>HostDockSite</var> 
is changed. If NewDockSite has been assigned, the value in BorderStyle is 
saved to an internal member. If NewDockSite is Nil, the value in BorderStyle 
is restored from the internal member.
</p>
<remark>
Changes needed for the <var>Align</var> property must be handled in the 
DockManager.
</remark>
<p>
DoDock calls the inherited method prior to exit.
</p>
<p>
DoDock is called from the Dock method in an ancestor class.
</p>
</descr>
<seealso>
<link id="TCustomForm.BorderStyle"/>
<link id="#lcl.controls.TControl.Dock">TControl.Dock</link>
<link id="#lcl.controls.TControl.DoDock">TControl.DoDock</link>
<link id="#lcl.controls.TControl.HostDockSite">TControl.HostDockSite</link>
</seealso>
</element>
<element name="TCustomForm.DoDock.NewDockSite">
<short>New dock site for the form instance.</short>
</element>
<element name="TCustomForm.DoDock.ARect">
<short>
Rectangle with the bounds for the new dock site after resizing and alignment.
</short>
</element>

<element name="TCustomForm.GetFloating">
<short>Gets the value for the Floating properties.</short>
<descr/>
<seealso>
<link id="#lcl.controls.TControl.Floating">TControl.Floating</link>
<link id="#lcl.controls.TControl.GetFloating">TControl.GetFloating</link>
</seealso>
</element>
<element name="TCustomForm.GetFloating.Result">
<short>Value for the property.</short>
</element>

<element name="TCustomForm.GetDefaultDockCaption">
<short>Default caption displayed when the form is docked.</short>
<descr>
<p>
<var>GetDefaultDockCaption</var> is an overridden <var>String</var> function 
used to get the default caption displayed when the form is docked. 
GetDefaultDockCaption returns the value in the <var>Caption</var> property.
</p>
<p>
Called from the <var>GetDockCaption</var> method in an ancestor class. The 
value is passed as an argument to the <var>OnGetDockCaption</var> event 
handler.
</p>
</descr>
<seealso>
<link id="TCustomForm.Caption"/>
<link id="#lcl.controls.TWinControl.GetDockCaption">TWinControl.GetDockCaption</link>
<link id="#lcl.controls.TWinControl.OnGetDockCaption">TWinControl.OnGetDockCaption</link>
</seealso>
</element>
<element name="TCustomForm.GetDefaultDockCaption.Result">
<short>Default caption displayed when the form is docked.</short>
</element>

<element name="TCustomForm.CMActionExecute">
<short>Handles the CM_ACTIONEXECUTE control message.</short>
<descr>
<p>
Calls <var>DoExecuteAction</var> to execute the <var>TBasicAction</var> 
passed as an argument in <var>Message</var>. Sets the <var>Result</var> 
member in Message to <b>1</b> to indicate that the action was performed in 
the method.
</p>
<p>
Called when a <var>CM_ACTIONEXECUTE</var> control message dispatched in the 
<var>WndProc</var> method in <var>TApplication</var> is processed for the 
form instance.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.CMActionExecute.Message">
<short>Control message examined in the method.</short>
</element>

<element name="TCustomForm.CMActionUpdate">
<short>Handles the CM_ACTIONUPDATE control message.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomForm.CMActionUpdate.Message">
<short>Control message examined in the method.</short>
</element>

<element name="TCustomForm.DoExecuteAction">
<short>Asks all applicable components to execute an action.</short>
<descr>
<p>
First, the <var>ActiveControl</var> and the <var>Form</var> itself are asked 
to execute the action. Then, all child components are tried. The search stops 
as soon as the action is handled.
</p>
</descr>
</element>
<element name="TCustomForm.DoExecuteAction.Result">
<short><b>True</b> when the action was handled.</short>
</element>
<element name="TCustomForm.DoExecuteAction.ExeAction">
<short>Action to execute.</short>
</element>

<element name="TCustomForm.DoUpdateAction">
<short>Tries all applicable components to update an action.</short>
<descr/>
<seealso>
<link id="#lcl.forms.TCustomForm.DoExecuteAction">DoExecuteAction</link>
</seealso>
</element>
<element name="TCustomForm.DoUpdateAction.Result">
<short><b>True</b> when the action was updated.</short>
</element>
<element name="TCustomForm.DoUpdateAction.TheAction">
<short>
Action instance passed as an argument and updated by component(s) on the form.
</short>
</element>

<element name="TCustomForm.UpdateActions">
<short>Asks all components on the form to update their actions.</short>
<descr>
<p>
<var>UpdateActions</var> is a procedure used to update actions assigned to 
components on the form instance. No actions are performed in the method at 
design-time, or when the <var>Showing</var> property is set to <b>False</b> 
in the form instance.
</p>
<p>
UpdateActions applies updates for an assigned <var>Menu</var> in the form 
instance. Items on the Menu update their actions when the menu item is 
visible. Finally, all controls on the form instance are recursively searched; 
controls which are action clients update their actions when they are visible.
</p>
<p>
Update actions is called for each of the custom forms when the application 
enters an idle state, and occurs after processing queued asynchronous calls 
and the <var>OnIdle</var> event handler in the application.
</p>
</descr>
<seealso>
<link id="TCustomForm.Visible"/>
<link id="TCustomForm.Menu"/>
<link id="TApplication.OnIdle"/>
<link id="TApplication.Idle"/>
<link id="#lcl.controls.TWinControl.Showing">TWinControl.Showing</link>
<link id="#lcl.controls.TControl.InitiateAction">TControl.InitiateAction</link>
</seealso>
</element>

<element name="TCustomForm.ClientHandle">
<short>The Handle of the MDIForm client (container for MDI children).</short>
<descr>
</descr>
<seealso>
</seealso>
</element>

<element name="TCustomForm.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance. 
Create sets the default values for internal members used in the form 
instance, and calls the <var>CreateNew</var> method to configure the visible 
aspects of the form instance. At run-time, it also calls 
<var>ProcessResource</var> to load the form content from its resource file.
</p>
</descr>
<seealso>
<link id="TCustomForm.CreateNew"/>
<link id="TCustomForm.ProcessResource"/>
<link id="TCustomDesignControl.Create"/>
</seealso>
</element>
<element name="TCustomForm.Create.AOwner">
<short>Owner for the class instance.</short>
</element>

<element name="TCustomForm.CreateNew">
<short>Creates a form instance without a resource (.lfm) file.</short>
<descr>
<p>
<var>CreateNew</var> is an alternate constructor for the class instance. 
CreateNew is used to create a new <var>TCustomForm</var> instance which is 
not loaded from a resource file (.lfm). It performs actions to initialize 
properties for the form instance, including:
</p>
<ul>
<li>Sets the FormState to fsFirstShow and calls BeginFormUpdate.</li>
<li>Sets the default BorderIcons for the form.</li>
<li>Sets the FormStyle, ControlStyle, and BorderStyle for the form.</li>
<li>Calls the inherited Create constructor.</li>
<li>Sets the default bounds for the form instance.</li>
<li>Sets Visible to <b>False</b>.</li>
<li>Sets WindowState to wsNormal.</li>
<li>
Allocates resources for the Icon property but does not assign a 
bitmap.
</li>
<li>Sets the default value for Color.</li>
<li>
Calls Screen.AddForm to register the form instance on the current 
screen.
</li>
<li>
Allocates resources for the SnapOptions property.
</li>
</ul>
</descr>
<seealso/>
</element>
<element name="TCustomForm.CreateNew.AOwner">
<short>Owner for the new class instance.</short>
</element>
<element name="TCustomForm.CreateNew.Num">
<short>Ignored in the current implementation.</short>
</element>

<element name="TCustomForm.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance.
</p>
<p>
<var>Destroy</var> ensures that unhandled queued asynchronous calls in the 
<var>Application</var> instance are removed for the form.
</p>
<p>
<var>Destroy</var> disables auto-sizing to prevent resize messages while the 
form is being freed. Destroy frees resources allocated for the form instance, 
including its Icon and any allocated icon handles. The form instance is 
removed from Screen, and its ActionLists and SnapOptions are freed. Destroy 
frees all form handlers added to the class instance.
</p>
<p>
Destroy calls the inherited destructor prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="TCustomForm.Icon"/>
<link id="Application"/>
<link id="Screen"/>
<link id="TApplication"/>
<link id="TScreen"/>
</seealso>
</element>

<element name="TCustomForm.AfterConstruction">
<short>
Performs actions when the form has been created and loaded from its resource 
file.
</short>
<descr>
<p>
Implements the virtual method defined in the ancestor class.
</p>
<p>
Called after the form instance has been created and loaded from its resource 
file (when needed).
</p>
<p>
Ensures that the initial bounds for the form are set to the values in the 
<var>Left</var>, <var>Top</var>, <var>Bottom</var>, and <var>Right</var> 
properties. Calls <var>DoCreate</var> to signal the <var>OnCreate</var> event 
handler (when assigned). Ends the form update started in the 
<var>CreateNew</var> constructor. Ensures that scaling and automatic layout 
are applied to form instance (if needed) when <var>Scaled</var> is enabled 
for both the form instance and the <var>Application</var>.
</p>
</descr>
<seealso>
<link id="#rtl.system.TObject.AfterConstruction">TObject.AfterConstruction</link>
</seealso>
</element>

<element name="TCustomForm.BeforeDestruction">
<short>Performs actions before the form instance is physically freed.</short>
<descr>
<p>
Calls the inherited method on entry to signal any 
<var>OnBeforeDestruction</var> event handlers assigned to the form instance.
</p>
<p>
Removes the form instance from the list of focused forms in the 
<var>Screen</var> singleton. At run-time, the <var>Hide</var> method is 
called when the form is not a MDI child form in the application. If the form 
is a MDI child form, merged menu items are removed from the menu in the 
<var>MainForm</var> for the <var>Application</var>.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.BeforeDestruction">TControl.BeforeDestruction</link>
</seealso>
</element>

<element name="TCustomForm.GetControlClassDefaultSize" link="#lcl.controls.TControl.GetControlClassDefaultSize"/>
<element name="TCustomForm.GetControlClassDefaultSize.Result"/>

<element name="TCustomForm.BigIconHandle">
<short>
Returns the handle for the large icon on the form or in the application.
</short>
<seealso>
<link id="TCustomForm.Icon"/>
<link id="TApplication.BigIconHandle"/>
</seealso>
</element>
<element name="TCustomForm.BigIconHandle.Result">
<short>
HICON Instance with the handle for the icon, or 0 (zero) when not available.
</short>
</element>

<element name="TCustomForm.Close">
<short>Closes the form.</short>
<descr>
<p>
Close does not necessarily destroy the form. Modal forms only are hidden. 
When the MainForm is closed, the application terminates.
</p>
<p>
An <var>OnCloseQuery</var> handler can refuse to allow the form to close.
</p>
</descr>
<seealso>
<link id="TCustomForm.CloseQuery"/>
</seealso>
</element>

<element name="TCustomForm.CloseQuery">
<short>Asks the OnCloseQuery handler whether the form can be closed.</short>
<descr/>
<seealso>
<link id="TCustomForm.OnCloseQuery"/>
<link id="TCustomForm.FormStyle"/>
<link id="TCustomForm.MDIChildren"/>
<link id="TFormStyle"/>
</seealso>
</element>
<element name="TCustomForm.CloseQuery.Result">
<short>
Returns <b>True</b> if the event handler (or MDI child forms) allow the form 
to be closed. The default return value is <b>True</b>.
</short>
</element>

<element name="TCustomForm.DefocusControl">
<short>Updates ActiveControl if it is to be de-focused.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomForm.DefocusControl.Control">
<short>The control which will lose focus.</short>
</element>
<element name="TCustomForm.DefocusControl.Removing">
<short><b>True</b> if the control is no longer the ActiveControl.</short>
</element>

<element name="TCustomForm.DestroyWnd" link="#lcl.controls.TWinControl.DestroyWnd"/>

<element name="TCustomForm.EnsureVisible">
<short>
Ensures that the form is fully visible, and optionally brings it in front of 
all other forms.
</short>
<descr/>
<seealso/>
</element>
<element name="TCustomForm.EnsureVisible.AMoveToTop">
<short>Bring the form to front if <b>True</b>.</short>
</element>

<element name="TCustomForm.FocusControl">
<short>
Gives focus to the specified control.
</short>
<descr>
<p>
<var>FocusControl</var> is a procedure used to give focus to the control 
specified in <var>WinControl</var>. FocusControl ensures that the 
<var>ActiveControl</var> property is updated when needed, and may raise an 
exception if WinControl cannot be focused. If the form instance was not 
already <var>Active</var>, the <var>SetFocus</var> method is called.
</p>
</descr>
<errors>
If the control or one of its parents is not visible or disabled, an exception 
will be raised (in <var>SetFocus</var>).
</errors>
<seealso/>
</element>
<element name="TCustomForm.FocusControl.WinControl">
<short>The control receiving the focus.</short>
</element>

<element name="TCustomForm.FormIsUpdating">
<short>
Indicates if the BeginFormUpdate method has been called without a 
corresponding EndFormUpdate method call.
</short>
<descr>
<p>
The method is used in <var>TControl</var> descendants to determine if the 
parent form for the control is already rendering changes to its content.
</p>
</descr>
<seealso>
<link id="TCustomForm.BeginFormUpdate"/>
<link id="TCustomForm.EndFormUpdate"/>
<link id="#lcl.controls.TControl.FormIsUpdating">TControl.FormIsUpdating</link>
</seealso>
</element>
<element name="TCustomForm.FormIsUpdating.Result">
<short>
Returns <b>True</b> when the internal update counter for the form contains a 
positive
non-zero value.
</short>
</element>

<element name="TCustomForm.GetFormImage">
<short>
Gets the display content for the form as an image.
</short>
<descr>
<p>
<var>GetFormImage</var> is an overloaded method used to capture the display 
content for the current form instance as an image type. The overloaded variants 
allow the image to be passed as a <var>TCustomBitmap</var> argument, or to 
create a <var>TBitmap</var> instance used as the return value.
</p>
<p>
The procedure variant includes the <var>ABitmap</var> argument with the bitmap 
instance where the image for the form is stored. It sets the size of the bitmap 
to the ClientWidth and ClientHeight for the form instance. The Handle for the 
form is used to get the display rectangle for its window, and it is drawn to 
the Canvas in the bitmap instance. This variant allows one of the other 
supported images formats (TCustomBitmap descendants like TJpegImage, 
TPortableNetworkGraphic, et. al.) to be passed in The ABitmap argument. ABitmap 
is allocated and freed in the calling routine.
</p>
<p>
For example:
</p>
<code>
procedure TForm1.Button1Click(Sender: TObject);
var
  jpg: TJpegImage;
begin
  jpg := TJpegImage.Create;
  try
    GetFormImage(jpg);
    Image1.Picture.Assign(jpg);
  finally
    jpg.Free;
  end;
end;
</code>
<p>
The function variant creates a new <var>TBitmap</var> instance which is used as 
the return value. It calls the overloaded variant to get the content in the 
TBitmap instance. The return value must be managed by the calling routine; the 
instance must be explicitly freed to avoid a memory leak. The return value can 
be <b>Nil</b> if an Exception was raised and handled in the method. This 
variant is compatible with the signature used in the Delphi VCL; the overloaded 
procedure leads to clearer code and avoids a potential memory leak.
</p>
<p>
For example:
</p>
<code>
procedure TForm1.Button1Click(Sender: TObject);
var
  bmp: TBitmap;
begin
  bmp := GetFormImage;
  try
    Image1.Picture.Assign(bmp);
  finally
    bmp.Free;
  end;
end;
</code>
</descr>
<version>
Modified in LCL version 3.6 to include the overloaded variant which stores the 
image to an existing bitmap instance.
</version>
<seealso>
<link id="#lcl.graphics.TCustomBitmap">TCustomBitmap</link>
<link id="#lcl.graphics.TBitmap">TBitmap</link>
<link id="#lcl.graphics.TJpegImage">TJpegImage</link>
<link id="#lcl.graphics.TPortableNetworkGraphic">TTPortableNetworkGraphic</link>
<link id="#lcl.controls.TWinControl.GetClientOrigin">TWinControl.GetClientOrigin</link>
<link id="#lcl.controls.TWinControl.PaintTo">TWinControl.PaintTo</link>
<link id="#lcl.controls.TControl.ClientHeight">TControl.ClientHeight</link>
<link id="#lcl.controls.TControl.ClientWidth">TControl.ClientWidth</link>
<link id="#lcl.lclintf.GetWindowRect">GetWindowRect</link>
</seealso>
</element>
<element name="TCustomForm.GetFormImage.Result">
<short>
Bitmap created in the method with the image for the form.
</short>
</element>

<element name="TCustomForm.GetRolesForControl">
<short>
Gets the role(s) for the control in a modal form (default or cancel button).
</short>
<descr/>
<seealso>
<link id="TCustomForm.DefaultControl"/>
<link id="TCustomForm.CancelControl"/>
<link id="#lcl.controls.TControlRolesForForm">TControlRolesForForm</link>
<link id="#lcl.controls.TControlRoleForForm">TControlRoleForForm</link>
</seealso>
</element>
<element name="TCustomForm.GetRolesForControl.Result">
<short>
Set of TControlRoleForForm values for the specified control. The default return value is an empty set ([]).
</short>
</element>
<element name="TCustomForm.GetRolesForControl.AControl">
<short>
TControl instance examined and compared to the values for the form instance.
</short>
</element>

<element name="TCustomForm.GetRealPopupParent">
<short>
Gets the form that is the effective parent for the pop-up, dialog, or splash 
screen.
</short>
<descr/>
<seealso/>
</element>
<element name="TCustomForm.GetRealPopupParent.Result">
<short>
Form instance that is the parent for the pop-up form, or Nil for a splash 
screen.
</short>
</element>

<element name="TCustomForm.Hide" link="#lcl.controls.TControl.Hide"/>

<element name="TCustomForm.IntfDropFiles">
<short>
Invokes the <link id="TCustomForm.OnDropFiles">OnDropFiles</link> handler of 
the form. This function is called by the LCL interface.
</short>
<descr>
<p>
<var>OnDropFiles</var> is signalled when the user drops one or more dragged 
files onto one of forms in the application. This event should be fired first 
for the target form (or main form if drop target is unknown), and then for the 
application instance.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.IntfDropFiles.FileNames">
<short>
Array of file names passed as an argument to the OnDropFiles event handler.
</short>
</element>

<element name="TCustomForm.IntfHelp">
<short>
Shows help for a control or menu item. This function is called by the LCL 
interface.
</short>
<descr>
<p>
Calls the ShowHelp method in AComponent when the argument is derived from 
TControl.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.ShowHelp">TControl.ShowHelp</link>
</seealso>
</element>
<element name="TCustomForm.IntfHelp.AComponent">
<short>
TComponent instance for the help displayed in the method.
</short>
</element>

<element name="TCustomForm.IsShortcut">
<short>
Determines whether the specified message contains a shortcut or accelerator 
key.
</short>
<descr>
<p>
Checks form components to determine whether the specified message is a 
shortcut or accelerator key used on the form. This includes signalling the 
<var>OnShortcut</var> event handler (when assigned), calling 
<var>IsShortCut</var> for the form <var>Menu</var>, or calling IsShortcut for 
the <var>ActionLists</var> for the form instance.
</p>
<p>
Returns <b>True</b> when the specified <var>Message</var> contains a 
shortcut or accelerator key. Returns <b>False</b> for the following 
conditions:
</p>
<ul>
<li>The MainForm has not been assigned in the application.</li>
<li>The MainForm is not the ActiveCustomForm for the application.</li>
<li>The MainForm does not have a valid handle.</li>
<li>The MainForm is not enabled.</li>
<li>
Message does not contain a key code that is a shortcut for the form instance in 
Application.MainForm.
</li>
</ul>
</descr>
<seealso/>
</element>
<element name="TCustomForm.IsShortcut.Result">
<short><b>True</b> when the specified Key was handled as a shortcut.</short>
</element>
<element name="TCustomForm.IsShortcut.Message">
<short>Control message examined in the method.</short>
</element>

<element name="TCustomForm.MakeFullyVisible">
<short>Resizes the form for the specified monitor.</short>
<descr>
<p>
<var>MakeFullyVisible</var> is a method used to make the form instance fully 
visible on the specified monitor. It ensures the form fits within the 
required bounds for the monitor or work area. If the form is too wide or too 
tall, the form bounds are adjusted so that the form fits within the required 
bounds. This prevents the form from being partially visible on multiple 
monitors.
</p>
<p>
<var>AMonitor</var> is the <var>TMonitor</var> instance where the form is 
displayed. If AMonitor is not specified (contains <b>Nil</b>), the value in 
the <var>Monitor</var> property is used.
</p>
<p>
<var>UseWorkarea</var> indicates whether the work area for the target monitor 
is used. When set to <b>True</b>, the form uses the bounds established for 
the work area instead of the physical monitor. The default value for the 
parameter is <b>True</b>.
</p>
<remark>
The default value for UseWorkArea was changed from <b>False</b> to 
<b>True</b> in LCL version 2.3.0. This is the more sensible default value, 
and it is also Delphi-compatible.
</remark>
</descr>
<seealso/>
</element>
<element name="TCustomForm.MakeFullyVisible.AMonitor">
<short>
The monitor where the form is displayed, or Nil to use the design-time 
monitor.
</short>
</element>
<element name="TCustomForm.MakeFullyVisible.UseWorkarea">
<short>
When <b>True</b> the form is adjusted to the bounds for the WorkArea for the 
monitor. Otherwise, the form is clipped to the monitor bounds.
</short>
</element>

<element name="TCustomForm.AutoSizeDelayedHandle">
<short>
Returns <b>True</b> if an auto-size action should be skipped when a form 
handle is not available.
</short>
<descr>
<p>
<var>AutoSizeDelayedHandle</var> is an overridden <var>Boolean</var> function 
used to determine if an <var>AutoSize</var> action must be deferred due to a 
missing form <var>Handle</var>.
</p>
<p>
When either <var>Parent</var> or <var>ParentWindow</var> has been assigned, 
the form is treated like a <var>TWinControl</var>; the return value is set to 
the value from the inherited method.
</p>
<p>
If one of the values is unassigned, the return value is always set to 
<b>False</b>. The form has its own handle, and the resize action does not 
need to be delayed.
</p>
<p>
Called from the <var>AutoSizeDelayed</var> method in an ancestor class.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.AutoSizeDelayedHandle.Result">
<short>
<b>True</b> if an auto-size action should be skipped when a form handle is 
not available.
</short>
</element>

<element name="TCustomForm.GetPreferredSize" link="#lcl.controls.TControl.GetPreferredSize"/>
<element name="TCustomForm.GetPreferredSize.PreferredWidth"/>
<element name="TCustomForm.GetPreferredSize.PreferredHeight"/>
<element name="TCustomForm.GetPreferredSize.Raw"/>
<element name="TCustomForm.GetPreferredSize.WithThemeSpace"/>

<element name="TCustomForm.Release">
<short>
Marks the form for destruction.
</short>
<descr>
<p>
<var>Release</var> is a procedure used to request destruction of the current 
form instance. 
</p>
<p>
Release is called from the ShowModal method when a value other than mrNone is 
returned in the ModalResult property - including when the Application has been 
terminated while the dialog is active. While the method is public (just like in 
Delphi), it is not meant to be called from application code; ShowModal handles 
freeing the form instance in its processing loop. Calling Release when the form 
instance has already been freed in ShowModal raises an Access Violation (AV). 
You can use Close / OnClose to set the form close action to caFree to force 
the dialog to be closed and freed.
</p>
<p>
<var>Release</var> checks for a <var>TApplication</var> instance in the 
<var>Application</var> singleton. If it is assigned (contains a value other 
than <b>Nil</b>), its <var>ReleaseComponent</var> method is called to free the 
form instance by posting an asynchronous application message. When 
<var>Application</var> is not assigned, the <var>Free</var> method is called to 
destroy the form instance.
</p>
</descr>
<seealso>
<link id="TCustomForm.ShowModal"/>
<link id="TCustomForm.ModalResult"/>
<link id="TCustomForm.Close"/>
<link id="TCustomForm.OnClose"/>
<link id="TCustomForm.Destroy"/>
<link id="TApplication.ReleaseComponent"/>
<link id="Application"/>
<link id="TCloseAction"/>
<link id="#fcl.custapp.TCustomApplication.Terminated">TCustomApplication.Terminated</link>
</seealso>
</element>

<element name="TCustomForm.CanFocus">
<short><b>True</b> when the form can receive focus.</short>
<descr>
<p>
<var>CanFocus</var> is an overridden <var>Boolean</var> function which 
indicates if the form instance can receive focus. The return value is 
<b>True</b> when the form is <var>Visible</var> and <var>Enabled</var>, or 
the inherited <var>CanFocus</var> method returns <b>True</b>.
</p>
<p>
<var>CanFocus</var> is used in the implementation of various methods in the 
class, including: <var>SetWindowFocus</var>, <var>UpdateShowing</var>, 
<var>SetActiveControl</var>, and <var>Loaded</var>.
</p>
</descr>
<seealso>
</seealso>
</element>
<element name="TCustomForm.CanFocus.Result">
<short><b>True</b> when the form can receive focus in the application.</short>
</element>

<element name="TCustomForm.SetFocus" link="#lcl.controls.TWinControl.SetFocus"/>

<element name="TCustomForm.SetFocusedControl">
<short>Handles a focus change for a control (enter/exit messages).</short>
<descr/>
<seealso/>
</element>
<element name="TCustomForm.SetFocusedControl.Result">
<short><b>False</b> when the focused control cannot be changed.</short>
</element>
<element name="TCustomForm.SetFocusedControl.Control">
<short>The control with focus on the form.</short>
</element>

<element name="TCustomForm.SetRestoredBounds">
<short>Sets the bounds for the restored control.</short>
<descr>
<p>
Ensures that the parameter values are used in the form instance. No actions 
are performed in the method when <var>ALeft</var>, <var>ATop</var>, 
<var>AWidth</var>, and <var>AHeight</var> are already assigned to the 
corresponding properties in the form instance.
</p>
<p>
Temporarily sets <var>WindowState</var> to <var>wsNormal</var>, and calls 
<var>SetBounds</var> to apply the parameter values to the form instance. 
Calls <var>MoveToDefaultPosition</var> when ADefaultPosition is <b>True</b>. 
Restores WindowState to its original value, and updates the values for the 
<var>RestoredLeft</var>, <var>RestoredRight</var>, <var>RestoredWidth</var>, 
and <var>RestoredHeight</var> properties.
</p>
<p>
Called from the <var>AfterConstruction</var> method prior to signalling the 
<var>OnCreate</var> event handler and applying the automatic layout policy 
for the form instance.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.SetRestoredBounds.ALeft">
<short>Value to restore to the Left property for the form.</short>
</element>
<element name="TCustomForm.SetRestoredBounds.ATop">
<short>Value to restore to the Top property for the form.</short>
</element>
<element name="TCustomForm.SetRestoredBounds.AWidth">
<short>Value to restore to the Width property for the form.</short>
</element>
<element name="TCustomForm.SetRestoredBounds.AHeight">
<short>Value to restore to the Height property for the form.</short>
</element>
<element name="TCustomForm.SetRestoredBounds.ADefaultPosition">
<short>
<b>True</b> if the form is moved to the monitor and location in the Position 
property.
</short>
</element>

<element name="TCustomForm.Show">
<short>Displays the form instance with support for High DPI scaling.</short>
<descr>
<p>
<var>Show</var> is a method used to display the form in an LCL application. 
It re-implements the method defined in an ancestor class, and does <b>not</b> 
call the inherited method.
</p>
<p>
Show ensures that scaling is performed using the automatic layout policy for 
the form instance. The <var>PixelsPerInch</var> setting for the 
<var>Monitor</var> is applied (when needed) by calling the 
<var>AutoAdjustLayout</var> method. This action is performed when both the 
<var>Application</var> and the form instance have their <var>Scaled</var> 
properties set to <b>True</b>.
</p>
<p>
Show sets the value in the <var>Visible</var> property to <b>True</b>, and 
calls the <var>ShowWindow</var> routine in the LCL interface at run-time 
using the <var>Handle</var> and <var>WindowState</var> for the form. The 
<var>BringToFront</var> method is called to apply the Z-Order for the form 
instance and its siblings.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Show">TControl.Show</link>
</seealso>
</element>

<element name="TCustomForm.ShowModal">
<short>
Displays the form as a modal dialog.
</short>
<descr>
<p>
<var>ShowModal</var> is the method used to show the form in a modal state and 
wait until it is closed by the user or by the program. Modal state means that 
neither the user nor the program can switch back to the previously focused form 
until the method is exited.
</p>
<p>
Before the dialog form is displayed and executed, the following actions are 
performed:
</p>
<ul>
<li>An active drag operation is cancelled.</li>
<li>An active pop-up menu is closed.</li>
<li>An active capture is killed and released in the widget instance.</li>
</ul>
<p>
The form must be <var>Enabled</var> with its <var>Visible</var> property set 
to <b>False</b> when calling ShowModal. It cannot already have fsModal in its 
FormState property, and it cannot be a MDI Child form. An 
<var>EInvalidOperation</var> exception is raised if the form cannot be
displayed as a modal form for any of these reasons.
</p>
<p>
ShowModal updates the Application instance by calling its ModalStarted method. 
This maintains its internal members and signals any OnModalBegin event 
handlers assigned for the application. The application switches to modal state 
until ShowModal is completed. The ModalFinished method for the Application is 
called to end the modal state prior to exit.
</p>
<p>
ShowModal implements its own message processing loop. It calls 
AppProcessMessages in the widgetset to process messages and events for the 
form. If an exception occurs, it is caught in the processing loop. If 
CaptureExceptions is enabled for the Application instance, its HandleException 
is called. If CaptureExceptions is not enabled in the application, the 
exception is re-raised.
</p>
<p>
ShowModal sets the value in the ModalResult property to indicate the action 
performed to close the modal dialog form. mrNone indicates that the form has 
not been (or should not be) closed. mrCancel indicates the Cancel button was 
pressed, the form was closed using a window decoration, or the application
was Terminated while ShowModal was running.
</p>
<p>
Any value in ModalResult other than mrNone causes DoClose to be called where  
CloseQuery / OnCloseQuery / OnClose are used to determine whether the dialog 
can be closed and the close action performed for the form instance. If the 
close action is caNone, ModalResult is set to mrNone to continue the message 
processing loop. caFree in the close action causes the Release method to be 
called to free the form instance. There is no need to call the Release method 
in application code; it is handled in the message processing loop in the 
method. The OnClose event can be used to return caFree as the close action 
which forces the dialog form to be closed.
</p>
<p>
When the message processing loop has been completed, the form instance is 
hidden and other enabled forms in the application are restored. The previously 
focused form is also restored.
</p>
<p>
ShowModal uses the value in ModalResult as the return value for the method.
</p>
</descr>
<errors>
<p>
Raises an <var>EInvalidOperation</var> exception if the form cannot be 
displayed as a modal form.
</p>
</errors>
<version>
Modified in LCL version 3.0.0 to allow the application to handle an exception 
when its CaptureExceptions property is enabled.
</version>
<seealso>
<link id="TCustomForm.ModalResult"/>
<link id="TCustomForm.FormState"/>
<link id="TCustomForm.CloseQuery"/>
<link id="TCustomForm.OnCloseQuery"/>
<link id="TCustomForm.OnClose"/>
<link id="TCustomForm.DoClose"/>
<link id="TApplication.ModalStarted"/>
<link id="TApplication.ModalFinished"/>
<link id="TApplication.CaptureExceptions"/>
<link id="TApplication.HandleException"/>
<link id="TModalResult"/>
<link id="#lcl.menus.ActivePopupMenu">ActivePopupMenu</link>
<link id="#fcl.custapp.TCustomApplication.Terminated">TCustomApplication.Terminated</link>
</seealso>
</element>
<element name="TCustomForm.ShowModal.Result">
<short>
The modal result for the dialog.
</short>
</element>

<element name="TCustomForm.ShowOnTop">
<short>Displays the form in front of all other forms.</short>
<descr>
<p>
Makes the form <var>Visible</var> and moves it to the top of the Z-Order. 
<var>WindowState</var> is changed to <var>wsNormal</var> if the form is 
currently in a minimized state (<var>wsMinimized</var>). Sets the value in 
Visible to <b>True</b>, and calls <var>BringToFront</var> to move the form to 
the top of the Z-Order among its siblings.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomForm.SmallIconHandle">
<short>
Returns (and optionally creates) the Handle for the small Icon used for the 
form.
</short>
<seealso>
<link id="TCustomForm.Icon"/>
</seealso>
</element>
<element name="TCustomForm.SmallIconHandle.Result">
<short>Handle for the small Icon for the form.</short>
</element>

<element name="TCustomForm.GetChildren">
<short>
Executes the specified callback for all child Controls, and Components with 
no Parent.
</short>
<descr>
<p>
<var>GetChildren</var> is an overridden method in <var>TCustomForm</var> 
which executes the callback method specified in <var>Proc</var> for child 
<var>Controls</var> owned by <var>Root</var>, or <var>Components</var> which 
do not have a <var>Parent</var>. It calls the inherited method in 
<var>TWinControl</var> to execute the callback for Child controls owned by 
Root. GetChildren iterates over the values in Component, and calls Proc when 
the <var>HasParent</var> method for a given component returns <b>False</b>.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.GetChildren">TWinControl.GetChildren</link>
</seealso>
</element>
<element name="TCustomForm.GetChildren.Proc">
<short>The callback method.</short>
</element>
<element name="TCustomForm.GetChildren.Root">
<short>Components are enumerated only if Root is Self.</short>
</element>

<element name="TCustomForm.WantChildKey">
<short>
Indicates if key messages in a child control are handled in the message 
processing loop for the form.
</short>
<descr>
<p>
Always returns <b>False</b> in <var>TCustomForm</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.WantChildKey.Result">
<short>Returns <b>False</b> in TCustomForm.</short>
</element>
<element name="TCustomForm.WantChildKey.Child">
<short>Control with the key message for the method.</short>
</element>
<element name="TCustomForm.WantChildKey.Message">
<short>Key message from the child control.</short>
</element>

<element name="TCustomForm.RemoveAllHandlersOfObject" link="#lcl.lclclasses.TLCLComponent.RemoveAllHandlersOfObject"/>
<element name="TCustomForm.RemoveAllHandlersOfObject.AnObject"/>

<element name="TCustomForm.AddHandlerFirstShow">
<short>
Adds a handler routine called the first time the form is shown.
</short>
<descr/>
<seealso>
<link id="TFormHandlerType"/>
</seealso>
<notes><note>Used in TAnchorDockHostSite.CreateNew.</note></notes>
</element>
<element name="TCustomForm.AddHandlerFirstShow.OnFirstShowHandler">
<short>
Handler routine added to the list of fhtFirstShow handlers in the class 
instance.
</short>
</element>
<element name="TCustomForm.AddHandlerFirstShow.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TCustomForm.RemoveHandlerFirstShow">
<short>
Removes the handler called the first time the form executes its Show method.
</short>
<descr>
<p>
Not used in the current LCL version.
</p>
</descr>
<seealso>
<link id="TFormHandlerType"/>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>
<element name="TCustomForm.RemoveHandlerFirstShow.OnFirstShowHandler">
<short>
Handler routine removed from the list for the form handler type.
</short>
</element>

<element name="TCustomForm.AddHandlerClose">
<short>
Adds a handler for a form close event.
</short>
<descr>
<p>
<var>AddHandlerClose</var> is a method used to add the <var>TCloseEvent</var> 
handler specified in <var>OnCloseHandler</var> to the list of form handlers 
for the type. It allows a form instance to have additional event handlers 
which behave just like the <var>OnClose</var> event handler.
</p>
<p>
AddHandlerClose calls the <var>AddHandler</var> method to create the TMethod 
entry used to represent the handler routine. When <var>AsFirst</var> is 
<b>True</b>, the routine in OnCloseHandler is inserted as the first item in 
the list of form close handlers.
</p>
<p>
Applications must implement and assign an object procedure using the 
signature in TCloseEvent to perform actions needed when the <var>Close</var> 
or <var>CloseModal</var> method is called for the form instance.
</p>
<p>
A handler added using AddHandlerClose is signalled after the 
<var>OnClose</var> event handler for the form instance.
</p>
<p>
Use <var>RemoveHandlerClose</var> to remove a form close handler added in the 
method.
</p>
</descr>
<seealso>
<link id="TCustomForm.Close"/>
<link id="TCustomForm.OnClose"/>
<link id="TCustomForm.RemoveHandlerClose"/>
<link id="TCloseEvent"/>
</seealso>
</element>
<element name="TCustomForm.AddHandlerClose.OnCloseHandler">
<short>
Form close handler routine added in the method.
</short>
</element>
<element name="TCustomForm.AddHandlerClose.AsFirst">
<short>
<b>True</b> if the handler is stored as the first entry in the list of form 
close handlers.
</short>
</element>

<element name="TCustomForm.RemoveHandlerClose">
<short>
Removes a form close handler added to the form instance.
</short>
<descr>
<p>
<var>RemoveHandlerClose</var> is a method used to remove the form close 
handler specified in <var>OnCloseHandler</var> from the list of handlers for 
the type. RemoveHandlerClose reverses the action performed in the 
AddHandlerClose method.
</p>
</descr>
<seealso>
<link id="TCustomForm.AddHandlerClose"/>
<link id="TCloseEvent"/>
</seealso>
</element>
<element name="TCustomForm.RemoveHandlerClose.OnCloseHandler">
<short>
Form close handler removed in the method.
</short>
</element>

<element name="TCustomForm.AddHandlerCreate">
<short>
Adds a handler for a form create event.
</short>
<descr>
<p>
<var>AddHandlerCreate</var> is a method used to add the 
<var>TNotifyEvent</var> handler specified in <var>OnCreateHandler</var> to 
the list of form handlers for the type. It allows a form instance to have 
additional event handlers which behave just like the <var>OnCreate</var> 
event handler.
</p>
<p>
AddHandlerCreate calls the <var>AddHandler</var> method to create the TMethod 
entry used to represent the handler routine. When <var>AsFirst</var> is 
<b>True</b>, the routine in OnCreateHandler is inserted as the first item in 
the list of form create handlers.
</p>
<p>
Applications must implement and assign an object procedure using the 
signature in TNotifyEvent to perform actions needed when the form instance 
has been created and its bounds have been assigned.
</p>
<p>
A handler added using AddHandlerCreate is signalled after the 
<var>OnCreate</var> event handler for the form instance.
</p>
<p>
Use <var>RemoveHandlerCreate</var> to remove a form create handler added in 
the method.
</p>
</descr>
<seealso>
<link id="TCustomForm.Create"/>
<link id="TCustomForm.OnCreate"/>
<link id="TCustomForm.AfterConstruction"/>
<link id="TCustomForm.Destroy"/>
<link id="TCustomForm.RemoveHandlerCreate"/>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>
<element name="TCustomForm.AddHandlerCreate.OnCreateHandler">
<short>
Form create handler added in the method.
</short>
</element>
<element name="TCustomForm.AddHandlerCreate.AsFirst">
<short>
<b>True</b> if the handler is stored as the first entry in the list of form 
create handlers.
</short>
</element>

<element name="TCustomForm.RemoveHandlerCreate">
<short>
Removes a form create handler added to the form instance.
</short>
<descr>
<p>
<var>RemoveHandlerCreate</var> is a method used to remove the form create 
handler specified in <var>OnCreateHandler</var> from the list of handlers for 
the type. RemoveHandlerCreate reverses the action performed in the 
AddHandlerCreate method.
</p>
</descr>
<seealso>
<link id="TCustomForm.AddHandlerCreate"/>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>
<element name="TCustomForm.RemoveHandlerCreate.OnCreateHandler">
<short>
Form create handler removed in the method.
</short>
</element>

<element name="TCustomForm.ActiveMDIChild">
<short>Returns the currently active MDI child form.</short>
<descr>
<p>
A non-<b>Nil</b> result is returned only when FormStyle contains 
<var>fsMDIForm</var> or <var>fsMDIChild</var>; otherwise Result is <b>nil</b>.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomForm.ActiveMDIChild.Result">
<short>Nil if the form is neither an MDI host nor child.</short>
</element>

<element name="TCustomForm.GetMDIChildren" link="#lcl.forms.TCustomForm.MDIChildren"/>
<element name="TCustomForm.GetMDIChildren.Result">
<short>
TCustomForm instance for the requested MDI child, or <b>Nil</b> if the caller 
is not a MDI form type or a handle has not been allocated for the form.
</short>
</element>
<element name="TCustomForm.GetMDIChildren.AIndex">
<short>
Ordinal position for the MDI child form in the property value.
</short>
</element>

<element name="TCustomForm.MDIChildCount" link="#lcl.forms.TCustomForm.MDIChildren"/>
<element name="TCustomForm.MDIChildCount.Result">
<short>
-1 if form is not a MDI form or its handle has not been allocated.
</short>
</element>

<element name="TCustomForm.AutoScale">
<short>
Sets scaled to <b>True</b> and calls AutoAdjustLayout with the current PPI 
for the monitor.
</short>
<descr>
<p>
<var>AutoScale</var> is a method used to apply an automatic layout adjustment 
policy to scale the form and its controls when enabled and needed.
</p>
<p>
AutoScale sets the value in the <var>Scaled</var> property to <b>True</b> if 
it is not already enabled. This causes AutoScale to be called again, so no 
additional actions are performed in the current method call.
</p>
<p>
AutoScale uses the value in the <var>PixelsPerInch</var> property for the 
<var>Monitor</var> where the form is displayed to determine if the form and 
its controls need to be scaled. When Scaled is enabled for the 
<var>Application</var>, and the run-time PixelsPerInch setting differs from 
the design-time value, the <var>AutoAdjustLayout</var> method is called. The 
<var>lapAutoAdjustForDPI</var> policy is applied in the method using scaling 
factors for the Width and Height values on the form and its Controls.
</p>
<p>
AutoScale is called when a new value is assigned to the Scaled property.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomForm.Dock">
<short>
Docks the form to the specified dock site.
</short>
<descr>
<p>
Calls the inherited method using the values in <var>NewDockSite</var> and 
<var>ARect</var> as arguments.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Dock">TControl.Dock</link>
</seealso>
</element>
<element name="TCustomForm.Dock.NewDockSite">
<short>
Dock site where the form instance is hosted.
</short>
</element>
<element name="TCustomForm.Dock.ARect">
<short>
Returns the bounds rectangle for the form instance on the dock site. The 
origin is 0, 0. Width and Height depend on the AutoSize setting in NewDockSite.
</short>
</element>

<element name="TCustomForm.UpdateDockCaption">
<short>
Gets the combined Caption for DockClients on the form.
</short>
<descr>
<p>
<var>UpdateDockCaption</var> is an overridden method used to get the combined 
Caption for all <var>DockClients</var> on the form. It does <b>not</b> call 
the inherited method.
</p>
<p>
<var>Exclude</var> contains a control which is omitted from the Caption 
values (when assigned). UpdateDockCaption iterates over the controls in 
<var>DockClients</var> to build the combined Caption for visible controls 
(other than the control in Exclude). Blank control captions are ignored. 
<var>UTF8FixBroken</var> is called to ensure that a given caption does not 
contain invalid UTF-8 characters. The caption for a <var>TMemo</var> control 
is truncated after 20 characters.
</p>
<p>
The Caption values for the controls are concatenated into a comma-delimited 
list of values which are assigned to the <var>Caption</var> property. An 
empty string is never assigned to the Caption property.
</p>
<p>
UpdateDockCaption is called when a new value is assigned to the 
<var>Text</var> property for a DockClient control with an assigned 
<var>HostDockSite</var>.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.UpdateDockCaption">TWinControl.UpdateDockCaption</link>
</seealso>
</element>
<element name="TCustomForm.UpdateDockCaption.Exclude">
<short>Control to omit from the combined caption value.</short>
</element>

<element name="TCustomForm.Active">
<short>
Indicates if the form is enabled, visible, and has focus.
</short>
<descr>
<p>
<var>Active</var> is a read-only <var>Boolean</var> property which indicates 
if the form is enabled, visible, and has focus.
</p>
<p>
The <var>SetActive</var> method is used to update the value for the property, 
locate an <var>ActiveControl</var> for the form, and give focus to the form 
control. SetActive is called from the <var>WMActivate</var> method when the 
<var>LM_ACTIVATE</var> window control message is handled for the form.
</p>
<p>
The value in Active is used in the <var>FocusControl</var> method. It causes 
<var>SetFocus</var> to be called when its value is <b>False</b>. It is also 
used in the <var>SetActiveControl</var> method to determine if the window 
already has focus when the active control is changed.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomForm.ActiveControl">
<short>
Gets or sets the active control on the form.
</short>
<descr>
<p>
<var>ActiveControl</var> is a <var>TWinControl</var> property which contains 
the control which has focus on the form. The property can contain <b>Nil</b> if 
the parent form is hidden, disabled, or has never been activated.
</p>
<p>
Setting a new value for the property performs validity checks to ensure that 
the specified control can receive focus when the form is <var>Visible</var>. An 
<var>EInvalidOperation</var> exception is raised with the message in 
SCannotFocus when the new property value contains:
</p>
<ul>
<li>The current form instance.</li>
<li>A control not parented by the current form instance.</li>
<li>A control that returns <b>False</b> from its CanFocus method.</li>
</ul>
<p>
The value in the LastActiveControl property is updated with the existing value 
for ActiveControl if it is a control and not a TForm/TCustomForm instance. If 
the form (and not a control) was active, LastActiveControl is set to <b>Nil</b>.
</p>
<p>
At run-time, the new active control is focused and activated if its form is 
active (Active = <b>True</b>). ActiveChanged is called too. Both of these steps 
are omitted at design-time or when the component is loaded during component 
streaming.
</p>
<p>
The value in ActiveControl is updated in the <var>FocusControl</var> and 
<var>DefocusControl</var> methods.
</p>
</descr>
<seealso>
<link id="TCustomForm.LastActiveControl"/>
<link id="TCustomForm.Active"/>
<link id="TCustomForm.ActiveChanged"/>
<link id="TCustomForm.FocusControl"/>
<link id="TCustomForm.DefocusControl"/>
<link id="GetParentForm"/>
<link id="#lcl.controls.TWinControl.CanFocus"/>
</seealso>
</element>

<element name="TCustomForm.ActiveDefaultControl">
<short>Specifies the active default control on the form.</short>
<descr>
<p>
The active control which is the default control executed when the Enter key 
is pressed. When setting a new value for the property, a previous default 
control is notified of the change to the property value using the 
<var>ActiveDefaultControlChanged</var> method.
</p>
</descr>
<seealso>
<link id="TCustomForm.ActiveControl"/>
<link id="TCustomForm.DefaultControl"/>
</seealso>
</element>

<element name="TCustomForm.AllowDropFiles">
<short>Specifies whether files can be dropped onto this form.</short>
<descr>
<p>
<var>AllowDropFiles</var> is a <var>Boolean</var> property which indicates 
whether this form receives an <var>OnDropFiles</var> event when files are 
dropped on the form during a drag-and-drop operation.
</p>
</descr>
<seealso>
<link id="TCustomForm.OnDropFiles"/>
</seealso>
</element>

<element name="TCustomForm.AlphaBlend">
<short>Allows the form to be drawn with translucency.</short>
<descr>
<p>
<var>AlphaBlend</var> is a <var>Boolean</var> property which indicates if the 
form can be drawn with translucency. When set to <b>True</b>, the form is 
drawn with a degree of transparency and diffusion. This allows other forms 
(and their controls) which have a lower Z-Order value to be seen beneath the 
form. The default value for the property is <b>False</b>.
</p>
<p>
Use <var>AlphaBlendValue</var> to specify the degree of transparency and 
diffusion applied to the form content.
</p>
<p>
Changing the value in AlphaBlend causes the widgetset class to be notified of 
the change at run-time when a handle has been allocated for the form 
instance. A change to the property value is not rendered at design-time.
</p>
<p>
AlphaBlend and AlphaBlendValue are used in the implementation of the 
<var>InitializeWnd</var> method, and passed as arguments to methods in the 
widgetset class when either of the values are changed.
</p>
<remark>
AlphaBlend requires support from both the Desktop Environment (DE) and the 
hardware for the system; it may not work on all hardware, or platform / 
operating system combinations supported as Lazarus targets.
</remark>
</descr>
<seealso>
<link id="TCustomForm.AlphaBlendValue"/>
<link id="TCustomForm.InitializeWnd"/>
</seealso>
</element>

<element name="TCustomForm.AlphaBlendValue">
<short>
The translucence level for the form (0=transparent, 255=opaque).
</short>
<descr>
<p>
<var>AlphaBlendValue</var> is a <var>Byte</var> property which indicates the 
level of translucency for the form when <var>AlphaBlend</var> is set to 
<b>True</b>. AlphaBlendValue must be in the range 0..255 (for the Byte data 
type), where 0 represents 100% transparency and 255 is for full opacity.
</p>
<p>
Changing the value for the property causes the widgetset class to be notified 
of the change in the property value at run-time when a handle has been 
allocated for the form.
</p>
<p>
Set AlphaBlend to <b>True</b> to enable translucency for the form.
</p>
<p>
AlphaBlend and AlphaBlendValue are used in the implementation of the 
<var>InitializeWnd</var> method, and passed as arguments to methods in the 
widgetset class when either of the values are changed.
</p>
<remark>
AlphaBlend and AlphaBlendValue require support from both the Desktop 
Environment (DE) and the hardware for the system; it may not work on all 
hardware, or platform / operating system combinations supported as Lazarus 
targets.
</remark>
</descr>
<seealso>
<link id="TCustomForm.AlphaBlend"/>
<link id="TCustomForm.InitializeWnd"/>
</seealso>
</element>

<element name="TCustomForm.AutoScroll">
<short>
Indicates if the form can automatically show or hide scroll bars.
</short>
<descr>
<p>
<var>AutoScroll</var> is a <var>Boolean</var> property which indicates if the 
form can automatically show or hide its scroll bars. Set 
<var>AutoScroll</var> to <b>True</b> to enable scroll bars when the form size 
is too small to display its content in its entirety. AutoScroll can only be 
<b>True</b> when the <var>BorderStyle</var> for the form is 
<var>bsSizeable</var> or <var>bsSizeToolWin</var>, and may be changed to 
<b>False</b> at run-time when BorderStyle is changed to another value.
</p>
</descr>
<seealso>
<link id="TCustomForm.BorderStyle"/>
</seealso>
</element>

<element name="TCustomForm.BorderIcons">
<short>Specifies the icons which appear in the title bar for the form.</short>
<descr>
<p>
<var>BorderIcons</var> is a <var>TBorderIcons</var> property which contains 
valued from the <var>TBorderIcon</var> enumeration, and indicates the icons 
displayed in the title bar for the form instance. The default value for the 
property includes the following enumeration values:
</p>
<ul>
<li>biSystemMenu</li>
<li>biMinimize</li>
<li>biMaximize</li>
</ul>
<p>
See <link id="TBorderIcon">TBorderIcon</link> for more information about the 
enumeration values and their usage.
</p>
<p>
Changing the value in BorderIcons causes the <var>WidgetSetClass</var> for 
the form instance to be notified of the new values in the property.
</p>
<p>
Values in BorderIcons may be automatically changed at run-time when a new 
value is assigned to the <var>BorderStyle</var> property; see <link 
id="DefaultBorderIcons">DefaultBorderIcons</link> for the icons used for a 
specific border style.
</p>
</descr>
<seealso>
<link id="TBorderIcons"/>
<link id="TBorderIcon"/>
<link id="TCustomForm.BorderStyle"/>
<link id="DefaultBorderIcons"/>
</seealso>
</element>

<element name="TCustomForm.BorderStyle">
<short>
The border style affects the title bar, border, icon(s), and resize behavior 
for the form.
</short>
<descr>
<p>
<var>BorderStyle</var> is a <var>TFormBorderStyle</var> property used to 
control the appearance of the border on a form. The default value is bsSizeable 
and displays the standard border for a sizeable window. But it could, for 
example, be a dialog form or a tool window, or could be non-sizeable. See 
TFormBorderStyle for the enumeration values allowed in the property and their 
meanings.
</p>
<p>
Changing the value for the property causes other properties in the form 
instance to be updated:
</p>
<dl>
<dt>AutoScroll</dt>
<dd>
Disabled when the property contains a value other than bsSizeable or 
bsSizeToolWin.
</dd>
<dt>BorderIcons</dt>
<dd>
Updated at run-time when the new property value requires a different set of 
default border icons than the previous value.
</dd>
<dt>Icon, SmallIconHandle, BigIconHandle</dt>
<dd>
Updated at run-time by performing the CM_ICONCHANGED control message.
</dd>
<dt>Menu</dt>
<dd>
Updated at run-time to create (or re-create) the window handle for a TMainMenu 
instance using the Handle for the form.
</dd>
</dl>
<p>
In TCustomForm (and TForm), BorderStyle is slightly different (has a different 
base type) from the <var>TCustomControl.BorderStyle</var> property. When the 
form is put into another control the window borders depend on the widgetset. 
There are no borders under GTK.
</p>
</descr>
<seealso>
<link id="TCustomForm.AutoScroll"/>
<link id="TCustomForm.Icon"/>
<link id="TCustomForm.SmallIconHandle"/>
<link id="TCustomForm.BigIconHandle"/>
<link id="TCustomForm.CMIconChanged"/>
<link id="TCustomForm.Menu"/>
<link id="#lcl.controls.TFormBorderStyle">TFormBorderStyle</link>
<link id="#lcl.controls.TBorderStyle">TBorderStyle</link>
<link id="#lcl.controls.TCustomControl.BorderStyle">TCustomControl.BorderStyle</link>
</seealso>
</element>

<element name="TCustomForm.CancelControl">
<short>The control associated with the Cancel action.</short>
<descr>
<p>
Determines the control associated with the Cancel action (which exits from 
the modal form without changing anything). This is usually a button with the 
caption 'Cancel', but might be an 'Exit' button or anything else the 
application programmer decides. This control is selected either by explicitly 
clicking with the mouse, or by hitting the 'Esc' key.
</p>
</descr>
<seealso>
<link id="TCustomForm.DefaultControl"/>
</seealso>
</element>

<element name="TCustomForm.Caption">
<short>The text displayed in the title bar for the form.</short>
<descr>
<p>
Setting the value in <var>Caption</var> also causes the caption in 
<var>HostDockSite</var> to be updated.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Caption">TControl.Caption</link>
<link id="#lcl.controls.TControl.HostDockSite">TControl.HostDockSite</link>
</seealso>
</element>

<element name="TCustomForm.Color">
<short>The background color for the form.</short>
<descr>
<p>
<var>Color</var> is a <var>TColor</var> property with the background color 
used for the form. Color is re-declared in <var>TCustomForm</var> to use 
either <var>clDefault</var> or <var>clBtnFace</var> as the default value for 
the property. clDefault is used when the <var>UseCLDefault</var> compiler 
define exists, and indicates that the color is resolved to the value in a 
<var>Parent</var> control (when assigned).
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Color">TControl.Color</link>
<link id="#lcl.controls.TControl.GetDefaultColor">TControl.GetDefaultColor</link>
</seealso>
</element>

<element name="TCustomForm.DefaultControl">
<short>The control associated with the default action for this form.</short>
<descr>
<p>
This is typically a button such as 'Ok' or 'Accept' which is highlighted in 
some way on-screen to indicate that this is the default action. It is 
selected either by hitting 'Return' or 'Enter', or by clicking the control 
with the mouse.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomForm.DefaultMonitor">
<short>The monitor on which the form is displayed.</short>
<descr>
<p>
Possible values:
</p>
<dl>
<dt>dmDesktop</dt>
<dd>No attempt to choose specific monitor.</dd>
<dt>dmPrimary</dt>
<dd>On the primary monitor.</dd>
<dt>dmMainForm </dt>
<dd>
On the same monitor as the main form. If there is no main form then use 
dmPrimary behavior.
</dd>
<dt>dmActiveForm</dt>
<dd>
On the same monitor as the currently active form. If there is no active form 
use dmMainForm behavior.
</dd>
</dl>
</descr>
<seealso/>
</element>

<element name="TCustomForm.Designer">
<short>The designer object when the form is in design mode.</short>
<descr/>
<seealso/>
</element>

<element name="TCustomForm.EffectiveShowInTaskBar">
<short>
Value for the <var>ShowInTaskBar</var> property when resolved using the 
<var>Application</var> settings.
</short>
<descr>
<p>
</p>
<p>
<var>EffectiveShowInTaskBar</var> is a read-only <var>TShowInTaskBar</var> 
property. It contains the effective visibility for the form on the system 
task bar. The value is derived from the ShowInTaskBar property when it has 
been changed. It is not updated, however, for the following conditions:
</p>
<ul>
<li>The form instance is the MainForm in the Application.</li>
<li>The form does not have a valid Handle.</li>
<li>The form has an assigned Parent.</li>
<li>The form is a MDIChild form (FormStyle is fsMDIChild).</li>
<li>The form is not Showing (Handle is visible).</li>
</ul>
<p>
EffectiveShowInTaskBar resolves the value to the TaskBarBehavior property in 
the Application singleton. For the TaskBarBehavior values:
</p>
<dl>
<dt>tbSingleButton</dt>
<dd>Contains stNever.</dd>
<dt>tbMultiButton</dt>
<dd>Contains stAlways.</dd>
<dt>tbDefault</dt>
<dd>
Contains stDefault and causes the rules for the widgetset or platform to be 
used.
</dd>
</dl>
<p>
The property value is passed to the widgetset class where it may 
be translated, applied, or ignored based on the capabilities for the 
implementation or platform.
</p>
</descr>
<seealso>
<link id="TCustomForm.ShowInTaskBar"/>
<link id="TApplication.TaskBarBehavior"/>
<link id="Application"/>
<link id="TShowInTaskbar"/>
</seealso>
</element>
<element name="TCustomForm.GetEffectiveShowInTaskBar.Result">
<short>Effect visibility for the form icon in the task bar.</short>
</element>

<element name="TCustomForm.FormState">
<short>State flags for the form.</short>
<descr>
<p>
<var>FormState</var> is a read-only <var>TFormState</var> property which 
contains state flags enabled for the form instance. Values from the 
TFormStateType enumeration are included in, or excluded from, the set type 
when corresponding actions occur (or are resolved) for the form instance.
</p>
<p>
See <var>TFormStateType</var> for more information on the values and meanings 
in the enumeration.
</p>
<p>
FormState is updated when properties for the form instance are changed, and 
in methods which respond to window and control messages in the form instance.
</p>
</descr>
<seealso>
<link id="TFormState"/>
<link id="TFormStateType"/>
</seealso>
</element>

<element name="TCustomForm.FormStyle">
<short>Indicates the style for the form.</short>
<descr>
<p>
Possible values:
</p>
<dl>
<dt>fsNormal </dt>
<dd>Usual style.</dd>
<dt>fsStayOnTop</dt>
<dd>
Form is positioned above all application's forms, except those which have 
fsStayOnTop style.
</dd>
<dt>fsSystemStayOnTop</dt>
<dd>
Form is positioned above all OS windows, except other OS top-level windows.
</dd>
<dt>fsSplash</dt>
<dd>Form is border-less.</dd>
<dt>fsMDIForm</dt>
<dd>MDI parent form.</dd>
<dt>fsMDIChild</dt>
<dd>MDI child form.</dd>
</dl>
</descr>
<seealso>
<link id="#lcl.controls.TFormStyle">TFormStyle</link>
</seealso>
</element>

<element name="TCustomForm.HelpFile">
<short>The name of the help file for the form.</short>
<descr>
<p>
<var>HelpFile</var> is a <var>String</var> property which contains the name 
of the help file for the form instance. HelpFile can use a fully-qualified 
path to the help file if it is not located in the same directory as the 
application which implements the form.
</p>
<p>
The value in HelpFile is used in <var>TApplication</var> when it retrieves 
the help file name from the active form in the application.
</p>
</descr>
<seealso>
<link id="TApplication"/>
<link id="TScreen.ActiveCustomForm"/>
</seealso>
</element>

<element name="TCustomForm.Icon">
<short>The Icon associated with this Form (in minimized state).</short>
<descr>
<p>
<var>Icon</var> is a <var>TIcon</var> property which contains the graphical 
icon for the form instance. Icon contains the image displayed on the task bar 
area when a form is minimized. If an Icon is not explicitly assigned for the 
form, the icon for the <var>Application</var> is used.
</p>
<p>
Assigning a new value to Icon causes existing icon handles to be freed, and 
the widgetset class is notified to re-create the icon handles.
</p>
<remark>
For the macOS Carbon widgetset, a form-level Icon is not supported.
</remark>
</descr>
<seealso>
<link id="TCustomForm.BigIconHandle"/>
<link id="TCustomForm.SmallIconHandle"/>
<link id="#lcl.graphics.TIcon">TIcon</link>
</seealso>
</element>

<element name="TCustomForm.KeyPreview">
<short>Allows the form to intercept keystrokes in child controls.</short>
<descr>
<p>
<var>KeyPreview</var> is a <var>Boolean</var> property which controls whether 
the form can intercept key strokes from child controls.
</p>
<p>
When KeyPreview is set to <b>True</b>, the form is allowed to receive 
<var>KeyDown</var>, <var>KeyUp</var>, and <var>KeyPress</var> events before 
they are received / applied to the <var>ActiveControl</var> in the form. The 
default value for the property is <b>False</b>.
</p>
<p>
KeyPreview is used in the implementation of key handling methods in 
<var>TWinControl</var>. KeyPreview is often enabled for modal dialogs to 
allow the parent form to handle specific interactions with the user.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomForm.MDIChildren">
<short>
Provides indexed access to MDI child forms when used as a MDI form.
</short>
<descr>
<p>
<var>MDIChildren</var> is a read-only indexed <var>TCustomForm</var> property 
which provides access to the child forms in a Multi-Document Interface (MDI) 
application. In an MDI application, one of the forms acts as the main form 
for the application, and is the container for its MDI child forms. In 
addition, a MDI child form can be nested in another MDI child form.
</p>
<remark>
Historically, support for MDI is dependent on the underlying widgetset or 
platform. Some widgetsets provide better support for MDI than others. The 
consensus is that the QT/QT5 widgetsets offers the best level of support for 
MDI applications.
</remark>
<p>
The form role is determined by the value in the <var>FormStyle</var> 
property. <var>fsMDIForm</var> is used for the main form, and 
<var>fsMDIChild</var> for the child forms. <var>MDIChildren</var> is relevant 
when the current form instance uses one of these MDI form style values.
</p>
<p>
<var>Index</var> is an <var>Integer</var> value is used to access a MDI child 
form by its ordinal position in MDIChildren. The return value contains the 
<var>TCustomForm</var> instance at the specified position, as determined 
using the <var>GetMDIChildren</var> method in the widgetset class. The return 
value can be <b>Nil</b> when the current form does not use a FormStyle with 
the value fsMDIForm or fsMDIChild, or when a handle has not yet been 
allocated for the form instance. The return value is always <b>Nil</b> at 
design-time.
</p>
<p>
Use <var>MDIChildCount</var> to get the number MDI child forms for the form 
instance.
</p>
<p>
Use <var>ActiveMDIChild</var> to get the active MDI child form in the 
application.
</p>
<p>
Set the value in the <var>FormStyle</var> property to indicate that the class 
is used as a MDI form.
</p>
</descr>
<seealso>
<link id="TCustomForm.FormStyle"/>
<link id="TCustomForm.MDIChildCount"/>
<link id="TCustomForm.ActiveMDIChild"/>
</seealso>
</element>
<element name="TCustomForm.MDIChildren.I">
<short>Ordinal position for the MDI Child form requested.</short>
</element>

<element name="TCustomForm.Menu">
<short>The main menu for the form instance.</short>
<descr>
<p>
<var>Menu</var> is the <var>TMainMenu</var> instance assigned to the form.
</p>
<p>
Assigning a new value to Menu causes other forms on the <var>Screen</var> to 
be checked for a duplicate menu assignment. A singular TMainMenu instance 
cannot be assigned to more than one form. An <var>EInvalidOperation</var> is 
raised if another form already uses the menu instance. The 
<var>UpdateMenu</var> method is called when the new property value has been 
set.
</p>
</descr>
<seealso>
<link id="#lcl.menus.TMainMenu">TMainMenu</link>
<link id="Screen"/>
<link id="TScreen.Forms"/>
</seealso>
</element>

<element name="TCustomForm.ModalResult">
<short>
Specifies the return value for a form (or dialog) displayed modally.
</short>
<descr>
<p>
<var>ModalResult</var> is a <var>TModalResult</var> property which contains 
the value derived when the form is displayed modally. Setting a new value for 
the property causes the widgetset class to be notified when a handle has been 
allocated for the form.
</p>
<p>
The value in ModalResult is updated when the <var>ShowModal</var> method is 
called for the form instance. It is updated in the <var>CloseModal</var> 
method when <var>CloseQuery</var> is <b>False</b> and <var>CloseAction</var> 
is <var>caNone</var>. Finally, it is set to <var>mrCancel</var> in the 
<var>Close</var> method when <var>FormState</var> contains the value 
<var>fsModal</var>.
</p>
<p>
See <link id="TModalResult">TModalResult</link> for more information about 
the enumeration values and their meanings.
</p>
</descr>
<seealso>
<link id="TModalResult"/>
<link id="TCustomForm.ShowModal"/>
<link id="TCustomForm.Close"/>
<link id="TCustomForm.FormState"/>
<link id="TCustomForm.CloseQuery"/>
</seealso>
</element>

<element name="TCustomForm.Monitor">
<short>Contains the Monitor where the form is shown.</short>
<descr>
<p>
<var>Monitor</var> is a read-only <var>TMonitor</var> property which contains 
the monitor where the form is displayed. Monitor defaults to the 
<var>TMonitor</var> instance for the Parent control (when it has been 
assigned). The return value is <b>Nil</b> if a TCustomForm instance is not 
found in the control hierarchy for an assigned Parent.
</p>
<p>
When Parent has not been assigned, values from properties and methods in the 
class instance are checked. This includes Handle, FormState, Position, and 
DefaultMonitor.
</p>
<p>
If the form is not visible and has never been displayed, the Position 
property is used to get the monitor instance. The value in Position 
determines how the monitor is retrieved, and DefaultMonitor is used as the 
fallback value.
</p>
<dl>
<dt>poDefault, poDefaultPosOnly</dt>
<dd>
Calls TScreen.MonitorFromWindow to get the monitor for the form Handle.
</dd>
<dt>poDesigned, poDefaultSizeOnly</dt>
<dd>
Calls TScreen.MonitorFromPoint to get the monitor where the Left and Top 
coordinates for the form are located.
</dd>
<dt>poMainFormCenter</dt>
<dd>
Uses the monitor in TApplication.MainForm when the form is not the main form 
for the application. If it is the main form, the value in DefaultMonitor is 
used as the monitor where the form is located.
</dd>
<dt>poOwnerFormCenter</dt>
<dd>
When Owner is a different TCustomForm instance than the current class, the 
monitor in TApplication.MainForm is used.
</dd>
</dl>
<p>
If the form has been displayed previously, SetBounds in the widgetset class 
is called to update the current coordinates for the form with the values in 
Left, Top, Width, and Height. TScreen.MonitorFromWindow is called to locate 
the monitor nearest to the form Handle, and it is used as the return value.
</p>
<p>
When neither a parent form nor a form Handle are available, 
TScreen.MonitorFromPoint is called to get the monitor where the Left and Top 
coordinates for the form are found.
</p>
</descr>
<version>
The Monitor implementation was modified in version 2.2.4 to account for 
differences between WinCE and Win32 when the form position is poDefault or 
poDefaultPosOnly.
</version>
<seealso>
<link id="TCustomForm.FormState"/>
<link id="TCustomForm.Position"/>
<link id="TCustomForm.DefaultMonitor"/>
<link id="Screen"/>
<link id="TScreen"/>
<link id="Application"/>
<link id="TApplication"/>
<link id="TMonitor"/>
<link id="GetParentForm"/>
</seealso>
</element>

<element name="TCustomForm.LastActiveControl">
<short>
Tracks focus changes for the active form or the last active control on the 
current form.
</short>
<descr>
<p>
<var>LastActiveControl</var> is a read-only <var>TWinControl</var> property 
used to track a change in the focus for the active form or the control on the 
current form instance. It is updated when changes are made to the 
<var>ActiveControl</var> property, or in the <var>SetFocusedControl</var> 
method.
</p>
</descr>
<seealso>
<link id="TCustomForm.ActiveControl"/>
<link id="TCustomForm.SetFocusedControl"/>
</seealso>
</element>

<element name="TCustomForm.PopupMode">
<short>Defines where pop-up menus are shown.</short>
<descr>
<p>
<var>PopupMode</var> is a <var>TPopupMode</var> property which controls the 
display policy for pop-up forms. The default value for the property is 
<var>pmNone</var>. See <var>TPopupMode</var> for more information about the 
values and meanings in the enumeration.
</p>
<p>
Changing the value in PopupMode causes the value in <var>PopupParent</var> to 
be changed when the property is set to pmAuto or pmNone. At run-time, the 
widgetset class is notified of the change to the PopupParent property.
</p>
<p>
PopupMode is used in the implementation of the <var>GetRealPopupParent</var> 
and <var>ShowModal</var> methods.
</p>
</descr>
<seealso>
<link id="TCustomForm.PopupParent"/>
<link id="TCustomForm.GetRealPopupParent"/>
<link id="TCustomForm.ShowModal"/>
<link id="TPopupMode"/>
</seealso>
</element>

<element name="TCustomForm.PopupParent">
<short>
Parent form which owns the current form instance when displayed as a pop-up 
window.
</short>
<descr>
<p>
<var>PopupParent</var> is a <var>TCustomForm</var> property which contains 
the parent form which owns the current form instance when displayed as a 
pop-up window.
</p>
<p>
Setting a new value for the property causes the existing pop-up parent form 
to be removed from the free notifications for the application. A new non-Nil 
pop-up Parent is added to the free notification list, and its 
<var>PopupMode</var> property is set to <var>pmExplicit</var>.
</p>
<p>
At run-time, the widgetset class is notified of the change in the 
<var>PopupParent</var> property. The notification is not performed at 
design-time.
</p>
</descr>
<seealso>
<link id="TCustomForm.PopupMode"/>
</seealso>
</element>

<element name="TCustomForm.SnapOptions">
<short>
Contains the form and screen snapping options for the form instance.
</short>
<descr>
<p>
<var>SnapOptions</var> is a <var>TWindowMagnetOptions</var> property which 
contains the magnetic window management option settings for the form instance. 
SnapOptions contains settings which allow the form instance to be snapped to 
edges either on a monitor or other form instances.
</p>
<p>
Each form has a SnapOptions property with settings specific to the form 
instance. SnapOptions is passed as an argument to methods in 
TWindowMagnetManager which handle snapping the form to another form or an edge 
on the monitor. Each TScreen instance in the application has a magnetic window 
manager to respond to snap requests using the option values.
</p>
<p>
Values in SnapOptions are read and written when properties like SnapBuffer and 
ScreenSnap are accessed or modified.
</p>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso/>
</element>

<element name="TCustomForm.ScreenSnap">
<short>
Indicates whether the form instance can be snapped to an edge on the monitor.
</short>
<descr>
<p>
<var>ScreenSnap</var> is a <var>Boolean</var> property which indicates whether 
the form instance can be snapped to an edge on the monitor. When enabled, an 
edge on the form will automatically snap to the nearest screen edge when it is 
within the distance where the snapping behavior is engaged.
</p>
<p>
Use SnapBuffer (or the Distance property in SnapOptions) to define the 
distance from (or proximity to) an edge where the snapping behavior is engaged.
</p>
<p>
Use the SnapOptions.SnapToForms to enable or disable snapping the form 
instance to an edge for another form in the application.
</p>
<p>
Use the SnapOptions.SnapFormTarget property to control whether the form allows 
other forms to be snapped to its edges.
</p>
<remark>
Screen snapping depends on the LM_WINDOWPOSCHANGING message dispatched 
when the position for a form (window) is changed. In the current LCL release, 
the LM_WINDOWPOSCHANGING message is dispatched for the Windows platform only. 
None of the other widgetsets checked for or apply the message.
</remark>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso/>
</element>

<element name="TCustomForm.SnapBuffer">
<short>
Distance from (or proximity to) an edge on a snap target where the snapping 
behavior is automatically engaged.
</short>
<descr>
<remark>
Screen snapping depends on the LM_WINDOWPOSCHANGING message dispatched 
when the position for a form (window) is changed. In the current LCL release, 
the LM_WINDOWPOSCHANGING message is dispatched for the Windows platform only. 
None of the other widgetsets checked for or apply the message.
</remark>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso/>
</element>

<element name="TCustomForm.OnActivate">
<short>
Handler signalled when the form instance receives focus.
</short>
<descr>
<p>
<var>OnActivate</var> is a <var>TNotifyEvent</var> property with the event 
handler signalled when the form instance receives focus. OnActivate is 
signalled when assigned from the Activate method, and occurs the first time the 
form is focused at application start up, and each time focus is changed from 
another form in the same application to this form instance.
</p>
<remark>
OnActivate is <b>not</b> signalled the very first time a maximized or 
fullscreen form is activated. This is done to suppress the notification until 
resize and bounds changes are handled in delayed events that occur during LCL 
component streaming.
</remark>
<p>
Use OnDeactivate to perform actions needed when a form instance loses focus.
</p>
<p>
Use OnShow or OnHide to perform actions needed when the Visible property for a 
form instance is changed.
</p>
<p>
Use OnWindowStateChange to perform actions needed when a form is minimized, 
maximized, or changed from the fullscreen to the normal state.
</p>
<p>
Use the <var>Application.OnActivate</var> event handler to perform actions 
needed when the Application is given focus over another process or program.
</p>
</descr>
<seealso>
<link id="TCustomForm.Activate"/>
<link id="TCustomForm.Deactivate"/>
<link id="TCustomForm.OnDeactivate"/>
<link id="TCustomForm.WindowState"/>
<link id="TCustomForm.OnShow"/>
<link id="TCustomForm.OnHide"/>
<link id="TCustomForm.OnWindowStateChange"/>
<link id="TCustomForm.Visible"/>
<link id="TApplication.OnActivate"/>
<link id="TApplication.QueueAsyncCall"/>
<link id="#lcl.controls.TControl.OnChangeBounds">TControl.OnChangeBounds</link>
<link id="#lcl.controls.TControl.OnResize">TControl.OnResize</link>
</seealso>
</element>

<element name="TCustomForm.OnClose">
<short>
Handler called when the form is closed. It determines what happens to the 
form (destroy, hide, etc.).
</short>
<descr>
<p>
<var>OnClose</var> is a <var>TCloseEvent</var> property which represents the 
event handler signalled when a form calls its <var>Close</var> or 
<var>CloseModal</var> method.
</p>
<p>
OnClose is triggered from the <var>DoClose</var> method immediately before 
calling any internal form handlers registered for the <var>fhtClose</var> 
form handler action type. OnClose can be used to determine the action 
performed in subsequent form handlers by setting the value in the 
<var>CloseAction</var> argument.
</p>
<p>
An application must implement and assign an object procedure using the 
signature for TCloseEvent to respond to the event notification.
</p>
</descr>
<seealso>
<link id="TCustomForm.Close"/>
<link id="TCustomForm.DoClose"/>
<link id="TCloseEvent"/>
</seealso>
</element>

<element name="TCustomForm.OnCloseQuery">
<short>
Event handler signalled when trying to close a form.
</short>
<descr>
<p>
<var>OnCloseQuery</var> is a <var>TCloseQueryEvent</var> property which 
contains the event handler signalled to determine whether the form can be 
closed. Set the value in the <var>CanClose</var> argument to <b>True</b> to 
allow the form instance to be closed. The default value for CanClose is 
<b>True</b>.
</p>
<p>
Use OnCloseQuery to perform any actions or dialogs needed to confirm that the 
form can in fact be closed.
</p>
<p>
An application must implement and assign an object procedure using the 
signature in TCloseQueryEvent to respond to the event notification.
</p>
<p>
OnCloseQuery is signalled from the <var>CloseQuery</var> method, and occurs 
immediately after MDI child forms have called their CloseQuery methods.
</p>
</descr>
<seealso>
<link id="TCustomForm.CloseQuery"/>
<link id="TCustomForm.MDIChildren"/>
<link id="TCloseQueryEvent"/>
</seealso>
</element>

<element name="TCustomForm.OnCreate">
<short>Handler called when the form has been created.</short>
<descr>
<p>
<var>OnCreate</var> is a <var>TNotifyEvent</var> property which implements an 
event handler signalled when a new form instance is created. OnCreate can be 
used to perform any action needed to configure the new form instance, or 
update the application where the form is used.
</p>
<p>
OnCreate is triggered from the <var>DoCreate</var> method (when assigned) 
before signalling any form handlers using the <var>fhtCreate</var> form 
handler action type. At this point, the initial coordinates for the form have 
been assigned, but are not realized until until DoCreate has been completed.
</p>
<p>
An application must implement and assign an object procedure using the 
signature for the handler to allow responding to the notification.
</p>
</descr>
<seealso>
<link id="TCustomForm.DoCreate"/>
<link id="TFormHandlerType"/>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>

<element name="TCustomForm.OnDeactivate">
<short>
Handler signalled when the form is deactivated (loses focus).
</short>
<descr>
<p>
<var>OnDeactivate</var> is a <var>TNotifyEvent</var> property which contains 
an event handler signalled when a form is deactivated (loses focus). 
OnDeactivate is signalled from the Deactivate method (when assigned), and 
occurs when the CM_DEACTIVATE message is handled in the CMDeactivate method.
OnDeactivate is signalled each time the focus is changed from the current form 
instance to another form instance in the application.
</p>
</descr>
<seealso>
<link id="TCustomForm.Deactivate"/>
<link id="TCustomForm.WMActivate"/>
<link id="TCustomForm.OnActivate"/>
<link id="TCustomForm.OnShow"/>
<link id="TCustomForm.OnHide"/>
<link id="TApplication.OnDeactivate"/>
</seealso>
</element>

<element name="TCustomForm.OnDestroy">
<short>Handler called when the form is destroyed.</short>
<descr>
<p>
OnDestroy is a TNotifyEvent property signalled when the form instance is 
destroyed. OnDestroy is signalled from the DoDestroy method (when assigned) 
as one of the steps before destruction of the class instance. Before the 
event handler is triggered, the form has been hidden and the Menu from the 
main form in the Application has been unmerged.
</p>
</descr>
<seealso>
</seealso>
</element>

<element name="TCustomForm.OnDropFiles">
<short>Handler called when files have been dropped.</short>
<descr>
<p>
<var>OnDropFiles</var> is a <var>TDropFilesEvent</var> event handler 
signalled when a File Drag notification is received from the LCL / widgetset 
interface.
</p>
<p>
The <var>Sender</var> argument contains the current form instance. The 
<var>FileName</var> argument contains an array with the fully-qualified file 
names for the drop operation.
</p>
<p>
Set <var>AllowDropFiles</var> to <b>True</b> to enable drag and drop 
operations, and execution of this event handler. The event handler is not 
signalled when AllowDropFiles is set to <b>False</b>.
</p>
<p>
The event handler should perform any actions needed for each of the files 
dropped onto the form instance.
</p>
</descr>
<seealso>
<link id="TCustomForm.AllowDropFiles"/>
<link id="TDropFilesEvent"/>
</seealso>
</element>

<element name="TCustomForm.OnHelp">
<short>Handler called when Help is requested.</short>
<descr>
<p>
<var>OnHelp</var> is a <var>THelpEvent</var> property which contains the 
event handler signalled when a Help command is executed for the form 
instance. Arguments to the event handler identify the command and the context 
used in the help request.
</p>
<p>
<var>Command</var> contains the help request type, and corresponds to the 
values used in the Windows WinHelp API.
</p>
<p>
<var>Data</var> is a <var>PtrInt</var> type which points the context 
information for the help request.
</p>
<p>
The <var>CallHelp</var> argument indicates if handler(s) in the 
<var>Application</var> instance should be called when the event handler in 
the form is completed. Set CallHelp to <b>False</b> when the help request has 
been satisfied in the event handler.
</p>
<p>
An application must implement and assign an object function using the 
signature for the handler to respond to the event notification.
</p>
<p>
Set the return value to <b>True</b> if the Help request was successfully 
executed.
</p>
<p>
The OnHelp event handler for the active form is signalled when the 
<var>TApplication</var> instance executes its <var>DoOnHelp</var> method. The 
arguments to the event handler contain the values intercepted in the WMHelp 
message processing for the application. If the OnHelp event handler has not 
been assigned for the active form, the OnHelp event handler in the 
Application singleton is signalled (when assigned).
</p>
</descr>
<seealso>
<link id="THelpEvent"/>
<link id="Application"/>
<link id="TApplication.OnHelp"/>
<link id="TApplication.DoOnHelp"/>
</seealso>
</element>

<element name="TCustomForm.OnHide">
<short>Handler called when the form is being hidden.</short>
<descr>
<p>
<var>OnHide</var> is a <var>TNotifyEvent</var> property that represents the 
event handler signalled when the form instance is hidden. OnHide is triggered 
(when assigned) in the <var>DoHide</var> method, and occurs when the 
<var>CMShowingChanged</var> control message is applied to the 
<var>Showing</var> property for the form instance.
</p>
</descr>
<seealso>
<link id="TCustomForm.DoHide"/>
<link id="TCustomForm.Hide"/>
<link id="TCustomForm.Visible"/>
<link id="TCustomForm.CMShowingChanged"/>
<link id="#lcl.controls.TWinControl.Showing">TWinControl.Showing</link>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>

<element name="TCustomForm.OnResize">
<short>Event handler signalled when the size for the form is changed.</short>
<descr>
<p>
<var>OnResize</var> is a <var>TNotifyEvent</var> property with the event 
handler signalled when the dimensions for the form have been changed. It is 
signalled (when assigned) from the <var>DoOnResize</var> method, and occurs 
in the inherited DoOnResize method in the ancestor class.
</p>
<p>
Create and assign a procedure to the event handler to perform any actions 
needed after the form has been resized.
</p>
<p>
Use the <var>OnConstrainedResize</var> event handler to set the height and/or 
width for the form using minimum and maximum height and width values.
</p>
</descr>
<seealso>
<link id="TCustomForm.DoOnResize"/>
<link id="TScrollingWinControl.DoOnResize"/>
<link id="#lcl.controls.TControl.OnResize">TControl.OnResize</link>
</seealso>
</element>

<element name="TCustomForm.OnShortcut">
<short>
Event handler signalled when a key is pressed, before further handling of the 
key.
</short>
<descr>
<p>
OnShortcut is a TShortcutEvent property that represents the event handler 
signalled (when assigned) to detect and handle a shortcut key for the form 
instance. OnShortcut is called from the IsShortcut method used to examine 
keystroke events intercepted and forwarded by the Application.
</p>
<p>
The Msg argument contains the key event examined in the handler. Handled 
indicates that the key is handled by the event when set to <b>True</b>.
</p>
</descr>
<seealso>
<link id="TCustomForm.IsShortCut"/>
<link id="TApplication.IsShortCut"/>
<link id="TApplication.OnShortCut"/>
<link id="TShortCutEvent"/>
</seealso>
</element>

<element name="TCustomForm.OnShow">
<short>Handler called when the form becomes visible.</short>
<descr>
<p>
<var>OnShow</var> is a <var>TNotifyEvent</var> property with the event 
handler signalled (when assigned) when the form becomes visible. It is 
signalled from the <var>DoShow</var> method when the <b>CM_SHOWINGCHANGED</b> 
control messages is handled for the form, and when queued <var>OnResize</var> 
and <var>OnChangeBounds</var> events are executed for the form.
</p>
<p>
Create and assign a procedure to OnShow to perform any actions needed when 
the <var>Visible</var> property for the form is set to <b>True</b>.
</p>
</descr>
<seealso/>
</element>

<element name="TCustomForm.OnShowModalFinished">
<short>
Event handler signalled when modal display of the form has been completed.
</short>
<descr>
<p>
<var>OnShowModalFinished</var> is a <var>TModalDialogFinished</var> property 
that implements the event handler signalled when modal display of the form 
has been completed. An application must implement an object procedure using 
the signature in <var>TModalDialogFinished</var>, and assign it to the 
property to respond to the event notification.
</p>
</descr>
<seealso>
<link id="TApplication.ModalFinished"/>
<link id="TApplication.OnModalEnd"/>
</seealso>
<notes>
<note>
Is this still needed? Not used in ShowModal or CloseModal. It does not appear 
to be signalled anywhere in the current LCL version.
</note>
</notes>
</element>

<element name="TCustomForm.OnWindowStateChange">
<short>
Handler called when the form is minimized, maximized or restored.
</short>
<descr>
<p>
<var>OnWindowStateChange</var> is a <var>TNotifyEvent</var> property which 
represents the event handler signalled when the value for the 
<var>WindowState</var> property is changed. OnWindowStateChange is triggered 
(when assigned) from the <var>Resizing</var> method, and occurs when the 
<b>WM_SIZE</b> window message for the action is handled.
</p>
<p>
See <var>TWindowState</var> for details about the values and meanings in the 
enumeration.
</p>
</descr>
<seealso>
<link id="TCustomForm.WindowState"/>
<link id="TCustomForm.Resizing"/>
<link id="TCustomForm.WMSize"/>
<link id="TWindowState"/>
</seealso>
</element>

<element name="TCustomForm.ParentFont">
<short>
Uses the font from the Parent when enabled.
</short>
<descr>
<p>
If <b>True</b>, the Font will be the same as the one from the Parent.
The default value for the property is <b>False</b> in <var>TCustomForm</var>.
</p>
<p>
While ParentFont is <b>True</b>, all changes to the font in the parent will 
also be applied to the font for the control. This synchronizes them, keeping 
them set to the same values. If changes are made directly to the Font 
property in the control, then ParentFont is automatically be set to 
<b>False</b>.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.ParentFont">TControl.ParentFont</link>
</seealso>
</element>

<element name="TCustomForm.Position">
<short>The initial placement for the form.</short>
<descr>
<p>
<var>Position</var> is a <var>TPosition</var> property which indicates the 
size and position policy used to display the form instance. The default value 
for the property is <var>poDesigned</var>, and indicates that the coordinates 
used in the form designer are used at run-time. See <link 
id="TPosition">TPosition</link> for the other values, and their meanings, 
available for the property.
</p>
<p>
Changing the value in Position causes the value in <var>AutoSize</var> to be 
updated when needed, and calls <var>UpdateControlState</var>. No additional 
actions are performed at design-time.
</p>
<p>
<var>MoveToDefaultPosition</var> is called when a handle exists for the form 
instance and the form has not been displayed.
</p>
</descr>
<seealso>
<link id="TForm.AutoSize"/>
<link id="TCustomForm.MoveToDefaultPosition"/>
<link id="TPosition"/>
</seealso>
</element>

<element name="TCustomForm.RestoredLeft">
<short>
The Left coordinate for the form when it is restored (i.e. changes from 
minimized or maximized).
</short>
<descr>
<p>
<var>RestoredLeft</var> is a read-only <var>Integer</var> property which 
contains the left coordinate for the form when its size is altered in 
<var>WMSize</var> or <var>WMMove</var> message handlers. The property value 
is applied when the asynchronous queued event handler for the form is 
executed, and calls the <var>DoOnChangeBounds</var> method.
</p>
</descr>
<seealso>
<link id="TCustomForm.WMSize"/>
<link id="#lcl.controls.TControl.DoOnChangeBounds">TControl.DoOnChangeBounds</link>
<link id="#lcl.controls.TControl.Left">TControl.Left</link>
</seealso>
</element>

<element name="TCustomForm.RestoredTop">
<short>
The Top coordinate for the form when it is restored (i.e. changes from 
minimized or maximized).
</short>
<descr>
<p>
<var>RestoredTop</var> is a read-only <var>Integer</var> property which 
contains the top coordinate for the form when its size is altered in 
<var>WMSize</var> or <var>WMMove</var> message handlers. The property value 
is applied when the asynchronous queued event handler for the form is 
executed, and calls the <var>DoOnChangeBounds</var> method.
</p>
</descr>
<seealso>
<link id="TCustomForm.WMSize"/>
<link id="#lcl.controls.TControl.DoOnChangeBounds">TControl.DoOnChangeBounds</link>
<link id="#lcl.controls.TControl.Left">TControl.Left</link>
</seealso>
</element>

<element name="TCustomForm.RestoredWidth">
<short>The width of the form when it is resized.</short>
<descr>
<p>
<var>RestoredWidth</var> is a read-only <var>Integer</var> property which 
contains the Width for the form when its size is altered in <var>WMSize</var> 
or <var>WMMove</var> message handlers. The property value is applied when the 
asynchronous queued event handler for the form is executed and calls the 
<var>DoOnChangeBounds</var> method.
</p>
</descr>
<seealso>
<link id="TCustomForm.WMSize"/>
<link id="#lcl.controls.TControl.DoOnChangeBounds">TControl.DoOnChangeBounds</link>
<link id="#lcl.controls.TControl.Width">TControl.Width</link>
</seealso>
</element>

<element name="TCustomForm.RestoredHeight">
<short>The height of the form when it is resized.</short>
<descr>
<p>
<var>RestoredHeight</var> is a read-only <var>Integer</var> property which 
contains the height for the form when size is altered in <var>WMSize</var> or 
<var>WMMove</var> message handlers. The property value is applied when the 
asynchronous queued event handler for the form is executed and calls the 
<var>DoOnChangeBounds</var> method.
</p>
</descr>
<seealso>
<link id="TCustomForm.WMSize"/>
<link id="#lcl.controls.TControl.Height">TControl.Height</link>
<link id="#lcl.controls.TControl.DoOnChangeBounds">TControl.DoOnChangeBounds</link>
</seealso>
</element>

<element name="TCustomForm.ShowInTaskBar">
<short>
Indicates if the form should be displayed on the system Task Bar.
</short>
<descr>
<p>
<var>ShowInTaskBar</var> is a <var>TShowInTaskbar</var> property which 
indicates whether the form instance should be displayed as an icon on the 
system task bar. The default value for the property is <var>stDefault</var>, 
and indicates the default behavior for the application, widgetset, platform, 
or operating system is used. See 
<link id="TShowInTaskbar">TShowInTaskbar</link> for more information about 
values in the enumeration and their meanings.
</p>
<p>
ShowInTaskBar is used in conjunction with the <var>TaskBarBehavior</var> 
property in the <var>Application</var> singleton to determine the effective 
(realized) visibility for the form on the system task bar. For example, the 
value may be changed when it conflicts with the value in TaskBarBehavior.
</p>
<p>
Changing the value for the property causes the effective visibility to be 
recalculated when the form is not hidden, or a MDI child form. The value is 
posted to the widgetset class. Actions performed in the widget are 
platform-specific, and may include:
</p>
<ul>
<li>Update and apply style flags for the form window (when needed).</li>
<li>Show or Hide the form window (as needed).</li>
<li>
Disable the request when not supported in the widgetset or the display 
protocol (like X-11, Wayland).
</li>
<li>
Update other properties which control the feature (GTK2 and GTK use their  
SkipTaskBarHint properties).
</li>
</ul>
<p>
In short, ShowInTaskBar is the requested visibility on the task bar. 
EffectiveShowInTaskBar is the visibility as determined by the Application and 
the widgetset / platform at run-time. stDefault is the value which enables 
use of the platform rules. Any given value assigned to either ShowInTaskBar 
or in Application.TaskBarBehavior can be overridden at run-time based on the 
capabilities for the widgetset or the display manager.
</p>
<remark>
For the macOS Carbon widgetset, ShowInTaskBar is not supported.
</remark>
</descr>
<seealso>
<link id="TCustomForm.EffectiveShowInTaskBar"/>
<link id="Application"/>
<link id="TApplication.TaskBarBehavior"/>
<link id="TShowInTaskbar"/>
</seealso>
</element>

<element name="TCustomForm.Visible">
<short>
Indicates if the control is visible on its parent.
</short>
<descr>
<p>
Re-declared in TCustomForm to use a different storage specifier than the 
ancestor class. In TCustomForm, visibility is not tied to an Action or an 
ActionLink; it uses the value in the Visible property.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Visible">TControl.Visible</link>
</seealso>
</element>

<element name="TCustomForm.WindowState">
<short>
Indicates whether the form is displayed in a minimized, maximized, 
full-screen or normal state.
</short>
<descr>
<p>
<var>WindowState</var> is a <var>TWindowState</var> property which indicates 
whether the form is currently displayed minimized, maximized, full-screen or 
normal (restored) state. The default value is <var>wsNormal</var> (i. e. 
neither minimized nor maximized).
</p>
<p>
Changing the value for the property at run-time causes the 
<var>ShowWindow</var> routine to be called with the Integer display command 
representing the new property value. The action is not performed at 
design-time, or when <var>Showing</var> is set to <b>False</b>.
</p>
<remark>
For the Windows platform, wsFullScreen is converted to wsMaximized when 
calling the ShowWindow API function; the Windows API does not provide a 
full-screen option.
</remark>
</descr>
<seealso>
<link id="TCustomForm.Show"/>
<link id="TWindowState"/>
<link id="#lcl.controls.TWinControl.Showing">TWinControl.Showing</link>
<link id="#lcl.lclintf.ShowWindow">ShowWindow</link>
</seealso>
</element>

<element name="TCustomFormClass">
<short>Class reference for the TCustomForm class.</short>
<descr>
<p>
Used primarily in the implementation of window classes for the Lazarus IDE.
</p>
</descr>
<seealso>
<link id="TCustomForm"/>
</seealso>
</element>

<element name="TForm">
<short>Implements a form used in an LCL application.</short>
<descr>
<p>
<var>TForm</var> is a <var>TCustomForm</var> descendant which implements a 
form displayed in an LCL application. It sets the visibility and default 
values for properties introduced in ancestor classes. It also adds methods 
needed for use as an MDI form in an application. LCL version information is 
available in the <var>LCLVersion</var> property, and is streamed to to the 
component resource file when a <var>Parent</var> is not assigned for the form.
</p>
<p>
Forms created at design-time using the Lazarus IDE are TForm descendants. A 
form can be used as the main form in an application, or it can be displayed 
as a MDI forms, dialog box, or tool window. Controls can added to the form, 
such as: TEdit, TLabel, TButton, TCheckBox, TComboBox, TListView, TTreeView, 
et. al.
</p>
</descr>
<seealso>
<link id="TCustomForm"/>
</seealso>
</element>

<element name="TForm.FLCLVersion" link="#lcl.forms.TForm.LCLVersion"/>

<element name="TForm.LCLVersionIsStored" link="#lcl.forms.TForm.LCLVersion"/>
<element name="TForm.LCLVersionIsStored.Result" link="#lcl.forms.TForm.LCLVersion.Result"/>

<element name="TForm.WSRegisterClass">
<short>
Creates an association between the class type and its widgetset class.
</short>
<descr>
<p>
WSRegisterClass is an overridden class procedure used to register the 
widgetset class used to create new instances of the form.
</p>
</descr>
<seealso>
<link id="#lcl.forms.TCustomForm.WSRegisterClass">TCustomForm.WSRegisterClass</link>
</seealso>
</element>

<element name="TForm.CreateWnd">
<short>
Creates the handle for the widgetset class and updates it menu and icons.
</short>
<descr>
<p>
<var>CreateWnd</var> is an overridden method in <var>TForm</var>. It makes 
the form instance the main form in the <var>Application</var> singleton if 
not already assigned and the form is not a MDI Child or a splash form.
</p>
<p>
CreateWnd calls the inherited method to create (or re-create) the Handle for 
the widgetset class, set the form state and auto-sizing behavior, and update 
its Menu and Icons.
</p>
</descr>
<seealso>
<link id="TCustomForm.CreateWnd"/>
<link id="TCustomForm.FormStyle"/>
<link id="TCustomForm.Menu"/>
<link id="TCustomForm.Icon"/>
<link id="TCustomForm.BorderIcons"/>
<link id="TApplication.MainForm"/>
</seealso>
</element>

<element name="TForm.Loaded">
<short>
Performs actions when LCL component streaming has been completed for the form 
instance.
</short>
<descr>
<p>
<var>Loaded</var> is an overridden method in <var>TForm</var>, and calls the 
inherited method on entry. It ensures that the value in the 
<var>LCLVersion</var> property is set to the <var>lcl_version</var> constant 
from the <file>LCLVersion</file> unit.
</p>
</descr>
<seealso>
<link id="TForm.LCLVersion"/>
<link id="TCustomForm.Loaded"/>
</seealso>
</element>

<element name="TForm.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is an overridden constructor for the class instance. Create 
ensures that the <var>LCLVersion</var> property is updated with the value 
from the <var>lcl_version</var> constant in the <file>LCLVersion</file> unit. 
Create calls the inherited constructor prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="TCustomForm.Create"/>
<link id="TCustomForm.CreateNew"/>
<link id="#lcl.lclversion.lcl_version">lcl_version</link>
</seealso>
</element>
<element name="TForm.Create.TheOwner">
<short>Owner of the form instance.</short>
</element>

<element name="TForm.Cascade">
<short>Arranges MDI child forms so they overlap.</short>
<descr>
<p>
Cascade is a method used to arrange MDI Child forms so that they overlap in a 
cascading fashion.
</p>
<p>
No actions are performed in the method when FormStyle has a value other than 
fsMDIForm. At run-time, the Cascade method in the widgetset class is called 
when its Handle has been allocated.
</p>
<p>
Use Tile to arrange MDI child forms in a grid format.
</p>
</descr>
<seealso/>
</element>

<element name="TForm.Next">
<short>
Activates the next child MDI form (fsMDIChild) in the form sequence.
</short>
<descr/>
<seealso/>
</element>

<element name="TForm.Previous">
<short>Activates the previous MDI child form in the form sequence.</short>
<descr/>
<seealso/>
</element>

<element name="TForm.Tile">
<short>Arranges MDI child forms side-by-side in a grid format.</short>
<descr/>
<seealso/>
</element>

<element name="TForm.ArrangeIcons">
<short>Arranges the icons for minimized forms in a MDI form.</short>
<descr>
<p>
<var>ArrangeIcons</var> is a method used to arrange the icons for minimized 
forms on a MDI form. No actions are performed in the method at design-time, 
or when <var>FormStyle</var> is set to a value other than 
<var>fsMDIForm</var>. ArrangeIcons calls the corresponding method in the 
widgetset class when its <var>Handle</var> has been allocated.
</p>
</descr>
<seealso>
<link id="TCustomForm.FormStyle"/>
<link id="#lcl.controls.TWinControl.Handle">TWinControl.Handle</link>
<link id="#lcl.controls.TWinControl.HandleAllocated">TWinControl.HandleAllocated</link>
</seealso>
</element>

<element name="TForm.ClientHandle" link="#lcl.forms.TCustomForm.ClientHandle"/>
<element name="TForm.DockManager" link="#lcl.controls.TWinControl.DockManager"/>
<element name="TForm.Action" link="#lcl.controls.TControl.Action"/>
<element name="TForm.ActiveControl" link="#lcl.forms.TCustomForm.ActiveControl"/>
<element name="TForm.Align" link="#lcl.controls.TControl.Align"/>
<element name="TForm.AllowDropFiles" link="#lcl.forms.TCustomForm.AllowDropFiles"/>
<element name="TForm.AlphaBlend" link="#lcl.forms.TCustomForm.AlphaBlend"/>
<element name="TForm.AlphaBlendValue" link="#lcl.forms.TCustomForm.AlphaBlendValue"/>
<element name="TForm.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TForm.AutoScroll" link="#lcl.forms.TCustomForm.AutoScroll"/>
<element name="TForm.AutoSize" link="#lcl.controls.TControl.AutoSize"/>
<element name="TForm.BiDiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TForm.BorderIcons" link="#lcl.forms.TCustomForm.BorderIcons"/>
<element name="TForm.BorderStyle" link="#lcl.forms.TCustomForm.BorderStyle"/>
<element name="TForm.BorderWidth" link="#lcl.controls.TWinControl.BorderWidth"/>
<element name="TForm.Caption" link="#lcl.controls.TControl.Caption"/>
<element name="TForm.ChildSizing" link="#lcl.controls.TWinControl.ChildSizing"/>
<element name="TForm.ClientHeight" link="#lcl.controls.TControl.ClientHeight"/>
<element name="TForm.ClientWidth" link="#lcl.controls.TControl.ClientWidth"/>
<element name="TForm.Color" link="#lcl.forms.TCustomForm.Color"/>
<element name="TForm.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TForm.DefaultMonitor" link="#lcl.forms.TCustomForm.DefaultMonitor"/>
<element name="TForm.DesignTimePPI" link="#lcl.forms.TCustomDesignControl.DesignTimePPI"/>
<element name="TForm.DockSite" link="#lcl.controls.TWinControl.DockSite"/>
<element name="TForm.DoubleBuffered" link="#lcl.controls.TWinControl.DoubleBuffered"/>
<element name="TForm.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TForm.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element name="TForm.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TForm.Font" link="#lcl.controls.TControl.Font"/>
<element name="TForm.FormStyle" link="#lcl.forms.TCustomForm.FormStyle"/>
<element name="TForm.HelpFile" link="#lcl.forms.TCustomForm.HelpFile"/>
<element name="TForm.Icon" link="#lcl.forms.TCustomForm.Icon"/>
<element name="TForm.KeyPreview" link="#lcl.forms.TCustomForm.KeyPreview"/>
<element name="TForm.Menu" link="#lcl.forms.TCustomForm.Menu"/>
<element name="TForm.ParentBiDiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TForm.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element name="TForm.ParentFont" link="#lcl.forms.TCustomForm.ParentFont"/>
<element name="TForm.PixelsPerInch" link="#lcl.forms.TCustomDesignControl.PixelsPerInch"/>
<element name="TForm.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element name="TForm.PopupMode" link="#lcl.forms.TCustomForm.PopupMode"/>
<element name="TForm.PopupParent" link="#lcl.forms.TCustomForm.PopupParent"/>
<element name="TForm.Position" link="#lcl.forms.TCustomForm.Position"/>

<element name="TForm.SessionProperties">
<short>
Delimited list of form and / or component properties saved to and restored 
from an external storage mechanism.
</short>
<descr>
<p>
SessionProperties is a String property with the names of properties, in the 
form instance or its child components. It allows published property values to 
be saved to and restored from an external storage mechanism like: 
TIniPropStorage, TXMLPropStorage, or TJSONPropStorage.
</p>
<p>
Values in the property are delimited using the ';' (SemiColon) character. 
Component properties require both the component and property names using 
dotted notation like 'Image1.Visible'. The values can be assigned at 
design-time using a dialog in the Lazarus IDE, or by setting the property 
value at run-time.
</p>
<p>
For example:
</p>
<code>
// var AForm: TForm;
AForm.SessionProperties := 'Top;Left;WindowState;Image1.Visible;Image1.Transparent';
</code>
<p>
At design-time, the selection dialog is limited to published properties since 
RTTI is used to display and access the property values. Use the event 
handlers in the storage mechanism, or its StoredValues property, to save or 
restore properties with lesser visibility. Use the Save and Restore methods 
in the storage mechanism to read and write the property values.
</p>
<p>
TForm sets the visibility for SessionProperties, introduced in TControl, to 
published.
</p>
</descr>
<seealso>
<link id="TControl.SessionProperties"/>
<link id="#lcl.propertystorage.TCustomPropertyStorage">TCustomPropertyStorage</link>
<link id="#lcl.inipropstorage.TIniPropStorage">TIniPropStorage</link>
<link id="#lcl.xmlpropstorage.TXMLPropStorage">TXMLPropStorage</link>
<link id="#lcl.jsonpropstorage.TJSONPropStorage">TJSONPropStorage</link>
</seealso>
</element>

<element name="TForm.ScreenSnap" link="#lcl.forms.TCustomForm.ScreenSnap"/>

<element name="TForm.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TForm.ShowInTaskBar" link="#lcl.forms.TCustomForm.ShowInTaskBar"/>

<element name="TForm.SnapBuffer" link="#lcl.forms.TCustomForm.SnapBuffer"/>
<element name="TForm.SnapOptions" link="#lcl.forms.TCustomForm.SnapOptions"/>

<element name="TForm.UseDockManager" link="#lcl.controls.TWinControl.UseDockManager"/>

<element name="TForm.LCLVersion">
<short>
The LCL version number as a String type.
</short>
<descr>
<p>
LCLVersion is a String property which written to the LCL streaming mechanism 
when ComponentState indicates the form instance was created a design-time 
(csDesignInstance). Used to distinguish form streaming content for different 
versions of the LCL. The value is assigned in both the Create constructor and 
the Loaded method. The property is set to the value in the lcl_version 
constant.
</p>
</descr>
<seealso>
<link id="TForm.Create"/>
<link id="TCustomForm.Loaded"/>
<link id="#lcl.lclversion.lcl_version">lcl_version</link>
<link id="#rtl.classes.TComponent.ComponentState">TComponent.ComponentState</link>
</seealso>
</element>

<element name="TForm.Scaled" link="#lcl.forms.TCustomDesignControl.Scaled"/>
<element name="TForm.Visible" link="#lcl.forms.TCustomForm.Visible"/>
<element name="TForm.WindowState" link="#lcl.forms.TCustomForm.WindowState"/>
<element name="TForm.OnActivate" link="#lcl.forms.TCustomForm.OnActivate"/>
<element name="TForm.OnChangeBounds" link="#lcl.controls.TControl.OnChangeBounds"/>
<element name="TForm.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TForm.OnClose" link="#lcl.forms.TCustomForm.OnClose"/>
<element name="TForm.OnCloseQuery" link="#lcl.forms.TCustomForm.OnCloseQuery"/>
<element name="TForm.OnConstrainedResize" link="#lcl.controls.TControl.OnConstrainedResize"/>
<element name="TForm.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TForm.OnCreate" link="#lcl.forms.TCustomForm.OnCreate"/>
<element name="TForm.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element name="TForm.OnDeactivate" link="#lcl.forms.TCustomForm.OnDeactivate"/>
<element name="TForm.OnDestroy" link="#lcl.forms.TCustomForm.OnDestroy"/>
<element name="TForm.OnDockDrop" link="#lcl.controls.TWinControl.OnDockDrop"/>
<element name="TForm.OnDockOver" link="#lcl.controls.TWinControl.OnDockOver"/>
<element name="TForm.OnDragDrop" link="#lcl.controls.TControl.OnDragDrop"/>
<element name="TForm.OnDragOver" link="#lcl.controls.TControl.OnDragOver"/>
<element name="TForm.OnDropFiles" link="#lcl.forms.TCustomForm.OnDropFiles"/>
<element name="TForm.OnEndDock" link="#lcl.controls.TControl.OnEndDock"/>
<element name="TForm.OnGetSiteInfo" link="#lcl.controls.TWinControl.OnGetSiteInfo"/>
<element name="TForm.OnHelp" link="#lcl.forms.TCustomForm.OnHelp"/>
<element name="TForm.OnHide" link="#lcl.forms.TCustomForm.OnHide"/>
<element name="TForm.OnKeyDown" link="#lcl.controls.TWinControl.OnKeyDown"/>
<element name="TForm.OnKeyPress" link="#lcl.controls.TWinControl.OnKeyPress"/>
<element name="TForm.OnKeyUp" link="#lcl.controls.TWinControl.OnKeyUp"/>
<element name="TForm.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="TForm.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TForm.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TForm.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TForm.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TForm.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TForm.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TForm.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TForm.OnMouseWheelHorz" link="#lcl.controls.TControl.OnMouseWheelHorz"/>
<element name="TForm.OnMouseWheelLeft" link="#lcl.controls.TControl.OnMouseWheelLeft"/>
<element name="TForm.OnMouseWheelRight" link="#lcl.controls.TControl.OnMouseWheelRight"/>
<element name="TForm.OnPaint" link="#lcl.controls.TCustomControl.OnPaint"/>
<element name="TForm.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element name="TForm.OnShortCut" link="#lcl.forms.TCustomForm.OnShortcut"/>
<element name="TForm.OnShow" link="#lcl.forms.TCustomForm.OnShow"/>
<element name="TForm.OnShowHint" link="#lcl.controls.TControl.OnShowHint"/>
<element name="TForm.OnStartDock" link="#lcl.controls.TControl.OnStartDock"/>
<element name="TForm.OnUnDock" link="#lcl.controls.TWinControl.OnUnDock"/>
<element name="TForm.OnUTF8KeyPress" link="#lcl.controls.TWinControl.OnUTF8KeyPress"/>
<element name="TForm.OnWindowStateChange" link="#lcl.forms.TCustomForm.OnWindowStateChange"/>

<element name="TFormClass">
<short>
Class type used to create new TForm instances.
</short>
<descr>
<p>
Class type used to create new TForm instances. Used in the 
<file>CustomForm</file> package to register a custom form type, unit, or 
package.
</p>
</descr>
<seealso>
<link id="TForm"/>
</seealso>
</element>

<element name="TCustomDockForm">
<short>A floating DockSite used to make TControls float.</short>
<descr/>
<seealso/>
</element>

<element name="TCustomDockForm.DoAddDockClient">
<short>
Adds Client as a child control which fills the entire area for the docked 
form.
</short>
<descr>
<p>
<var>DoAddDockClient</var> is an overridden method used to add the control in 
Client to the docked form. It calls the inherited method on entry to set the 
Parent in Client to the current class instance. It sets the Align property in 
Client to alAlign to align the control to the bounds for the docked form. 
Values in the BorderSpacing property in Client are reset to 0; the current 
class instance provides the BorderSpacing values for the docked control. At 
run-time, the Visible property is set to <b>True</b> to display the docked 
form after the Client has been added.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.DoAddDockClient">TWinControl.DoAddDockClient</link>
</seealso>
</element>
<element name="TCustomDockForm.DoAddDockClient.Client">
<short>Control added to the docked form instance.</short>
</element>
<element name="TCustomDockForm.DoAddDockClient.ARect">
<short>Not used in the current implementation.</short>
</element>

<element name="TCustomDockForm.DoRemoveDockClient">
<short>
Removes the specified form from the list of docked clients, and releases the 
dock form when all docked clients have been removed.
</short>
<descr/>
<seealso>
<link id="#lcl.controls.TWinControl.DoRemoveDockClient">TWinControl.DoRemoveDockClient</link>
</seealso>
</element>
<element name="TCustomDockForm.DoRemoveDockClient.Client">
<short>
Client control removed from the dock list in the method.
</short>
</element>

<element name="TCustomDockForm.GetSiteInfo">
<short>
Disallows docking of a second client.
</short>
<descr>
<p>
<var>GetSiteInfo</var> is an overridden method in <var>TCustomDockForm</var>. 
It reimplements the method introduced in the ancestor class (TWinControl). 
The value in the <var>CanDock</var> argument is set to <b>True</b> when there 
are no other docked clients on the docking form instance. Values in the 
Client, InfluenceRect, and MousePos arguments are <b>not</b> used in the 
method.
</p>
<p>
GetSiteInfo does <b>not</b> call the inherited method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.OnGetSiteInfo">TWinControl.OnGetSiteInfo</link>
</seealso>
</element>
<element name="TCustomDockForm.GetSiteInfo.Client">
<short>Not used in the method.</short>
</element>
<element name="TCustomDockForm.GetSiteInfo.InfluenceRect">
<short>Not used in the method.</short>
</element>
<element name="TCustomDockForm.GetSiteInfo.MousePos">
<short>Not used in the method.</short>
</element>
<element name="TCustomDockForm.GetSiteInfo.CanDock">
<short>
Returns <b>True</b> when no other docked clients exist on the form instance.
</short>
</element>

<element name="TCustomDockForm.Loaded">
<short>
Tries to make all child controls dockclients. This is of little use in 
practice, a floating host docksite should have no child controls.
</short>
<descr/>
<seealso>
<link id="TCustomForm.Loaded"/>
</seealso>
</element>

<element name="TCustomDockForm.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
Create is the overridden constructor for the class instance. It calls 
CreateNew to create a new form instance, and sets the default values for:
</p>
<ul>
<li>AutoScroll (False)</li>
<li>BorderStyle (bsSizeToolWin)</li>
<li>DockSite (True)</li>
<li>FormStyle (fsStayOnTop)</li>
</ul>
</descr>
<seealso>
<link id="TCustomForm.CreateNew"/>
</seealso>
</element>

<element name="TCustomDockForm.Create.TheOwner">
<short>Owner for the class instance.</short>
</element>

<element name="TCustomDockForm.AutoScroll">
<short>
Indicates if the form can automatically show or hide its scroll bars.
</short>
<descr>
<p>
<var>AutoScroll</var> is a <var>Boolean</var> property which indicates if the 
form can automatically show or hide its scroll bars. The default value for 
the property is <b>False</b> in <var>TCustomDockForm</var>.
</p>
<p>
AutoScroll can only be <b>True</b> when the BorderStyle for the form is 
bsSizeable or bsSizeToolWin, and may be changed to <b>False</b> at run-time 
when BorderStyle is changed to another value.
</p>
</descr>
<seealso>
<link id="#lcl.forms.TCustomDockForm.BorderStyle">TCustomDockForm.BorderStyle</link>
<link id="#lcl.forms.TCustomForm.AutoScroll">TCustomForm.AutoScroll</link>
</seealso>
</element>

<element name="TCustomDockForm.BorderStyle">
<short>
The border style affects the title bar, border, icons, and resize behavior of 
the form.
</short>
<descr>
<p>
Use BorderStyle to get or set the appearance of the border on a form. 
The default value in TCustomDockForm is bsSizeToolWin.
</p>
<p>
This property is slightly different (has a different base type) than the 
TCustomControl.BorderStyle property. When the form is put into another 
control the window borders depend on the widgetset. There are no borders 
under GTK.
</p>
</descr>
<seealso>
<link id="#lcl.forms.TCustomForm.BorderStyle">TCustomForm.BorderStyle</link>
<link id="#lcl.controls.TFormBorderStyle">TFormBorderStyle</link>
</seealso>
</element>

<element name="TCustomDockForm.FormStyle">
<short>
Indicates the style for the form.
</short>
<descr>
<p>
The default value in TCustomDockForm is fsStayOnTop.
</p>
</descr>
<seealso>
<link id="#lcl.forms.TCustomForm.FormStyle">TCustomForm.FormStyle</link>
<link id="#lcl.controls.TFormStyle">TFormStyle</link>
</seealso>
</element>

<element name="TCustomDockForm.PixelsPerInch" link="#lcl.forms.TCustomDesignControl.PixelsPerInch"/>

<element name="THintWindow">
<short>
The pop-up box containing helpful information that appears when the mouse 
pointer hovers over an object.
</short>
<descr>
<p>
THintWindow is a TCustomForm descendant used to display text hints. It is not 
intended for use with child controls.
</p>
<p>
Usage:
</p>
<code>
HintWindow := THintWindow.Create(nil);
Rect := HintWindow.CalcHintRect(0, 'This is the hint',nil);
HintWindow.ActivateHint(Rect, 'This is the hint');
</code>
</descr>
<seealso/>
</element>

<element name="THintWindow.FActivating">
<short><b>True</b> during ActivateHint.</short>
</element>

<element name="THintWindow.FAlignment"/>
<element name="THintWindow.FHintRect"/>
<element name="THintWindow.FHintData"/>
<element name="THintWindow.FAutoHide"/>

<element name="THintWindow.FAutoHideTimer">
<short>The timer used to make the hint disappear.</short>
</element>

<element name="THintWindow.FHideInterval"/>
<element name="THintWindow.FHintControl"/>

<element name="THintWindow.AdjustBoundsForMonitor">
<short>Adjusts HintRect to fit on the current monitor.</short>
<descr>
<p>
Used in the implementation of the <var>OffsetHintRect</var> method.
</p>
</descr>
<seealso>
<link id="THintWindow.HintRect"/>
<link id="THintWindow.HintRectAdjust"/>
<link id="THintWindow.OffsetHintRect"/>
</seealso>
</element>
<element name="THintWindow.AdjustBoundsForMonitor.KeepWidth">
<short>Indicates that the width for HintRect should not be decreased.</short>
</element>
<element name="THintWindow.AdjustBoundsForMonitor.KeepHeight">
<short>Indicates that the height for HintRect should not be decreased.</short>
</element>

<element name="THintWindow.GetDrawTextFlags">
<short>Collects the flags for Draw Text formatting.</short>
<descr>
<p>
Returns a Cardinal value that contains the Draw Text flags needed for the 
Alignment and BiDiMode used in the hint window.
</p>
</descr>
<seealso>
<link id="THintWindow.Alignment"/>
<link id="THintWindow.BiDiMode"/>
</seealso>
</element>
<element name="THintWindow.GetDrawTextFlags.Result">
<short>Draw Text flags for the hint window.</short>
</element>

<element name="THintWindow.SetAutoHide">
<short>Sets the value for the AutoHide property.</short>
<descr/>
<seealso>
<link id="#lcl.forms.THintWindow.AutoHide">THintWindow.AutoHide</link>
</seealso>
</element>
<element name="THintWindow.SetAutoHide.Value">
<short>New value for the property.</short>
</element>

<element name="THintWindow.AutoHideHint">
<short>Hides the hint window when the hint timer has expired.</short>
<descr>
<p>
Called when the hint timer expires. Ensures that the internal hint timer is 
disabled. Hides the hint window by setting the <var>Visible</var> property to 
<b>False</b>.
</p>
</descr>
<seealso>
<link id="THintWindow.AutoHide"/>
<link id="THintWindow.HideInterval"/>
</seealso>
</element>
<element name="THintWindow.AutoHideHint.Sender">
<short>Not used in the method.</short>
</element>

<element name="THintWindow.SetHideInterval">
<short>Sets the value for the HideInterval property.</short>
<descr/>
<seealso>
<link id="THintWindow.HideInterval"/>
</seealso>
</element>
<element name="THintWindow.SetHideInterval.Value">
<short>New value for the property.</short>
</element>

<element name="THintWindow.SetHintRectAdjust">
<short>Sets the value for the HintRectAdjust property.</short>
<descr/>
<seealso>
<link id="THintWindow.HintRectAdjust"/>
</seealso>
</element>
<element name="THintWindow.SetHintRectAdjust.AValue">
<short>New value for the property.</short>
</element>

<element name="THintWindow.WSRegisterClass" link="#lcl.lclclasses.TLCLComponent.WSRegisterClass"/>

<element name="THintWindow.WMNCHitTest">
<short>
Handles the WM_NCHITTEST window message for the hint window.
</short>
<descr>
<p>
Sets the result in <var>Message</var> to <var>HTTRANSPARENT</var>. This 
forces the message to be forwarded to other windowed controls in the Z-Order 
until a value other than HTTRANSPARENT is returned.
</p>
</descr>
<seealso/>
</element>
<element name="THintWindow.WMNCHitTest.Message">
<short>Window message examined and updated in the method.</short>
</element>

<element name="THintWindow.ActivateSub">
<short>
Sets the bounds for the hint window and configures the auto-hide timer.
</short>
<descr>
<p>
Sets the bounds for the hint window to the values in the <var>HintRect</var> 
property, and makes the window <var>Visible</var>. The internal auto-hide 
timer is enabled when <var>AutoHide</var> contains <b>True</b>.
</p>
<p>
Called from the ActivateHint method.
</p>
</descr>
<seealso>
<link id="THintWindow.HintRect"/>
<link id="THintWindow.AutoHide"/>
<link id="THintWindow.ActivateHint"/>
<link id="#lcl.controls.TControl.Visible">TControl.Visible</link>
</seealso>
</element>

<element name="THintWindow.DoShowWindow" link="#lcl.forms.TCustomForm.DoShowWindow"/>

<element name="THintWindow.UpdateRegion">
<short>Updates the Window Region fir the hint window.</short>
<descr>
<p>
<var>UpdateRegion</var> calls the <var>SetWindowRgn</var> routine to set the 
window region for the hint window. The window region contains the area where 
the system can perform drawing operations; no area outside of the window 
region can be updated.
</p>
<remark>
<var>SetWindowRgn</var> requires access to the Handle for the hint window; no 
actions are performed in the method when <var>HandleAllocated</var> returns 
<b>False</b>.
</remark>
<p>
When <var>UseBGThemes</var> is enabled, <var>ThemeServices</var> are used to 
get the theme element details needed for the client rectangle in the hint 
window.
</p>
</descr>
<seealso>
<link id="THintWindow.UseBGThemes"/>
<link id="THintWindow.UseBGThemes"/>
</seealso>
</element>

<element name="THintWindow.SetColor">
<short>Sets the value for the Color property.</short>
<descr/>
<seealso>
<link id="#lcl.controls.TControl.Color">TControl.Color</link>
</seealso>
</element>
<element name="THintWindow.SetColor.Value">
<short>New value for the property.</short>
</element>

<element name="THintWindow.UseBGThemes">
<short>
Indicates if a background from theme services is used when drawing the hint 
window.
</short>
<descr/>
<seealso/>
</element>
<element name="THintWindow.UseBGThemes.Result">
<short><b>True</b> when ThemeServices are used for the background.</short>
</element>

<element name="THintWindow.UseFGThemes">
<short>
Indicates if theme services are used for the foreground rendered for the hint 
window.
</short>
<descr>
<p>
The return value is <b>True</b> when the <var>Font</var> used on the hint 
window is the stock system font for the platform.
</p>
</descr>
<seealso/>
</element>
<element name="THintWindow.UseFGThemes.Result">
<short>
<b>True</b> when ThemeServices are used to draw the foreground for the hint 
window.
</short>
</element>

<element name="THintWindow.Paint">
<short>Draws the content in the hint window.</short>
<descr>
<p>
<var>Paint</var> is an overridden method in <var>THintWindow</var>. It 
extends the inherited method to implement default drawing using the 
<var>Canvas</var> and the settings enabled for theme services. When 
<var>CountrolCount</var> is <b>0</b>, the internal routine is used to render 
the content.When CountrolCount indicates that child controls are present on 
the hint window, the inherited Paint method is called to render the content.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TCustomControl.Paint">TCustomControl.Paint</link>
</seealso>
</element>

<element name="THintWindow.FSysHintFont"/>

<element name="THintWindow.SysHintFont">
<short>System font used to draw text in the hint window.</short>
<descr/>
<seealso/>
</element>
<element name="THintWindow.SysHintFont.Result">
<short>TFont instance for the system font provided by the widgetset.</short>
</element>

<element name="THintWindow.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
Destroy is a class method used as the destructor for the class. Destroy 
ensures that the reference to the System Font used for hint windows is freed.
</p>
</descr>
<seealso>
<link id="THintWindow.SysHintFont"/>
</seealso>
</element>

<element name="THintWindow.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance. 
Create calls the inherited <var>CreateNew</var> constructor, and allocates 
resources needed in the class instance. This includes an internal timer used 
when <var>AutoHide</var> is set to <b>True</b>.
</p>
<p>
Create sets the default values for the following properties:
</p>
<dl>
<dt>Parent</dt>
<dd>Set to Nil</dd>
<dt>Color</dt>
<dd>Set to clInfoBk</dd>
<dt>Font</dt>
<dd>Uses the Screen.HintFont</dd>
<dt>Canvas</dt>
<dd>Uses the brush style bsClear</dd>
<dt>Alignment</dt>
<dd>Set to taLeftJustify</dd>
<dt>BorderStyle</dt>
<dd>Set to bsNone</dd>
<dt>Caption</dt>
<dd>Set to an empty string ('')</dd>
<dt>HideInterval</dt>
<dd>Set to 3000 milliseconds (3 seconds)</dd>
<dt>AutoHide</dt>
<dd>Set to <b>False</b></dd>
</dl>
<p>
Create uses the default size from the class type for the control to set the 
initial bounds for the hint window.
</p>
</descr>
<seealso/>
</element>
<element name="THintWindow.Create.AOwner">
<short>Owner of the class instance.</short>
</element>

<element name="THintWindow.ActivateHint">
<short>
Shows the hint window with the specified hint text.
</short>
<descr>
<p>
<var>ActivateHint</var> is an overloaded procedure used to display a pop-up 
hint window with the text specified in <var>AHint</var>. ActivateSub is called 
to set the bounds for the hint window to the values in HintRect, display the 
hint window, and enable its auto-hide timer.
</p>
<remark>
No actions are performed in the method if ActivateHint has been previously 
called with the same hint text (Caption) and display area in HintRect.
</remark>
<p>
An overloaded variant allows the display area for the hint window to be 
specified using its <var>ARect</var> argument. This variant updates HintRect to 
the argument value and ensures that the display rectangle for the hint window 
fits within the work area for the monitor where the hint window is located. 
Member values in HintRect are adjusted as needed to position the window before 
it becomes Visible.
</p>
<p>
ActivateHint is used in the implementation of methods like ActivateWithBounds 
and ActivateHintData.
</p>
<p>
Use CalcHintRect to get the display rectangle for a hint window with a 
specified width, hint text, or other associated hint data.
</p>
<p>
Example usage:
</p>
<code>
HintWindow := THintWindow.Create(nil);
Rect := HintWindow.CalcHintRect(0,'This is the hint', Nil);
HintWindow.ActivateHint(Rect,'This is the hint');
</code>
</descr>
<seealso>
<link id="THintWindow.ActivateWithBounds"/>
<link id="THintWindow.ActivateHintData"/>
<link id="THintWindow.ActivateSub"/>
<link id="THintWindow.CalcHintRect"/>
<link id="THintWindow.HintRect"/>
<link id="THintWindow.SetBounds"/>
</seealso>
</element>
<element name="THintWindow.ActivateHint.AHint">
<short>Text displayed in the hint window.</short>
</element>
<element name="THintWindow.ActivateHint.ARect">
<short>TRect with the display area for the hint window.</short>
</element>

<element name="THintWindow.ActivateWithBounds">
<short>
Sets the bounds in HintRect and activates the hint window.
</short>
<descr>
<p>
<var>ActivateWithBounds</var> is a procedure used to display a hint window 
without adjusting its position or size using the private AdjustBoundsForMonitor 
method. ActivateWithBounds sets the value in <var>HintRect</var> to the value 
in the <var>ARect</var> argument. ActivateWithBounds calls ActivateHint using 
the value in <var>AHint</var> as the text displayed in the hint window.
</p>
<p>
ActivateWithBounds is used in controls (like TSynEdit) where the bounds for the 
hint window use predetermined screen coordinates.
</p>
</descr>
<seealso>
<link id="THintWindow.HintRect"/>
<link id="THintWindow.ActivateHint"/>
</seealso>
</element>
<element name="THintWindow.ActivateWithBounds.ARect">
<short>Rectangle with the bounds assigned to HintRect.</short>
</element>
<element name="THintWindow.ActivateWithBounds.AHint">
<short>Text displayed in the hint window.</short>
</element>

<element name="THintWindow.ActivateHintData">
<short>
An alternate version of ActivateHint with additional data used for the hint 
display.
</short>
<descr>
<p>
<var>ActivateHintData</var> is an alternate version of <var>ActivateHint</var>. 
It provides the additional <var>AData</var> argument which contains a pointer 
to values which can be used to construct the text displayed in the hint window.
</p>
<p>
ActivateHintData stores the value in ARect to the HintRect for the hint window. 
It ensures that the display rectangle fits within the work area for the monitor 
where the hint window is displayed. Values in HintRect are adjusted as needed 
to position and size the window before the hint window becomes visible. 
ActivateHint is called to display the window with the specified hint text.
</p>
<remark>
The ActivateHintData implementation in <var>THintWindow</var> does not use the 
value in <var>AData</var>. The method must be overridden in a descendent class 
to use the additional hint data in the <var>AData</var> argument.
</remark>
</descr>
<seealso>
<link id="THintWindow.ActivateHint"/>
<link id="THintWindow.HintRect"/>
</seealso>
</element>
<element name="THintWindow.ActivateHintData.ARect">
<short>Display rectangle for the hint text.</short>
</element>
<element name="THintWindow.ActivateHintData.AHint">
<short>Text displayed in the hint window.</short>
</element>
<element name="THintWindow.ActivateHintData.AData">
<short>Pointer to additional data used to construct the hint text.</short>
</element>

<element name="THintWindow.CalcHintRect">
<short>
Determines the display rectangle needed the specified hint text.
</short>
<descr>
<p>
CalcHintRect is a TRect function used to determine the display rectangle 
required for the hint window.
</p>
<p>
<var>MaxWidth</var> indicates the maximum width for the hint window (in pixels) 
after hint borders and spacing are applied. If MaxWidth is 0 (zero) or a 
negative number, the width for the Monitor where the Top and Left coordinates 
are located is used. The value excludes any space needed for borders and 
spacing on the hint window.
</p>
<p>
<var>AHint</var> contains the hint text displayed in the Window.
</p>
<p>
<var>AData</var> is a Pointer to additional data used to construct the hint 
text displayed in the window. Please note that AData is not used in the current 
implementation. An overridden ActivateHintData method (in a descendent class) 
can be used for the purpose though.
</p>
<p>
The return value is a TRect instance which contains the Top, Left, Right, and 
Bottom screen coordinates for the client area in the hint window. An empty 
rectangle (0, 0, 0, 0) is returned when AHint is an empty string ('').
</p>
<p>
CalcHintRect automatically scales the hint window when Scaled is enabled for 
both the Application and the form instance, and when PixelsPerInch in the hint 
window does not match the PixelsPerInch capability for the target Monitor. 
The width for the text in AHint is calculated using the hint window font, and 
the Right and Bottom members in the return value are updated accordingly.
</p>
<p>
Use the ActivateHint method to display the hint window using the coordinates in 
the return value.
</p>
<p>
Example usage:
</p>
<code>
HintWindow := THintWindow.Create(nil);
Rect := HintWindow.CalcHintRect(0,'This is the hint', Nil);
HintWindow.ActivateHint(Rect,'This is the hint');
</code>
</descr>
<seealso>
<link id="THintWindow.ActivateSub"/>
<link id="THintWindow.ActivateHint"/>
<link id="TApplication.Scaled"/>
<link id="TCustomDesignControl.Scaled"/>
<link id="Application"/>
<link id="TScreen.MonitorFromPoint"/>
<link id="TScreen.Monitors"/>
<link id="Screen"/>
</seealso>
</element>
<element name="THintWindow.CalcHintRect.Result">
<short>Display area needed for the hint display.</short>
</element>
<element name="THintWindow.CalcHintRect.MaxWidth">
<short>
Maximum width for the hint display when greater than zero, otherwise the full 
monitor width is used.
</short>
</element>
<element name="THintWindow.CalcHintRect.AHint">
<short>
Hint text used to calculate the display area.
</short>
</element>
<element name="THintWindow.CalcHintRect.AData">
<short>
Pointer to additional data used to construct the hint text. Mot used in the 
method.
</short>
</element>

<element name="THintWindow.OffsetHintRect">
<short>Moves the hint rectangle by the specified amounts.</short>
<descr/>
<seealso>
<link id="THintWindow.HintRect"/>
<link id="THintWindow.HintRectAdjust"/>
</seealso>
</element>
<element name="THintWindow.OffsetHintRect.Result">
<short>
<b>True</b> when the hint rectangle was successfully moved by the specified 
amounts.
</short>
</element>
<element name="THintWindow.OffsetHintRect.AOffset">
<short>
TPoint with the horizontal and vertical offsets for the hint display.
</short>
</element>
<element name="THintWindow.OffsetHintRect.dy">
<short>Additional vertical offset applied to the hint rectangle.</short>
</element>
<element name="THintWindow.OffsetHintRect.KeepWidth">
<short>
Indicates the width for the hint rectangle must be maintained.
</short>
</element>
<element name="THintWindow.OffsetHintRect.KeepHeight">
<short>
Indicates the height for the hint rectangle must be maintained.
</short>
</element>

<element name="THintWindow.InitializeWnd" link="#lcl.forms.TCustomForm.InitializeWnd"/>

<element name="THintWindow.IsHintMsg">
<short>
Indicates if the specified message is relevant to a hint window display.
</short>
<descr>
<p>
<var>IsHintMsg</var> is a <var>Boolean</var> function used to determine if 
the message instance in <var>Msg</var> is recognized in 
<var>THintWindow</var>.
</p>
<remark>
Not used in the current LCL implementation.
</remark>
</descr>
<seealso>
<link id="#lcl.lcltype.TMsg">TMsg</link>
</seealso>
</element>
<element name="THintWindow.IsHintMsg.Result">
<short>
<b>True</b> if the message is used for hint windows, <b>False</b> for all 
other messages.
</short>
</element>
<element name="THintWindow.IsHintMsg.Msg">
<short>TMsg instance with the message examined in the method.</short>
</element>

<element name="THintWindow.ReleaseHandle">
<short>Destroys an allocated handle for the widget.</short>
<descr>
<p>
ReleaseHandle is a method used to free the Handle allocated for the control 
in the widgetset class. It calls the DestroyHandle method if the Handle has 
been allocated for the class instance. ReleaseHandle is called by methods in 
the widgetset class to ensure that the Handle is set 0 (the un-initialized 
value).
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.DestroyHandle">TWinControl.DestroyHandle</link>
</seealso>
</element>

<element name="THintWindow.SetBounds">
<short>
Applies the argument values to the bounds for the control.
</short>
<descr>
<p>
<var>SetBounds</var> is an overridden method in <var>THintWindow</var>. It 
calls the inherited method on entry to apply the argument values to the 
bounds for the class instance. It calls the UpdateRegion method to set the 
window region, or apply a background theme when enabled.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.InitializeWnd">TWinControl.InitializeWnd</link>
</seealso>
</element>
<element name="THintWindow.SetBounds.ALeft">
<short>Value for the Left property.</short>
</element>
<element name="THintWindow.SetBounds.ATop">
<short>Value for the Top property.</short>
</element>
<element name="THintWindow.SetBounds.AWidth">
<short>Value for the Width property.</short>
</element>
<element name="THintWindow.SetBounds.AHeight">
<short>Value for the Height property.</short>
</element>

<element name="THintWindow.GetControlClassDefaultSize" link="#lcl.controls.TControl.GetControlClassDefaultSize"/>
<element name="THintWindow.GetControlClassDefaultSize.Result"/>

<element name="THintWindow.OnMouseDown" link="#lcl.controls.TControl.OnMouseDown"/>
<element name="THintWindow.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="THintWindow.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="THintWindow.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>

<element name="THintWindow.Alignment">
<short>Text alignment used for the hint window.</short>
<descr>
<p>
<var>Alignment</var> is a <var>TAlignment</var> property that indicates the 
alignment used for the text displayed in the hint window.
</p>
<p>
The default value for the property is <var>taLeftJustify</var>, as assigned 
in the <var>Create</var> constructor. The value in Alignment is used to 
derive the draw text flags required for the <var>BidiMode</var> in the hint 
display, and passed to to <var>DrawText</var> routine in theme services or 
widgetset classes.
</p>
</descr>
<seealso>
<link id="THintWindow.BiDiMode"/>
<link id="TAlignment"/>
</seealso>
</element>

<element name="THintWindow.HintRect">
<short>Contains the bounds used to display the text for the hint.</short>
<descr>
<p>
<var>HintRect</var> is a <var>TRect</var> property which contains the bounds 
used to display the hint when it is activated. <var>HintRect</var> is 
adjusted using the values in <var>HintRectAdjust</var> (when assigned) and 
the borders drawn around the hint display.
</p>
</descr>
<seealso>
<link id="THintWindow.ActivateHint"/>
<link id="THintWindow.ActivateHintData"/>
<link id="THintWindow.ActivateWithBounds"/>
<link id="THintWindow.HintRectAdjust"/>
</seealso>
</element>

<element name="THintWindow.HintRectAdjust">
<short>
Contains the bounds with additional space needed for the hint display.
</short>
<descr/>
<seealso/>
</element>

<element name="THintWindow.HintData">
<short>
Pointer to data used to formulate text displayed in the hint window.
</short>
<descr/>
<seealso/>
</element>

<element name="THintWindow.HintControl">
<short>
Windowed control which is the parent for the hint window.
</short>
<descr>
<p>
<var>HintControl</var> is an experimental <var>TControl</var> property which 
contains a reference to the windowed control to which the hint window is 
attached. Its value is assigned in the TApplication.ShowHintWindow method to 
the HintControl property provided by the Application. The value is used in the 
GTK3 widgetset to provide a handle that identifies the parent widget; hence, 
its experimental designation.
</p>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TApplication.ShowHintWindow"/>
</seealso>
</element>

<element name="THintWindow.AutoHide">
<short>Does the hint disappear (get hidden) after a while?</short>
<descr>
<p>
If <var>AutoHide</var> is <b>True</b>, the hint disappears after an interval 
specified by <link id="THintWindow.HideInterval">HideInterval</link>.
</p>
</descr>
<seealso/>
</element>

<element name="THintWindow.BiDiMode" link="#lcl.controls.TControl.BiDiMode"/>

<element name="THintWindow.HideInterval">
<short>The time after which the displayed hint disappears.</short>
<descr/>
<seealso>
<link id="THintWindow.AutoHide"/>
</seealso>
</element>

<element name="THintWindowClass">
<short>Class of <var>THintWindow</var>.</short>
<descr/>
<seealso>
<link id="THintWindow"/>
</seealso>
</element>

<element name="THintWindowRendered">
<short>
For a rendered hint with a child control added by an external provider.
</short>
<descr/>
<seealso/>
</element>
<element name="THintWindowRendered.Create">
<short>Constructor for the class instance.</short>
<descr/>
<seealso/>
</element>
<element name="THintWindowRendered.Create.AOwner">
<short>Owner of the class instance.</short>
</element>

<element name="THintWindowRendered.Destroy">
<short>Destructor for the class instance.</short>
<descr/>
<seealso/>
</element>

<element name="THintWindowRendered.ActivateRendered">
<short>
Shows hint contents are rendered by a provider on child control.
</short>
<descr/>
<seealso/>
</element>

<element name="TMonitor">
<short>Provides information about a physical monitor.</short>
<descr>
<p>
Monitor information is retrieved dynamically from the Operating System. This 
ensures that any changes to the installed hardware devices or their 
configuration are taken into account. <var>TMonitor</var> has properties that 
reflect its dimensions, use as the primary monitor, and its display density 
(or Pixels per Inch).
</p>
<p>
<var>TMonitor</var> is the type returned when reading the 
<var>TScreen.Monitors</var> property. <var>TMonitor</var> is the type used to 
implement the <var>TCustomForm.Monitor</var> property.
</p>
</descr>
<seealso>
<link id="TCustomForm.Monitor"/>
<link id="TScreen.Monitors"/>
</seealso>
</element>

<element name="TMonitor.FHandle" link="#lcl.forms.TMonitor.Handle"/>
<element name="TMonitor.FMonitorNum" link="#lcl.forms.TMonitor.MonitorNum"/>

<element name="TMonitor.GetInfo">
<short>Retrieves monitor information from the OS or platform.</short>
<descr>
<p>
<var>Getinfo</var> is a <var>Boolean</var> function used to get monitor 
information from the OS or platform hosting the LCL application. 
<var>Getinfo</var> initializes the <var>Info</var> output parameter to the 
size required for the <var>TMonitorInfo</var> type, and calls the 
<var>GetMonitorInfo</var> routine for the widgetset.
</p>
<p>
The return value is <b>True</b> when monitor information is successfully 
retrieved for the OS or platform. <var>Info</var> contains the size, display 
rectangle, work area, and flags for the monitor.
</p>
</descr>
<seealso>
<link id="#lcl.lcltype.TMonitorInfo">TMonitorInfo</link>
</seealso>
</element>
<element name="TMonitor.GetInfo.Result">
<short>
<b>True</b> when monitor information was successfully retrieved.
</short>
</element>
<element name="TMonitor.GetInfo.Info">
<short>TMonitorInfo with values retrieved for the OS or platform.</short>
</element>

<element name="TMonitor.GetLeft">
<short>Gets the value for the Left property.</short>
<descr/>
<seealso>
<link id="TMonitor.Left"/>
</seealso>
</element>
<element name="TMonitor.GetLeft.Result">
<short>Value for the property.</short>
</element>

<element name="TMonitor.GetHeight">
<short>
Gets the value for the Height property.
</short>
<descr/>
<seealso>
<link id="TMonitor.Height"/>
</seealso>
</element>
<element name="TMonitor.GetHeight.Result">
<short>
Value for the Height property.
</short>
</element>

<element name="TMonitor.GetPixelsPerInch">
<short>Gets the value for the PixelsPerInch property.</short>
<descr/>
<seealso>
<link id="TMonitor.PixelsPerInch"/>
</seealso>
</element>
<element name="TMonitor.GetPixelsPerInch.Result">
<short>Value for the property.</short>
</element>

<element name="TMonitor.GetTop">
<short>
Gets the value for the Top property.
</short>
<descr/>
<seealso>
<link id="TMonitor.Top"/>
</seealso>
</element>
<element name="TMonitor.GetTop.Result">
<short>
Value for the Top property.
</short>
</element>

<element name="TMonitor.GetWidth">
<short>
Gets the value for the Width property.
</short>
<descr/>
<seealso>
<link id="TMonitor.Width"/>
</seealso>
</element>
<element name="TMonitor.GetWidth.Result">
<short>
Value for the Width property.
</short>
</element>

<element name="TMonitor.GetBoundsRect">
<short>
Gets the value for the BoundsRect property.
</short>
<descr/>
<seealso>
<link id="TMonitor.BoundsRect"/>
</seealso>
</element>
<element name="TMonitor.GetBoundsRect.Result">
<short>
Value for the BoundsRect property.
</short>
</element>

<element name="TMonitor.GetWorkareaRect">
<short>
Gets the value for the WorkareaRect property.
</short>
<descr/>
<seealso>
<link id="TMonitor.WorkareaRect"/>
</seealso>
</element>
<element name="TMonitor.GetWorkareaRect.Result">
<short>
Value for the WorkareaRect property.
</short>
</element>

<element name="TMonitor.GetPrimary">
<short>
Gets the value for the Primary property.
</short>
<descr/>
<seealso>
<link id="TMonitor.Primary"/>
</seealso>
</element>
<element name="TMonitor.GetPrimary.Result">
<short>
Value for the Primary property.
</short>
</element>

<element name="TMonitor.Handle">
<short>Handle which identifies this monitor to the system.</short>
</element>

<element name="TMonitor.MonitorNum">
<short>
Index of the monitor in the <link id="TScreen.Monitors"/> list.
</short>
<descr>
<p>
<var>MonitorNum</var> is a read-only Integer property with the ordinal 
position where the class instance is stored in a list of Monitors. The value 
for the property is assigned in the UpdateMonitors method in TScreen when the 
monitor class instance is created and stored.
</p>
</descr>
<seealso>
<link id="TScreen.Monitors"/>
<link id="TScreen.UpdateMonitors"/>
</seealso>
</element>

<element name="TMonitor.Left">
<short>The left-most screen coordinate for the display.</short>
<descr>
<p>
<var>Left</var> is a read-only Integer property with the coordinate for the 
left edge of the monitor. It contains the value from the Left member in 
BoundsRect.
</p>
</descr>
<seealso>
<link id="TMonitor.BoundsRect"/>
<link id="#rtl.types.TRect">TRect</link>
</seealso>
</element>

<element name="TMonitor.Height">
<short>
The height for the display.
</short>
<descr>
<p>
<var>Height</var> is a read-only Integer property with the height for the 
monitor in pixels. The property value is calculated as the difference between 
the Bottom and Top members in BoundsRect.
</p>
</descr>
<seealso>
<link id="TMonitor.BoundsRect"/>
<link id="#rtl.types.TRect">TRect</link>
</seealso>
</element>

<element name="TMonitor.Top">
<short>
The top-most screen coordinate for the display.
</short>
<descr>
<p>
<var>Top</var> is a read-only Integer property with the top coordinate for 
the monitor. It contains the value from the Top member in BoundsRect.
</p>
</descr>
<seealso>
<link id="TMonitor.BoundsRect"/>
<link id="#rtl.types.TRect">TRect</link>
</seealso>
</element>

<element name="TMonitor.Width">
<short>
The width for the display.
</short>
<descr>
<p>
Width is a read-only Integer property with the width for the monitor. It is 
calculated as the difference between the Right and Left members in BoundsRect.
</p>
</descr>
<seealso>
<link id="TMonitor.BoundsRect"/>
<link id="#rtl.types.TRect">TRect</link>
</seealso>
</element>

<element name="TMonitor.BoundsRect">
<short>
Rectangle with the dimensions for the monitor.
</short>
<descr>
<p>
<var>BoundsRect</var> is a read-only TRect property which contains the bounds 
for the display device. The property value is assigned from TMonitorInfo 
information retrieved using the platform-specific GetMonitorInfo routine. The 
rectangle can be empty (where all members have the value 0) if monitor 
information was not successfully retrieved from the widgetset.
</p>
</descr>
<seealso>
<link id="#lcl.lclintf.GetMonitorInfo">GetMonitorInfo</link>
<link id="#lcl.lcltype.TMonitorInfo">TMonitorInfo</link>
<link id="#rtl.types.TRect">TRect</link>
</seealso>
</element>

<element name="TMonitor.WorkareaRect">
<short>
The usable display area on the monitor excluding the system task bar.
</short>
<descr>
<p>
<var>WorkareaRect</var> is a read-only TRect property with the bounds for the 
usable display area on the monitor. This does not include any space covered 
by the system task bar.
</p>
<p>
The property value is assigned from TMonitorInfo information retrieved using 
the platform-specific GetMonitorInfo routine. The rectangle can be empty 
(where all members have the value 0) if monitor information was not 
successfully retrieved from the widgetset.
</p>
</descr>
<seealso>
<link id="#lcl.lclintf.GetMonitorInfo">GetMonitorInfo</link>
<link id="#lcl.lcltype.TMonitorInfo">TMonitorInfo</link>
<link id="#rtl.types.TRect">TRect</link>
</seealso>
</element>

<element name="TMonitor.Primary">
<short>
Contains <b>True</b> if this is the primary monitor for the system.
</short>
<descr>
<p>
<var>Primary</var> is a read-only Boolean property which indicates if the 
monitor is the primary display in a list of monitors. The property value is 
determined using flag values in the TMonitorInfo retrieved using 
GetMonitorInfo for the platform or operating system. It is set to <b>True</b> 
when the monitor information contains MONITORINFOF_PRIMARY in its flags.
</p>
<p>
Primary is used when the value for the PrimaryMonitor property is retrieved 
in the TScreen class. It indicates which TMonitor instance is used as the 
value for the PrimaryMonitor property.
</p>
</descr>
<seealso>
<link id="TScreen.PrimaryMonitor"/>
<link id="#lcl.lclintf.GetMonitorInfo">GetMonitorInfo</link>
<link id="#lcl.lcltype.TMonitorInfo">TMonitorInfo</link>
</seealso>
</element>

<element name="TMonitor.PixelsPerInch">
<short>
Contains the Pixels Per Inch (or display density) for the monitor.
</short>
<descr>
<p>
PixelsPerInch is a read-only Integer property with the display density for 
the monitor. The property value is determined by calling the GetDpiForMonitor 
routine for the widgetset to retrieve the effective dots-per-inch for both 
horizontal and vertical dimensions. The horizontal density is used in the 
property value.
</p>
<p>
If the GetDpiForMonitor routine does not complete successfully, the 
PixelsPerInch property in TScreen is used as the property value.
</p>
<p>
PixelsPerInch can be used at run-time to ensure that the display density for 
a Font or Canvas matches the setting in a specific monitor. It is used in the 
Show and AutoScale methods in TCustomForm to apply an auto-adjust layout 
policy. It is also used in the form designer for the Lazarus IDE to perform 
similar actions during component streaming.
</p>
</descr>
<seealso>
<link id="#lcl.forms.TCustomForm.Show">TCustomForm.Show</link>
<link id="#lcl.forms.TCustomForm.AutoScale">TCustomForm.AutoScale</link>
</seealso>
</element>

<element name="TMonitorList">
<short>
A list of monitors available on the system.
</short>
<descr>
<p>
<var>TMonitorList</var> is a <var>TList</var> descendant used to store 
<var>TMonitor</var> class instances representing the physical monitors 
attached to the system. It provides an indexed <var>Items</var> property that 
can be used to access monitor information by an ordinal position in the list. 
It also provides an overridden Notify method to free a TMonitor instance when 
the <var>lnDeleted</var> list notification is received.
</p>
<p>
TMonitorList is the type used to implement the <var>Monitors</var> property 
in <var>TScreen</var>.
</p>
</descr>
<seealso>
<link id="TMonitor"/>
<link id="TScreen.Monitors"/>
<link id="#rtl.classes.TList">TList</link>
</seealso>
</element>

<element name="TMonitorList.GetItem" link="#lcl.forms.TMonitorList.Items"/>
<element name="TMonitorList.GetItem.Result"/>
<element name="TMonitorList.GetItem.AIndex"/>

<element name="TMonitorList.SetItem" link="#lcl.forms.TMonitorList.Items"/>
<element name="TMonitorList.SetItem.AIndex"/>
<element name="TMonitorList.SetItem.AValue"/>

<element name="TMonitorList.Notify">
<short>
List notification handler which destroys the Monitor object on removal from 
the list.
</short>
<descr/>
<seealso/>
</element>
<element name="TMonitorList.Notify.Ptr">
<short>The monitor object.</short>
</element>
<element name="TMonitorList.Notify.Action">
<short>The list operation.</short>
</element>

<element name="TMonitorList.Items">
<short>The indexed list of all Monitors.</short>
<descr>
<p>
<var>Items</var> is a <var>TMonitor</var> property which provides indexed 
access to a monitor in the list by its ordinal position. Items is the default 
property for the list, and the target for a list enumerator for the class 
instance.
</p>
<p>
TMonitor instances in Items are create and added at run-time when the 
<var>UpdateMonitors</var> method in <var>TScreen</var> is called. This occurs 
in response to a <var>WM_DISPLAYCHANGE</var> message in the processing loop 
for an application.
</p>
</descr>
<seealso>
<link id="TMonitor"/>
<link id="TScreen.UpdateMonitors"/>
<link id="TApplication.HandleMessage"/>
</seealso>
</element>
<element name="TMonitorList.Items.AIndex">
<short>Ordinal position for a monitor in the list.</short>
</element>

<element name="PCursorRec" link="#lcl.forms.TCursorRec"/>

<element name="TCursorRec">
<short>Contains information about a cursor shape.</short>
<descr>
<p>
<var>TCursorRec</var> is a record type which contains information about a 
cursor shape used in an application. It contains members with the index 
position for the cursor, the Handle for the cursor resource, and a pointer to 
the next cursor record in the list.
</p>
</descr>
<seealso/>
</element>

<element name="TCursorRec.Next">
<short>Pointer to the next cursor record in the list.</short>
<descr/>
<seealso/>
</element>

<element name="TCursorRec.Index">
<short>Position of the cursor record in the list..</short>
<descr/>
<seealso/>
</element>

<element name="TCursorRec.Handle">
<short>The handle for the cursor resource.</short>
<descr/>
<seealso/>
</element>

<element name="TScreenFormEvent">
<short>
Type used for a screen notification handler for form-related events.
</short>
<descr/>
<seealso>
<link id="TScreenNotification"/>
<link id="TScreenControlEvent"/>
</seealso>
</element>
<element name="TScreenFormEvent.Sender">
<short>TObject for the event notification.</short>
</element>
<element name="TScreenFormEvent.Form">
<short>The affected form.</short>
</element>

<element name="TScreenControlEvent">
<short>
Type for a screen notification handler used for control-related events.
</short>
<descr/>
<seealso>
<link id="TScreenFormEvent"/>
<link id="TScreenNotification"/>
</seealso>
</element>
<element name="TScreenControlEvent.Sender">
<short>TObject for the event notification.</short>
</element>
<element name="TScreenControlEvent.LastControl">
<short>The <b>new</b> active control.</short>
</element>

<element name="TScreenNotification">
<short>Screen notification events and handler types.</short>
<descr/>
<version>
Modified in LCL version 3.0 to include snNewFormCreated in the enumeration 
values.
</version>
<seealso>
<link id="TScreenFormEvent"/>
<link id="TScreenControlEvent"/>
</seealso>
</element>
<element name="TScreenNotification.snNewFormCreated">
<short>
Indicates that a new form instance has been instantiated on a TScreen.
</short>
</element>
<element name="TScreenNotification.snFormAdded">
<short>A form was added.</short>
</element>
<element name="TScreenNotification.snRemoveForm">
<short>A form was removed.</short>
</element>
<element name="TScreenNotification.snActiveControlChanged">
<short>The focus moved to another control.</short>
</element>
<element name="TScreenNotification.snActiveFormChanged">
<short>The focus moved to another form.</short>
</element>
<element name="TScreenNotification.snFormVisibleChanged">
<short>The visibility of a form changed.</short>
</element>

<element name="TMonitorDefaultTo">
<short>
The monitor to use when screen coordinates are outside of the physical bounds 
for the screens.
</short>
<descr>
</descr>
<seealso>
</seealso>
</element>
<element name="TMonitorDefaultTo.mdNearest">
<short>Default to the nearest monitor.</short>
</element>
<element name="TMonitorDefaultTo.mdNull">
<short>Default to Nil (no suggested monitor).</short>
</element>
<element name="TMonitorDefaultTo.mdPrimary">
<short>Default to the primary monitor.</short>
</element>

<element name="TScreen">
<short>
Provides information about screen displays in an application.
</short>
<descr>
<p>
<var>TScreen</var> is a <var>TLCLComponent</var> descendant which provides 
information about multiple monitors in an LCL application. TScreen allows the 
GUI for an application to be managed on multiple monitors. It includes the 
size and resolution for a screen, and allows mapping the virtual Desktop and 
Workareas to the physical Monitors known to the application.
</p>
<p>
TScreen also provides access to objects displayed on a given screen, 
including: <var>Forms</var>, <var>Cursors</var>, and <var>Fonts</var>. For 
Delphi compatibility, non-visual <var>DataModules</var> are also included in 
the TScreen information. Properties are provided in the class with the 
currently active Form, Control and Cursor for a screen.
</p>
<p>
TScreen is the type used for the <var>Screen</var> singleton in an LCL 
application.
</p>
</descr>
<seealso>
<link id="TScreen.Cursors"/>
<link id="TScreen.DataModules"/>
<link id="TScreen.Fonts"/>
<link id="TScreen.Forms"/>
<link id="TScreen.CustomForms"/>
<link id="TScreen.Monitors"/>
<link id="TScreen.WorkareaRect"/>
<link id="TScreen.DesktopRect"/>
</seealso>
</element>

<element name="TScreen.crScreen"/>
<element name="TScreen.FActiveControl" link="#lcl.forms.TScreen.ActiveControl"/>
<element name="TScreen.FActiveCustomForm" link="#lcl.forms.TScreen.ActiveCustomForm"/>
<element name="TScreen.FActiveForm" link="#lcl.forms.TScreen.ActiveForm"/>
<element name="TScreen.FCursor" link="#lcl.forms.TScreen.Cursor"/>
<element name="TScreen.FTempCursors"/>
<element name="TScreen.FCursorMap" link="#lcl.forms.TScreen.Cursors"/>
<element name="TScreen.FCustomForms" link="#lcl.forms.TScreen.CustomForms"/>
<element name="TScreen.FCustomFormsZOrdered" link="#lcl.forms.TScreen.CustomFormsZOrdered"/>
<element name="TScreen.FDefaultCursor"/>
<element name="TScreen.FHintFont" link="#lcl.forms.TScreen.HintFont"/>
<element name="TScreen.FFocusedForm" link="#lcl.forms.TScreen.FocusedForm"/>
<element name="TScreen.FFonts" link="#lcl.forms.TScreen.Fonts"/>
<element name="TScreen.FFormList" link="#lcl.forms.TScreen.Forms"/>
<element name="TScreen.FDataModuleList" link="#lcl.forms.TScreen.DataModules"/>
<element name="TScreen.FIconFont" link="#lcl.forms.TScreen.IconFont"/>
<element name="TScreen.FMenuFont" link="#lcl.forms.TScreen.MenuFont"/>
<element name="TScreen.FScreenHandlers"/>
<element name="TScreen.FLastActiveControl">
<short>The last active control, used to detect focus changes.</short>
<seealso>
<link id="TScreen.RestoreLastActive"/>
</seealso>
</element>
<element name="TScreen.FLastActiveCustomForm">
<short>The last active form, used to detect focus changes.</short>
<descr/>
<seealso>
<link id="TScreen.RestoreLastActive"/>
</seealso>
</element>
<element name="TScreen.FMonitors" link="#lcl.forms.TScreen.Monitors"/>
<element name="TScreen.FOnActiveControlChange" link="#lcl.forms.TScreen.OnActiveControlChange"/>
<element name="TScreen.FOnActiveFormChange" link="#lcl.forms.TScreen.OnActiveFormChange"/>
<element name="TScreen.FPixelsPerInch" link="#lcl.forms.TScreen.PixelsPerInch"/>
<element name="TScreen.FSaveFocusedList"/>
<element name="TScreen.FSystemFont" link="#lcl.forms.TScreen.SystemFont"/>

<element name="TScreen.FMagnetManager"/>

<!-- private -->
<element name="TScreen.DeleteCursor">
<short>Removes the specified cursor from the Cursors property.</short>
<descr/>
<seealso>
<link id="TScreen.Cursors"/>
</seealso>
</element>
<element name="TScreen.DeleteCursor.AIndex">
<short>The logical cursor ID.</short>
</element>

<element name="TScreen.DestroyCursors">
<short>Deletes all TCursor instances in the Cursors property.</short>
<descr/>
<seealso>
<link id="TScreen.Cursors"/>
</seealso>
</element>

<element name="TScreen.DestroyMonitors">
<short>Clears the Monitors list.</short>
<descr/>
<seealso>
<link id="TScreen.Monitors"/>
</seealso>
</element>

<element name="TScreen.GetCursors">
<short>Gets the value for the indexed Cursors property.</short>
<descr/>
<seealso>
<link id="TScreen.Cursors"/>
</seealso>
</element>
<element name="TScreen.GetCursors.Result">
<short>Value for the indexed property.</short>
</element>
<element name="TScreen.GetCursors.AIndex">
<short>The logical cursor ID.</short>
</element>

<element name="TScreen.GetCustomFormCount">
<short>Gets the value for the CustomFormCount property.</short>
<descr/>
<seealso>
<link id="TScreen.CustomFormCount"/>
</seealso>
</element>
<element name="TScreen.GetCustomFormCount.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.GetCustomFormZOrderCount" link="#lcl.forms.TScreen.CustomFormZOrderCount"/>
<element name="TScreen.GetCustomFormZOrderCount.Result"/>

<element name="TScreen.GetCustomForms">
<short>Gets the value for the indexed CustomForms property.</short>
<descr/>
<seealso>
<link id="TScreen.CustomForms"/>
</seealso>
</element>
<element name="TScreen.GetCustomForms.Result">
<short>Value for the indexed property.</short>
</element>
<element name="TScreen.GetCustomForms.Index">
<short>Ordinal position for the property value.</short>
</element>

<element name="TScreen.GetCustomFormsZOrdered">
<short>
Gets the value for the indexed CustomFormsZOrdered property.
</short>
<descr/>
<seealso>
<link id="TScreen.CustomFormsZOrdered"/>
</seealso>
</element>
<element name="TScreen.GetCustomFormsZOrdered.Result">
<short>
TCustomForm instance at the specified position in the Z-Order.
</short>
</element>
<element name="TScreen.GetCustomFormsZOrdered.Index">
<short>
Ordinal position for the property value; smaller values are higher in the 
Z-Order.
</short>
</element>

<element name="TScreen.GetDataModuleCount">
<short>Gets the value for the DataModuleCount property.</short>
<descr/>
<seealso>
<link id="TScreen.DataModuleCount"/>
</seealso>
</element>
<element name="TScreen.GetDataModuleCount.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.GetDataModules">
<short>Gets the value for the indexed DataModules property.</short>
<descr/>
<seealso>
<link id="TScreen.DataModules"/>
</seealso>
</element>
<element name="TScreen.GetDataModules.Result">
<short>Value for the indexed property.</short>
</element>
<element name="TScreen.GetDataModules.AIndex">
<short>Ordinal position for the property value.</short>
</element>

<element name="TScreen.GetDesktopLeft">
<short>Gets the value for the DesktopLeft property.</short>
<descr/>
<seealso>
<link id="TScreen.DesktopLeft"/>
</seealso>
</element>
<element name="TScreen.GetDesktopLeft.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.GetDesktopTop">
<short>Gets the value for the DesktopTop property.</short>
<descr/>
<seealso>
<link id="TScreen.DesktopTop"/>
</seealso>
</element>
<element name="TScreen.GetDesktopTop.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.GetDesktopHeight">
<short>Gets the value for the DesktopHeight property.</short>
<descr/>
<seealso>
<link id="TScreen.DesktopHeight"/>
</seealso>
</element>
<element name="TScreen.GetDesktopHeight.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.GetDesktopWidth">
<short>Gets the value for the DesktopWidth property.</short>
<descr/>
<seealso>
<link id="TScreen.DesktopWidth"/>
</seealso>
</element>
<element name="TScreen.GetDesktopWidth.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.GetDesktopRect">
<short>Gets the value for the DesktopRect property.</short>
<descr/>
<seealso>
<link id="TScreen.DesktopRect"/>
</seealso>
</element>
<element name="TScreen.GetDesktopRect.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.GetFonts">
<short>Gets the value for the Fonts property.</short>
<descr/>
<seealso>
<link id="TScreen.Fonts"/>
</seealso>
</element>
<element name="TScreen.GetFonts.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.GetFormCount">
<short>Gets the value for the GetFormCount property.</short>
<descr/>
<seealso>
<link id="TScreen.FormCount"/>
</seealso>
</element>
<element name="TScreen.GetFormCount.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.GetForms">
<short>Gets the value for the indexed Forms property.</short>
<descr/>
<seealso>
<link id="TScreen.Forms"/>
</seealso>
</element>
<element name="TScreen.GetForms.Result">
<short>Value for the property.</short>
</element>
<element name="TScreen.GetForms.Index">
<short>
Ordinal position for the form instance in the property value.
</short>
</element>

<element name="TScreen.GetHeight">
<short>Gets the value for the Height property.</short>
<descr>
<p>
Calls <var>GetSystemMetrics</var> to get the value for the property.
</p>
</descr>
<seealso>
<link id="TScreen.Height"/>
</seealso>
</element>
<element name="TScreen.GetHeight.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.GetMonitor">
<short>
Gets the value for the indexed Monitors property.
</short>
<descr/>
<seealso>
<link id="TScreen.Monitors"/>
</seealso>
</element>
<element name="TScreen.GetMonitor.Result">
<short>
Value for the indexed Monitors property.
</short>
</element>
<element name="TScreen.GetMonitor.Index">
<short>
Ordinal position for the TMonitor instance in the property value.
</short>
</element>

<element name="TScreen.GetMonitorCount">
<short>
Gets the value for the MonitorCount property.
</short>
<descr/>
<seealso>
<link id="TScreen.MonitorCount"/>
</seealso>
</element>
<element name="TScreen.GetMonitorCount.Result">
<short>
Value for the MonitorCount property.
</short>
</element>

<element name="TScreen.GetPrimaryMonitor">
<short>
Gets the value for the PrimaryMonitor property.
</short>
<descr/>
<seealso>
<link id="TScreen.PrimaryMonitor"/>
</seealso>
</element>
<element name="TScreen.GetPrimaryMonitor.Result">
<short>
Value for the PrimaryMonitor property.
</short>
</element>

<element name="TScreen.GetWidth">
<short>
Gets the value for the Width property.
</short>
<descr/>
<seealso>
<link id="TScreen.Width"/>
</seealso>
</element>
<element name="TScreen.GetWidth.Result">
<short>
Value for the Width property.
</short>
</element>

<element name="TScreen.AddForm">
<short>
Internal notification handler which adds a new form to the list of forms on 
the screen.
</short>
<descr/>
<seealso/>
</element>
<element name="TScreen.AddForm.AForm">
<short>Form instance added in the method.</short>
</element>

<element name="TScreen.RemoveForm">
<short>
Internal notification handler which removes the specified form from the form 
list.
</short>
<descr/>
<seealso/>
</element>
<element name="TScreen.RemoveForm.AForm">
<short>Form instance removed from the list.</short>
</element>

<element name="TScreen.SetFocusedForm">
<short>
Handles form deactivation and activation changes, and makes the specified 
form the FocusedForm on the screen.
</short>
<descr>
<p>
<var>SetFocusedForm</var> ensures that the form in AForm becomes the 
<var>FocusedForm</var> in the class instance when needed. No actions are 
performed in the method, and the return value is set to <b>True</b>, when 
AForm and FocusedForm have the same values.
</p>
<p>
SetFocusedForm sends a CM_DEACTIVATE message to the form instance in 
FocusedForm (when assigned).
</p>
<p>
The return value indicates if the focus state has changed during form 
deactivation, and may return <b>False</b> if deactivation failed. FocusedForm 
is set to <b>Nil</b> if deactivation failed.
</p>
<p>
Otherwise, AForm is saved to the FocusedForm property and a CM_ACTIVATE 
message is performed. The return value is <b>False</b> if the activation 
failed.
</p>
<p>
SetFocuseForm is called from the <var>SetFocusedControl</var> method in 
<var>TCustomForm</var> when a new control becomes focused on a form other 
than FocusedForm.
</p>
</descr>
<seealso>
<link id="TScreen.FocusedForm"/>
<link id="TCustomForm.SetFocusedControl"/>
</seealso>
</element>
<element name="TScreen.SetFocusedForm.Result">
<short>
<b>False</b> if activation or deactivation fails. <b>True</b> on success or 
when no action is needed.
</short>
</element>
<element name="TScreen.SetFocusedForm.AForm">
<short>
Form instance to become the FocusedForm in the class instance.
</short>
</element>

<element name="TScreen.SetCursor">
<short>
Sets the value for the Cursor property.
</short>
<descr/>
<seealso>
<link id="TScreen.Cursor"/>
</seealso>
</element>
<element name="TScreen.SetCursor.AValue">
<short>
New value for the Cursor property.
</short>
</element>

<element name="TScreen.SetCursors">
<short>
Sets the value for the indexed Cursors property.
</short>
<descr/>
<seealso>
<link id="TScreen.Cursors"/>
</seealso>
</element>
<element name="TScreen.SetCursors.AIndex">
<short>
Ordinal position for the cursor handle stored in the indexed property.
</short>
</element>
<element name="TScreen.SetCursors.AValue">
<short>
New cursor handle stored in the property.
</short>
</element>

<element name="TScreen.SetHintFont">
<short>
Sets the value for the HintFont property.
</short>
<descr/>
<seealso>
<link id="TScreen.HintFont"/>
</seealso>
</element>
<element name="TScreen.SetHintFont.AValue">
<short>
New value for the HintFont property.
</short>
</element>

<element name="TScreen.SetIconFont">
<short>
Sets the value for the IconFont property.
</short>
<descr/>
<seealso>
<link id="TScreen.IconFont"/>
</seealso>
</element>
<element name="TScreen.SetIconFont.AValue">
<short>
New value for the IconFont property.
</short>
</element>

<element name="TScreen.SetMenuFont">
<short>
Sets the value for the MenuFont property.
</short>
<descr/>
<seealso>
<link id="TScreen.MenuFont"/>
</seealso>
</element>
<element name="TScreen.SetMenuFont.AValue">
<short>
New value for the MenuFont property.
</short>
</element>

<element name="TScreen.SetSystemFont">
<short>
Sets the value for the SystemFont property.
</short>
<descr/>
<seealso>
<link id="TScreen.SystemFont"/>
</seealso>
</element>
<element name="TScreen.SetSystemFont.AValue">
<short>
New value for the SystemFont property.
</short>
</element>

<element name="TScreen.UpdateLastActive">
<short>
Stores the currently active form and control in the last active members. 
Notifies all registered handlers of changes.
</short>
<descr/>
<seealso/>
</element>

<element name="TScreen.RestoreLastActive">
<short>
Moves the Focus back to the previously focused control.
</short>
<descr/>
<seealso/>
</element>

<element name="TScreen.AddHandler">
<short>
Adds a handler routine to the list for the specified handler type.
</short>
<descr>
<p>
<var>AddHandler</var> is a procedure used to add a screen notification 
handler to the list of handlers in the TScreen instance.
</p>
<p>
<var>HandlerType</var> is a <var>TScreenNotification</var> enumeration value 
that defines the situation(s) where the screen handler can be executed. See 
TScreenNotification for more information about values in the enumeration.
</p>
<p>
<var>Handler</var> is a <var>TMethod</var> record with pointers to the code 
and optional data executed when the handler is invoked.
</p>
<p>
<var>AsFirst</var> indicates if the handler should be inserted as the initial 
handler in the method list (when <b>True</b>), or appended to the end of the 
list (when <b>False</b>).
</p>
<p>
AddHandler calls <var>RaiseGDBException</var> to raise an exception when the 
pointer to the Code in Handler has not been assigned.
</p>
<p>
AddHandler ensures that a <var>TMethodList</var> exists for handlers using 
the value in HandlerType, and calls the <var>Add</var> method in the 
<var>TMethodList</var> to store the Handler at the position needed for 
AsFirst.
</p>
<p>
AddHandler is called from the implementation of more specialized methods like 
AddHandlerFormAdded, AddHandlerRemoveForm, AddHandlerActiveControlChanged, 
AddHandlerActiveFormChanged, and AddHandlerFormVisibleChanged.
</p>
</descr>
<seealso>
<link id="TScreen.AddHandlerFormAdded"/>
<link id="TScreen.AddHandlerActiveControlChanged"/>
<link id="TScreen.AddHandlerActiveFormChanged"/>
<link id="TScreen.AddHandlerFormVisibleChanged"/>
<link id="TScreen.AddHandlerRemoveForm"/>
<link id="TScreenNotification"/>
</seealso>
</element>
<element name="TScreen.AddHandler.HandlerType">
<short>The handler type where the routine is stored.</short>
</element>
<element name="TScreen.AddHandler.Handler">
<short>The handler routine added in the method.</short>
</element>
<element name="TScreen.AddHandler.AsFirst">
<short>
Add the handler as the first (True) or last (False) handler in the internal 
list.
</short>
</element>

<element name="TScreen.RemoveHandler">
<short>
Removes a screen notification handler using the specified type.
</short>
<descr/>
<seealso>
<link id="TScreenNotificationAddHandler"/>
</seealso>
</element>
<element name="TScreen.RemoveHandler.HandlerType">
<short>The screen notification (event) type.</short>
</element>
<element name="TScreen.RemoveHandler.Handler">
<short>The screen notification handler removed in the method.</short>
</element>

<element name="TScreen.DoAddDataModule">
<short>
Adds the specified data module to the internal list for the screen.
</short>
<descr/>
<seealso>
<link id="TScreen.DataModules"/>
</seealso>
</element>
<element name="TScreen.DoAddDataModule.DataModule">
<short>Data module instance added in the method.</short>
</element>

<element name="TScreen.DoRemoveDataModule">
<short>Removes the specified data module from the internal list.</short>
<descr/>
<seealso>
<link id="TScreen.DataModules"/>
</seealso>
</element>
<element name="TScreen.DoRemoveDataModule.DataModule">
<short>Data module removed in the method.</short>
</element>

<element name="TScreen.NotifyScreenFormHandler">
<short>
Notifies all registered handlers for the given event type.
</short>
<descr>
<p>
<var>NotifyScreenFormHandler</var> retrieves the internal 
<var>TMethodList</var> instance used for handler routines with the type 
specified in <var>HandlerType</var>. Each of the <var>TScreenFormEvent</var> 
instances is signalled using the current class (Self) and Form as arguments.
</p>
<p>
NotifyScreenFormHandler is called from methods in TScreen like AddForm, 
RemoveForm, and UpdateLastActive. It is also called (via the Screen 
singleton) from the VisibleChanged method in TCustomForm.
</p>
</descr>
<seealso>
<link id="TScreen.AddForm"/>
<link id="TScreen.RemoveForm"/>
<link id="TScreen.UpdateLastActive"/>
<link id="TCustomForm.VisibleChanged"/>
<link id="TScreenFormEvent"/>
<link id="TScreenNotification"/>
<link id="#lazutils.lazmethodlist.TMethodList">TMethodList</link>
</seealso>
</element>
<element name="TScreen.NotifyScreenFormHandler.HandlerType">
<short>Form event type for the notification.</short>
</element>
<element name="TScreen.NotifyScreenFormHandler.Form">
<short>Form instance for the notification.</short>
</element>

<element name="TScreen.GetWorkAreaHeight">
<short>
Gets the value for the WorkAreaHeight property.
</short>
<descr/>
<seealso>
<link id="TScreen.WorkAreaHeight"/>
</seealso>
</element>
<element name="TScreen.GetWorkAreaHeight.Result">
<short>
Value for the WorkAreaHeight property.
</short>
</element>

<element name="TScreen.GetWorkAreaLeft">
<short>
Gets the value for the WorkAreaLeft property.
</short>
<descr/>
<seealso>
<link id="TScreen.WorkAreaLeft"/>
</seealso>
</element>
<element name="TScreen.GetWorkAreaLeft.Result">
<short>
Value for the WorkAreaLeft property.
</short>
</element>

<element name="TScreen.GetWorkAreaRect">
<short>
Gets the value for the WorkAreaRect property.
</short>
<descr/>
<seealso>
<link id="TScreen.WorkAreaRect"/>
</seealso>
</element>
<element name="TScreen.GetWorkAreaRect.Result">
<short>
Value for the WorkAreaRect property.
</short>
</element>

<element name="TScreen.GetWorkAreaTop">
<short>
Gets the value for the WorkAreaTop property.
</short>
<descr/>
<seealso>
<link id="TScreen.WorkAreaTop"/>
</seealso>
</element>
<element name="TScreen.GetWorkAreaTop.Result">
<short>
Value for the WorkAreaTop property.
</short>
</element>

<element name="TScreen.GetWorkAreaWidth">
<short>
Gets the value for the WorkAreaWidth property.
</short>
<descr/>
<seealso>
<link id="TScreen.WorkAreaWidth"/>
</seealso>
</element>
<element name="TScreen.GetWorkAreaWidth.Result">
<short>
Value for the WorkAreaWidth property.
</short>
</element>

<element name="TScreen.GetHintFont">
<short>Gets the value for the HintFont property.</short>
<descr>
<p>
Ensures that a TFont instance exists for the member, that it has been 
initialized to the stock hint font for the WidgetSet class, or uses the 
default font and the color in clInfoText.
</p>
</descr>
<seealso>
<link id="TScreen.HintFont"/>
</seealso>
</element>
<element name="TScreen.GetHintFont.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.GetIconFont">
<short>Gets the value for the IconFont property.</short>
<descr>
<p>
Ensures that a TFont instance exists for the member, that it has been 
initialized to the stock icon font for the WidgetSet class, or uses the 
default font and the color in clDefault or clWindowText (depends on the 
UseCLDefault define for the platform).
</p>
</descr>
<seealso>
<link id="TScreen.IconFont"/>
</seealso>
</element>
<element name="TScreen.GetIconFont.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.GetMenuFont">
<short>Gets the value for the MenuFont property.</short>
<descr/>
<seealso>
<link id="TScreen.MenuFont"/>
</seealso>
</element>
<element name="TScreen.GetMenuFont.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.GetSystemFont">
<short>Gets the value for the SystemFont property.</short>
<descr/>
<seealso>
<link id="TScreen.SystemFont"/>
</seealso>
</element>
<element name="TScreen.GetSystemFont.Result">
<short>Value for the property.</short>
</element>

<element name="TScreen.Notification">
<short>
Performs actions when the specified component is added to or removed from the 
class instance.
</short>
<descr>
<p>
<var>Notification</var> is an overridden method used to perform actions needed 
when a component is added to or removed from the class instance. It calls the 
inherited method on entry to remove the free notification for the component 
and to signal the Notification method for any child components. In TScreen, it 
ensures that an internal member used to track the value in ActiveControl or  
ActiveCustomForm is <b>Nil</b>'d when AComponent is removed and it is stored 
in one of the members.
</p>
</descr>
<seealso>
<link id="TScreen.ActiveControl"/>
<link id="TScreen.ActiveCustomForm"/>
<link id="#rtl.classes.TComponent">TComponent</link>
<link id="#rtl.classes.TComponent.Components">TComponent.Components</link>
</seealso>
</element>
<element name="TScreen.Notification.AComponent">
<short>
Component added or removed in the notification.
</short>
</element>
<element name="TScreen.Notification.Operation">
<short>
Operation performed for the specified component.
</short>
</element>

<element name="TScreen.MagnetManager">
<short>
Manages screen / form snapping behavior for the screen.
</short>
<descr>
<p>
<var>MagnetManager</var> is a read-only <var>TWindowMagnetManager</var> 
property with the class used to manage magnetic window snapping behavior in an 
application. It is initialized in the Create constructor, and is enabled in 
the application by default.
</p>
<p>
MagnetManager is used when a TForm instance receives and handles a 
TLMWindowPosChanging (WMWindowPosChanging) message. Its SnapForm method is 
called to adjust the window position when the form instance is close enough to 
an edge that the snapping behavior is engaged.
</p>
<remark>
In the current LCL release, the LM_WINDOWPOSCHANGING message is dispatched for 
the Windows platform only. None of the other widgetsets checked for or apply 
the message.
</remark>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TWindowMagnetManager"/>
<link id="TCustomForm.WMWindowPosChanging"/>
<link id="#lcl.lmessages.TLMWindowPosChanging">TLMWindowPosChanging</link>
</seealso>
</element>

<element name="TScreen.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.
</p>
<p>
Create allocates resources needed for properties, including: Fonts, Monitors, 
CustomForms, CustomFormsZOrdered, MagnetManager, and DataModules. Resources 
for internal members are also allocated.
</p>
<p>
Create gets the default value used for the PixelsPerInch property from the 
ScreenInfo variable in the LCL interface.
</p>
<p>
Create assigns methods in the class instance as the routines used by the 
Lazarus IDE to provide support for data modules. Create assigns the routine 
used to get system fonts for the application.
</p>
</descr>
<seealso>
<link id="TScreen.Destroy"/>
</seealso>
</element>
<element name="TScreen.Create.AOwner">
<short>Owner of the class instance.</short>
</element>

<element name="TScreen.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance. 
Destroy ensures that screen handlers registered using <var>AddHandler</var> 
are freed. Destroy also frees resource allocated for the class instance in 
the <var>Create</var> constructor. It calls the inherited method prior to 
exit.
</p>
</descr>
<seealso>
<link id="TScreen.Create"/>
</seealso>
</element>

<element name="TScreen.CustomFormIndex">
<short>
Gets the ordinal position in CustomForms for the requested form.
</short>
<descr>
<p>
<var>CustomFormIndex</var> is an <var>Integer</var> function used to get the 
position in <var>CustomForms</var> for the specified <var>TCustomForm</var> 
instance. It iterates over the values in CustomForms in reverse order. The 
return value contains the ordinal position in CustomForms where the 
TCustomForm instance in <var>AForm</var> was found, or -1 when AForm does not 
exist in CustomForms.
</p>
<p>
Use the <var>FormIndex</var> method to locate a form instance derived from 
<var>TForm</var> in the <var>Forms</var> property.
</p>
</descr>
<seealso>
<link id="TScreen.CustomForms"/>
<link id="TScreen.Forms"/>
<link id="TScreen.FormIndex"/>
</seealso>
</element>
<element name="TScreen.CustomFormIndex.Result">
<short>
The ordinal position for the form in CustomForms, or -1 when not found.
</short>
</element>
<element name="TScreen.CustomFormIndex.AForm">
<short>The form instance to locate in CustomForms.</short>
</element>

<element name="TScreen.FormIndex">
<short>
Gets the ordinal position in Forms for the requested form.
</short>
<descr>
<p>
<var>FormIndex</var> is an <var>Integer</var> function used to get the 
position in <var>Forms</var> where the specified <var>TForm</var> instance in 
located. It iterates over the values in Forms in reverse order. The return 
value contains the ordinal position in Forms where the TForm instance in 
<var>AForm</var> was found, or -1 when AForm does not exist in Forms.
</p>
<p>
Use the <var>CustomFormIndex</var> method to locate a form instance derived 
from <var>TCustomForm</var> in the <var>CustomForms</var> property.
</p>
</descr>
<seealso/>
</element>
<element name="TScreen.FormIndex.Result">
<short>
Ordinal position in Forms for the TForm instance, or -1 when not found.
</short>
</element>
<element name="TScreen.FormIndex.AForm">
<short>The TForm instance to locate in Forms.</short>
</element>

<element name="TScreen.CustomFormZIndex">
<short>
Gets the position in CustomFormsZOrdered for the specified form.
</short>
<descr>
<p>
The return value contains the z-order for the specified form, with the 
currently active form at index position zero (<b>0</b>).
</p>
</descr>
<seealso/>
</element>
<element name="TScreen.CustomFormZIndex.Result">
<short>
Position for the specified form in the Z-Order for the screen. 0 if the form 
is at the top of the Z-Order.
</short>
</element>
<element name="TScreen.CustomFormZIndex.AForm">
<short>Form instance to locate in CustomFormsZOrdered.</short>
</element>

<element name="TScreen.MoveFormToFocusFront">
<short>Moves the specified form to the front of all other forms.</short>
<descr>
<p>
<var>MoveFormToFocusFront</var> is a method used to move the form specified 
in <var>ACustomForm</var> to the top of the Z-order. This means that it 
appears on top of all other visible forms for the application.
</p>
<p>
MoveFormToFocusFront is called when the focused control is changed in the 
<var>TCustomForm</var> instance. It is also called from the 
<var>ShowModal</var> method in TCustomForm.
</p>
<p>
It ensures that ACustomForm is moved to the first position in 
<var>CustomForms</var> (the top of the Z-order). When ACustomForm is a 
<var>TForm</var> instance, it is also moved to the first position in the 
<var>Forms</var> property. Calls <var>MoveFormToZFront</var> to ensure that 
the form is moved to the first position in the <var>CustomFormsZOrdered</var> 
property.
</p>
</descr>
<errors>
Raises a catchable GDB exception if the form or screen classes are being 
destroyed, or when ACustomForm is not assigned or not present in the 
CustomForms property.
</errors>
<seealso/>
</element>
<element name="TScreen.MoveFormToFocusFront.ACustomForm">
<short>Form instance to move to the top of the Z-order.</short>
</element>

<element name="TScreen.MoveFormToZFront">
<short>
Moves the form to the front of the Z-order in the CustomFormsZOrdered 
property.
</short>
<descr>
<p>
<var>MoveFormToZFront</var> is a method used to ensure that the form in 
<var>ACustomForm</var> is at the top of the Z-order in the 
<var>CustomFormsZOrdered</var> property. MoveFormToZFront is called from the 
<var>MoveFormToFocusFront</var> method.
</p>
</descr>
<errors>
Raises a GDB exception when the form is being destroyed, or the application 
is shutting down.
</errors>
<seealso>
<link id="TScreen.MoveFormToFocusFront"/>
</seealso>
</element>
<element name="TScreen.MoveFormToZFront.ACustomForm">
<short>Form instance to move to the top of the Z-order.</short>
</element>

<element name="TScreen.NewFormWasCreated">
<short>
Notifies handler(s) when a new form is created for the TScreen instance.
</short>
<descr>
<p>
<var>NewFormWasCreated</var> is method which notifies form handlers for the 
<var>TScreen</var> instance when a new form instance is created. It calls the 
NotifyScreenFormHandler method using the handler type for the notification and 
the TCustomForm instance in <var>AForm</var> as arguments. The screen form 
event is signalled for all registered handlers which use the snNewFormCreated 
screen notification type.
</p>
<p>
NewFormWasCreated is called at design-time from the source file manager in the 
Lazarus IDE. It is called immediately after a new form or datamodule type is 
created and added to the active project in the IDE. NewFormWasCreated is not 
called at run-time in the LCL, and has no relationship to when an instance of 
a form type is created in an application.
</p>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TScreen.NewFormWasCreated"/>
<link id="TScreenNotification"/>
<link id="TCustomForm"/>
</seealso>
</element>
<element name="TScreen.NewFormWasCreated.AForm">
<short>
Form instance that was created on the screen.
</short>
</element>

<element name="TScreen.GetCurrentModalForm">
<short>
Returns the Modal form at the top of the Z-order for the screen.
</short>
<descr>
<p>
Calls <var>GetCurrentModalFormZIndex</var> to find the first form instance in 
<var>CustomFormsZOrdered</var> with the value <var>fsModal</var> in its 
<var>FormState</var> property.
</p>
</descr>
<seealso>
<link id="TCustomForm.FormState"/>
<link id="TFormState"/>
</seealso>
</element>
<element name="TScreen.GetCurrentModalForm.Result">
<short>The modal form, or Nil if a modal form is not active.</short>
</element>

<element name="TScreen.GetCurrentModalFormZIndex">
<short>
Returns the index of the top-most modal form in CustomFormsZOrdered.
</short>
<descr>
<p>
Visits the form instances in <var>CustomFormsZOrdered</var> to find the first 
<var>TCustomForm</var> instance with the value <var>fsModal</var> in its 
<var>FormState</var> property.
</p>
<p>
Returns <b>-1</b> if a modal form is not found in the CustomFormsZOrdered 
property.
</p>
<p>
Called from the <var>GetCurrentModalForm</var> method.
</p>
</descr>
<seealso/>
</element>
<element name="TScreen.GetCurrentModalFormZIndex.Result">
<short>The index for the form, or -1 if no modal form is active.</short>
</element>

<element name="TScreen.CustomFormBelongsToActiveGroup">
<short>
Checks whether the specified form is present in the Z-ordered list of forms.
</short>
<descr>
<p>
The return value is <b>True</b> when <var>ACustomForm</var> is found in the 
<var>CustomFormsZOrdered</var> property and is not displayed as a modal form 
(<var>FormState</var> contains <var>fsModal</var>). The return value is 
<b>False</b> if ACustomForm is not found in CustomFormsZOrdered.
</p>
<p>
Used in widgetset classes to determine if a form is used and enabled on the 
screen.
</p>
</descr>
<seealso/>
</element>
<element name="TScreen.CustomFormBelongsToActiveGroup.Result">
<short><b>True</b> if the form is used on the screen.</short>
</element>
<element name="TScreen.CustomFormBelongsToActiveGroup.AForm">
<short>Form instance to locate in the Z-ordered forms for the screen.</short>
</element>

<element name="TScreen.FindNonDesignerForm">
<short>
Finds the form with the specified name, excluding designer forms.
</short>
<descr>
<p>
Used when an Application loads its components using the LCL streaming 
mechanism. Ignores the designer forms and data modules (where ComponentState 
contains csDesigning) handled by the Lazarus IDE.
</p>
</descr>
<seealso>
<link id="TScreen.FindForm"/>
</seealso>
</element>
<element name="TScreen.FindNonDesignerForm.Result">
<short>
Application form instance in CustomForms with the specified name, or Nil.
</short>
</element>
<element name="TScreen.FindNonDesignerForm.FormName">
<short>Name of the form to locate in the method.</short>
</element>

<element name="TScreen.FindForm">
<short>Finds a form on the screen by its name.</short>
<descr>
<p>
Visits the form instances in the CustomForms property, and compares the text 
in the Name properties to the value in FormName. CompareText is called to 
perform a case-insensitive comparison for the values.
</p>
<p>
The return value is the TCustomForm instance which matches the name in 
FormName, or Nil when CustomFormCount is 0 or FormName is not found in 
CustomForms.
</p>
</descr>
<seealso>
<link id="TScreen.FindNonDesignerForm"/>
</seealso>
</element>
<element name="TScreen.FindForm.Result">
<short>Form instance with the specified name, or Nil.</short>
</element>
<element name="TScreen.FindForm.FormName">
<short>Name for the form to locate in the method.</short>
</element>

<element name="TScreen.FindNonDesignerDataModule">
<short>
Finds a data module with the specified name, excluding designer data modules.
</short>
<descr>
<p>
Visits the data module instances in the internal list, and compares the Name 
property for the TDataModule instances to the value in DataModuleName. 
CompareText text is called to perform a case-insensitive comparison for the 
values. TDataModule instances with csDesigning in the ComponentState property 
are ignored; these are design-time data modules used by the Lazarus IDE.
</p>
<p>
The return value contains the TDataModule instance with the name in 
DataModuleName, or Nil when the data module list is empty or the name in 
DataModuleName is not found in the list.
</p>
<p>
Used when an Application loads its components using the LCL streaming 
mechanism. Ignores the designer forms and data modules (where ComponentState 
contains csDesigning) handled by the Lazarus IDE.
</p>
</descr>
<seealso>
<link id="TScreen.FindDataModule"/>
</seealso>
</element>
<element name="TScreen.FindNonDesignerDataModule.Result">
<short>Data module with the specified name, or Nil.</short>
</element>
<element name="TScreen.FindNonDesignerDataModule.DataModuleName">
<short>Name of the data module to locate in the method.</short>
</element>

<element name="TScreen.FindDataModule">
<short>Finds the data module with the specified name.</short>
<descr>
<p>
<var>FindDataModule</var> is a <var>TDataModule</var> function used to get 
the data module with the name specified in <var>DataModuleName</var>.
</p>
<p>
FindDataModule visits each of the data modules in the internal list to find 
the TDataModule instance with the specified name in its <var>Name</var> 
property. <var>CompareText</var> is called to perform a case-insensitive 
comparison for the values.
</p>
<p>
The return value is the TDataModule instance with the name in DataModuleName, 
or <b>Nil</b> when the internal list is empty or DataModuleName is not found 
in the list.
</p>
</descr>
<seealso>
<link id="TScreen.FindNonDesignerDataModule"/>
</seealso>
</element>
<element name="TScreen.FindDataModule.Result">
<short>TDataModule instance with the specified name, or Nil.</short>
</element>
<element name="TScreen.FindDataModule.DataModuleName">
<short>Name for the data module to locate in the method.</short>
</element>

<element name="TScreen.UpdateMonitors">
<short>Rebuilds the list of available monitors.</short>
<descr>
<p>
Calls <var>DestroyMonitors</var> to clear existing <var>TMonitor</var> 
instances in the <var>Monitors</var> property. Calls 
<var>EnumDisplayMonitors</var> in the LCL interface to create and store 
TMonitor instances in the Monitors property.
</p>
<p>
UpdateMonitors is called when the private <var>UpdatedMonitor</var> function 
needs to access information for a monitor using its <var>Handle</var>. It is 
also called when the value for the <var>Monitor</var> or 
<var>MonitorCount</var> property is read.
</p>
</descr>
<seealso/>
</element>

<element name="TScreen.UpdateScreen">
<short>Updates the value for the PixelsPerInch property.</short>
<descr>
<p>
Updates the value for the <var>PixelsPerInch</var> property from the 
ScreenInfo in the LCL interface.
</p>
</descr>
<seealso/>
</element>

<element name="TScreen.RemoveAllHandlersOfObject">
<short>
Removes all handler routines for the specified object regardless of 
notification type.
</short>
<descr>
<p>
<var>RemoveAllHandlersOfObject</var> is a method used to remove all handler 
routines for the specified object, regardless of the 
<var>TScreenNotification</var> type. RemoveAllHandlersOfObject iterates over 
the method lists in the internal array, and calls the 
<var>RemoveAllMethodsOfObject</var> method for the object instance specified 
in <var>AnObject</var>. It calls the virtual inherited method prior to exit.
</p>
<p>
Called when the Lazarus IDE is terminated.
</p>
</descr>
<seealso>
<link id="TScreenNotification"/>
<link id="#lazutils.lazmethodlist.TMethodList.RemoveAllMethodsOfObject">TMethodList.RemoveAllMethodsOfObject</link>
<link id="#lcl.lclclasses.TLCLComponent.RemoveAllHandlersOfObject">TLCLComponent.RemoveAllHandlersOfObject</link>
</seealso>
</element>
<element name="TScreen.RemoveAllHandlersOfObject.AnObject">
<short>
Object instance with the handlers removed in the method.
</short>
</element>

<element name="TScreen.AddHandlerNewFormCreated">
<short>
Adds the specified handler routine to the new form handlers for the screen 
instance.
</short>
<descr>
<p>
<var>AddHandlerNewFormCreated</var> calls an internal method which adds the 
form handler routine in <var>OnNewFormCreated</var> to the list of handlers 
for the <var>snNewFormCreated</var> notification type. OnNewFormCreated is an 
implementation of TScreenFormEvent which provides access to the screen and 
form instances for the notification event. <var>AsFirst</var> indicates 
whether the handler is inserted at the beginning of the list (<b>True</b>) or 
appended to the end of the list (<b>False</b>). The default value for the 
AsFirst parameter is <b>False</b>.
</p>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TScreen.RemoveHandlerNewFormCreated"/>
<link id="TScreenNotification"/>
<link id="TScreenFormEvent"/>
</seealso>
</element>
<element name="TScreen.AddHandlerNewFormCreated.OnNewFormCreated">
<short>
Handler routine added to the internal new screen form handlers for the TScreen 
instance.
</short>
</element>
<element name="TScreen.AddHandlerNewFormCreated.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first handler for the type. 
<b>False</b> if the routine is append to the end of the list for the handler 
type.
</short>
</element>

<element name="TScreen.RemoveHandlerNewFormCreated">
<short>
Removes the specified handler routine from the new form handlers for the 
screen instance.
</short>
<descr>
<p>
<var>RemoveHandlerNewFormCreated</var> calls the internal method used to 
remove the form handler routine in <var>OnNewFormCreated</var> from the list 
of handlers for the snNewFormCreated notification type.
</p>
</descr><version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TScreen.AddHandlerNewFormCreated"/>
<link id="TScreenNotification"/>
<link id="TScreenFormEvent"/>
</seealso>
</element>
<element name="TScreen.RemoveHandlerNewFormCreated.OnNewFormCreated">
<short>
Handler routine removed from the internal new form handlers for the screen 
instance.
</short>
</element>

<element name="TScreen.AddHandlerFormAdded">
<short>
Adds a form added notification handler to the class instance.
</short>
<descr/>
<seealso>
<link id="TScreen.RemoveHandlerFormAdded"/>
<link id="TScreenFormEvent"/>
</seealso>
</element>
<element name="TScreen.AddHandlerFormAdded.OnFormAdded">
<short>Routine added as the form added notification handler.</short>
</element>
<element name="TScreen.AddHandlerFormAdded.AsFirst">
<short>
<b>True</b> when OnFormAdded should be the first entry in the list of 
handlers for the type.
</short>
</element>

<element name="TScreen.RemoveHandlerFormAdded">
<short>Removes a form added notification handler.</short>
<descr/>
<seealso>
<link id="TScreen.AddHandlerFormAdded"/>
<link id="TScreenFormEvent"/>
</seealso>
</element>
<element name="TScreen.RemoveHandlerFormAdded.OnFormAdded">
<short>Form added handler removed in the method.</short>
</element>

<element name="TScreen.AddHandlerRemoveForm">
<short>Adds a form removed notification handler.</short>
<descr/>
<seealso/>
</element>
<element name="TScreen.AddHandlerRemoveForm.OnRemoveForm">
<short>Form remove handler added in the method.</short>
</element>
<element name="TScreen.AddHandlerRemoveForm.AsFirst">
<short>
<b>True</b> if the handler should be stored as the first routine for the type.
</short>
</element>

<element name="TScreen.RemoveHandlerRemoveForm">
<short>Removes a from removed notification handler.</short>
<descr/>
<seealso/>
</element>
<element name="TScreen.RemoveHandlerRemoveForm.OnRemoveForm">
<short>Form remove handler routine removed in the method.</short>
</element>

<element name="TScreen.AddHandlerActiveControlChanged">
<short>Adds a control changed notification handler.</short>
<descr/>
<seealso/>
</element>
<element name="TScreen.AddHandlerActiveControlChanged.OnActiveControlChanged">
<short>
Active control changed notification handler added in the method.
</short>
</element>
<element name="TScreen.AddHandlerActiveControlChanged.AsFirst">
<short>
<b>True</b> if the handler should be the first in the list for the type.
</short>
</element>

<element name="TScreen.RemoveHandlerActiveControlChanged">
<short>Removes a control changed notification handler.</short>
<descr/>
<seealso/>
</element>
<element name="TScreen.RemoveHandlerActiveControlChanged.OnActiveControlChanged">
<short>Active control changed handler removed in the method.</short>
</element>

<element name="TScreen.AddHandlerActiveFormChanged">
<short>Adds a form changed notification handler.</short>
<descr/>
<seealso/>
</element>
<element name="TScreen.AddHandlerActiveFormChanged.OnActiveFormChanged">
<short>Active form changed handler added in the method.</short>
</element>
<element name="TScreen.AddHandlerActiveFormChanged.AsFirst">
<short>
<b>True</b> if the handler should be the first in the list for the type.
</short>
</element>

<element name="TScreen.RemoveHandlerActiveFormChanged">
<short>Removes a form changed notification handler.</short>
<descr/>
<seealso/>
</element>
<element name="TScreen.RemoveHandlerActiveFormChanged.OnActiveFormChanged">
<short>Active form changed handler removed in the method.</short>
</element>

<element name="TScreen.AddHandlerFormVisibleChanged">
<short>Adds a visible changed notification handler.</short>
<descr/>
<seealso/>
</element>
<element name="TScreen.AddHandlerFormVisibleChanged.OnFormVisibleChanged">
<short>Form visible changed handler added in the method.</short>
</element>
<element name="TScreen.AddHandlerFormVisibleChanged.AsFirst">
<short>
<b>True</b> if the handler should be the first in the list for the type.
</short>
</element>

<element name="TScreen.RemoveHandlerFormVisibleChanged">
<short>Removes a visible changed notification handler.</short>
<descr/>
<seealso/>
</element>
<element name="TScreen.RemoveHandlerFormVisibleChanged.OnFormVisibleChanged">
<short>From visible changed handler removed in the method.</short>
</element>

<element name="TScreen.DisableForms">
<short>
Disables all forms except for <var>SkipForm</var>.
</short>
<descr>
<p>
Used to disable forms when a modal form or dialog is displayed.
</p>
<p>
The enabled state for forms is determined by the widgetset class, and not 
from LCL properties. If <var>DisabledList</var> is Nil, a new list is 
created. All forms disabled in the method are added to the list. When the 
modal form returns, EnableForms is called to restore the list of forms 
disabled in the method.
</p>
</descr>
<seealso>
<link id="TScreen.EnableForms"/>
</seealso>
</element>
<element name="TScreen.DisableForms.Result">
<short>The list containing all disabled forms.</short>
</element>
<element name="TScreen.DisableForms.SkipForm">
<short>Don't disable this form (ignored if Nil).</short>
</element>
<element name="TScreen.DisableForms.DisabledList">
<short>The list to update. If Nil, a new list is created and returned.</short>
</element>

<element name="TScreen.EnableForms">
<short>
Re-enables forms disabled in the DisableForms method.
</short>
<descr>
<p>
Use this method to restore all <link id="TScreen.DisableForms">previously 
disabled</link> forms.
</p>
</descr>
<seealso>
<link id="TScreen.DisableForms"/>
</seealso>
</element>
<element name="TScreen.EnableForms.AFormList">
<short>
The list containing the forms to enable. The list is destroyed on exit.
</short>
</element>

<element name="TScreen.MonitorFromPoint">
<short>
Finds the monitor containing the given screen coordinates.
</short>
<descr>
<p>
<var>MonitorFromPoint</var> is a <var>TMonitor</var> function used to get the 
monitor with the coordinates in the <var>Point</var> argument.
</p>
<p>
<var>MonitorDefault</var> is a <var>TMonitorDefaultTo</var> enumeration value 
which indicates which monitor to use when the coordinates in Point cannot be 
located on a screen. See TMonitorDefaultTo for more information about the 
enumeration values and their meanings.
</p>
<p>
MonitorFromPoint calls the corresponding method in the widgetset class to get 
the <var>Handle</var> for the monitor. Values in the <var>Monitors</var> 
property are checked for the Handle, and the return value is set to the 
TMonitor instance with the given Handle.
</p>
<p>
If the Handle is <b>-1</b> (<var>MONITOR_UNIMPL</var>), the 
<var>MonitorFromRect</var> method is called to locate a monitor with the 
origin in Point. Otherwise, the values in Monitors are refreshed to ensure 
that existing monitors and their handles are up-to-date in the class instance.
</p>
<p>
MonitorFromPoint is called from the <var>GetMonitor</var> method in 
<var>TCustomForm</var>, and the <var>AdjustBoundsForMonitor</var> method in 
<var>THintWindow</var>.
</p>
</descr>
<seealso>
<link id="TScreen.MonitorFromRect"/>
</seealso>
</element>
<element name="TScreen.MonitorFromPoint.Result">
<short>The monitor where the coordinates are located.</short>
</element>
<element name="TScreen.MonitorFromPoint.Point">
<short>The screen coordinates used to find a monitor.</short>
</element>
<element name="TScreen.MonitorFromPoint.MonitorDefault">
<short>
Monitor returned when the coordinates are not found on a monitor.
</short>
</element>

<element name="TScreen.MonitorFromRect">
<short>
Finds the monitor where the specified rectangle is located.
</short>
<descr>
<p>
<var>MonitorFromRect</var> is a <var>TMonitor</var> function used to get the 
monitor where the coordinates in the specified rectangle are located.
</p>
<p>
<var>MonitorDefault</var> is a <var>TMonitorDefaultTo</var> enumeration value 
which indicates the monitor used when the coordinates in Rect are not found 
on a monitor. See TMonitorDefaultTo for more information about the values in 
the enumeration and their meanings.
</p>
<p>
MonitorFromRect calls the corresponding method in the widgetset class to get 
the <var>Handle</var> for the monitor where <var>Rect</var> is located. It 
searches <var>Monitors</var> for the <var>TMonitor</var> instance with the 
Handle value, and uses the TMonitor instance when the Handle is found. The 
<var>UpdatedMonitor</var> method is called to ensure that the value in 
Monitors are up-to-date.
</p>
<p>
When the Handle contains <b>-1</b> (<var>MONITOR_UNIMPL</var>), the value in 
MonitorDefault us used to locate a monitor which intersects the coordinates 
in Rect. The return value is set to the TMonitor instance in Monitors which 
corresponds to the value in MonitorDefault. If a monitor is not found, the 
return value is set to PrimaryMonitor or the closest match as needed for 
MonitorDefault.
</p>
</descr>
<seealso>
<link id="TScreen.MonitorFromPoint"/>
</seealso>
</element>
<element name="TScreen.MonitorFromRect.Result">
<short>The TMonitor instance where the rectangle is located.</short>
</element>
<element name="TScreen.MonitorFromRect.Rect">
<short>Rectangle with the screen coordinates to locate in the method.</short>
</element>
<element name="TScreen.MonitorFromRect.MonitorDefault">
<short>
Monitor use when the specified rectangle is not found on a monitor.
</short>
</element>

<element name="TScreen.MonitorFromWindow">
<short>
Finds the monitor containing the form with the given window handle.
</short>
<descr>
<p>
MonitorFromWindow is a TMonitor function used to locate the monitor where the 
form represented by the specified window Handle is displayed.
</p>
<p>
<var>MonitorDefault</var> is a <var>TMonitorDefaultTo</var> enumeration value 
which indicates the monitor used when the display area for the form is not 
found on a monitor. 
See <link id="TMonitorDefaultTo">TMonitorDefaultTo</link> for more 
information about the values in the enumeration and their meanings.
</p>
<p>
MonitorFromWindow calls the MonitorFromWindow routine in the LCL interface to 
get the HMONITOR handle to locate in the Monitors property. The 
UpdatedMonitors method is called to ensure that Monitors contains up-to-date 
values for the available monitors.
</p>
<p>
If the handle is found in Monitors, the TMonitor instance with the handle is 
used as the return value.
</p>
<p>
If a monitor is not found, GetWindowRect is called to get the display area for 
the TLCLHandle specified in the Handle argument. MonitorFromRect is called to 
locate the monitor which contains the rectangle. The TMonitor instance is used 
as the return value.
</p>
<p>
MonitorFromWindow is called from methods like TCustomForm.GetMonitor.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type in the Handle parameter.
</version>
<seealso>
<link id="TMonitor.Handle"/>
<link id="TMonitorDefaultTo"/>
<link id="#lcl.lcltype.TLCLHandle">TLCLHandle</link>
<link id="#lcl.lcltype.HMONITOR">HMONITOR</link>
</seealso>
</element>
<element name="TScreen.MonitorFromWindow.Result">
<short>The TMonitor instance found for the specified handle.</short>
</element>
<element name="TScreen.MonitorFromWindow.Handle">
<short>The TLCLHandle instance on the monitor located in the method.</short>
</element>
<element name="TScreen.MonitorFromWindow.MonitorDefault">
<short>What to return if a monitor was found.</short>
</element>

<element name="TScreen.BeginTempCursor">
<short>
Sets the Cursor property to a temporary shape. Use EndTempCursor to release 
it.
</short>
<descr>
<p>
<var>BeginTempCursor</var> is a method used to change the mouse cursor shape 
to the temporary cursor in the <var>ACursor</var> argument. It adds the value 
in ACursor to an internal list of temporary cursors. The cursor shape is 
removed when the <var>EndTempCursor</var> method is called.
</p>
<p>
BeginTempCursor calls <var>SetCursor</var> in the widgetset class to change 
the mouse cursor shape to the value in <var>Cursors</var> stored at the index 
in ACursor.
</p>
<p>
Use EndTempCursor to remove a given cursor shape, and restore the mouse 
cursor to a previous value.
</p>
</descr>
<seealso>
<link id="TScreen.EndTempCursor"/>
<link id="TScreen.BeginScreenCursor"/>
<link id="TScreen.EndScreenCursor"/>
<link id="TScreen.BeginWaitCursor"/>
<link id="TScreen.EndWaitCursor"/>
<link id="TScreen.Cursors"/>
<link id="#lcl.controls.TCursor">TCursor</link>
</seealso>
</element>
<element name="TScreen.BeginTempCursor.aCursor">
<short>
Identifies the temporary mouse cursor shape to apply to the screen.
</short>
</element>

<element name="TScreen.EndTempCursor">
<short>Releases a temporary mouse cursor set with BeginTempCursor.</short>
<descr>
<p>
<var>EndTempCursor</var> is a method used to release the temporary cursor 
shape in <var>ACursor</var>. It removes the value from the internal list of 
temporary cursors updated in the <var>BeginTempCursor</var> method. Only the 
cursor shape in ACursor is removed from the list; other values are left 
intact.
</p>
<p>
EndTempCursor calls <var>SetCursor</var> in the widgetset class to apply the 
cursor shape in <var>RealCursor</var>.
</p>
<p>
An <var>Exception</var> is raised with the message 'Unbalanced 
BeginTempCursor/EndTempCursor calls for cursor' if ACursor is not found in 
the list of temporary cursors.
</p>
<p>
Use BeginTempCursor to display and store a temporary mouse cursor shape.
</p>
</descr>
<errors>
Raises an Exception with the message 'Unbalanced 
BeginTempCursor/EndTempCursor calls for cursor' if ACursor is not found in 
the list of temporary cursors.
</errors>
<seealso>
<link id="TScreen.RealCursor"/>
<link id="TScreen.Cursors"/>
<link id="TScreen.BeginTempCursor"/>
<link id="TScreen.BeginScreenCursor"/>
<link id="TScreen.EndScreenCursor"/>
<link id="TScreen.BeginWaitCursor"/>
<link id="TScreen.EndWaitCursor"/>
<link id="#lcl.controls.TCursor">TCursor</link>
</seealso>
</element>
<element name="TScreen.EndTempCursor.aCursor">
<short>Identifies the cursor shape released in the method.</short>
</element>

<element name="TScreen.BeginWaitCursor">
<short>Sets the cursor to the shape in crHourGlass.</short>
<descr>
<p>
Calls <var>BeginTempCursor</var> using the cursor shape in 
<var>crHourGlass</var>.
</p>
</descr>
<seealso>
<link id="TScreen.BeginTempCursor"/>
<link id="TScreen.BeginScreenCursor"/>
<link id="#lcl.controls.crHourGlass">crHourGlass</link>
<link id="#lcl.controls.TCursor">TCursor</link>
</seealso>
</element>

<element name="TScreen.EndWaitCursor">
<short>Removes the crHourGlass mouse cursor shape.</short>
<descr>
<p>
Calls <var>EndTempCursor</var> to remove the <var>crHourGlass</var> mouse 
cursor shape.
</p>
</descr>
<seealso>
<link id="TScreen.EndTempCursor"/>
<link id="#lcl.controls.crHourGlass">crHourGlass</link>
<link id="#lcl.controls.TCursor">TCursor</link>
</seealso>
</element>

<element name="TScreen.BeginScreenCursor">
<short>
Changes the active cursor to the most recent shape in the internal list of 
cursors.
</short>
<descr>
<p>
Calls the BeginTempCursor method using the mouse cursor shape currently 
assigned to the internal member for the screen.
</p>
<p>
Use EndScreenCursor to revert the mouse cursor shape to the value on entry to 
the method.
</p>
</descr>
<seealso>
<link id="TScreen.EndScreenCursor"/>
<link id="TScreen.BeginTempCursor"/>
<link id="TScreen.EndTempCursor"/>
</seealso>
</element>

<element name="TScreen.EndScreenCursor">
<short>
Removes the current mouse cursor shape from the internal list, and restores 
the previous cursor shape.
</short>
<descr>
<p>
Calls the EndTempCursor method to remove the current mouse cursor shape from 
the internal list of cursors. The most recent cursor shape in the internal 
list is restored when it differs from the value assigned to Cursor.
</p>
<p>
Use BeginScreenCursor to make the value in Cursor the current cursor shape 
for the screen.
</p>
</descr>
<seealso>
<link id="TScreen.BeginScreenCursor"/>
<link id="TScreen.BeginTempCursor"/>
<link id="TScreen.EndTempCursor"/>
</seealso>
</element>

<element name="TScreen.ActiveControl">
<short>
The control which has the focus on the active form for the screen.
</short>
<descr>
<p>
<var>ActiveControl</var> is a read-only <var>TWinControl</var> property which 
indicates the form or control that has focus on the screen, and gets input 
entered using the keyboard. The property value is updated when the 
<var>SetFocusedControl</var> method in <var>TCustomForm</var> sets the active 
control for the form and calls the <var>UpdateLastActive</var> method for the 
screen.
</p>
</descr>
<seealso>
<link id="TScreen.ActiveForm"/>
<link id="TScreen.ActiveCustomForm"/>
<link id="#lcl.forms.TCustomForm.SetFocusedControl">TCustomForm.SetFocusedControl</link>
</seealso>
</element>

<element name="TScreen.ActiveCustomForm">
<short>The TCustomForm instance which has the focus.</short>
<descr>
<p>
<var>ActiveCustomForm</var> is a read-only <var>TCustomForm</var> property 
which contains the active custom form instance which has focus on the screen. 
The property value is updated in TCustomForm methods like 
<var>SetFocusedControl</var> and <var>MoveToDefaultPosition</var>. It is also 
updated in <var>TApplication</var> methods like <var>ControlDestroyed</var>.
</p>
<p>
Use <var>ActiveForm</var> to get the <var>TForm</var> instance that has focus 
on the screen.
</p>
</descr>
<seealso>
<link id="TScreen.ActiveForm"/>
<link id="TScreen.ActiveControl"/>
<link id="TCustomForm.SetFocusedControl"/>
<link id="TCustomForm.MoveToDefaultPosition"/>
<link id="TApplication.ControlDestroyed"/>
</seealso>
</element>

<element name="TScreen.ActiveForm">
<short>The TForm instance which has the focus.</short>
<descr>
<p>
<var>ActiveForm</var> is a read-only <var>TForm</var> property which contains 
the form instance in the application which has focus on the screen. The 
property value is updated from methods in <var>TCustomForm</var> like 
<var>SetFocusedControl</var> and <var>MoveToDefaultPosition</var>. It is also 
updated from methods in TApplication like <var>ControlDestroyed</var>.
</p>
<p>
Use <var>ActiveCustomForm</var> to get a form instance derived from 
<var>TCustomForm</var>, including: <var>THintWindow</var>, 
<var>TCustomDockForm</var>, and <var>TLazDockForm</var>. These class types 
are not available in ActiveForm.
</p>
</descr>
<seealso>
<link id="TScreen.ActiveControl"/>
<link id="TScreen.ActiveCustomForm"/>
<link id="TCustomForm.SetFocusedControl"/>
<link id="TCustomForm.MoveToDefaultPosition"/>
<link id="TApplication.ControlDestroyed"/>
</seealso>
</element>

<element name="TScreen.Cursor">
<short>Indicates the current mouse cursor shape.</short>
<descr>
<p>
<var>Cursor</var> is a <var>TCursor</var> property which identifies the 
current mouse cursor shape drawn on the screen. The numeric value is the 
<var>HCURSOR</var> handle for the image drawn as the cursor shape. Cursor 
constants (like <var>crHourGlass</var>) defined in the 
<file>controls.pp</file> unit can be used instead of the numeric value.
</p>
<p>
Cursor is used as an index into the values in the <var>Cursors</var> property 
where the handle for the <var>TCursorImage</var> resources are stored. 
Changing the value for the property causes the <var>SetCursor</var> method in 
the widgetset class to be called to apply the handle in Cursors at the 
position in Cursor.
</p>
</descr>
<seealso>
<link id="TScreen.Cursors"/>
<link id="TScreen.RealCursor"/>
<link id="Controls.crDefault"/>
</seealso>
</element>

<element name="TScreen.RealCursor">
<short>
Gets the value for the Cursor property taking temporary cursors into account.
</short>
<descr>
<p>
<var>RealCursor</var> is a read-only <var>TCursor</var> property which 
provides the current shape for the cursor taking temporary cursors into 
account.
</p>
<p>
Temporary cursors are added and removed using the <var>BeginTempCursor</var> 
and <var>EndTempCursor</var> methods. When a temporary cursor exists, 
RealCursor returns the most recent cursor shape added to the internal list 
using BeginTempCursor. If the internal list is empty, the value in Cursor is 
returned as the property value.
</p>
<p>
The value from RealCursor is used in the <var>SetCursor</var> method to 
determine the value stored in the <var>Cursor</var> property, and passed as 
an argument to SetCursor in the widgetset class.
</p>
</descr>
</element>

<element name="TScreen.Cursors">
<short>
Provides indexed access to the available mouse cursor shapes for the screen.
</short>
<descr>
<p>
<var>Cursors</var> is an indexed <var>HCURSOR</var> property which provides 
access to the handle for a mouse cursor shape by its numeric value. The 
cursor constants (like <var>crHourGlass</var>) defined in the 
<file>controls.pp</file> unit can be used instead of the numeric value.
</p>
<p>
Cursors uses an internal <var>TMap</var> instance to store the handle values 
and provides access using the index values. When the value for the property 
is read, <var>CreateStandardCursor</var> in the widgetset class is called to 
retrieve the handle. If it has not been assigned, a temporary 
<var>TCursorImage</var> is created for the cursor resource and its handle is 
added to the internal map.
</p>
<p>
Setting a new value for the indexed property causes an existing handle in the 
internal map to be re-created.
</p>
</descr>
<seealso>
<link id="TScreen.Cursor"/>
<link id="TScreen.RealCursor"/>
<link id="TScreen.Cursors"/>
</seealso>
</element>
<element name="TScreen.Cursors.Index">
<short>Ordinal position for the requested cursor shape.</short>
</element>

<element name="TScreen.CustomFormCount">
<short>
Number of TCustomForm form instances in the CustomForms property.
</short>
<descr>
<p>
<var>CustomFormCount</var> is a read-only <var>Integer</var> property which 
contains the number of <var>TCustomForm</var> instances stored in the 
<var>CustomForms</var> property. Read access for the property value is 
redirected to the <var>Count</var> property in CustomForms.
</p>
</descr>
<seealso>
<link id="TScreen.CustomForms"/>
<link id="TCustomForm"/>
</seealso>
</element>

<element name="TScreen.CustomForms">
<short>
Provides indexed access to the TCustomForm instances on the screen.
</short>
<descr>
<p>
<var>CustomForms</var> is a read-only indexed <var>TCustomForm</var> property 
which provides access to a custom form instance in the list by its ordinal 
position.
</p>
<p>
Values in the CustomForms property are added and removed when the 
<var>CreateNew</var> and <var>Destroy</var> methods in TCustomForm are 
executed.
</p>
<p>
Use <var>CustomFormsZOrdered</var> to access a custom form instance by its 
Z-order on the screen.
</p>
<p>
Use the <var>Forms</var> property to access a <var>TForm</var> instance on 
the screen by its ordinal position.
</p>
</descr>
<seealso>
<link id="TScreen.CustomFormCount"/>
<link id="TScreen.CustomFormsZOrdered"/>
<link id="TScreen.Forms"/>
</seealso>
</element>
<element name="TScreen.CustomForms.Index">
<short>Ordinal position for the requested form.</short>
</element>

<element name="TScreen.CustomFormsZOrdered">
<short>
The list of Custom Forms, indexed by Z-order (zero is top-most).
</short>
<descr>
<p>
<var>CustomFormsZOrdered</var> is a read-only indexed <var>TCustomForm</var> 
property which provides access to a custom form by its ordinal position in 
the Z-Order for the screen. The form at position <b>0</b> (<b>zero</b>) is 
displayed at the top of the Z-Order, and overlaps any form with a higher 
Z-Order value.
</p>
<p>
Values in the property are added and removed in the <var>AddForm</var> and 
<var>RemoveForm</var> methods.
</p>
<p>
CustomFormsZOrdered is used in widgetset classes when an application on the 
screen is minimized or maximized, or when a form is hidden or displayed using 
the <var>ShowHide</var> method in its widgetset class.
</p>
<p>
Use <var>CustomFormZOrderCount</var> to get the number of custom form 
instances in CustomFormsZOrdered.
</p>
<p>
Use <var>CustomForms</var> or <var>Forms</var> to access a form instance by 
its ordinal position in the list of forms on the screen.
</p>
</descr>
<seealso>
<link id="TScreen.CustomFormZOrderCount"/>
<link id="TScreen.CustomForms"/>
<link id="TScreen.Forms"/>
<link id="TCustomForm.Visible"/>
<link id="TCustomForm.Show"/>
<link id="TCustomForm.Hide"/>
<link id="#lcl.controls.TWinControl.Showing">TWinControl.Showing</link>
</seealso>
</element>
<element name="TScreen.CustomFormsZOrdered.Index">
<short>Ordinal position in the Z-Order (0 is top-most).</short>
</element>

<element name="TScreen.CustomFormZOrderCount">
<short>
Number of custom forms instances in the CustomFormsZOrdered property.
</short>
<descr>
<p>
<var>CustomFormZOrderCount</var> is a read-only <var>Integer</var> property 
which contains the number of <var>TCustomForm</var> instances stored in the 
<var>CustomFormsZOrdered</var> property. Read access for the property value 
is re-directed to the <var>Count</var> property in the list used for 
CustomFormsZOrdered.
</p>
<p>
Use <var>CustomForms</var> and <var>CustomFormCount</var> to access 
TCustomForm instances on the screen regardless of their Z-Order.
</p>
<p>
Use <var>Forms</var> and <var>FormCount</var> to access <var>TForm</var> 
instances on the screen regardless of their Z-Order.
</p>
</descr>
<seealso>
<link id="TScreen.CustomFormsZOrdered"/>
<link id="TScreen.CustomForms"/>
<link id="TScreen.CustomFormCount"/>
<link id="TScreen.Forms"/>
<link id="TScreen.FormCount"/>
</seealso>
</element>

<element name="TScreen.DesktopLeft">
<short>The left-most coordinate of the desktop.</short>
<descr>
<p>
<var>DesktopLeft</var> is a read-only <var>Integer</var> property with the 
left coordinate for the desktop. The property value contains the virtual 
screen coordinate returned from <var>GetSystemMetrics</var> for the 
<var>SM_XVIRTUALSCREEN</var> parameter.
</p>
<p>
DesktopLeft is used in the <var>MoveToDefaultPosition</var> method in 
<var>TCustomForm</var>. The values in <var>DesktopLeft</var>, 
<var>DesktopTop</var>, <var>DesktopWidth</var> and <var>DesktopHeight</var> 
are also assigned to members in the <var>DesktopRect</var> property.
</p>
</descr>
<seealso>
<link id="TScreen.DesktopRect"/>
<link id="TCustomForm.MoveToDefaultPosition"/>
</seealso>
</element>

<element name="TScreen.DesktopTop">
<short>The top-most coordinate for the desktop.</short>
<descr>
<p>
<var>DesktopTop</var> is a read-only <var>Integer</var> property with the top 
coordinate for the desktop. The property value contains the virtual screen 
coordinate returned from <var>GetSystemMetrics</var> for the 
<var>SM_YVIRTUALSCREEN</var> parameter.
</p>
<p>
DesktopTop is used in the <var>MoveToDefaultPosition</var> method in 
<var>TCustomForm</var>. The values in <var>DesktopLeft</var>, 
<var>DesktopTop</var>, <var>DesktopWidth</var> and <var>DesktopHeight</var> 
are also assigned to members in the <var>DesktopRect</var> property.
</p>
</descr>
<seealso>
<link id="TScreen.DesktopRect"/>
<link id="TCustomForm.MoveToDefaultPosition"/>
</seealso>
</element>

<element name="TScreen.DesktopHeight">
<short>The total vertical size for the desktop.</short>
<descr>
<p>
<var>DesktopHeight</var> is a read-only <var>Integer</var> property with the 
total height for the desktop. The property values is the result from 
<var>GetSystemMetrics</var> using the <var>SM_CYVIRTUALSCREEN</var> parameter.
</p>
<p>
DesktopHeight is used in the <var>MoveToDefaultPosition</var> method in 
<var>TCustomForm</var>. The values in <var>DesktopLeft</var>, 
<var>DesktopTop</var>, <var>DesktopWidth</var> and <var>DesktopHeight</var> 
are also assigned to members in the <var>DesktopRect</var> property.
</p>
</descr>
<seealso>
<link id="TScreen.DesktopRect"/>
<link id="TCustomForm.MoveToDefaultPosition"/>
</seealso>
</element>

<element name="TScreen.DesktopWidth">
<short>The total horizontal size for the desktop.</short>
<descr>
<p>
<var>DesktopWidth</var> is a read-only <var>Integer</var> property with the 
total width for the desktop. The property values is the result from 
<var>GetSystemMetrics</var> using the <var>SM_CXVIRTUALSCREEN</var> parameter.
</p>
<p>
DesktopWidth is used in the <var>MoveToDefaultPosition</var> method in 
<var>TCustomForm</var>. The values in <var>DesktopLeft</var>, 
<var>DesktopTop</var>, <var>DesktopWidth</var> and <var>DesktopHeight</var> 
are also assigned to members in the <var>DesktopRect</var> property.
</p>
</descr>
<seealso>
<link id="TScreen.DesktopRect"/>
<link id="TCustomForm.MoveToDefaultPosition"/>
</seealso>
</element>

<element name="TScreen.DesktopRect">
<short>Bounds rectangle for the desktop spanning all monitors.</short>
<descr>
<p>
<var>DesktopRect</var> is a read-only <var>TRect</var> property with the 
bounds for the desktop spanning all monitors. Member values in the property 
are derived from the <var>DesktopLeft</var>, <var>DesktopTop</var>, 
<var>DesktopWidth</var>, and <var>DesktopHeight</var> properties.
</p>
<p>
DesktopRect is provided as a convenience property; it is not used directly in 
the LCL.
</p>
</descr>
<seealso>
<link id="TScreen.DesktopLeft"/>
<link id="TScreen.DesktopTop"/>
<link id="TScreen.DesktopHeight"/>
<link id="TScreen.DesktopWidth"/>
</seealso>
</element>

<element name="TScreen.FocusedForm">
<short>The form that has Focus on the screen.</short>
<descr>
<p>
<var>FocusedForm</var> is a read-only <var>TCustomForm</var> property which 
contains the form which has focus on the screen. The value for the property 
is maintained in the <var>SetFocusedForm</var> method, which ensures that the 
previously focused form is deactivated before setting the value in the 
property. It is also updated in the <var>RemoveForm</var> method when the 
freed form instance is the current value for the property.
</p>
<p>
FocusedForm is updated in the <var>ShowModal</var> method in 
<var>TCustomForm</var> when the focus is changed to a modal form. It is also 
updated in the <var>ControlDestroyed</var> method in <var>TApplication</var> 
when the freed control is also the current value for the property.
</p>
<p>
The value in the property is used to prevent hint windows from being 
displayed for other forms when a modal form is active.
</p>
</descr>
<seealso>
<link id="TScreen.ActiveForm"/>
<link id="TScreen.ActiveCustomForm"/>
</seealso>
</element>

<element name="TScreen.FormCount">
<short>The number of Forms on the screen.</short>
<descr>
<p>
<var>FormCount</var> is a read-only <var>Integer</var> property with the 
number of <var>TForm</var> instances stored in the <var>Forms</var> property. 
Read access to the property value is redirected to the <var>Count</var> 
property in Forms.
</p>
<p>
Use <var>CustomFormCount</var> to get the number of <var>TCustomForm</var> 
instances in the <var>CustomForms</var> property.
</p>
</descr>
<seealso>
<link id="TScreen.Forms"/>
<link id="TScreen.CustomFormCount"/>
<link id="TScreen.CustomForms"/>
</seealso>
</element>

<element name="TScreen.Forms">
<short>Provides indexed access to TForm instances on the screen.</short>
<descr>
<p>
<var>Forms</var> is a read-only indexed <var>TForm</var> property which 
provides access to the TForm instances on the screen by their ordinal 
position in the list of forms. <var>Index</var> values must be in the range 
<b>0..<var>FormCount</var>-1</b>. An <var>EListError</var> exception is 
raised when Index contains an invalid position for the list.
</p>
<p>
Values are added to and removed from Forms in the <var>AddForm</var> and 
<var>RemoveForm</var> methods. These methods are called when the 
<var>CreateNew</var> or <var>Destroy</var> method in TForm is executed. Forms 
is used in widgetset classes to get the form instance with a given 
<var>Handle</var> in the widgetset.
</p>
<p>
Use <var>CustomForms</var> and <var>CustomFormCount</var> to access the 
<var>TCustomForm</var> instances on the screen.
</p>
</descr>
<errors>
Raises an EListError exception when Index contains an invalid position for 
the list.
</errors>
<seealso>
<link id="TScreen.FormCount"/>
<link id="TScreen.CustomForms"/>
<link id="TScreen.CustomFormCount"/>
<link id="TCustomForm.CreateNew"/>
<link id="TCustomForm.Destroy"/>
</seealso>
</element>
<element name="TScreen.Forms.Index">
<short>Ordinal position for the form in the property value.</short>
</element>

<element name="TScreen.DataModuleCount">
<short>The number of data modules for the screen.</short>
<descr>
<p>
<var>DataModuleCount</var> is a read-only <var>Integer</var> property with 
the number of <var>TDataModule</var> instances stored in the 
<var>DataModules</var> property. Read access for the property value is 
redirected to the <var>Count</var> property in DataModules.
</p>
<p>
Use DataModules to access a TDataModule instance by its ordinal position in 
the list of data modules.
</p>
</descr>
<seealso>
<link id="TScreen.DataModules"/>
</seealso>
</element>

<element name="TScreen.DataModules">
<short>Provides indexed access to data modules on the screen.</short>
<descr>
<p>
<var>DataModules</var> is a read-only indexed <var>TDataModule</var> property 
which provides access to a data module by its ordinal position in the list. 
Data modules are a non-visual component at run-time, and are provided to 
maintain compatibility with the Delphi VCL equivalent.
</p>
<p>
<var>Index</var> contains the ordinal position in the list for the property 
value, and must be in the range <b>0..<var>DataModuleCount</var>-1</b>. An 
<var>EListError</var> exception is raised if Index has an invalid position 
for the list.
</p>
<p>
Use <var>DataModuleCount</var> to get the number of data module instances in 
the property.
</p>
</descr>
<seealso>
<link id="TScreen.DataModuleCount"/>
<link id="#rtl.classes.TDataModule">TDataModule</link>
</seealso>
</element>
<element name="TScreen.DataModules.Index">
<short>
Ordinal position for the TDataModule instance in the property value.
</short>
</element>

<element name="TScreen.HintFont">
<short>The font used to display Hints.</short>
<descr>
<p>
<var>HintFont</var> is a <var>TFont</var> property with the font used to 
display hint text for forms and controls. Reading the property value causes 
the <var>InitStockFont</var> method in the widgetset class to be called. If 
the hint font is not initialized in the widgetset class, default font 
attributes are assigned to the font instance using the color in 
<var>clInfoText</var>.
</p>
<p>
The value in HintFont is used to set the default font for 
<var>THintWindow</var> instances, It can be used in controls which display 
their own custom hint windows and hint text should be displayed in the 
default font for the platform.
</p>
</descr>
<seealso/>
</element>

<element name="TScreen.IconFont">
<short>The font used for desktop icons.</short>
<descr>
<p>
IconFont is passed to the InitStockFont method in the widgetset to initialize 
the font.
</p>
<remark>
Not used in the current LCL implementation.
</remark>
</descr>
<seealso>
</seealso>
</element>

<element name="TScreen.MenuFont">
<short>The font used in menus.</short>
<descr/>
<seealso/>
<notes>
<note>
Currently used only in FindFontName in the TurboPower IPro package.
</note>
</notes>
</element>

<element name="TScreen.SystemFont">
<short>
The default font used for system task dialogs and controls like TSpeedButton.
</short>
<descr/>
<seealso/>
</element>

<element name="TScreen.Fonts">
<short>The names for the available (installed) fonts.</short>
<descr>
<p>
<var>Fonts</var> is a read-only <var>TStringList</var> property which contains 
the names for the fonts found using the <var>EnumFontFamiliesEx</var> routine 
for the widgetset. Values in Fonts are unique (no duplicates) and sorted 
alphabetically in ascending order.
</p>
</descr>
<version>
Modified in LCL version 3.2 to use the TStringList type instead of TStrings.
</version>
<seealso/>
</element>

<element name="TScreen.Height">
<short>The height of the primary monitor.</short>
<descr>
<p>
<var>Height</var> is a read-only <var>Integer</var> property with the height 
of the primary monitor for the system. The property value contains the result 
from <var>GetSystemMetrics</var> using the <var>SM_CYSCREEN</var> parameter.
</p>
<p>
Values in <var>Height</var> and <var>Width</var> are used when setting the 
position for forms or other dialogs to ensure that they are visible on the 
monitor. They are also used when LCL coordinates are converted to screen 
coordinates to ensure that the positions are valid for the monitor.
</p>
</descr>
<seealso>
<link id="TScreen.PrimaryMonitor"/>
</seealso>
</element>

<element name="TScreen.MonitorCount">
<short>The number of available Monitors.</short>
<descr>
<p>
<var>MonitorCount</var> is a read-only <var>Integer</var> property with the 
number of <var>TMonitor</var> instances stored in the <var>Monitors</var> 
property. Reading value for the property causes the <var>UpdateMonitors</var> 
method to be called when Monitors is empty. The property value is redirected 
to the <var>Count</var> property in Monitors.
</p>
<p>
Use <var>Monitors</var> to access a <var>TMonitor</var> instance by its 
ordinal position in the list.
</p>
</descr>
<seealso>
<link id="TScreen.Monitors"/>
</seealso>
</element>

<element name="TScreen.Monitors">
<short>
Provides indexed access to the available monitors in the class instance.
</short>
<descr>
<p>
<var>Monitors</var> is a read-only indexed <var>TMonitor</var> property which 
provides access to the available monitors in the class instance by their 
ordinal position in the list.
</p>
<p>
Reading a value for the property causes the <var>UpdateMonitors</var> method 
to be called when the number of monitors in the <var>TMonitorList</var> 
instance is <b>0</b> (<b>zero</b>). The property value is the TMonitor 
instance in the list at the specified ordinal position.
</p>
<p>
Use <var>MonitorCount</var> to get the number of entries stored in the 
Monitors property.
</p>
</descr>
<seealso>
<link id="TScreen.MonitorCount"/>
<link id="TMonitor"/>
<link id="TMonitorList"/>
</seealso>
</element>
<element name="TScreen.Monitors.Index">
<short>
Ordinal position for the TMonitor instance in the property value.
</short>
</element>

<element name="TScreen.PixelsPerInch">
<short>
The number of screen pixels per virtual inch (DPI) for the screen.
</short>
<descr>
<p>
PixelsPerInch is a read-only Integer property which contains the number of 
screen pixels per inch for the display device. The display uses virtual 
inches, which typically are bigger than physical inches. This requires that 
text appear bigger on a screen than on a printer.
</p>
<p>
The default value for the property is set in the constructor for the class 
instance using the horizontal pixels per inch from the <var>ScreenInfo</var> 
variable in the <file>graphics</file> unit. The value is updated (from the 
same source) when the <var>UpdateScreen</var> method is called.
</p>
<p>
The property value is used at run-time to detected when scaling is needed in 
forms, controls, and fonts to adjust for different design-time PPI settings.
</p>
</descr>
<seealso/>
</element>

<element name="TScreen.PrimaryMonitor">
<short>
The primary monitor which typically includes the task bar area.
</short>
<descr>
<p>
<var>PrimaryMonitor</var> is a read-only <var>TMonitor</var> property with 
the primary monitor for the system. The property value is determined by 
checking for the <var>TMonitor</var> instance in <var>Monitors</var> with its 
<var>Primary</var> property set to <b>True</b>. The property value is 
<b>Nil</b> if a monitor is not found with its Primary property set to 
<b>True</b>.
</p>
<p>
The property value is used in the <var>MoveToDefaultPosition</var> method in 
<var>TCustomForm</var>. It is also used in widgetset classes to select the 
monitor for a dialog when the main form for an application has not been 
assigned.
</p>
</descr>
<seealso>
<link id="TScreen.Monitors"/>
<link id="TCustomForm.MoveToDefaultPosition"/>
<link id="TMonitor"/>
</seealso>
</element>

<element name="TScreen.Width">
<short>The width of the primary monitor.</short>
<descr>
<p>
<var>Width</var> is a read-only <var>Integer</var> property with the width 
for the primary monitor. The property value is the result from 
<var>GetSystemMetrics</var> using the <var>SM_CXSCREEN</var> parameter.
</p>
<p>
Use <var>Height</var> to get height for the primary monitor.
</p>
<p>
Use <var>DesktopWidth</var> to get the usable width for the entire desktop.
</p>
</descr>
<seealso>
<link id="TScreen.Height"/>
<link id="TScreen.DesktopWidth"/>
</seealso>
</element>

<element name="TScreen.WorkAreaRect">
<short>
The usable display area on the primary monitor excluding the task bar.
</short>
<descr>
<p>
<var>WorkAreaRect</var> is a read-only <var>TRect</var> property with the 
bounds for the usable display area on the primary monitor. It excludes the 
area covered by the system task bar. The return value is the result from the 
platform-specific SystemParametersInfo routine in the LCL interface using the 
SPI_GETWORKAREA parameter constant.
</p>
<p>
Use DesktopRect to get the bounds for the entire desktop spanning all 
monitors.
</p>
<p>
Use the Monitors property to access screen information for a specific monitor.
</p>
</descr>
<seealso>
<link id="TScreen.DesktopRect"/>
<link id="TScreen.Monitors"/>
</seealso>
</element>

<element name="TScreen.WorkAreaHeight">
<short>
The usable height of the primary monitor excluding the system task bar.
</short>
<descr>
<p>
The property value is calculated as the difference between the 
<var>Bottom</var> and <var>Top</var> members in <var>WorkAreaRect</var>.
</p>
</descr>
<seealso>
</seealso>
</element>

<element name="TScreen.WorkAreaLeft">
<short>The usable left coordinate on the primary monitor.</short>
<descr>
<p>
The property value contains the <var>Left</var> member from 
<var>WorkAreaRect</var>.
</p>
</descr>
<seealso>
<link id="TScreen.WorkareaRect"/>
</seealso>
</element>

<element name="TScreen.WorkAreaTop">
<short>The usable top coordinate on the primary monitor.</short>
<descr>
<p>
Returns the value for the <var>Top</var> member in <var>WorkAreaRect</var>, 
which omits the task bar area if aligned to the top of the screen.
</p>
<p>
Use the <var>DesktopTop</var> property to get the coordinate for the top of 
the primary monitor.
</p>
</descr>
<seealso>
<link id="TScreen.WorkAreaRect"/>
<link id="TScreen.DesktopTop"/>
</seealso>
</element>

<element name="TScreen.WorkAreaWidth">
<short>The usable width for the WorkAreaRect.</short>
<descr>
<p>
Returns the difference between the <var>Right</var> and <var>Left</var> 
members in <var>WorkAreaRect</var>.
</p>
<p>
Use <var>DesktopWidth</var> to get the width for the entire desktop spanning 
all monitors.
</p>
</descr>
<seealso>
<link id="TScreen.WorkAreaRect"/>
<link id="TScreen.DesktopWidth"/>
</seealso>
</element>

<element name="TScreen.OnActiveControlChange">
<short>
Event handler signalled when the active form control for the screen has been 
changed.
</short>
<descr>
<p>
<var>OnActiveControlChange</var> is a <var>TNotifyEvent</var> property with 
the event handler signalled when the active control on the screen has been 
changed. The <var>Sender</var> argument contains the <var>TScreen</var> 
instance for the change notification.
</p>
<p>
OnActiveControlChange is signalled (when assigned) from the 
<var>UpdateLastActive</var> method, and occurs after the 
<var>OnActiveFormChange</var> event has been signalled (when assigned).
</p>
</descr>
<seealso>
<link id="TScreen.AddHandlerActiveControlChanged"/>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>

<element name="TScreen.OnActiveFormChange">
<short>
Event handler signalled when the active form on the screen has been changed.
</short>
<descr>
<p>
<var>OnActiveFormChange</var> is a <var>TNotifyEvent</var> property with the 
event handler signalled when the active form on the screen has been changed. 
<var>Sender</var> contains the <var>TScreen</var> instance for the change 
notification.
</p>
<p>
OnActiveFormChange is signalled (when assigned) from the 
<var>UpdateLastActive</var> method, and occurs before the 
<var>OnActiveControlChange</var> event handler.
</p>
</descr>
<seealso>
<link id="TScreen.AddHandlerActiveFormChanged"/>
<link id="TScreen.AddHandlerActiveFormChanged"/>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>

<element name="TQueryEndSessionEvent">
<short>
Specifies an event type used to handle a WM_QUERYENDSESSION window message in 
an application.
</short>
<descr/>
<seealso>
<link id="TApplication.OnQueryEndSession"/>
</seealso>
</element>
<element name="TQueryEndSessionEvent.Cancel">
<short>Set Cancel to <b>True</b> to prevent the session from ending.</short>
</element>

<element name="TExceptionEvent">
<short>
Defines an event handler signalled to perform exception handling in an 
application.
</short>
<descr>
<p>
<var>TExceptionEvent</var> is an object procedure type that defines an event 
handler signalled to perform exception handling in an application. Arguments 
passed to the event handler identify the application generating the 
notification, and the exception class instance. Applications must implement 
an object procedure using the signature for the event, and assign it to an 
event handler to respond to the notification.
</p>
<p>
<var>TExceptionEvent</var> is the type used to implement exception handlers 
in <var>TApplication</var> and <var>TApplicationProperties</var>.
</p>
</descr>
<seealso>
<link id="TApplication.HandleException"/>
<link id="TApplicationProperties.OnException"/>
</seealso>
</element>
<element name="TExceptionEvent.Sender">
<short>Object instance for the notification.</short>
</element>
<element name="TExceptionEvent.E">
<short>Exception instance for the notification.</short>
</element>

<element name="TGetHandleEvent">
<short>
Specifies an event handler used to get the handle for the main form in an 
application.
</short>
<descr>
<p>
<var>TGetHandleEvent</var> is an object procedure type which defines an event 
handler signalled to get the handle for the main form in an application. 
<var>TGetHandleEvent</var> is the type used to implement the 
<var>OnGetMainFormHandle</var> event handler in <var>TApplication</var> and 
<var>TApplicationProperties</var>.
</p>
</descr>
<seealso>
<link id="TApplication.OnGetMainFormHandle"/>
<link id="TApplicationProperties.OnGetMainFormHandle"/>
<link id="TApplication.AddOnGetMainFormHandleHandler"/>
<link id="TApplication.RemoveOnGetMainFormHandleHandler"/>
</seealso>
</element>
<element name="TGetHandleEvent.Handle">
<short>Handle for the form instance used as the main form.</short>
</element>

<element name="TIdleEvent">
<short>
Specifies an event handler signalled when an application becomes idle.
</short>
<descr>
<p>
<var>TIdleEvent</var> is an object procedure type which specifies an event 
handler signalled when an application becomes idle.
</p>
<p>
<var>Sender</var> is the object for the event notification and normally 
contains the <var>Application</var> singleton.
</p>
<p>
<var>Done</var> is a variable <var>Boolean</var> parameter which indicates if 
the event handler has finished processing. When set to <b>False</b>, 
subsequent idle event handlers can be called. When set to <b>True</b>, the 
idle state processing has been completed.
</p>
<p>
TIdleEvent is the type used for the <var>OnIdle</var> event handler in 
<var>TApplication</var>. The event handler is signalled when the application 
becomes idle. The event handler can return <b>False</b> in Done to allow 
other idle event handlers to be signalled. The idle event handlers are called 
repeatedly until Done is set to <b>True</b>.
</p>
<p>
Use the TIdleEvent event handler type to provide short duration event 
handlers which ensure that the application remains responsive.
</p>
</descr>
<seealso/>
</element>
<element name="TIdleEvent.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TIdleEvent.Done">
<short>Set to <b>True</b> when processing is done.</short>
</element>

<element name="TOnUserInputEvent">
<short>
Specifies an event handler signalled to respond to user input messages in an 
application.
</short>
<descr>
<p>
<var>TOnUserInputEvent</var> is an object procedure type which defines an 
event handler signalled to respond to user input messages in an application. 
It is used as a callback which forwards input messages from widgetset classes 
to the current application.
</p>
<p>
<var>TOnUserInputEvent</var> is the type used for the <var>OnUserInput</var> 
event handler in <var>TApplication</var> and 
<var>TApplicationProperties</var>.
</p>
</descr>
<seealso>
<link id="TApplication.OnUserInput"/>
<link id="TApplicationProperties.OnUserInput"/>
<link id="TApplication.AddOnUserInputHandler"/>
<link id="TApplication.RemoveOnUserInputHandler"/>
</seealso>
</element>
<element name="TOnUserInputEvent.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TOnUserInputEvent.Msg">
<short>Message with the user input for the event.</short>
</element>

<element name="TDataEvent">
<short>
Specifies the type used for an asynchronous callback method.
</short>
<descr/>
<seealso>
<link id="TApplication.QueueAsyncCall"/>
</seealso>
</element>
<element name="TDataEvent.Data">
<short>PtrInt type with the argument passed to the method.</short>
</element>

<element name="TCMHintShow">
<short>Provides access to members in a CM_HINTSHOW control message.</short>
<descr>
<p>
TCMHintShow is a record type used to represent a CM_HINTSHOW control message 
passed as an argument to methods in a control.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.CMHintShow">TControl.CMHintShow</link>
</seealso>
</element>
<element name="TCMHintShow.Msg">
<short>Cardinal value representing the control message.</short>
</element>
<element name="TCMHintShow.UnusedMsg">
<short>
Padding added for alignment on 64-bit platforms.
</short>
</element>
<element name="TCMHintShow.Reserved">
<short>Reserved parameter values for the message.</short>
</element>
<element name="TCMHintShow.HintInfo">
<short>Pointer to the hint information for the control message.</short>
</element>
<element name="TCMHintShow.Result">
<short>Result returned for the control message.</short>
</element>

<element name="TCMHintShowPause">
<short>Not used in the current LCL implementation.</short>
<descr>
<p>
TCMHintShowPause is not used in the current LCL implementation.
</p>
</descr>
<seealso/>
</element>
<element name="TCMHintShowPause.Msg"/>
<element name="TCMHintShowPause.UnusedMsg"/>
<element name="TCMHintShowPause.WasActive"/>
<element name="TCMHintShowPause.Pause"/>
<element name="TCMHintShowPause.Result"/>

<element name="TAppHintTimerType">
<short>Represents TApplication hint timer states.</short>
<descr>
<p>
<var>TAppHintTimerType</var> is used in the implementation of the 
<var>TApplication</var> class, and passed as an argument to its 
<var>StartHintTime</var> method.
</p>
</descr>
<seealso/>
</element>
<element name="TAppHintTimerType.ahttNone">
<short>The hint timer is off.</short>
</element>
<element name="TAppHintTimerType.ahttShowHint">
<short>
Waiting to show a hint; used when a hint timer is started.
</short>
</element>
<element name="TAppHintTimerType.ahttHideHint">
<short>
Waiting to hide an hint; used when the hint control is changed or the mouse 
leaves a hint rectangle.
</short>
</element>
<element name="TAppHintTimerType.ahttReshowHint">
<short>
Waiting to show the next hint; used when the hide hint timer is started.
</short>
</element>

<element name="TShowHintEvent">
<short>
Defines an event handler signalled to perform hint display.
</short>
<descr>
<p>
<var>TShowHintEvent</var> is an object procedure type which defines an event 
handler signalled to perform hint display. It is the type used for the 
<var>TApplication.OnShowHint</var> event handler property.
</p>
</descr>
<seealso>
<link id="TApplication.OnShowHint"/>
<link id="TApplication.ShowHintWindow"/>
<link id="TApplication.AddOnShowHintHandler"/>
<link id="TApplication.RemoveOnShowHintHandler"/>
<link id="TApplicationProperties.OnShowHint"/>
</seealso>
</element>
<element name="TShowHintEvent.HintStr">
<short>Text for hint display event.</short>
</element>
<element name="TShowHintEvent.CanShow">
<short><b>True</b> if the hint can be displayed.</short>
</element>
<element name="TShowHintEvent.HintInfo">
<short>Hint info structure for the hint.</short>
</element>

<element name="THintInfoAtMouse">
<short>
Stores control and mouse position information for a hint display.
</short>
<descr>
<p>
<var>THintInfoAtMouse</var> is a record type used to store Control and Mouse 
position information for a hint display.
</p>
<p>
THintInfoAtMouse is passed as an argument to the <var>ShowHintWindow</var> 
method in <var>TApplication</var>. It is also used in the implementation of 
TApplication methods like <var>ActivateHint</var> and <var>OnHintTimer</var>.
</p>
</descr>
<seealso>
<link id="TApplication.ShowHintWindow"/>
<link id="TApplication.ActivateHint"/>
<link id="TApplication.OnHintTimer"/>
</seealso>
</element>
<element name="THintInfoAtMouse.MousePos">
<short>Position of the mouse cursor for the hint display.</short>
</element>
<element name="THintInfoAtMouse.Control">
<short>Control for the hint display.</short>
</element>
<element name="THintInfoAtMouse.ControlHasHint">
<short>Indicates if hint text is available for form or control.</short>
</element>

<element name="TApplicationFlag">
<short>Application state flags.</short>
<descr>
<p>
<var>TApplicationFlag</var> is an enumeration type with values that represent 
activity or state in an application. <var>TApplicationFlag</var> values are 
stored in the <var>TApplicationFlags</var> type used to implement the 
<var>Flags</var> property in <var>TApplication</var>.
</p>
</descr>
<seealso>
<link id="TApplicationFlags"/>
<link id="TApplication.Flags"/>
</seealso>
</element>
<element name="TApplicationFlag.AppWaiting">
<short>Application is in an Idle state and waiting for a message.</short>
</element>
<element name="TApplicationFlag.AppIdleEndSent">
<short>
IdleEnd handlers have been notified of message arrival; end the idle state 
for the application.
</short>
</element>
<element name="TApplicationFlag.AppHandlingException">
<short>In exception handling.</short>
<notes><note>Not used in the current LCL version.</note></notes>
</element>
<element name="TApplicationFlag.AppNoExceptionMessages">
<short>
Suppresses exception display for the application; set when an exception is 
aborted in the application.
</short>
</element>
<element name="TApplicationFlag.AppActive">
<short>
The application has focus; prevents recursive application activation.
</short>
</element>
<element name="TApplicationFlag.AppDestroying">
<short>Shutting down; set when the application instance is freed.</short>
</element>
<element name="TApplicationFlag.AppDoNotCallAsyncQueue">
<short>Skip asynchronous callbacks between handled messages.</short>
<notes>
<note>
Included in Flags when the application is being destroyed. Causes an 
exception to be raised in QueueAsyncCall.
</note>
</notes>
</element>
<element name="TApplicationFlag.AppInitialized">
<short>Application has been initialized.</short>
</element>

<element name="TApplicationFlags">
<short>
Set type used to store values from the TApplicationFlag enumeration.
</short>
<descr>
<p>
<var>TApplicationFlags</var> is the type used for the <var>Flags</var> 
property in <var>TApplication</var>.
</p>
</descr>
<seealso>
<link id="TApplicationFlag"/>
<link id="TApplication.Flags"/>
</seealso>
</element>

<element name="TApplicationNavigationOption">
<short>Which keys can be used for the navigation within a form.</short>
<descr>
<p>
<var>TApplicationNavigationOption</var> is an enumerated type with values 
that control the behaviors enabled for navigation in an application. Values 
from TApplicationNavigationOption are stored in the 
<var>TApplicationNavigationOptions</var> set type used to implement the 
<var>Navigation</var> property in <var>TApplication</var>.
</p>
</descr>
<seealso>
<link id="TApplicationNavigationOptions"/>
<link id="TApplication.Navigation"/>
</seealso>
</element>
<element name="TApplicationNavigationOption.anoTabToSelectNext">
<short>
The Tab key moves the Focus to the next (or previous) control in TabOrder.
</short>
</element>
<element name="TApplicationNavigationOption.anoReturnForDefaultControl">
<short>
The Enter key triggers the default action.
</short>
</element>
<element name="TApplicationNavigationOption.anoEscapeForCancelControl">
<short>The Escape key triggers the Cancel action.</short>
</element>
<element name="TApplicationNavigationOption.anoF1ForHelp">
<short>The F1 key brings up context sensitive help.</short>
</element>
<element name="TApplicationNavigationOption.anoArrowToSelectNextInParent">
<short>The Arrow keys move the focus.</short>
</element>

<element name="TApplicationNavigationOptions" link="#lcl.forms.TApplicationNavigationOption"/>

<element name="TApplicationHandlerType">
<short>Types of Application notification handlers.</short>
<descr>
<p>
<var>TApplicationHandlerType</var> is an enumerated type with values that 
identify handler categories used in <var>TApplication</var>.
</p>
<p>
TApplicationHandlerType is used as an index value for the internal array of 
<var>TMethodList</var> instances used in TApplication. It is passed as an 
argument to the <var>AddHandler</var> and <var>RemoveHandler</var> methods in 
TApplication to identify the method list where the handler is stored. It is 
also used in the implementation of TApplication methods used to retrieve, 
execute, or maintain handlers such as: <var>Destroy</var> and 
<var>RemoveAllHandlersOfObject</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TApplicationHandlerType.ahtIdle">
<short>Application becoming idle.</short>
</element>
<element name="TApplicationHandlerType.ahtIdleEnd">
<short>Application idle state is ending.</short>
</element>
<element name="TApplicationHandlerType.ahtKeyDownBefore">
<short>
Handler for KeyDown events, invoked before interface and LCL handlers.
</short>
</element>
<element name="TApplicationHandlerType.ahtKeyDownAfter">
<short>
Default handler for KeyDown events, invoked after interface and LCL handlers.
</short>
</element>
<element name="TApplicationHandlerType.ahtActivate">
<short>Handler invoked on application activated.</short>
</element>
<element name="TApplicationHandlerType.ahtDeactivate">
<short>Handler invoked on application deactivated.</short>
</element>
<element name="TApplicationHandlerType.ahtUserInput">
<short>Handler invoked on user input.</short>
<notes>
<note>
Used in NotifyUserInputHandler; implemented in Sparta MDI package
</note>
</notes>
</element>
<element name="TApplicationHandlerType.ahtException">
<short>Handler invoked on handled exception.</short>
</element>
<element name="TApplicationHandlerType.ahtEndSession">
<short>Handler invoked on session end.</short>
<notes><note>Used in IntfEndSession.</note></notes>
</element>
<element name="TApplicationHandlerType.ahtQueryEndSession">
<short>Handler invoked before session ends.</short>
</element>
<element name="TApplicationHandlerType.ahtMinimize">
<short>Handler invoked when the application is minimized.</short>
</element>
<element name="TApplicationHandlerType.ahtModalBegin">
<short>Handler invoked when a form is shown modally.</short>
</element>
<element name="TApplicationHandlerType.ahtModalEnd">
<short>Handler invoked when the last modal form is closed.</short>
</element>
<element name="TApplicationHandlerType.ahtRestore">
<short>Handler invoked on application restored (from minimized state).</short>
</element>
<element name="TApplicationHandlerType.ahtDropFiles">
<short>Handler invoked on files dropped.</short>
<notes><note>Used in IntfDropFiles.</note></notes>
</element>
<element name="TApplicationHandlerType.ahtHelp">
<short>Handler invoked on F1 key (help request).</short>
<notes><note>Used when OnHelp is not assigned in the 
application.</note></notes>
</element>
<element name="TApplicationHandlerType.ahtHint">
<short>Handler invoked on Hint request.</short>
</element>
<element name="TApplicationHandlerType.ahtShowHint">
<short>Handler invoked on Hint becoming visible.</short>
</element>
<element name="TApplicationHandlerType.ahtGetMainFormHandle">
<short>Handler provides the Handle for the main form.</short>
</element>
<element name="TApplicationHandlerType.ahtActionExecute">
<short>
Handler signalled to execute an action.
</short>
</element>
<element name="TApplicationHandlerType.ahtActionUpdate">
<short>
Handler signalled to update an action.
</short>
</element>

<element name="PAsyncCallQueueItem">
<short>A queued asynchronous callback request node.</short>
<descr/>
<seealso>
<link id="TAsyncCallQueueItem"/>
</seealso>
</element>

<element name="TAsyncCallQueueItem">
<short>Record used for a queued asynchronous callback request.</short>
<descr/>
<seealso>
<link id="TApplication.QueueAsyncCall"/>
</seealso>
</element>
<element name="TAsyncCallQueueItem.Method">
<short>Object procedure with the callback method.</short>
<descr/>
</element>
<element name="TAsyncCallQueueItem.Data">
<short>Pointer to the callback method argument.</short>
<descr/>
</element>
<element name="TAsyncCallQueueItem.NextItem">
<short>Pointer to the next item in the callback queue.</short>
<descr/>
</element>
<element name="TAsyncCallQueueItem.PrevItem">
<short>Pointer to the previous item in the callback queue.</short>
<descr/>
</element>

<element name="TAsyncCallQueue">
<short>Represents an asynchronous callback queue.</short>
<descr>
</descr>
<seealso>
<link id="TApplication.QueueAsyncCall"/>
</seealso>
</element>
<element name="TAsyncCallQueue.Top">
<short>The first queued callback request.</short>
</element>
<element name="TAsyncCallQueue.Last">
<short>The last queued callback request.</short>
</element>

<element name="TAsyncCallQueues">
<short>Management information for asynchronous callbacks.</short>
<descr>
<p>
Two queues are used in TAsyncCallQueues. New calls are added to the Next 
queue. Cur contains the callbacks currently being processed in the queue.
</p>
<p>
When the application starts processing the calls, the Next queue becomes the 
Cur queue, and a new Next queue is created. This simplifies thread-safe 
addition in subsequent calls.
</p>
</descr>
<seealso>
<link id="TApplication.QueueAsyncCall"/>
</seealso>
</element>
<element name="TAsyncCallQueues.CritSec">
<short>The critical section for adding and removing queue elements.</short>
<descr/>
</element>
<element name="TAsyncCallQueues.Cur">
<short>The currently processed queue. Processed entries are removed.</short>
<descr/>
</element>
<element name="TAsyncCallQueues.Next">
<short>New calls are added to this queue.</short>
<descr/>
</element>

<element name="TApplicationType">
<short>
Identifies the kind of device where the application currently runs.
</short>
<descr>
<p>
<var>TApplicationType</var> identifies the kind of device where the 
application currently runs. Note that the same application can run on 
differing device types if it has a flexible user interface.
</p>
<p>
TApplicationType is the type used to implement the <var>ApplicationType</var> 
property in <var>TApplication</var>, and returned from widgetset methods that 
identify the platform for the interface.
</p>
</descr>
<seealso/>
</element>
<element name="TApplicationType.atDefault">
<short>The widgetset will attempt to auto-detect the device type.</short>
</element>
<element name="TApplicationType.atDesktop">
<short>For common desktops and notebooks.</short>
</element>
<element name="TApplicationType.atPDA">
<short>For smartphones and other devices with a smallish touchscreen.</short>
</element>
<element name="TApplicationType.atKeyPadDevice">
<short>
Devices without any pointing device, such as keypad feature phones or kiosk 
machines.
</short>
</element>

<element name="TApplicationExceptionDlg">
<short>Enumeration with dialog types for an application.</short>
<descr>
<p>
<var>TApplicationExceptionDlg</var> is an enumerated type with values that 
indicates the type of dialog displayed for an application exception. 
<var>TApplicationExceptionDlg</var> is the type used to implement the 
<var>ExceptionDialog</var> property in <var>TApplication</var> and 
<var>TApplicationProperties</var>.
</p>
</descr>
<seealso>
<link id="TApplication.ExceptionDialog"/>
<link id="TApplicationProperties.ExceptionDialog"/>
</seealso>
</element>
<element name="TApplicationExceptionDlg.aedOkCancelDialog">
<short>
Exception handler window will be a dialog with Ok/Cancel buttons.
</short>
</element>
<element name="TApplicationExceptionDlg.aedOkMessageBox">
<short>Exception handler window will be a simple message box.</short>
</element>

<element name="TApplicationShowGlyphs">
<short>
Indicates the application policy for displaying glyphs on menus and buttons.
</short>
<descr>
<p>
<var>TApplicationShowGlyphs</var> is an enumerated type with values that 
indicate the policy for displaying glyphs on menus and buttons. 
TApplicationShowGlyphs is the type used to implement the 
<var>ShowButtonGlyphs</var> and <var>ShowMenuGlyphs</var> properties in both 
<var>TApplication</var> and <var>TApplicationProperties</var>.
</p>
</descr>
<seealso>
<link id="TApplication.ShowButtonGlyphs"/>
<link id="TApplication.ShowMenuGlyphs"/>
<link id="TApplicationProperties.ShowButtonGlyphs"/>
<link id="TApplicationProperties.ShowMenuGlyphs"/>
<link id="#lcl.menus.TGlyphShowMode">TGlyphShowMode</link>
</seealso>
</element>
<element name="TApplicationShowGlyphs.sbgAlways">
<short>Show glyphs always (disregards system preferences).</short>
</element>
<element name="TApplicationShowGlyphs.sbgNever">
<short>Show glyphs never (disregards system preferences).</short>
</element>
<element name="TApplicationShowGlyphs.sbgSystem">
<short>Show glyphs according to the platform or OS preferences.</short>
</element>

<element name="TTaskBarBehavior">
<short>How forms are represented in the TaskBar.</short>
<descr>
<p>
<var>TTaskBarBehavior</var> is an enumerated type with values that define how 
forms are displayed in the task bar. TTaskBarBehavior is the type used to 
implement the <var>TaskBarBehavior</var> property in <var>TApplication</var>.
</p>
<remark>
Some Linux window managers do not support task bar behaviors. For example: 
Cinnamon.
</remark>
</descr>
<seealso>
<link id="TApplication.TaskBarBehavior"/>
</seealso>
</element>
<element name="TTaskBarBehavior.tbDefault">
<short>Show TaskBar buttons according to the platform default.</short>
</element>
<element name="TTaskBarBehavior.tbMultiButton">
<short>Show buttons for Forms with ShowInTaskBar=stDefault.</short>
</element>
<element name="TTaskBarBehavior.tbSingleButton">
<short>Hide buttons for Forms with ShowInTaskBar=stDefault.</short>
</element>

<element name="TApplicationDoubleBuffered">
<short>
Enumeration with values used in the DoubleBuffered property in TApplication.
</short>
<descr/>
<seealso>
<link id="TApplication.DoubleBuffered"/>
</seealso>
</element>
<element name="TApplicationDoubleBuffered.adbDefault">
<short>
Widgetset dependent. For Windows, it is <b>True</b> unless in a remote 
desktop connection. For other widgetsets it is <b>False</b>.
</short>
</element>
<element name="TApplicationDoubleBuffered.adbFalse">
<short>DoubleBuffered is not used on the platform.</short>
</element>
<element name="TApplicationDoubleBuffered.adbTrue">
<short>DoubleBuffered is used on the platform.</short>
</element>

<element name="TApplication">
<short>Application management and configuration for a GUI application.</short>
<descr>
<p>
<var>TApplication</var> is a <var>TCustomApplication</var> descendant which 
provides facilities used to manage and configure a GUI application. 
Properties, methods, and event handlers are provided which allow a program to 
create, execute, monitor, maintain and destroy an application and its forms. 
Every GUI application contains an Application variable that represents the 
TApplication or descendent class instance.
</p>
<p>
TApplication provides a message processing loop that includes hooks for event 
handlers and exception handling, and supports dispatching messages for 
<var>TCustomAction</var> instances used in application forms. TApplication 
provides support for hints and content-sensitive help for forms and controls 
used in the application. Convenience methods, like <var>MessageBox</var>, are 
provided to simplify access to dialogs and error messages in the application.
</p>
<remark>
For the macOS Carbon widgetset, an application is executed via the Application 
Bundle. As a result, command line parameters are not available to the 
application instance. The OnDropFiles event handler must be used to detected 
when associated files need to be opened.
</remark>
</descr>
<seealso>
<link id="TApplication.GetParams"/>
<link id="TApplication.OnDropFiles"/>
<link id="#lazutils.lazutf8.ParamStrUTF8">ParamStrUTF8</link>
<link id="#fcl.custapp.TCustomApplication.ExeName">TCustomApplication.ExeName</link>
<link id="#fcl.custapp.TCustomApplication.Params">TCustomApplication.Params</link>
<link id="#fcl.custapp.TCustomApplication.ParamCount">TCustomApplication.ParamCount</link>
</seealso>
</element>

<element name="TApplication.FApplicationHandlers">
<short>
Holds the registered handler routines for the application.
</short>
</element>
<element name="TApplication.FApplicationType" link="#lcl.forms.TApplication.ApplicationType"/>
<element name="TApplication.FCaptureExceptions" link="#lcl.forms.TApplication.CaptureExceptions"/>

<element name="TApplication.FComponentsToRelease">
<short>The list of components marked for release.</short>
<descr/>
<seealso>
<link id="TApplication.Release"/>
</seealso>
</element>
<element name="TApplication.FComponentsReleasing">
<short>
The list of components which currently are released (destroyed).
</short>
<descr/>
<seealso>
<link id="TApplication.Release"/>
</seealso>
</element>
<element name="TApplication.FCreatingForm"/>
<element name="TApplication.FDoubleBuffered"/>
<element name="TApplication.FExceptionDialog"/>
<element name="TApplication.FExtendedKeysSupport"/>
<element name="TApplication.FFindGlobalComponentEnabled" link="#lcl.forms.TApplication.FindGlobalComponentEnabled"/>
<element name="TApplication.FFlags" link="#lcl.forms.TApplication.Flags"/>
<element name="TApplication.FHint" link="#lcl.forms.TApplication.Hint"/>
<element name="TApplication.FHintColor" link="#lcl.forms.TApplication.HintColor"/>
<element name="TApplication.FHintControl" link="#lcl.forms.TApplication.HintControl"/>
<element name="TApplication.FHintHidePause" link="#lcl.forms.TApplication.HintHidePause"/>
<element name="TApplication.FHintHidePausePerChar" link="#lcl.forms.TApplication.HintHidePausePerChar"/>
<element name="TApplication.FHintPause" link="#lcl.forms.TApplication.HintPause"/>
<element name="TApplication.FHintRect">
<short>The screen area of the current Hint window.</short>
<seealso>
<link id="TApplication.Hint"/>
</seealso>
</element>
<element name="TApplication.FHintShortCuts" link="#lcl.forms.TApplication.HintShortCuts"/>
<element name="TApplication.FHintShortPause" link="#lcl.forms.TApplication.HintShortPause"/>
<element name="TApplication.FHintTimer">
<short>The timer for showing and hiding Hints.</short>
</element>
<element name="TApplication.FHintTimerType">
<short>The Hint time mode.</short>
<seealso>
<link id="TApplication.Hint"/>
</seealso>
</element>
<element name="TApplication.FHintWindow">
<short>The current Hint window.</short>
<seealso>
<link id="TApplication.Hint"/>
</seealso>
</element>
<element name="TApplication.FIcon" link="#lcl.forms.TApplication.Icon"/>
<element name="TApplication.FBigIconHandle">
<short>The Handle for the big application icon.</short>
</element>
<element name="TApplication.FLayoutAdjustmentPolicy"/>
<element name="TApplication.FMainFormOnTaskBar" link="#lcl.forms.TApplication.MainFormOnTaskBar"/>
<element name="TApplication.FModalLevel" link="#lcl.forms.TApplication.ModalLevel"/>
<element name="TApplication.FLayoutAdjustmentPolicy"/>
<element name="TApplication.FMoveFormFocusToChildren"/>
<element name="TApplication.FOnCircularException"/>
<element name="TApplication.FOnGetMainFormHandle" link="#lcl.forms.TApplication.OnGetMainFormHandle"/>
<element name="TApplication.FOnMessageDialogFinished"/>
<element name="TApplication.FOnModalBegin" link="#lcl.forms.TApplication.OnModalBegin"/>
<element name="TApplication.FOnModalEnd" link="#lcl.forms.TApplication.OnModalEnd"/>
<element name="TApplication.FScaled"/>
<element name="TApplication.FShowButtonGlyphs" link="#lcl.forms.TApplication.ShowButtonGlyphs"/>
<element name="TApplication.FShowMenuGlyphs" link="#lcl.forms.TApplication.ShowMenuGlyphs"/>
<element name="TApplication.FSmallIconHandle">
<short>The Handle for the small application icon.</short>
</element>
<element name="TApplication.FIdleLockCount">
<short>
Counter for nested Idle locks, preventing execution of OnIdle handlers.
</short>
</element>
<element name="TApplication.FLastKeyDownSender">
<short>Cached key event parameter.</short>
</element>
<element name="TApplication.FLastKeyDownKeys">
<short>List of key values for the last KeyDown sender.</short>
</element>
<element name="TApplication.FLastKeyDownShift">
<short>Cached key event parameter.</short>
</element>
<element name="TApplication.FMainForm" link="#lcl.forms.TApplication.MainForm"/>
<element name="TApplication.FMouseControl" link="#lcl.forms.TApplication.MouseControl"/>
<element name="TApplication.FNavigation" link="#lcl.forms.TApplication.Navigation"/>
<element name="TApplication.FOldExceptProc">
<short>The previously installed exception handler.</short>
</element>
<element name="TApplication.FOnActionExecute" link="#lcl.forms.TApplication.OnActionExecute"/>
<element name="TApplication.FOnActionUpdate" link="#lcl.forms.TApplication.OnActionUpdate"/>
<element name="TApplication.FOnActivate" link="#lcl.forms.TApplication.OnActivate"/>
<element name="TApplication.FOnDeactivate" link="#lcl.forms.TApplication.OnDeactivate"/>
<element name="TApplication.FOnDestroy" link="#lcl.forms.TApplication.OnDestroy"/>
<element name="TApplication.FOnDropFiles" link="#lcl.forms.TApplication.OnDropFiles"/>
<element name="TApplication.FOnHelp" link="#lcl.forms.TApplication.OnHelp"/>
<element name="TApplication.FOnHint" link="#lcl.forms.TApplication.OnHint"/>
<element name="TApplication.FOnIdle" link="#lcl.forms.TApplication.OnIdle"/>
<element name="TApplication.FOnIdleEnd" link="#lcl.forms.TApplication.OnIdleEnd"/>
<element name="TApplication.FOnEndSession" link="#lcl.forms.TApplication.OnEndSession"/>
<element name="TApplication.FOnQueryEndSession" link="#lcl.forms.TApplication.OnQueryEndSession"/>
<element name="TApplication.FOnMinimize" link="#lcl.forms.TApplication.OnMinimize"/>
<element name="TApplication.FOnRestore" link="#lcl.forms.TApplication.OnRestore"/>
<element name="TApplication.FOnShortcut" link="#lcl.forms.TApplication.OnShortcut"/>
<element name="TApplication.FOnShowHint" link="#lcl.forms.TApplication.OnShowHint"/>
<element name="TApplication.FOnUserInput" link="#lcl.forms.TApplication.OnUserInput"/>
<element name="TApplication.FAsyncCall" link="#lcl.forms.TApplication.QueueAsyncCall">
<short>Queues for asynchronous calls.</short>
</element>
<element name="TApplication.FShowHint" link="#lcl.forms.TApplication.ShowHint"/>
<element name="TApplication.FShowMainForm" link="#lcl.forms.TApplication.ShowMainForm"/>
<element name="TApplication.FLastMousePos">
<short>Cached mouse event parameter.</short>
</element>
<element name="TApplication.FLastMouseControl">
<short>Cached mouse event parameter.</short>
</element>
<element name="TApplication.FLastMouseControlValid">
<short>Cached mouse event parameter.</short>
</element>
<element name="TApplication.FBidiMode" link="#lcl.forms.TApplication.BiDiMode"/>
<element name="TApplication.FRestoreStayOnTop">
<short>The list of all forms that should be restored to StayOnTop.</short>
<descr>The list is created in RemoveStayOnTop, processed in 
RestoreStayOnTop.</descr>
</element>
<element name="TApplication.FTaskBarBehavior" link="#lcl.forms.TApplication.TaskBarBehavior"/>
<element name="TApplication.FUpdateFormatSettings"/>
<element name="TApplication.FRemoveStayOnTopCounter"/>
<element name="TApplication.FExceptionCounter"/>

<element name="TApplication.DoOnIdleEnd">
<short>
Notifies the OnIdleEnd handlers when the application exits Idle state.
</short>
</element>

<element name="TApplication.GetActive"/>
<element name="TApplication.GetActive.Result"/>

<element name="TApplication.GetCurrentHelpFile">
<short>
Gets the HelpFile name for the active form, or the Application.
</short>
<descr>
<p>
<var>GetCurrentHelpFile</var> is a <var>String</var> function used to get the 
help file name for the active form or application.
</p>
<p>
<var>GetCurrentHelpFile</var> checks for an active form in the 
<var>Screen</var> singleton. If a form is active, the file name in its 
<var>HelpFile</var> property is used as the return value. If a form is not 
active, the <var>HelpFile</var> in the <var>Application</var> instance is 
used.
</p>
</descr>
<seealso>
<link id="TScreen.ActiveCustomForm"/>
<link id="TCustomForm.HelpFile"/>
<link id="TApplication.HelpFile"/>
</seealso>
</element>
<element name="TApplication.GetCurrentHelpFile.Result">
<short>Help file name located in the method.</short>
</element>

<element name="TApplication.GetExename">
<short>Gets the name of the executable for the application.</short>
<descr>
<p>
<var>GetExename</var> is a <var>String</var> function used to get the name of 
the executable file which started the application. The return value contains 
the first command line parameter (ordinal position 0) returned from the 
<var>ParamStrUTF8</var> routine in <file>LazUtils</file>.
</p>
</descr>
<seealso>
<link id="#lazutils.lazutf8.ParamStrUTF8">ParamStrUTF8</link>
</seealso>
</element>
<element name="TApplication.GetExename.Result">
<short>Name of the executable file used to start the application.</short>
</element>

<element name="TApplication.GetHandle">
<short>Gets the value for the Handle property.</short>
<descr>
<p>
Returns the AppHandle property from the WidgetSet singleton.
</p>
</descr>
<seealso>
<link id="TApplication.Handle"/>
</seealso>
</element>
<element name="TApplication.GetHandle.Result">
<short>The Handle for the application.</short>
</element>

<element name="TApplication.GetMainFormHandle">
<short>
Determines the main form handle, using all available handlers.
</short>
<descr/>
<seealso>
<link id="TApplication.OnGetMainFormHandle"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.GetMainFormHandle.Result">
<short>Handle value for the main form.</short>
</element>

<element name="TApplication.GetTitle">
<short>
Gets the value for the Title when it is not already stored in the property.
</short>
<descr>
<p>
Extracts the program name from the command line arguments when Title is 
unassigned.
</p>
</descr>
</element>
<element name="TApplication.GetTitle.Result">
<short>Value for the Title property.</short>
</element>

<element name="TApplication.FreeIconHandles">
<short>Destroys the application icons.</short>
<descr>
<p>
<var>FreeIconHandles</var> is a procedure used to free icon handles used in 
the application. FreeIconHandles ensures that the internal members for the 
small and large icon handles are destroyed (when assigned). The 
<var>DestroyIcon</var> routine is called to destroy each of the icon handles 
using the correct routine for the widgetset implementation.
</p>
<p>
FreeIconHandles is called from the destructor for the class instance, and 
when an icon for the application has been changed.
</p>
</descr>
<seealso>
<link id="TApplication.Destroy"/>
<link id="TApplication.IconChanged"/>
<link id="TApplication.SmallIconHandle"/>
<link id="TApplication.BigIconHandle"/>
</seealso>
</element>

<element name="TApplication.IconChanged">
<short>
Implements the OnChange event handler used for the Icon in the application.
</short>
<descr>
<p>
<var>IconChanged</var> is a method used to load the new application icon, and 
to notify the widgetset and all forms of the change. It implements the 
<var>OnChange</var> event handler assigned to the <var>Icon</var> for the 
application.
</p>
<p>
It frees existing handles both the small and large versions of the Icon for 
the application, and calls the <var>AppSetIcon</var> method in the widgetset 
class to re-create the handles.
</p>
<p>
IconChanged posts a <var>CM_ICONCHANGED</var> control message to each of the 
<var>TCustomForm</var> instances in the <var>Screen</var> singleton. 
Unassigned handle values are provided for both the small and large icons on 
the form.
</p>
</descr>
<seealso/>
</element>
<element name="TApplication.IconChanged.Sender">
<short>Object for the event notification.</short>
</element>

<element name="TApplication.SetBidiMode">
<short>Sets the value for the BiDiMode property.</short>
<descr>
<p>
<var>SetBidiMode</var> is a method used to set value for the 
<var>BiDiMode</var> property. It updates the property value, and calls 
<var>NotifyCustomForms</var> to post a <var>CM_PARENTBIDIMODECHANGED</var> 
control message to all <var>TCustomForm</var> instances on the 
<var>Screen</var>.
</p>
</descr>
<seealso>
<link id="TApplication.BiDiMode"/>
<link id="TApplication.NotifyCustomForms"/>
</seealso>
</element>
<element name="TApplication.SetBidiMode.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplication.SetFlags">
<short>Sets the value for the Flags property.</short>
<descr>
<p>
SetFlags allows the value AppNoExceptionMessages to be added to or removed 
from the values in the TApplicationFlags set type. All other existing values 
in Flags are not modified.
</p>
</descr>
<seealso>
<link id="TApplication.Flags"/>
<link id="TApplicationFlags"/>
</seealso>
</element>
<element name="TApplication.SetFlags.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplication.SetMainFormOnTaskBar">
<short>Sets the value for the MainFormOnTaskBar property.</short>
<descr>
<p>
Calls the <var>AppSetMainFormOnTaskBar</var> method in the widgetset class to 
apply the new value for the property.
</p>
</descr>
<seealso>
<link id="TApplication.MainFormOnTaskBar"/>
</seealso>
</element>
<element name="TApplication.SetMainFormOnTaskBar.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplication.SetNavigation">
<short>Sets the value for the Navigation property.</short>
<descr/>
<seealso>
<link id="TApplication.Navigation"/>
</seealso>
</element>
<element name="TApplication.SetNavigation.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplication.SetShowButtonGlyphs">
<short>Sets the value for the ShowButtonGlyphs property.</short>
<descr>
<p>
Updates the property value, and calls the <var>NotifyCustomForms</var> method 
to post a <var>CM_APPSHOWBTNGLYPHCHANGED</var> control message to 
<var>TCustomForm</var> instances for the application.
</p>
</descr>
<seealso>
<link id="TApplication.ShowButtonGlyphs"/>
</seealso>
</element>
<element name="TApplication.SetShowButtonGlyphs.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplication.SetShowMenuGlyphs" link="#lcl.forms.TApplication.ShowMenuGlyphs"/>
<element name="TApplication.SetShowMenuGlyphs.AValue"/>

<element name="TApplication.SetTaskBarBehavior" link="#lcl.forms.TApplication.TaskBarBehavior"/>
<element name="TApplication.SetTaskBarBehavior.AValue"/>

<element name="TApplication.UpdateMouseControl">
<short>
Updates the internal member used to track the mouse capture control in the 
application.
</short>
<descr>
<p>
Ensures that a CM_MOUSELEAVE message is performed for the current MouseControl 
before the member is updated. Updates values in the HintControl and Hint 
properties, and performs a CM_MOUSEENTER message after the MouseControl has 
been changed.
</p>
</descr>
<seealso>
<link id="TApplication.MouseControl"/>
<link id="TApplication.Hint"/>
<link id="TApplication.HintControl"/>
<link id="GetLongHint"/>
</seealso>
</element>
<element name="TApplication.UpdateMouseControl.NewMouseControl">
<short>
Control instance to receive the mouse capture.
</short>
</element>

<element name="TApplication.UpdateMouseHint">
<short>
Sets Hint to the (new) hint that applies to the control in CurrentControl.
</short>
<descr>
</descr>
<seealso>
<link id="TApplication.Hint"/>
<link id="TApplication.DoBeforeMouseMessage"/>
</seealso>
</element>
<element name="TApplication.UpdateMouseHint.CurrentControl">
<short>The control under the mouse.</short>
</element>

<element name="TApplication.SetCaptureExceptions" link="#lcl.forms.TApplication.CaptureExceptions"/>
<element name="TApplication.SetCaptureExceptions.AValue"/>

<element name="TApplication.SetHint" link="#lcl.forms.TApplication.Hint"/>
<element name="TApplication.SetHint.AValue"/>

<element name="TApplication.SetHintColor" link="#lcl.forms.TApplication.HintControl"/>
<element name="TApplication.SetHintColor.AValue"/>

<element name="TApplication.SetIcon" link="#lcl.forms.TApplication.Icon"/>
<element name="TApplication.SetIcon.AValue"/>

<element name="TApplication.SetShowHint" link="#lcl.forms.TApplication.ShowHint"/>
<element name="TApplication.SetShowHint.AValue"/>

<element name="TApplication.StopHintTimer">
<short>Disables the Hint timer.</short>
<descr/>
<seealso/>
</element>

<element name="TApplication.ValidateHelpSystem">
<short>
Checks for an installed <link 
id="#lcl.HelpIntfs.HelpManager">HelpManager</link>.
</short>
<descr/>
<seealso/>
</element>
<element name="TApplication.ValidateHelpSystem.Result">
<short><b>True</b> when HelpManager is not Nil.</short>
</element>

<element name="TApplication.WndProc" link="#lcl.controls.TControl.WndProc"/>
<element name="TApplication.WndProc.AMessage"/>

<element name="TApplication.DispatchAction">
<short>Asks the active form and MainForm to handle the action.</short>
<descr/>
<seealso/>
</element>
<element name="TApplication.DispatchAction.Result">
<short><b>True</b> when the action was handled.</short>
</element>
<element name="TApplication.DispatchAction.Msg"/>
<element name="TApplication.DispatchAction.Action"/>

<element name="TApplication.AddHandler">
<short>
Adds an application notification handler to the list of handlers for the 
specified type.
</short>
<descr>
<p>
<var>AddHandler</var> is a procedure used to add an application notification 
handler to the list of handlers in the TApplication instance.
</p>
<p>
<var>HandlerType</var> is a <var>TApplicationHandlerType</var> enumeration 
value that defines the situation(s) where the handler can be executed. See 
TApplicationHandlerType for more information about values in the enumeration.
</p>
<p>
<var>Handler</var> is a <var>TMethod</var> record with pointers to the code 
and optional data executed when the handler is invoked.
</p>
<p>
<var>AsFirst</var> indicates if the handler should be inserted as the initial 
handler in the method list (when <b>True</b>), or appended to the end of the 
list (when <b>False</b>).
</p>
<p>
AddHandler calls <var>RaiseGDBException</var> to raise an exception when the 
pointer to the Code in Handler has not been assigned.
</p>
<p>
AddHandler ensures that a <var>TMethodList</var> exists for handlers using 
the value in HandlerType, and calls the <var>Add</var> method in the 
<var>TMethodList</var> to store the Handler at the position needed for 
AsFirst.
</p>
<p>
AddHandler is called from the implementation of methods specialized for a 
specific application handler type, like:
</p>
<ul>
<li>AddOnIdleHandler</li>
<li>AddOnIdleEndHandler</li>
<li>AddOnUserInputHandler</li>
<li>AddOnKeyDownBeforeHandler</li>
<li>AddOnKeyDownHandler</li>
<li>AddOnActivateHandler</li>
<li>AddOnDeactivateHandler</li>
<li>AddOnExceptionHandler</li>
<li>AddOnEndSessionHandler</li>
<li>AddOnQueryEndSessionHandler</li>
<li>AddOnMinimizeHandler</li>
<li>AddOnModalBeginHandler</li>
<li>AddOnModalEndHandler</li>
<li>AddOnRestoreHandler</li>
<li>AddOnDropFilesHandler</li>
<li>AddOnHelpHandler</li>
<li>AddOnHintHandler</li>
<li>AddOnShowHintHandler</li>
<li>AddOnGetMainFormHandleHandler</li>
</ul>
</descr>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
<seealso>
</seealso>
</element>
<element name="TApplication.AddHandler.HandlerType">
<short>
Application handler type for the handler routine.
</short>
</element>
<element name="TApplication.AddHandler.Handler">
<short>
Handler routine added in the method.
</short>
</element>
<element name="TApplication.AddHandler.AsFirst">
<short>
<b>True</b> if the handler is stored as the first entry in the list of 
handlers for the type. <b>False</b> to append the handler to the end of the 
list.
</short>
</element>

<element name="TApplication.RemoveHandler">
<short>
Removes an application notification handler from the list for the specified 
handler type.
</short>
<descr>
<p>
Calls the Remove method in the TMethodList for the application handler type 
in the HandlerType argument. Handler contains the TMethod instance to locate 
and remove from the application handlers for the type.
</p>
<p>
RemoveHandler is called from other methods which operate on a specific 
TApplicationHandlerType, like:
</p>
<ul>
<li>RemoveOnIdleHandler</li>
<li>RemoveOnIdleEndHandler</li>
<li>RemoveOnUserInputHandler</li>
<li>RemoveOnKeyDownBeforeHandler</li>
<li>RemoveOnKeyDownHandler</li>
<li>RemoveOnActivateHandler</li>
<li>RemoveOnDeactivateHandler</li>
<li>RemoveOnExceptionHandler</li>
<li>RemoveOnEndSessionHandler</li>
<li>RemoveOnQueryEndSessionHandler</li>
<li>RemoveOnMinimizeHandler</li>
<li>RemoveOnModalBeginHandler</li>
<li>RemoveOnModalEndHandler</li>
<li>RemoveOnRestoreHandler</li>
<li>RemoveOnDropFilesHandler</li>
<li>RemoveOnHelpHandler</li>
<li>RemoveOnHintHandler</li>
<li>RemoveOnShowHintHandler</li>
<li>RemoveOnGetMainFormHandleHandler</li>
</ul>
</descr>
<seealso>
<link id="TApplication.AddHandler"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveHandler.HandlerType">
<short>
Application notification type for the handler removed in the method.
</short>
</element>
<element name="TApplication.RemoveHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.RunLoop">
<short>Encapsulates the application message loop (HandleMessage).</short>
</element>

<element name="TApplication.Activate">
<short>
Handler for application activation, notifies all activation handlers.
</short>
</element>

<element name="TApplication.Deactivate">
<short>
Handler for application deactivation, notifies all deactivation handlers.
</short>
<descr/>
</element>
<element name="TApplication.Deactivate.Force">
<short><b>True</b> when called from the widgetset.</short>
</element>

<element name="TApplication.GetConsoleApplication">
<short>Always returns <b>False</b> for a GUI application.</short>
<descr/>
<seealso/>
</element>
<element name="TApplication.GetConsoleApplication.Result">
<short><b>False</b> for a GUI application.</short>
</element>

<element name="TApplication.NotifyIdleHandler">
<short>Signals all idle handlers for the application.</short>
<descr>
<p>
<var>NotifyIdleHandler</var> is a method used to signal event handlers using 
the <var>ahtIdle</var> application handler type.
</p>
<p>
The internal array of handlers is checked for a <var>TMethodList</var> which 
uses the application handler type. If it exists, each of the methods in the 
list are signalled, in reverse order, using the value in <var>Done</var> as a 
control flag. While Done is <b>True</b>, the handlers are continuously called 
in the loop. If any handler in the list sets Done to <b>False</b>, the method 
is exited.
</p>
<p>
NotifyIdleHandler is called from the <var>Idle</var> method. It occurs after 
the <var>ReleaseComponents</var> and <var>ProcessAsyncCallQueue</var> methods 
have been called. It is also called after the <var>OnIdle</var> event handler 
in the TApplication has been signalled (when assigned) and when the Done 
argument to the event handler is <b>True</b>.
</p>
</descr>
<seealso>
<link id="TApplication.OnIdle"/>
<link id="TApplication.Idle"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.NotifyIdleHandler.Done">
<short>
<b>True</b> when all handlers are done, meaning: wait for the next message.
</short>
</element>

<element name="TApplication.NotifyIdleEndHandler">
<short>
Notifies all Idle End handlers when a new message has arrived.
</short>
<descr>
<p>
Executes the <var>CallNotifyEvents</var> method in the TMethodList for the 
handler type. Te application instance is passed as an argument to the method.
</p>
<p>
NotifyIdleEndHandler is called when AppIdleEndSent is included in the Flags 
for the TApplication instance. It occurs after the OnIdleEnd event handler 
has been signalled (when assigned).
</p>
</descr>
<seealso>
<link id="TApplication.OnIdleEnd"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.NotifyActivateHandler">
<short>Notifies all Activate handlers for the application.</short>
<descr>
<p>
<var>NotifyActivateHandler</var> signals the <var>OnActivate</var> event 
handler (when assigned) using the <var>TApplication</var> instance as the 
Sender for the notification event. The <var>CallNotifyEvents</var> method in 
the TMethodList is called to signal each of the routines for the handler type.
</p>
<p>
NotifyActivateHandler is called when an application is initially executed, 
and when focus is acquired from a different application.
</p>
</descr>
<seealso>
<link id="TApplication.OnActivate"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.NotifyDeactivateHandler">
<short>Notifies all Deactivate handlers for the application.</short>
<descr>
<p>
<var>NotifyDeactivateHandler</var> is a method used to signal all of the 
deactivate handlers for the application. OnDeactivate is signalled (when 
assigned) using the application instance as an argument.
</p>
<p>
CallNotifyEvents is executed for each of the handlers in the TMethodList for 
the ahtDeactivate notification type. Use AddOnDeactivateHandler and 
RemoveOnDeactivateHandler to maintain an additional handler for the 
notification type.
</p>
<p>
NotifyDeactivateHandler is called from the Deactivate method, and occurs when 
focus is changed to another application or the application is closed.
</p>
</descr>
<seealso>
<link id="TApplication.OnDeactivate"/>
<link id="TApplication.AddOnDeactivateHandler"/>
<link id="TApplication.RemoveOnDeactivateHandler"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.NotifyCustomForms">
<short>
Performs the specified message for all custom forms in the application.
</short>
<descr>
<p>
Calls the <var>Perform</var> method for custom forms in the application using 
<var>Msg</var> as an argument.
</p>
<p>
NotifyCustomForms is called when theme options for button or menu glyphs are 
changed to sbgSystem in the application instance.
</p>
</descr>
<seealso>
<link id="TScreen.CustomForms"/>
<link id="Screen"/>
<link id="TApplication.IntfThemeOptionChange"/>
<link id="#lcl.controls.TControl.Perform">TControl.Perform</link>
</seealso>
</element>
<element name="TApplication.NotifyCustomForms.Msg">
<short>The message sent to the forms.</short>
</element>

<element name="TApplication.IsHintMsg">
<short>Exists for Delphi compatibility only.</short>
<descr>
<p>
Always returns <var>False</var> in <var>TApplication</var>. Provided for 
Delphi code compatibility only.
</p>
</descr>
<seealso/>
</element>
<element name="TApplication.IsHintMsg.Result">
<short>Always returns <b>False</b>.</short>
</element>
<element name="TApplication.IsHintMsg.Msg">
<short>Not used in the implementation.</short>
</element>

<element name="TApplication.DoOnHelp">
<short>
Signals an OnHelp event handler.
</short>
<descr>
<p>
Signals the OnHelp message handler. DoOnHelp tries the OnHelp handlers for 
the active form and the Application, as well as handler routines added for 
the ahtHelp handler type.
</p>
<p>
The <var>CallHelp</var> argument indicates if handler(s) in the 
<var>Application</var> instance should be called when the event handler in 
the form is completed. Set CallHelp to <b>False</b> when the help request has 
been satisfied in one of the event handlers.
</p>
<p>
DoOnHelp is called from the HelpCommand method.
</p>
</descr>
<seealso>
<link id="TApplication.OnHelp"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.DoOnHelp.Result">
<short><b>True</b> when the message was handled.</short>
</element>
<element name="TApplication.DoOnHelp.Command">
<short>
Help command to handle in the event handler(s).
</short>
</element>
<element name="TApplication.DoOnHelp.Data">
<short>
Pointer to the help data used in the event handler(s).
</short>
</element>
<element name="TApplication.DoOnHelp.CallHelp">
<short>
<b>True</b> to signal a help handler in the form. <b>False</b> if the Help 
request is handled by the application.
</short>
</element>

<element name="TApplication.DoOnMouseMove">
<short>
OnMouseMove message handler, updates the Hint.
</short>
<descr>
<p>
<var>DoOnMouseMove</var> performs actions needed when a mouse move message is 
received and applied for the application. It retrieves the current position 
for the mouse pointer, and calls the ActivateHint method to build / display a 
hint for the active form / control in the application.
</p>
<p>
DoOnMouseMove is called from the NotifyUserInputHandler method.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.ShowHintWindow">
<short>
Shows or hides the hint window for a control in the application.
</short>
<descr>
<p>
<var>ShowHintWindow</var> performs actions needed to display hint text in a 
pop-up window for the control represented by the mouse coordinates in the 
<var>Info</var> argument. No actions are performed in the method if ShowHint 
has not been enabled, or a valid hint control cannot be determined for the 
application.
</p>
<p>
ShowHintWindow maintains an internal THintInfo structure used to store  
information with the text for the hint, configuration information about its 
display window, and the control for the hint.
</p>
<p>
For a valid parented hint control, handler routines are signalled to check 
whether the hint can be displayed for the application. The OnShowHint event 
handler(s) are signalled first (when assigned) to determine the hint text or 
hint data. Additional OnShowHint handlers assigned using AddOnShowHintHandler 
are signalled next.
</p>
<p>
If the hint text or hint data was not assigned in the event handlers, the hint 
text for the hovered control is used. Only the first "|"-delimited line of text 
in TControl.Hint is used for the hint.
</p>
<p>
The hint window for the application is created (or re-created) and configured 
as needed, and the show hint command is performed for the hint control. The 
ActivateHintData method in the hint window is called to display (or hide) the 
hint window and activate (or reset) the auto-hide timer.
</p>
<p>
If the hint control is no longer valid or the hint text is empty, the HideHint 
method is called to hide an existing hint window.
</p>
</descr>
<seealso>
<link id="TApplication.ShowHint"/>
<link id="TApplication.HideHint"/>
<link id="TApplication.OnShowHint"/>
<link id="TApplication.StartHintTimer"/>
<link id="THintWindow.ActivateHintData"/>
<link id="THintWindow.ActivateHint"/>
<link id="HintWindowClass"/>
<link id="#lcl.controls.TControl.Hint">TControl.Hint</link>
<link id="#lcl.controls.THintInfo">THintInfo</link>
</seealso>
</element>
<version>
Modified in LCL version 4.0 to call ActivateHintData for the hint window 
(instead of ActivateHint).
</version>
<element name="TApplication.ShowHintWindow.Info">
<short>
Contains information about the hint control, its mouse coordinates, and the 
hint text used in the method.
</short>
</element>

<element name="TApplication.OnHintTimer">
<short>
Implements an event handler signalled when the timer for a hint display has 
elapsed.
</short>
<descr>
<p>
<var>OnHintTimer</var> is an implementation of the event handler assigned to 
the OnTimer event handler in the internal timer for the application instance.
</p>
<p>
It calls StopHintTimer to ensure that the timer is disabled. If the mouse 
pointer is not within the client area for the current form or control, 
HideHint is called to hide the hint window. Otherwise, hint information for 
the control under the mouse pointer is retrieved and ShowHintWindow is called 
to start a new hint display.
</p>
<p>
OnHintTimer is called directly from the StartHintTimer method when Internal 
is set to 0 (or a negative value).
</p>
</descr>
<seealso/>
</element>
<element name="TApplication.OnHintTimer.Sender">
<short>
Object instance (TApplication) for the event notification.
</short>
</element>

<element name="TApplication.SetTitle">
<short>Sets the value for the Title property.</short>
<descr>
<p>
Calls the inherited method on entry. Calls the <var>AppSetTitle</var> method 
in the widgetset class to apply the new value for the property.
</p>
</descr>
<seealso>
<link id="TApplication.Title"/>
</seealso>
</element>
<element name="TApplication.SetTitle.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplication.StartHintTimer">
<short>Starts the timer for display of a hint message.</short>
<descr>
<p>
Called from the ActivateHint method when a hint window is not already active 
and visible in the application.
</p>
</descr>
<seealso>
<link id="TApplication.Hint"/>
<link id="TApplication.HintPause"/>
<link id="TApplication.ActivateHint"/>
<link id="TAppHintTimerType"/>
</seealso>
</element>
<element name="TApplication.StartHintTimer.Interval">
<short>
Interval (in milliseconds) that the hint timer must wait before executing the 
OnHintTimer routine. Normally contains the value in HintPause where 500ms is the default.
</short>
</element>
<element name="TApplication.StartHintTimer.TimerType">
<short>
Contains ahttShowHint in StartHintTimer.
</short>
</element>

<element name="TApplication.UpdateVisible">
<short>Asks the widgetset to update its task bar entries.</short>
<descr>
<p>
<var>UpdateVisible</var> is a method used to notify the widgetset class 
instance that the task bar needs to be updated for the visible forms in the 
application. If there are visible forms which share application taskbar item 
then the application task bar item must be visible, too. Otherwise, hide it.
</p>
<p>
UpdateVisible is called when a form is added to or removed from the 
CustomForms in the Screen singleton for the application.
</p>
</descr>
<seealso>
<link id="TApplication.TaskBarBehavior"/>
<link id="TCustomForm.ShowInTaskBar"/>
<link id="Screen"/>
<link id="TScreen.CustomForms"/>
<link id="TScreen.CustomFormCount"/>
<link id="#lcl.controls.TWinControl.Showing">TWinControl.Showing</link>
<link id="#lcl.controls.TControl.ControlState">TControl.ControlState</link>
</seealso>
</element>

<element name="TApplication.DoIdleActions">
<short>Updates all Actions and hides splash screens.</short>
<descr>
<p>
<var>DoIdleActions</var> ensures that the UpdateActions method is called for 
visible and enabled forms in the application. This allows the TBasicAction 
instances in menus and controls on each form to be updated as well.
</p>
<p>
DoIdleActions hides any form instance in Screen which uses fsSplash in its 
FormStyle property.
</p>
<p>
DoIdleActions is called from the Idle method after OnIdle and other idle 
event handlers have been signalled and indicated that they have been 
completed successfully.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.MenuPopupHandler">
<short>Implements the OnMenuPopupHandler for the application.</short>
<descr>
<p>
Assigned as the handler routine for the OnMenuPopupHandler variable in the 
LCL when the application instance is created.
</p>
<p>
Calls the <var>HideHint</var> method to manage values in 
<var>HintWindow</var>, <var>HintControl</var>, and <var>HintRect</var> (when 
needed).
</p>
</descr>
<seealso>
<link id="#lcl.menus.OnMenuPopupHandler">OnMenuPopupHandler</link>
</seealso>
</element>
<element name="TApplication.MenuPopupHandler.Sender">
<short>Object for the event notification.</short>
</element>

<element name="TApplication.ProcessAsyncCallQueue">
<short>Calls all methods queued in QueueAsyncCall.</short>
<descr/>
<seealso/>
</element>

<element name="TApplication.DoDecLCLRefcountToZero">
<short>
Performs actions needed when the reference count for a TLCLComponent instance 
reaches 0 in the application.
</short>
<descr>
<p>
DoDecLCLRefcountToZero is used in the ReleaseComponent method, and is assigned 
as the handler routine for the OnDecLCLRefcountToZero event when the 
LCLRefCount for the TLCLComponent has a value larger than 0.
</p>
<p>
DoDecLCLRefcountToZero ensures that the global OnDecLCLRefcountToZero handler 
in <file>lclclasses.pp</file> is unassigned and a call to FreeComponent is 
queued for asynchronous execution in the application. This is done to prevent 
an exception that occurs when the component is freed while a previous call to 
the OnDecLCLRefcountToZero handler is still in process.
</p>
</descr>
<version>
Added in LCL version 3.0.
</version>
<seealso>
<link id="TApplication.ReleaseComponent"/>
<link id="TApplication.FreeComponent"/>
<link id="#lcl.lclclasses.TLCLComponent.LCLRefCount">TLCLComponent.LCLRefCount</link>
<link id="#lcl.lclclasses.OnDecLCLRefcountToZero">OnDecLCLRefcountToZero</link>
</seealso>
</element>
<element name="TApplication.DoDecLCLRefcountToZero.Sender">
<short/>
</element>

<element name="TApplication.FreeComponent" link="#lcl.forms.TApplication.ReleaseComponents"/>
<element name="TApplication.FreeComponent.Data">
<short>Ignored, should be zero.</short>
</element>

<element name="TApplication.ReleaseComponents">
<short>Destroys all components marked for release.</short>
<descr>
<p>
ReleaseComponents ensures that any component in the internal list calls 
ReleaseComponent to handle the free notification for a reference-counted LCL 
component.
</p>
<p>
ReleaseComponents is called from the Idle and FreeComponent methods.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.DoBeforeFinalization">
<short>Destroys all components.</short>
<descr>
<p>
Called from the <var>BeforeFinalization</var> routine which is used as the 
<var>ExitProc</var> handler in the application instance.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.GetParams">
<short>
Returns the command line argument at the specified ordinal position.
</short>
<descr>
<p>
<var>GetParams</var> is an overridden <var>String</var> function in 
TApplication and is used to get the argument at the specified position in the 
command line. It re-implements the read access specifier for the Params 
property from the ancestor class (TCustomApplication), and does not call the 
inherited method.
</p>
<p>
<var>Index</var> is the ordinal position for the requested parameter value. 
Index should be in the range <b>0..<var>ParamCount</var></b>. Values in Index 
outside this range cause an empty string ('') to be returned for a parameter 
value.
</p>
<p>
In most cases, the parameter at position <b>0</b> contains the name and 
optional path to the executable file for the application. For cross-platform 
compatibility, use the ExeName property to get the path and name for the binary 
instead. Subsequent index positions contain any command line arguments passed 
to the executable.
</p>
<p>
The return value contains the UTF-8-encoded string with the value for the 
parameter at the specified position, or an empty string when not present. The 
value is retrieved using the <var>ParamStrUTF8</var> routine for the position 
in Index.
</p>
</descr>
<seealso>
<link id="#lazutils.lazutf8.ParamStrUTF8">ParamStrUTF8</link>
<link id="#fcl.custapp.TCustomApplication.Params">TCustomApplication.Params</link>
<link id="#fcl.custapp.TCustomApplication.ParamCount">TCustomApplication.ParamCount</link>
<link id="#rtl.system.ParamStr">ParamStr</link>
</seealso>
</element>
<element name="TApplication.GetParams.Result">
<short>
String with the requested parameter value, or an empty string when not found.
</short>
</element>
<element name="TApplication.GetParams.Index">
<short>
Ordinal position for the requested parameter value.
</short>
</element>

<element name="TApplication.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance.
</p>
<p>
It ensures that the LCL is configured to use the private <var>WndProc</var> 
method to handle messages dispatched for the application instance.
</p>
<p>
Create allocates resources needed in the class instance, and sets the default 
values for properties. Event handler routines implemented in 
<var>TApplication</var> are assigned as needed.
</p>
<p>
Create calls the inherited constructor prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.Create">TComponent.Create</link>
</seealso>
</element>
<element name="TApplication.Create.AOwner">
<short>The Owner object that invoked this instance of TApplication.</short>
</element>

<element name="TApplication.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
Destroy is the overridden destructor for the class instance.
</p>
<p>
<var>Destroy</var> ensures that the value <var>AppDestroying</var> is 
included in the <var>Flags</var> for the application, and signals the 
<var>OnDestroy</var> event handler (when assigned). Destroy calls the 
<var>ProcessAsyncCallQueue</var> method to process / handle queued 
asynchronous method calls pending for the application instance.
</p>
<p>
Hint display is cancelled and suppressed while the application is shutting 
down. The action component for the application is set to <b>Nil</b> to 
prevent execution of associated actions during shutdown.
</p>
<p>
Destroy frees resources allocated in the application instance, including the 
Icon and any Icon handles currently in use. Handlers added to application 
instance are also freed.
</p>
<p>
Destroy calls the inherited destructor, and discards any pending asynchronous 
calls not previously handled for the application instance. Exception handling 
is restored to the state on entry to the Create constructor. Finally, the 
Application class instance is set to <b>Nil</b>.
</p>
</descr>
<errors>
<p>
Destroy calls <var>RaiseGDBException</var> to raise an exception if the 
current class instance is unassigned (contains <b>Nil</b>). Uses the 
exception message 'TApplication.Destroy Self=nil'.
</p>
<p>
Raises an <var>EAssertFalied</var> exception if the CustomApplication and 
Application variables do not contain the same TCustomApplication instance.
</p>
</errors>
<seealso/>
</element>

<element name="TApplication.ActivateHint">
<short>
Configures a hint window for the specified mouse position.
</short>
<descr>
<p>
<var>ActivateHint</var> is a procedure used to configure and control a hint 
window displayed at the coordinates specified in <var>CursorPos</var>. 
ActivateHint retrieves the control with hint information at the specified mouse 
position.
</p>
<p>
<var>CheckHintControlChange</var> indicates whether the active Hint control is 
compared to the control under the mouse position to determine if the active 
hint control has changed. When set to <b>False</b>, only the mouse leaving the 
hint rectangle causes the window to be updated. When set to <var>True</var>, a 
change of control at the mouse position also causes the hint window to be 
updated.
</p>
<p>
If the hint control at the specified coordinates differs from the one in the 
active hint, an existing hint is deactivated. The new hint window sets its hint 
timer and calculates the rectangle for the hint window.
</p>
<p>
If hint text is not available for the specified control and mouse position, the 
<var>CancelHint</var> method is called instead.
</p>
<p>
Use the following properties to control the interval for the timer which  
displays or hides a hint window in the application:
</p>
<ul>
<li>HintPause</li>
<li>HintHidePause</li>
<li>HintHidePausePerChar</li>
<li>HintShortPause</li>
</ul>
<p>
ActivateHint is used in the implementation of the <var>DoOnMouseMove</var> 
and <var>ShowHintWindow</var> methods.
</p>
</descr>
<seealso>
<link id="TApplication.ShowHintWindow"/>
<link id="TApplication.DoOnMouseMove"/>
<link id="TApplication.CancelHint"/>
<link id="TApplication.HideHint"/>
<link id="TApplication.Hint"/>
<link id="TApplication.HintPause"/>
<link id="TApplication.HintHidePause"/>
<link id="TApplication.HintHidePausePerChar"/>
<link id="TApplication.HintShortPause"/>
<link id="TApplication.OnHint"/>
<link id="THintWindow.ActivateHint"/>
<link id="THintWindow.HintRect"/>
<link id="THintWindow.HintControl"/>
</seealso>
</element>
<element name="TApplication.ActivateHint.CursorPos">
<short>
Mouse cursor position used to retrieve the hint control information.
</short>
</element>
<element name="TApplication.ActivateHint.CheckHintControlChange">
<short>
Indicates if hint controls are used to compared existing and new hint windows.
</short>
</element>

<element name="TApplication.GetControlAtMouse">
<short>Gets the control under the mouse pointer.</short>
<descr>
<p>
<var>GetControlAtMouse</var> is a <var>TControl</var> function used to get 
the control under the mouse pointer. The return value contains the form or 
control at the position where the mouse pointer is located. The return value 
is <b>Nil</b> at design-time.
</p>
<p>
GetControlAtMouse updates internal members used to track the control and its 
position.
</p>
</descr>
<seealso/>
</element>
<element name="TApplication.GetControlAtMouse.Result">
<short>The control under the mouse pointer, or Nil at design-time.</short>
</element>

<element name="TApplication.GetControlAtPos">
<short>
Gets the control which contains the specified position, and optionally updates 
the internal tracking members for mouse capture when needed.
</short>
<descr>
<p>
<var>GetControlAtPos</var> is a <var>TControl</var> function used to get the 
control which contains the point specified in <var>P</var>. The X and Y 
members in P are screen coordinates.
</p>
<p>
GetControlAtPos compares the coordinates in P to existing tracking members 
used for the last active mouse control in the application. If the control is 
valid and uses the coordinates in P, it is used as the return value for the 
method. Otherwise, FindControlAtPos is called to locate the control at the 
position in P.
</p>
<p>
The return value is <b>Nil</b> if a control is not found for the specified 
position, or when called at design-time. When the return value is assigned, the 
internal tracking members are updated with the last active control and its 
position.
</p>
<p>
GetControlAtPos is used in the implementation of the GetControlAtMouse method, 
and in private TControl methods.
</p>
</descr>
<version>
Added in LCL version 4.0.
</version>
<seealso>
<link id="TApplication.GetControlAtMouse"/>
</seealso>
</element>
<element name="TApplication.GetControlAtPos.Result">
<short>
Control with bounds which include the specified position.
</short>
</element>
<element name="TApplication.GetControlAtPos.P">
<short>
TPoint instance with the horizontal and vertical screen coordinates for a 
control to locate in the method.
</short>
</element>

<element name="TApplication.ControlDestroyed">
<short>Clears all references to the destroyed control.</short>
<descr>
<p>
<var>ControlDestroyed</var> is a method used to update the application when 
the control in <var>AControl</var> is freed. ControlDestroyed ensures that 
any property in the application that contains a reference to AControl is set 
to <b>Nil</b>, including:
</p>
<ul>
<li>MainForm</li>
<li>MouseControl</li>
<li>HintControl</li>
<li>CreatingForm (internal)</li>
</ul>
<p>
Properties in the <var>Screen</var> singleton are also updated to remove any 
references to AControl, including:
</p>
<ul>
<li>ActiveControl</li>
<li>ActiveCustomForm</li>
<li>ActiveForm</li>
<li>FocusedForm</li>
</ul>
<p>
The <var>UpdateLastActive</var> method in Screen is called to perform change 
notification for the forms and / or controls.
</p>
<p>
ControlDestroyed is called from the <var>Destroy</var> method in 
<var>TControl</var>.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Destroy">TControl.Destroy</link>
</seealso>
</element>
<element name="TApplication.ControlDestroyed.AControl">
<short>Control instance which is being freed.</short>
</element>

<element name="TApplication.BigIconHandle">
<short>Returns the Handle for the large application Icon.</short>
<seealso>
<link id="TApplication.Icon"/>
<link id="TApplication.SmallIconHandle"/>
</seealso>
</element>
<element name="TApplication.BigIconHandle.Result">
<short>
HIcon instance with the handle for the large icon, or 0 (zero) when not 
available.
</short>
</element>

<element name="TApplication.SmallIconHandle">
<short>Returns the Handle for the small application Icon.</short>
<seealso>
<link id="TApplication.Icon"/>
<link id="TApplication.BigIconHandle"/>
</seealso>
</element>
<element name="TApplication.SmallIconHandle.Result">
<short>
HIcon instance with the handle for the small icon, or 0 (zero) when not 
available.
</short>
</element>

<element name="TApplication.BringToFront">
<short>
Asks the widgetset to bring the last form for the application in front of all 
other programs.
</short>
<descr>
<p>
Calls the AppBringToFront method in the widgetset class.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.CreateForm">
<short>
Creates a Form or component owned by the Application instance.
</short>
<descr>
<remark>
The method name is slightly misleading, and kept only for Delphi 
compatibility. The method can actually create any kind of component.
</remark>
<p>
<var>CreateForm</var> creates a new Component instance of the given class, and 
sets the pointer to the component variable in <var>Reference</var>. If 
InstanceClass is a TForm descendant, it will be added to the list of forms in 
the application. It is assigned as the MainForm in Application if a form has 
not already been assigned to the property. A form with its FormStyle property 
set to fsMDIChild or fsSplash is not used as the MainForm for the Application.
</p>
<p>
If the new form instance is a splash form (FormStyle=fsSplash), it is displayed 
immediately and a message processing loop is started for the form instance.
</p>
<p>
<b>Use in a .lpr Project File</b>
</p>
<p>
The most common use of CreateForm is in the project (.lpr) program file. It is 
used to initialize the auto-created form instances for the project. For example:
</p>
<code>
program PoFileMaintenance;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  {$IFDEF HASAMIGA}
  athreads,
  {$ENDIF}
  Interfaces, Forms, PotFile, Unit1, 
  { you can add units after this };

{$R *.res}

begin
  RequireDerivedFormResource := True;
  Application.Scaled := True;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
</code>
<p>
<b>Use in Program Code</b>
</p>
<p>
Another common use of CreateForm is to allocate a dynamic, temporary form 
instance as needed in program code. For example:
</p>
<code>
function ShowDialog(FormClass: TFormClass): Boolean;
var
  Dlg: TForm;
begin
  Application.CreateForm(FormClass, Dlg);
  try
    Result := Dlg.ShowModal in [mrOk, mrYes];
  finally
    Dlg.Free;
  end;
end;
</code>
</descr>
<seealso>
<link id="TApplication.MainForm"/>
<link id="TApplication.UpdateMainForm"/>
<link id="TApplication.ProcessMessages"/>
<link id="TCustomForm.FormStyle"/>
<link id="TCustomForm.Show"/>
</seealso>
</element>
<element name="TApplication.CreateForm.InstanceClass">
<short>
The class type used to create the new class instance.
</short>
</element>
<element name="TApplication.CreateForm.Reference">
<short>
The output parameter used to return the new component reference.
</short>
</element>

<element name="TApplication.UpdateMainForm">
<short>
Makes the specified form the MainForm in the Application.
</short>
<descr>
<p>
UpdateMainForm is a method used to make the form instance in AForm the main 
form for the application. It stores the value in AForm to the MainForm 
property. No actions are performed in the method for the following conditions:
</p>
<ul>
<li>MainForm is already assigned.</li>
<li>AForm is marked for release.</li>
<li>The Handle for AForm has not yet been allocated.</li>
<li>
AForm is a MDI Child form (FormStyle contains fsMDIChild) or a splash screen 
form (FormStyle contains fsSplash).
</li>
</ul>
<p>
UpdateMainForm is called from the CreateForm method, and occurs before the 
form calls its HandleNeeded method. It is also called when the Handle for a 
form is created (or re-created) in the CreateWnd method in TForm.
</p>
</descr>
<seealso/>
</element>
<element name="TApplication.UpdateMainForm.AForm">
<short>The form to use as the MainForm in the Application.</short>
</element>

<element name="TApplication.QueueAsyncCall">
<short>Inserts an asynchronous call into the queue.</short>
<descr>
<p>
This is thread safe.
</p>
</descr>
<errors>
Exceptions on various inconsistencies of the queue.
</errors>
<seealso/>
<example file="forms/tapplication_queueasynccall.pas"/>
</element>
<element name="TApplication.QueueAsyncCall.AMethod">
<short>The method to call asynchronously.</short>
</element>
<element name="TApplication.QueueAsyncCall.Data">
<short>The argument passed to the method.</short>
</element>

<element name="TApplication.RemoveAsyncCalls">
<short>Removes all calls added via QueueAsyncCall.</short>
<descr>
<p>
This is thread safe.
</p>
</descr>
<errors>
Exceptions are raised for various inconsistencies in the queue.
</errors>
<seealso>
<link id="TApplication.QueueAsyncCall"/>
<link id="TApplication.Flags"/>
<link id="TApplicationFlags"/>
<link id="TApplicationFlag"/>
<link id="TAsyncCallQueues"/>
<link id="TAsyncCallQueue"/>
<link id="#rtl.system.TMethod">TMethod</link>
</seealso>
</element>
<element name="TApplication.RemoveAsyncCalls.AnObject">
<short>
Object instance with the queued TMethod request removed in the method.
</short>
</element>

<element name="TApplication.ReleaseComponent">
<short>
Safely destroys a component used in the application.
</short>
<descr>
<p>
<var>ReleaseComponent</var> is a method used to ensure that the component in 
AComponent is freed in the application. 
</p>
<p>
No actions are performed in the method if <var>Destroy</var> has already been 
called for AComponent (<var>ComponentState</var> contains 
<var>csDestroying</var>).
</p>
<p>
If the Application <var>Flags</var> contains <var>AppDestroying</var>, the 
<var>Free</var> method for AComponent is called immediately.
</p>
<p>
During normal processing, ReleaseComponent adds the component instance to a 
list of components pending release when it is not already present. Its 
FreeNotification method is called to perform notifications for owners. If it 
is the first item in the pending release list, the OnDecLCLRefcountToZero 
handler in <file>lclclasses.pp</file> is set to the DoDecLCLRefcountToZero 
method for the application. This ensures that an asynchronously call to 
<var>FreeComponent</var> is performed when the reference count reaches 0 and 
the application enters an idle state.
</p>
<p>
ReleaseComponent is called from the <var>ReleaseComponents</var> method in 
<var>TApplication</var>, and from the <var>Release</var> method in 
<var>TCustomForm</var>. It may also be used in the implementation of controls 
to ensure that its resources are freed as needed.
</p>
</descr>
<seealso/>
</element>
<element name="TApplication.ReleaseComponent.AComponent">
<short>The component to destroy.</short>
</element>

<element name="TApplication.ExecuteAction">
<short>Signals an OnActionExecute handler (when assigned).</short>
<descr>
<p>
<var>ExecuteAction</var> is an overridden <var>Boolean</var> function used to 
signal an <var>OnActionExecute</var> event handler assigned to the control. 
ExecuteAction reimplements the method defined in the ancestor (TComponent) 
and does <b>not</b> call the inherited method.
</p>
<p>
ExecuteAction signals a TActionEvent event handler using the action instance 
in <var>ExeAction</var> as an argument. The Handled argument in the event is 
used as the return value for the method, and is set to <b>True</b> if the 
action was successfully executed in an event handler.
</p>
<p>
In LCL version 3.0 or higher, multiple handler routines can be assigned which 
use the ahtActionExecute event type. This situation can occur when 
TApplicationProperties tries to assign an OnActionExecute handler to the 
TApplication instance and it already has a user-specified handler. It can also 
happen when the AddOnActionExecuteHandler method is called directly to add a 
handler routine for the application event type.
</p>
<p>
If OnActionExecute handler is not assigned, or returns <b>False</b>, the other 
handlers in the internal list are signalled to determine whether they can 
execute the action. Each handler routine is signalled until one of them 
changes the Handled argument in the event type to <b>True</b>. If none of the 
routines can execute the action, the return value is <b>False</b>.
</p>
</descr>
<version>
Modified in in LCL version 3.0 to provide support for multiple OnActionExecute 
event handlers in the application.
</version>
<seealso>
<link id="TApplication.AddOnActionExecuteHandler"/>
<link id="TApplication.RemoveOnActionExecuteHandler"/>
<link id="TApplicationHandlerType"/>
<link id="#lcl.actnlist.TActionEvent">TActionEvent</link>
<link id="#rtl.classes.TComponent.ExecuteAction">TComponent.ExecuteAction</link>
</seealso>
</element>
<element name="TApplication.ExecuteAction.Result">
<short>
<b>True</b> when the Action was handled in one of the event handlers for the 
type.
</short>
</element>
<element name="TApplication.ExecuteAction.ExeAction">
<short>
The Action to execute in the event handler.
</short>
</element>

<element name="TApplication.UpdateAction">
<short>
Signals an OnActionUpdate handler (when assigned).
</short>
<descr>
<p>
<var>UpdateAction</var> is an overridden <var>Boolean</var> function used to 
signal an <var>OnActionUpdate</var> event handler (when assigned) to update 
the settings in the action instance in <var>TheAction</var>. UpdateAction 
reimplements the method defined in the ancestor (TComponent), and does 
<b>not</b> call the inherited method.
</p>
<p>
UpdateAction signals a TActionEvent event handler using the action instance 
in <var>TheAction</var> as an argument. The Handled argument in the event is 
used as the return value for the method, and is set to <b>True</b> if the 
action was successfully updated in an event handler.
</p>
<p>
In LCL version 3.0 or higher, multiple handler routines can be assigned which 
use the ahtActionUpdate event type. This situation can occur when 
TApplicationProperties tries to assign an OnActionUpdate handler to the 
TApplication instance and it already has a user-specified handler. It can also 
happen when the AddOnActionUpdateHandler method is called directly to add a 
handler routine for the application event type.
</p>
<p>
If OnActionUpdate handler is not assigned, or returns <b>False</b>, the other 
handlers in the internal list are signalled to determine whether they can 
update the action. Each handler routine is signalled until one of them 
changes the Handled argument in the event type to <b>True</b>. If none of the 
routines can update the action, the return value is <b>False</b>.
</p>
</descr>
<version>
Modified in in LCL version 3.0 to provide support for multiple OnActionUpdate 
event handlers in the application.
</version>
<seealso>
<link id="TApplication.AddOnActionUpdateHandler"/>
<link id="TApplication.RemoveOnActionUpdateHandler"/>
<link id="TApplicationHandlerType"/>
<link id="#lcl.actnlist.TActionEvent">TActionEvent</link>
<link id="#rtl.classes.TComponent.UpdateAction">TComponent.UpdateAction</link>
</seealso>
</element>
<element name="TApplication.UpdateAction.Result">
<short><b>True</b> if the action was updated in the event handler.</short>
</element>
<element name="TApplication.UpdateAction.TheAction">
<short>The action updated in an event handler.</short>
</element>

<element name="TApplication.HandleException">
<short>
<var>HandleException</var> method for handling an exception;
attempts to maintain program execution if possible, otherwise exits 
gracefully.
</short>
<descr>
<p>
Individual exception handler methods should be supplied by the application 
programmer to override place-holder entries declared in ancestor classes. 
This method checks whether the application is halted when an exception 
occurs, or invokes the appropriate handler. It also writes details about the 
exception to the appropriate place for debugging.
</p>
<p>
HandleException may signal the OnCircularException event handler (when 
assigned) if an exception is raised while the method is already active.
</p>
<p>
HandleException ensures that existing capture(s) are released, and that all 
forms with the stay on top attribute are removed so that the exception message 
can be shown.
</p>
<p>
The OnException event handler (and other handlers for the ahtException handler 
type) are signalled (when assigned). If OnException handlers are not used, 
the ShowException method is called.
</p>
<p>
Any forms with the stay on top attribute are restored prior to exiting the 
method.
</p>
</descr>
<seealso>
<link id="#fcl.custapp.TCustomApplication.HandleException">TCustomApplication.HandleException</link>
</seealso>
</element>
<element name="TApplication.HandleException.Sender">
<short>
Object instance (TApplication) for the exception.
</short>
</element>

<element name="TApplication.HandleMessage">
<short>Handles pending messages, and enters the Idle state.</short>
<descr>
<p>
<var>HandleMessage</var> is a method used to process pending window or 
control messages in the application. It calls the 
<var>AppProcessMessages</var> method in the widgetset class to handle pending 
messages. It calls the <var>Idle</var> method to enter the idle state where 
queued asynchronous callbacks can be handled and idle handlers can be 
signalled.
</p>
<p>
It is very similar to the <var>ProcessMessages</var> method, which does not 
signal idle handlers for the application or wait for a new message before 
exit.
</p>
<p>
HandleMessage is called from the private RunLoop method in 
<var>TApplication</var>.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.HelpCommand">
<short>Show help.</short>
<descr>
<p>
Currently relies on OnHelp handlers. CallHelp is not implemented at the 
application level.
</p>
</descr>
<seealso>
<link id="TApplication.OnHelp"/>
<link id="TApplication.AddOnHelpHandler"/>
<link id="TApplication.RemoveOnHelpHandler"/>
</seealso>
</element>
<element name="TApplication.HelpCommand.Result">
<short>
<b>True</b> if the help command was handled when the OnHelp event handler was 
executed.
</short>
</element>
<element name="TApplication.HelpCommand.Command">
<short>
Numeric help command type requested in the method.
</short>
</element>
<element name="TApplication.HelpCommand.Data">
<short>
Pointer to the data for the help request.
</short>
</element>

<element name="TApplication.HelpContext">
<short>Shows context-sensitive help for the application.</short>
<descr>
<p>
<var>HelpContext</var> is a <var>Boolean</var> function used to display 
context-sensitive help for the specified help context. It calls the DoOnHelp 
method to select and execute a help handler routine for the specified help 
context. The routine may be one of the OnHelp event handlers found in the 
active form or in TApplication. If neither are assigned, the application 
handlers are checked for a routine using the ahtHelp handler type.
</p>
<p>
If the help context was handled in DoOnHelp, not additional actions are 
performed in the method. Otherwise, the ShowHelpOrErrorForContext is called 
to handle the help request.
</p>
<p>
The return value is <b>False</b> if the help context could not be handled 
using any of these options.
</p>
</descr>
<seealso>
<link id="TApplication.OnHelp"/>
<link id="TApplication.AddOnHelpHandler"/>
<link id="TApplication.RemoveOnHelpHandler"/>
</seealso>
</element>
<element name="TApplication.HelpContext.Result">
<short><b>True</b> if the help request was handled in the method.</short>
</element>
<element name="TApplication.HelpContext.Context">
<short>Help context displayed in the method.</short>
</element>

<element name="TApplication.HelpKeyword">
<short>Shows help for the specified keyword.</short>
<descr/>
<seealso>
<link id="TApplication.OnHelp"/>
<link id="TApplication.AddOnHelpHandler"/>
<link id="TApplication.RemoveOnHelpHandler"/>
</seealso>
</element>
<element name="TApplication.HelpKeyword.Result">
<short>
Returns <b>True</b> if the keyword help request was handled in the OnHelp 
event handler.
</short>
</element>
<element name="TApplication.HelpKeyword.Keyword">
<short>
String with the keyword for the help request.
</short>
</element>

<element name="TApplication.HelpShowTableOfContents">
<short>
Displays the Help Table of Contents using the Help Manager for the 
application.
</short>
<descr>
<p>
<var>HelpShowTableOfContents</var> is a method used to display the Help Table 
of Contents for the application. It uses the global <var>HelpManager</var> 
variable (when assigned) to call its <var>ShowTableOfContents</var> method. 
This method must be re-implemented in a descendent class; the default 
implementation simply returns the <var>shrHelpNotFound</var> result.
</p>
<p>
The return value is <b>True</b> when the HelpManager successfully displays 
the Table of Contents, and returns the <var>shrSuccess</var> result code. If 
HelpManager has not been assigned, the return value is always <b>False</b>.
</p>
</descr>
<seealso>
<link id="#lcl.helpintfs.HelpManager">HelpManager</link>
<link id="#lcl.helpintfs.THelpManager.ShowTableOfContents">THelpManager.ShowTableOfContents</link>
<link id="#lcl.helpintfs.TShowHelpResult">TShowHelpResult</link>
</seealso>
<version>
Added in LCL version 2.2.0. This method is Delphi compatible.
</version>
</element>
<element name="TApplication.HelpShowTableOfContents.Result">
<short>
<b>True</b> if the Help Table of Contents was successfully displayed by the 
application.
</short>
</element>

<element name="TApplication.ShowHelpForObject">
<short>When Sender is a TControl, invoke its ShowHelp method.</short>
<descr/>
<seealso/>
</element>
<element name="TApplication.ShowHelpForObject.Sender">
<short>Should be a TControl, otherwise no help is displayed.</short>
</element>

<element name="TApplication.RemoveStayOnTop">
<short>
Removes the StayOnTop attribute from all visible forms in the application.
</short>
<descr>
<p>
<var>RemoveStayOnTop</var> is a method used to remove the stay on top 
attribute from visible forms in the application.
</p>
<p>
RemoveStayOnTop calls the AppRemoveStayOnTopFlags method in the widgetset 
class instance. <var>ASystemTopAlso</var> indicates whether system 
dialogs/forms with the stay on top attribute are included in the list of forms 
affected in the method. The default value for ASystemTopAlso is <b>False</b>, 
and omits these forms from the list.
</p>
<p>
RemoveStayOnTop builds the internal list of forms used in the RestoreStayOnTop 
method. It adds each visible form instance in Screen.CustomForms to the 
internal list, and sets its FormStyle property to fsNormal. Any form without a 
Parent, not Visible, or without FormStyle set to fsStayOnTop is not 
added to the list or affected in the method.
</p>
<p>
RemoveStayOnTop is called from methods like ModalStarted and HandleException.
</p>
<p>
See <var>RestoreStayOnTop</var> for the actions performed to restore the stay 
on top attribute to the list of forms.
</p>
</descr>
<seealso>
<link id="TApplication.RestoreStayOnTop"/>
<link id="TApplication.ModalStarted"/>
<link id="TApplication.HandleException"/>
<link id="TCustomForm.FormStyle"/>
<link id="TCustomForm.Visible"/>
<link id="Screen"/>
<link id="TScreen.CustomForms"/>
<link id="TScreen.CustomFormCount"/>
<link id="#lcl.controls.TControl.Parent">TControl.Parent</link>
<link id="#lcl.controls.TFormStyle">TFormStyle</link>
<link id="#lcl.controls.fsAllNonSystemStayOnTop">fsAllNonSystemStayOnTop</link>
</seealso>
</element>
<element name="TApplication.RemoveStayOnTop.ASystemTopAlso">
<short>
Indicates whether system dialogs/forms with stay on top set are also updated. 
Default value is <b>False</b>.
</short>
</element>

<element name="TApplication.RestoreStayOnTop">
<short>
Restores StayOnTop for all forms changed by RemoveStayOnTop.
</short>
<descr>
</descr>
<seealso>
<link id="TApplication.RemoveStayOnTop"/>
</seealso>
</element>
<element name="TApplication.RestoreStayOnTop.ASystemTopAlso">
<short>
Indicates whether system dialogs/forms with stay on top set are also updated. 
Default value is <b>False</b>.
</short>
</element>

<element name="TApplication.IsWaiting">
<short><b>True</b> if the application is waiting for a message event.</short>
<descr>
<p>
The return value is <b>True</b> when <var>AppWaiting</var> has been included 
in the <var>Flags</var> for the application.
</p>
</descr>
<seealso/>
</element>
<element name="TApplication.IsWaiting.Result">
<short><b>True</b> if the application is in AppWaiting state.</short>
</element>

<element name="TApplication.CancelHint">
<short>
Called when the Hint timer has expired to stop showing the Hint.
</short>
<descr/>
<seealso/>
</element>

<element name="TApplication.HideHint">
<short>Hides the Hint window.</short>
<descr/>
<seealso/>
</element>

<element name="TApplication.HintMouseMessage">
<short>Called when the mouse is over a control with a Hint.</short>
<descr>
<p>
Does nothing in the current LCL version.
</p>
</descr>
<seealso/>
</element>
<element name="TApplication.HintMouseMessage.Control"/>
<element name="TApplication.HintMouseMessage.AMessage"/>

<element name="TApplication.Initialize">
<short>Initializes the widgetset (and more).</short>
<descr>
<p>
<var>Initialize</var> is an overridden procedure in TApplication used to 
perform initialization tasks for the application. Initialize calls the 
inherited method to provide support for instance counting in the custom 
application. Initialize ensures that the <var>WidgetSet</var> class type is 
assigned for the application, and that the Screen singleton is initialized 
and updated.
</p>
<p>
Initialize raises an <var>Exception</var> if WidgetSet has not been assigned, 
or contains a class type other than <var>TWidgetSet</var>, for the 
application.
</p>
<p>
Initialize updates the <var>Flags</var> property to include the value 
<b>AppInitialized</b> when both the LCL interface (Widgetset) and the Screen 
singleton have been configured.
</p>
<p>
Initialize loads the graphic image used in the <var>Icon</var> property. If a 
resource with the name <b>MAINICON</b> is included in the Lazarus Resource, 
it is loaded and used as the application icon. Otherwise, 
<var>FindResource</var> is called to locate and load the named icon from the 
resource handle.
</p>
</descr>
<errors>
Raises an Exception if the WidgetSet class is invalid or not assigned.
</errors>
<seealso>
<link id="Screen"/>
<link id="TApplication.Icon"/>
<link id="TApplication.Flags"/>
<link id="#lcl.interfacebase.WidgetSet">WidgetSet</link>
<link id="#fcl.custapp.TCustomApplication.Initialize">TCustomApplication.Initialize</link>
</seealso>
</element>

<element name="TApplication.MessageBox">
<short>Display an message dialog with response buttons.</short>
<descr>
<p>
The function is used internally to display messages during the handling of 
<var>Exceptions</var>, but is also available to application programmers as an 
alternative to some of the message dialogs found in the <file>Dialogs</file> 
unit.
</p>
<p>
The function returns an integer value corresponding to the button that was 
pressed; its value can be determined by reference to the constants 
[IDOK..IDHELP].
</p>
</descr>
<seealso>
<link id="#lcl.Dialogs.MessageDlg">MessageDlg</link>
</seealso>
<example file="dialogs/displaymessagebox.pas"/>
</element>
<element name="TApplication.MessageBox.Result">
<short>Indicates the pressed button.</short>
<descr>
<p>Can be one of the following values:</p>
<ul>
<li>IDOK</li>
<li>IDCANCEL</li>
<li>IDABORT</li>
<li>IDRETRY</li>
<li>IDIGNORE</li>
<li>IDYES</li>
<li>IDNO</li>
<li>IDCLOSE</li>
<li>IDHELP</li>
</ul>
</descr>
</element>
<element name="TApplication.MessageBox.Text">
<short>The text in the MessageBox.</short>
<descr/>
</element>
<element name="TApplication.MessageBox.Caption">
<short>The Caption of the MessageBox.</short>
<descr/>
</element>
<element name="TApplication.MessageBox.Flags">
<short>
The icon and buttons appearing in the message box.
</short>
<descr>
<p>
Several constants are declared in the LCLType unit.
</p>
<p>
Add (better: OR) an icon constant and a buttons constant. For example:
</p>
<code>MB_ABORTRETRYIGNORE + MB_ICONQUESTION</code>
<p>
Causes the application to display a query (?) icon in a box with three 
buttons: ABORT RETRY IGNORE.
</p>
<p>
Buttons can be one of:
</p>
<ul>
<li>MB_OK</li>
<li>MB_OKCANCEL</li>
<li>MB_ABORTRETRYIGNORE</li>
<li>MB_YESNOCANCEL</li>
<li>MB_YESNO</li>
<li>MB_RETRYCANCEL</li>
</ul>
<p>
The icon can be one of:
</p>
<ul>
<li>MB_ICONHAND</li>
<li>MB_ICONQUESTION</li>
<li>MB_ICONEXCLAMATION</li>
<li>MB_ICONASTERISK</li>
<li>MB_ICONWARNING (same as MB_ICONEXCLAMATION)</li>
<li>MB_ICONERROR (same as MB_ICONHAND)</li>
<li>MB_ICONSTOP (same as MB_ICONHAND)</li>
<li>MB_ICONINFORMATION (same as MB_ICONASTERISK)</li>
</ul>
</descr>
</element>

<element name="TApplication.Minimize">
<short>
Asks the widgetset to minimize the application.
</short>
<descr>
<p>
Calls the <var>AppMinimize</var> method in the widgetset class to hide the 
MainForm and update its WindowState property. Other forms and modal pop-up 
windows for the application are also minimized.
</p>
<p>
Use MainFormOnTaskbar to control whether the form is displayed on the Task bar 
when the application has been minimized.
</p>
<p>
Use Restore to display the application and its forms and dialogs using their 
states before they were minimized.
</p>
</descr>
<seealso>
<link id="TApplication.MainForm"/>
<link id="TApplication.MainFormOnTaskBar"/>
<link id="TApplication.ModalLevel"/>
<link id="TApplication.Restore"/>
<link id="TCustomForm.FormState"/>
<link id="TCustomForm.ShowInTaskBar"/>
<link id="TCustomForm.WindowState"/>
<link id="TCustomForm.Visible"/>
<link id="TScreen.CustomFormsZOrdered"/>
</seealso>
</element>

<element name="TApplication.ModalStarted">
<short>Called when a modal form display is started.</short>
<descr>
<p>
Invokes all OnModalBegin handlers when entering Modal state.
</p>
</descr>
<seealso>
<link id="TApplication.ModalFinished"/>
</seealso>
</element>

<element name="TApplication.ModalFinished">
<short>Called when a modal form is closed.</short>
<descr>
<p>
Invokes all OnModalEnd handlers when exiting Modal state.
</p>
</descr>
<seealso>
<link id="TApplication.ModalStarted"/>
</seealso>
</element>

<element name="TApplication.Restore">
<short>Restores a previously minimized application.</short>
<descr>
<p>
Calls the <var>AppRestore</var> method in the widgetset class, which 
generally restores the main form for the application and re-focuses its 
active control. It will also restore an active modal dialog.
</p>
<p>
Use Minimize to hide the forms and dialogs for the application, and to 
optionally display the minimized form(s) on the Task bar.
</p>
</descr>
<seealso>
<link id="TApplication.Minimize"/>
<link id="TApplication.MainForm"/>
<link id="TCustomForm.FormState"/>
<link id="TCustomForm.WindowState"/>
<link id="TCustomForm.Visible"/>
</seealso>
</element>

<element name="TApplication.Notification">
<short>
Performs actions when a component is added to or removed from the application.
</short>
<descr>
<p>
<var>Notification</var> is an overridden method in <var>TApplication</var> 
used to perform actions needed when a component is added to or removed from 
the application. Notification provides special handling when component 
references are removed. It ensures that the internal member for a given 
component is set to <var>Nil</var> when the reference is freed. If the freed 
component is the MainForm for the application, the Terminate method is called 
to shut down the application and update the OS-level ExitCode.
</p>
</descr>
<seealso>
<link id="#rtl.Classes.TComponent.Notification">TComponent.Notification</link>
</seealso>
</element>
<element name="TApplication.Notification.AComponent">
<short>Component for the notification.</short>
</element>
<element name="TApplication.Notification.Operation">
<short>Operation performed for the component reference.</short>
</element>

<element name="TApplication.ProcessMessages">
<short>
Call this method during lengthy operations to ensure the GUI remains 
responsive.
</short>
<descr>
<p>
Calls <var>AppProcessMessages</var> in the widgetset class to processes 
pending messages, and calls <var>ProcessAsyncCallQueue</var> to handle any 
queued asynchronous callbacks.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.Idle">
<short>Called when the application enters the idle state.</short>
<descr>
<p>
Idle is a method used to perform actions when the application enters an idle 
state. It allows the application to free components pending release, and 
handle any queued asynchronous requests.
</p>
<p>
In addition, Idle calls event and application handlers assigned in the class 
instance. OnIdle is signalled (when assigned). NotifyIdleHandler is called to 
signal any application handler(s) using the ahtIdle handler type.
</p>
<p>
The DoIdleActions method is called to update the actions for Visible and 
Enabled forms, and to hide visible splash screen forms (FormStyle is 
fsSplash).
</p>
<p>
When the Wait argument is set to <b>True</b>, the AppWaitMessage method in 
the widgetset class is called to capture an message on the handles for the 
application. This action is not performed when Wait is <b>False</b>.
</p>
<p>
Idle calls the DoOnIdleEnd method to signal the OnIdleEnd event handler and 
any application handlers using the ahtIdleEnd handler type.
</p>
</descr>
<seealso/>
</element>
<element name="TApplication.Idle.Wait">
<short>Indicates if the method waits for the next message.</short>
</element>

<element name="TApplication.Run">
<short>
Loads the form and passes control to the event loop for the application.
</short>
<descr>
<p>
<var>Run</var> is the method called to start execution of the application. It 
reimplements the method introduced in TCustomApplication to provide support 
for the MainForm and processing loop used in a GUI application. The Run 
method is generally called, via the Application singleton, from the .lpr 
project file.
</p>
<p>
If the MainForm property has been assigned, and should be displayed, the 
AppSetupMainForm method in the widgetset class is called to set the window 
state for the main form. The Show method in MainForm is also called to scale 
the form (when needed) to the PixelsPerInch for the monitor. The form is made 
visible and brought to the top of the Z-Order in the application.
</p>
<p>
The AppRun method in the widgetset class is called to start the message loop 
using the private RunLoop method.
</p>
</descr>
<seealso>
<link id="TApplication.MainForm"/>
<link id="TApplication.ShowMainForm"/>
<link id="TApplication.Scaled"/>
<link id="Application"/>
<link id="TCustomForm.Show"/>
<link id="TCustomForm.Visible"/>
<link id="TCustomForm.Monitor"/>
<link id="TMonitor.PixelsPerInch"/>
<link id="#lcl.controls.TControl.BringToFront">TControl.BringToFront</link>
<link id="#fcl.CustApp.TCustomApplication.Run">TCustomApplication.Run</link>
</seealso>
</element>

<element name="TApplication.ShowException">
<short>
Shows the message for the specified exception and asks the user to abort or 
continue.
</short>
<descr>
<p>
<var>E</var> is the Exception instance with the message displayed in the 
method. If the message contains an invalid UTF-8 codepoint, AnsiToUtf8 is 
called to get a valid UTF-8 value for the exception message.
</p>
<p>
ShowException creates a dialog to display the exception message. If the 
exception occurred before the application was fully initialized, the 
inherited ShowException method is called.
</p>
<p>
The value in the ExceptionDialog property determines the type of dialog 
displayed for the message, and the buttons available on the dialog. While the 
dialog is active, the OnIdle event handlers in the application are disabled. 
They are re-enabled when the dialog is closed. The modal result from the 
dialog determines whether the application is terminated by calling Halt, or 
allowed to continue.
</p>
<remark>
No actions are performed in the method when AppNoExceptionMessages has been 
included in the Flags for the application. The exception message is not 
displayed and control is returned to the calling routine.
</remark>
</descr>
<seealso>
<link id="TApplication.ExceptionDialog"/>
<link id="TApplication.Flags"/>
<link id="TApplicationFlags"/>
<link id="TApplicationFlag"/>
<link id="#fcl.CustApp.TCustomApplication.ShowException">TCustomApplication.ShowException</link>
<link id="#rtl.system.Halt">Halt</link>
<link id="#rtl.sysutils.Exception">Exception</link>
</seealso>
</element>
<element name="TApplication.ShowException.E">
<short>
The exception with the message to display in the method.
</short>
</element>

<element name="TApplication.Terminate">
<short>
The application is terminated and the component engine is shutdown.
</short>
<descr>
<p>
<var>Terminate</var> is an overridden method in <var>TApplication</var>, and 
calls the inherited method on entry to set the values in Terminated and 
ExitCode. It calls the AppTerminate method the widgetset class instance to 
perform actions needed to halt the application using the mechanism(s) for the 
operating system or platform.
</p>
<p>
Use Terminated to determine if the method has already been called and has not 
yet been completed in the widgetset class.
</p>
</descr>
<seealso>
<link id="#fcl.custapp.TCustomApplication.Terminate">TCustomApplication.Terminate</link>
<link id="#fcl.custapp.TCustomApplication.Terminated">TCustomApplication.Terminated</link>
</seealso>
</element>

<element name="TApplication.DisableIdleHandler">
<short>Disables Idle handling.</short>
<descr>
<p>
Blocks Idle handling by incrementing the internal idle lock counter. Can be 
called multiple times, but each call must be followed by EnableIdleHandler.
</p>
<p>
Used in the ShowException method while an exception dialog is active.
</p>
</descr>
<seealso>
<link id="TApplication.EnableIdleHandler"/>
<link id="TApplication.ShowException"/>
</seealso>
</element>

<element name="TApplication.EnableIdleHandler">
<short>Resumes Idle handling.</short>
<descr>
<p>
Attempts to re-enable idle handling by decrementing the internal idle lock 
counter. Idle handling is enabled when the internal idle lock counter is 0.
</p>
<p>
Called from the ShowException method when the exception dialog is exited.
</p>
</descr>
<errors>
Raises a catchable GDB Exception if the idle handler has not already been 
disabled.
</errors>
<seealso>
<link id="TApplication.DisableIdleHandler"/>
</seealso>
</element>

<element name="TApplication.NotifyUserInputHandler">
<short>Notifies all user input handlers of the specified message.</short>
<descr>
<p>
Ensures that ActivateHint or CancelHint is called for a mouse message in the 
Msg argument.
</p>
<p>
Signals the OnUserInput event handler when assigned to allow filtering 
messages at the application level. Signals each of the user input handlers 
for the application using the Sender object instance and Msg as arguments. 
Sender defaults to the application instance when unassigned.
</p>
<p>
<var>NotifyUserInputHandler</var> is used to pass mouse and character events 
between a widgetset class instance and the forms and controls in an 
application. It is called from the message processing mechanism that is part 
of the LCL interface.
</p>
</descr>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.NotifyUserInputHandler.Msg">
<short>
Message examined in the method for mouse or character events.
</short>
</element>

<element name="TApplication.NotifyKeyDownBeforeHandler">
<short>Notifies all ahtKeyDownBefore handlers.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.NotifyKeyDownBeforeHandler.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TApplication.NotifyKeyDownBeforeHandler.Key">
<short>Key code examined in the event handler.</short>
</element>
<element name="TApplication.NotifyKeyDownBeforeHandler.Shift">
<short>Ctrl, Alt, Shift modifier for the key code.</short>
</element>

<element name="TApplication.NotifyKeyDownHandler">
<short>
Notifies all ahtKeyDownAfter handlers, and eventually reacts to F1 (Help).
</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.NotifyKeyDownHandler.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TApplication.NotifyKeyDownHandler.Key">
<short>Key code examined in the event handler.</short>
</element>
<element name="TApplication.NotifyKeyDownHandler.Shift">
<short>Ctrl, Alt, Shift modifier for the key code.</short>
</element>

<element name="TApplication.ControlKeyDown">
<short>
Handles KeyDown events in a Control, e.g. handles navigation keys.
</short>
<descr/>
<seealso/>
</element>
<element name="TApplication.ControlKeyDown.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TApplication.ControlKeyDown.Key">
<short>Key code examined in the event handler.</short>
</element>
<element name="TApplication.ControlKeyDown.Shift">
<short>Ctrl, Alt, Shift modifier for the key code.</short>
</element>

<element name="TApplication.ControlKeyUp">
<short>
Handles KeyUp events in a Control, e.g. handles Enter and Esc keys.
</short>
<descr/>
<seealso/>
</element>
<element name="TApplication.ControlKeyUp.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TApplication.ControlKeyUp.Key">
<short>Key code examined in the event handler.</short>
</element>
<element name="TApplication.ControlKeyUp.Shift">
<short>Ctrl, Alt, Shift modifier for the key code.</short>
</element>

<element name="TApplication.AddOnIdleHandler">
<short>
Adds an application Idle handler to the list of handlers for the type.
</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnIdleHandler.Handler">
<short>Idle handler Routine added to the handlers for the type.</short>
</element>
<element name="TApplication.AddOnIdleHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first item in the list. 
<b>False</b> if the handler is appended to the list.
</short>
</element>

<element name="TApplication.RemoveOnIdleHandler">
<short>
Removes an application Idle handler for the list of handlers for the type.
</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnIdleHandler.Handler">
<short>
Handler routine removed from the list of idle handlers.
</short>
</element>

<element name="TApplication.AddOnIdleEndHandler">
<short>
Adds an application IdleEnd handler to the list of handlers for the type.
</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnIdleEndHandler.Handler">
<short>
Idle end handler routine added to the list of handlers.
</short>
</element>
<element name="TApplication.AddOnIdleEndHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first item in the list. 
<b>False</b> if the handler is appended to the list.
</short>
</element>

<element name="TApplication.RemoveOnIdleEndHandler">
<short>Removes an application IdleEnd handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnIdleEndHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnUserInputHandler">
<short>
Adds an application user input handler to the list of handlers for the type.
</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnUserInputHandler.Handler">
<short>
Handler routine added in the method to the list of handlers.
</short>
</element>
<element name="TApplication.AddOnUserInputHandler.AsFirst">
<short>
<b>True</b> if the handler routine is inserted as the first entry in the 
list. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnUserInputHandler">
<short>
Removes an application user input handler from the list of handlers for the 
type.
</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnUserInputHandler.Handler">
<short>Handler routine removed from the list of handlers.</short>
</element>

<element name="TApplication.AddOnKeyDownBeforeHandler">
<short>Adds an application key down before interface handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnKeyDownBeforeHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnKeyDownBeforeHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnKeyDownBeforeHandler">
<short>Removes an application key down before interface handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnKeyDownBeforeHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnKeyDownHandler">
<short>
Adds an application key down handler to the list for the type.
</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnKeyDownHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnKeyDownHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnKeyDownHandler">
<short>Removes an application key down after interface handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnKeyDownHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnActivateHandler">
<short>Adds an application activation handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnActivateHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnActivateHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnActivateHandler">
<short>Removes an application activation handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnActivateHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnDeactivateHandler">
<short>Adds an application deactivation handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnDeactivateHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnDeactivateHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnDeactivateHandler">
<short>Removes an application deactivation handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnDeactivateHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnExceptionHandler">
<short>Adds an application exception handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnExceptionHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnExceptionHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnExceptionHandler">
<short>Removes an application exception handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnExceptionHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnEndSessionHandler">
<short>Adds an application logoff handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnEndSessionHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnEndSessionHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnEndSessionHandler">
<short>Removes an application logoff handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnEndSessionHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnQueryEndSessionHandler">
<short>Adds an application logoff query handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnQueryEndSessionHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnQueryEndSessionHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnQueryEndSessionHandler">
<short>Removes an application logoff query handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnQueryEndSessionHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnMinimizeHandler">
<short>Adds an application minimizing handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnMinimizeHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnMinimizeHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnMinimizeHandler">
<short>Removes an application minimizing handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnMinimizeHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnModalBeginHandler">
<short>Adds an application becoming modal handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnModalBeginHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnModalBeginHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnModalBeginHandler">
<short>Removes an application becoming modal handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnModalBeginHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnModalEndHandler">
<short>Adds an application exiting modal state handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnModalEndHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnModalEndHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnModalEndHandler">
<short>Removes an application exiting modal state handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnModalEndHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnRestoreHandler">
<short>Adds an application exiting minimized state handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnRestoreHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnRestoreHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnRestoreHandler">
<short>Removes an application exiting minimized state handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnRestoreHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnDropFilesHandler">
<short>Adds an application dropped files handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnDropFilesHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnDropFilesHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnDropFilesHandler">
<short>Removes an application dropped files handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnDropFilesHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnHelpHandler">
<short>Adds an application Help handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnHelpHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnHelpHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnHelpHandler">
<short>Removes an application Help handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnHelpHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnHintHandler">
<short>Adds an application Hint handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnHintHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnHintHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnHintHandler">
<short>Removes an application Hint handler.</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnHintHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnShowHintHandler">
<short>
Adds an application Hint show handler to the list for the handler type.
</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnShowHintHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnShowHintHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnShowHintHandler">
<short>
Removes an application Hint show handler from the list for the handler type.
</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnShowHintHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnGetMainFormHandleHandler">
<short>
Adds a handler signalled when the application MainForm handle is retrieved.
</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.AddOnGetMainFormHandleHandler.Handler">
<short>
Handler routine added in the method to the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnGetMainFormHandleHandler.AsFirst">
<short>
<b>True</b> if the handler is inserted as the first routine in the list of 
handlers. <b>False</b> if it is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnGetMainFormHandleHandler">
<short>
Removes a handler used to get the handle for the main form in the application.
</short>
<descr/>
<seealso>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.RemoveOnGetMainFormHandleHandler.Handler">
<short>
Handler routine removed in the method.
</short>
</element>

<element name="TApplication.AddOnActionExecuteHandler">
<short>
Adds the specified routine to the list of ahtActionExecute handlers for the 
application.
</short>
<descr/>
<version>
Added in LCL version 3.0.
</version>
<seealso/>
</element>
<element name="TApplication.AddOnActionExecuteHandler.Handler">
<short>
Handler routine added or inserted in the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnActionExecuteHandler.AsFirst">
<short>
<b>True</b> if the handler routine is inserted as the first entry in the 
handler list. <b>False</b> if the routine is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnActionExecuteHandler">
<short>
Removes the specified routine from the list of ahtActionExecute handlers for 
the application.
</short>
<descr/>
<version>
Added in LCL version 3.0.
</version>
<seealso/>
</element>
<element name="TApplication.RemoveOnActionExecuteHandler.Handler">
<short>
Handler routine located and removed in the method.
</short>
</element>

<element name="TApplication.AddOnActionUpdateHandler">
<short>
Adds the specified routine to the list of ahtActionUpdate handlers for the 
application.
</short>
<descr/>
<version>
Added in LCL version 3.0.
</version>
<seealso/>
</element>
<element name="TApplication.AddOnActionUpdateHandler.Handler">
<short>
Handler routine added or inserted in the list of handlers for the type.
</short>
</element>
<element name="TApplication.AddOnActionUpdateHandler.AsFirst">
<short>
<b>True</b> if the handler routine is inserted as the first entry in the 
handler list. <b>False</b> if the routine is appended to the end of the list.
</short>
</element>

<element name="TApplication.RemoveOnActionUpdateHandler">
<short>
Removes the specified routine from the list of ahtActionUpdate handlers for 
the application.
</short>
<descr/>
<version>
Added in LCL version 3.0.
</version>
<seealso/>
</element>
<element name="TApplication.RemoveOnActionUpdateHandler.Handler">
<short>
Handler routine located and removed in the method.
</short>
</element>

<element name="TApplication.RemoveAllHandlersOfObject">
<short>
Removes all handlers implemented for the specified object.
</short>
<descr>
<p>
<var>RemoveAllHandlersOfObject</var> ensures that all handler routines for 
the object specified in AnObject are removed from the method lists for each 
of the TApplicationHandlerType values. The RemoveAllMethodsOfObject method in 
each of the TMethodList instances is called to remove the handlers for the 
specified object.
</p>
</descr>
<seealso/>
</element>
<element name="TApplication.RemoveAllHandlersOfObject.AnObject">
<short>
Object instance for the handlers removed in the method.
</short>
</element>

<element name="TApplication.DoBeforeMouseMessage">
<short>
Performs actions needed before a mouse message is processed in the 
application.
</short>
<descr>
<p>
DoBeforeMouseMessage ensures that the value in MouseControl is updated before 
the mouse message is handled in the application. It calls UpdateMouseControl 
to assign the control under the mouse pointer to the CurMouseControl argument.
</p>
<p>
DoBeforeMouseMessage is called when messages are exchanged between a 
widgetset class instance and the LCL application.
</p>
</descr>
<seealso/>
</element>
<element name="TApplication.DoBeforeMouseMessage.CurMouseControl">
<short>
Current value for the MouseControl property. May be updated with the new 
control under the mouse pointer in the method.
</short>
</element>

<element name="TApplication.IsShortcut">
<short>
Checks whether a handler is available for the shortcut key in the message.
</short>
<descr>
<p>
The return value is set to <b>True</b> if the key code in the message is 
handled by the application or one of the enabled forms or controls in the 
application.
</p>
<p>
IsShortCut signals the OnShortcut event handler (when assigned) to determine 
if the accelerator is handled at the application level. If it is handled in 
OnShortcut, no additional actions are performed in the method.
</p>
<p>
Next, an enabled modal form on the screen calls its IsShortCut method to 
examine the accelerator.
</p>
<p>
The active form for the Screen is checked when it is enabled by calling its 
IsShortCut method.
</p>
<p>
Finally, the main form for the application is checked by calling its 
IsShortCut method.
</p>
<p>
The return value is <b>False</b> when the shortcut is not handled in any of 
the preceding calls to IsShortCut.
</p>
</descr>
<seealso/>
</element>
<element name="TApplication.IsShortcut.Result">
<short><b>True</b> when the shortcut is handled.</short>
</element>
<element name="TApplication.IsShortcut.Message">
<short>
Message with the key code for the accelerator.
</short>
</element>

<element name="TApplication.IntfQueryEndSession">
<short>Called by the interface to confirm the end of a session.</short>
<descr>
<p>
Asks all QueryEndSession handlers to confirm termination of the application.
</p>
</descr>
<seealso>
<link id="TApplication.OnQueryEndSession"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.IntfQueryEndSession.Cancel">
<short>
Returns <b>True</b> if the application can be terminated.
</short>
</element>

<element name="TApplication.IntfEndSession">
<short>Called by the interface when the session ends.</short>
<descr>Notifies all OnEndSession handlers.</descr>
<seealso>
<link id="TApplication.OnEndSession"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.IntfAppActivate">
<short>Called by the interface on application activation.</short>
<descr>
Notifies all activation handlers.
</descr>
<seealso>
<link id="TApplication.OnActivate"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.IntfAppDeactivate">
<short>Called by the interface on application deactivation.</short>
<descr/>
<seealso>
<link id="TApplication.OnDeactivate"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.IntfAppMinimize">
<short>Called by the interface when the application is minimized.</short>
<descr/>
<seealso>
<link id="TApplication.OnMinimize"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.IntfAppRestore">
<short>Called by the interface when the application is restored.</short>
<descr/>
<seealso>
<link id="TApplication.OnRestore"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.IntfDropFiles">
<short>Called by the interface when files have been dropped.</short>
<descr/>
<seealso>
<link id="TApplication.OnDropFiles"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>
<element name="TApplication.IntfDropFiles.FileNames">
<short>
Array of file file names processed using the OnDropFiles event handler.
</short>
</element>

<element name="TApplication.IntfSettingsChange">
<short>
Called when the WM_SETTINGCHANGE message is handled for the application.
</short>
<descr>
<p>
Calls <var>GetFormatSettingsUTF8</var> or <var>GetFormatSettings</var>, 
depending on use of UTF-8 in the RTL, when UpdateFormatSettings is set to 
<b>True</b>. This applies to Windows platforms only.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.IntfThemeOptionChange">
<short>Called by the interface when a theme option has changed.</short>
<descr>
<p>
<var>IntfThemeOptionChange</var> posts control messages to notify a custom 
form when either toShowButtonImages or toShowMenuImages is the value in 
<var>AOption</var>.
</p>
<dl>
<dt>toShowButtonImages</dt>
<dd>
Posts a CM_APPSHOWBTNGLYPHCHANGED control message when ShowButtonGlyphs is set 
to sbgSystem.
</dd>
<dt>toShowMenuImages</dt>
<dd>
Posts a CM_APPSHOWMENUGLYPHCHANGED control message when ShowMenuGlyphs is set 
to sbgSystem.
</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="TApplication.IntfThemeOptionChange.AThemeServices">
<short>
TThemeServices instance for the callback. Not used in the current LCL 
implementation.
</short>
</element>
<element name="TApplication.IntfThemeOptionChange.AOption">
<short>
TThemeOption changed in the callback.
</short>
</element>

<element name="TApplication.IsRightToLeft">
<short>
Indicates if BiDiMode contains a value other than bdLeftToRight.
</short>
<descr/>
<seealso/>
</element>
<element name="TApplication.IsRightToLeft.Result">
<short>
Returns <b>True</b> if BiDiMode is set to a value other than bdLeftToRight.
</short>
</element>

<element name="TApplication.IsRTLLang">
<short>
Checks the given language name for use of right-to-left reading.
</short>
<descr/>
<seealso/>
</element>
<element name="TApplication.IsRTLLang.Result">
<short><b>True</b> when the language code uses right-to-left reading.</short>
</element>
<element name="TApplication.IsRTLLang.ALang">
<short>ISO language code examined in the method.</short>
</element>

<element name="TApplication.Direction">
<short>
Gets the TBidiMode value with the direction for the specified language name.
</short>
<descr/>
<seealso/>
</element>
<element name="TApplication.Direction.Result">
<short>TBiDiMode value for the specified language.</short>
</element>
<element name="TApplication.Direction.ALang">
<short>ISO language name examined in the method.</short>
</element>

<element name="TApplication.DoArrowKey">
<short>Uses arrow keys for navigation, if enabled.</short>
</element>
<element name="TApplication.DoArrowKey.AControl">
<short>The control receiving the key.</short>
</element>
<element name="TApplication.DoArrowKey.Key">
<short>The virtual key; becomes VK_UNKNOWN when handled.</short>
</element>
<element name="TApplication.DoArrowKey.Shift">
<short>The active modifier keys.</short>
</element>

<element name="TApplication.DoTabKey">
<short>Uses the Tab key for navigation, if enabled.</short>
<descr/>
<seealso/>
</element>
<element name="TApplication.DoTabKey.AControl">
<short>The control receiving the key.</short>
</element>
<element name="TApplication.DoTabKey.Key">
<short>The virtual key; becomes VK_UNKNOWN when handled.</short>
</element>
<element name="TApplication.DoTabKey.Shift">
<short>Shift, Ctrl or Alt modifier for the virtual key.</short>
</element>

<element name="TApplication.DoEscapeKey">
<short>Interprets Esc as Cancel action, if applicable.</short>
<descr/>
<seealso/>
</element>
<element name="TApplication.DoEscapeKey.AControl">
<short>The control receiving the key.</short>
</element>
<element name="TApplication.DoEscapeKey.Key">
<short>The virtual key; becomes VK_UNKNOWN when handled.</short>
</element>
<element name="TApplication.DoEscapeKey.Shift">
<short>The active modifier keys.</short>
</element>

<element name="TApplication.DoReturnKey">
<short>Interprets Enter as the default action, if applicable.</short>
<descr/>
<seealso/>
</element>
<element name="TApplication.DoReturnKey.AControl">
<short>The control receiving the key.</short>
</element>
<element name="TApplication.DoReturnKey.Key">
<short>The virtual key; becomes VK_UNKNOWN when handled.</short>
</element>
<element name="TApplication.DoReturnKey.Shift">
<short>The active modifier keys.</short>
</element>

<element name="TApplication.Active">
<short><b>True</b> if the application is focused.</short>
<descr>
<p>
<var>Active</var> is a read-only <var>Boolean</var> property which indicates 
if the application is focused. Returns <b>True</b> if the 
<var>AppActive</var> flag has been included in the <var>Flags</var> for the 
application.
</p>
<p>
The value in Active (and Flags) is updated when the private 
<var>Activate</var> or <var>Deactivate</var> methods are called.
</p>
</descr>
<seealso>
<link id="TApplication.Flags"/>
<link id="TApplicationFlags"/>
<link id="TApplicationFlag"/>
</seealso>
</element>

<element name="TApplication.ApplicationType">
<short>
The type of the application (i.e. the sort of device for which it is 
intended).
</short>
<descr>
<p>The type of the application:</p>
<p>Default, Desktop, Handheld, PDA, Smartphone</p>
</descr>
<seealso/>
</element>

<element name="TApplication.BidiMode">
<short>The bidirectional mode to use.</short>
</element>

<element name="TApplication.CaptureExceptions">
<short>Enables exception handling in the Application.</short>
<descr>
<p>
<var>CaptureExceptions</var> is a <var>Boolean</var> property which enables or 
disables exception handling for errors which occur when messages are handled 
in the application. The default value for CaptureExceptions is set to 
<b>True</b> in the Create constructor. CaptureExceptions is set to 
<b>False</b> in the Destroy destructor.
</p>
<p>
Changing the value for the property causes the routine in the RTL ExceptProc 
constant to be updated. When set to <b>True</b>, the constant is set to the 
ExceptionOccurred routine in the implementation section for the 
<file>forms.pp</file> unit. When set to <b>False</b>, the previous exception 
handler routine is restored.
</p>
<p>
CaptureExceptions is used in the message processing loop for the TApplication 
instance. When enabled, the HandleMessage method is called in a 
<b>TRY..EXCEPT</b> block, and HandleException is called if an exception is 
raised. When disabled, HandleMessage is called without the benefit of 
exception handling.
</p>
</descr>
<seealso>
<link id="TApplication.HandleMessage"/>
<link id="TApplication.HandleException"/>
<link id="TApplication.Create"/>
<link id="TApplication.Destroy"/>
<link id="#rtl.system.ExceptProc">ExceptProc</link>
</seealso>
</element>

<element name="TApplication.DoubleBuffered">
<short>Indicates if the application uses double buffering.</short>
<descr>
<p>
Double buffering is a technique used to reduce screen flickering when form 
and controls are (re)drawn. When enabled, an off-screen buffer is used to 
accelerate drawing operations.
</p>
<p>
The default value for the property is adbDefault and indicates that the 
application uses the default capabilities provided by the widgetset.
</p>
<remark>
DoubleBuffered is a platform-specific property. Only the Windows platform 
implements double buffering (at the widgetset level) in the current LCL 
version. Changing the value for the property to <b>True</b> has no effect if 
double buffering is not implemented for the widgetset used in the Application.
</remark>
</descr>
<seealso/>
</element>

<element name="TApplication.ExtendedKeysSupport">
<short>
Controls whether extended key codes are available in key down and key up 
messages.
</short>
<descr>
<p>
When enabled, ExtendedKeysSupport causes Shift, Ctrl, and Alt (Menu) (Options 
or Mac OS) to generate distinct values for the left and right keys. The 
values can then be handled in OnKeyDown and OnKeyUp event handlers, or in 
overridden KeyDown and KeyUp methods.
</p>
<p>
See VK_LSHIFT in LCLType for more details.
</p>
</descr>
<seealso>
<link id="#lcl.lcltype.VK_LSHIFT">VK_LSHIFT</link>
</seealso>
</element>

<element name="TApplication.ExceptionDialog">
<short>
Indicates the dialog type used for an exception in the application.
</short>
<descr>
<p>
<var>ExceptionDialog</var> is a <var>TApplicationExceptionDlg</var> property 
which indicates the dialog type displayed for an exception handled by the 
application instance. The default value for the property is 
<var>aedOkCancelDialog</var>, as assigned in the <var>Create</var> 
constructor.
</p>
<p>
See TApplicationExceptionDlg for more information about values in the 
enumeration and their meanings.
</p>
</descr>
<seealso>
<link id="TApplicationExceptionDlg"/>
<link id="TApplication.Create"/>
<link id="TApplicationProperties.ExceptionDialog"/>
</seealso>
</element>

<element name="TApplication.FindGlobalComponentEnabled">
<short>Enables searching for global components by name.</short>
<descr>
<p>
This property is used by TReader to auto rename forms in the application to 
unique names.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.Flags">
<short>Contains state flags for the application.</short>
<descr>
<p>
<var>Flags</var> is a <var>TApplicationFlags</var> property which contains 
flag values currently enabled for the application. It is a set type, and may 
contain zero or more values from the <var>TApplicationFlag</var> enumeration.
</p>
<p>
Values in Flags are updated when methods are executed in the class instance. 
A value may be transient in nature, and exist only while a particular method 
is running. They may also be more permanent, and indicate actions which have 
been performed and/or completed.
</p>
<p>
Values are added to and removed from Flags in methods like:
</p>
<ul>
<li>Create</li>
<li>Destroy</li>
<li>Initialize</li>
<li>Activate</li>
<li>Deactivate</li>
<li>Idle</li>
<li>ShowException</li>
</ul>
</descr>
<seealso>
<link id="TApplicationFlags"/>
<link id="TApplicationFlag"/>
</seealso>
</element>

<element name="TApplication.Handle">
<short>
Provides access to the handle for the application instance.
</short>
<descr>
<p>
<var>Handle</var> is a <var>TLCLHandle</var> property which provides access to 
the handle used for the application instance. Reading the value for the 
property is redirected to the AppHandle allocated in the widgetset class. 
Setting the value for the property causes the AppHandle in the widgetset class 
to be updated with the new value.
</p>
<p>
Handle is used to send and receive window messages and state change 
notifications for the application instance using the <b>LCL</b> interface.
</p>
</descr>
<version>
Modified in LCL version 4.0 to use the TLCLHandle type instead of the 
deprecated THandle type.
</version>
<seealso>
<link id="#lcl.lcltype.TLCLHandle">TLCLHandle</link>
<link id="#lcl.interfacebase.TWidgetSet.AppHandle">TWidgetSet.AppHandle</link>
</seealso>
</element>

<element name="TApplication.Hint">
<short>
The current Hint text active for the application.
</short>
<descr>
<p>
A hint is a String with a pop-up message that appears briefly while the mouse 
is hovered over a control. It usually displays useful information about how to 
use the UI element, or the type of data that should be entered, etc.
</p>
<p>
The property value is normally provided by the Hint text assigned to a 
control when ShowHint is set to <b>True</b> (for both the control and the 
application). If the Hint text for the control has short and long variants, the 
long variant is used in TApplication. Otherwise, the short variant is used for 
the property value. See 
<link id="#lcl.controls.TControl.Hint">TControl.Hint</link> for more 
information about short and long hints.
</p>
<p>
Changing the property value causes an assigned OnHint handler to be signalled, 
along with any other application handlers using the ahtHint type. One of the 
handlers can be used to override the value for the Hint property. If OnHint (or 
other handlers) are not assigned, a TCustomHintAction is created and executed 
to get the value for the Hint property. OnActionExecute can then be used to 
intercept and fulfill the request for Hint text.
</p>
<p>
Other properties can be used to customize the delay before a Hint is shown, 
after the mouse is moved away from the control or form, and how long it will 
remain visible. See HintPause, HintShortPause, HintHidePause, and 
HintHidePausePerChar.
</p>
<p>
Use HintColor to specify the background color used to display the pop-up with 
the Hint text.
</p>
<p>
The long variant of the Hint is displayed on the status bar for the active 
Form when the AutoHint property is enabled for a TStatusBar instance.
</p>
</descr>
<seealso>
<link id="TApplication.ShowHint"/>
<link id="TApplication.OnHint"/>
<link id="TApplication.AddOnHintHandler"/>
<link id="TApplication.OnActionExecute"/>
<link id="TApplication.HintColor"/>
<link id="TApplication.HintPause"/>
<link id="TApplication.HintShortPause"/>
<link id="TApplication.HintHidePause"/>
<link id="TApplication.HintHidePausePerChar"/>
<link id="#lcl.controls.TControl.Hint">TControl.Hint</link>
<link id="#lcl.controls.TControl.ShowHint">TControl.ShowHint</link>
<link id="#lcl.controls.TControl.ParentShowHint">TControl.ParentShowHint</link>
<link id="#lcl.comctrls.TStatusBar.AutoHint">TStatusBar.AutoHint</link>
</seealso>
</element>

<element name="TApplication.HintColor">
<short>The background color for a Hint window.</short>
<descr>
<p>
<var>HintColor</var> is a <var>TColor</var> property with the color for the 
background in a <var>Hint</var> window.
</p>
<p>
The default value for the property is defined in the <var>DefHintColor</var> 
constant and assigned in the constructor for the application instance. 
Changing the value for the property causes the color in the internal 
<var>THintWindow</var> instance to be updated with the new property value.
</p>
<p>
HintColor is used in the <var>ShowHintWindow</var> method to configure the 
hint information displayed using a CM_HINTSHOW control message. It may be 
updated in the same method to use the value returned when the message is 
handled for the application.
</p>
</descr>
<seealso>
<link id="TApplication.Hint"/>
<link id="TApplication.ShowHint"/>
<link id="TApplication.ShowHintWindow"/>
<link id="THintWindow"/>
</seealso>
</element>

<element name="TApplication.HintHidePause">
<short>
Indicates how long a Hint remains visible after the mouse pointer is moved.
</short>
<descr>
<p>
<var>HintHidePause</var> is an <var>Integer</var> property with the number of 
milliseconds (or ticks) that a Hint display remains visible after the mouse 
pointer leaves the control or form. The default value is defined in the 
DefHintHidePause constant and assigned to the property in the constructor for 
the application instance.
</p>
<p>
HintHidePause is used in the ShowHintWindow method to configure the hint 
information displayed using a CM_HINTSHOW control message.
</p>
</descr>
<seealso>
<link id="TApplication.Hint"/>
</seealso>
</element>

<element name="TApplication.HintHidePausePerChar">
<short>
Indicates how long a keystroke extends the time a Hint remains visible (added 
to HintHidePause).
</short>
<descr/>
<seealso>
<link id="TApplication.HintHidePause"/>
<link id="TApplication.Hint"/>
</seealso>
</element>

<element name="TApplication.HintPause">
<short>The delay before a Hint is shown for a form or control.</short>
<descr>
<p>
HintPause is an Integer property with the number of milliseconds to wait 
before a Hint window is displayed for a form or control.
</p>
<p>
The default value is defined in the DefHintPause constant and assigned to the 
property in the constructor for the application instance.
</p>
<p>
HintPause is used in the ActivateHint method, and provides the interval for 
the internal timer instance used for hints in the application.
</p>
</descr>
<seealso>
<link id="TApplication.Hint"/>
</seealso>
</element>

<element name="TApplication.HintShortCuts">
<short>
Enables or disables display of keyboard shortcuts (e. g. on menu items).
</short>
<descr>
<p>
HintShortCuts is a Boolean property controls display of shortcut characters 
for action-enabled items in the application. This applies to controls which 
utilize the TControlActionLink class. The default value for the property is 
<b>True</b>, and enables display of keyboard shortcuts or accelerators.
</p>
</descr>
<seealso>
<link id="TApplication.Hint"/>
</seealso>
</element>

<element name="TApplication.HintShortPause">
<short>The pause before a different Hint is displayed.</short>
<descr/>
<seealso>
<link id="TApplication.Hint"/>
<link id="TApplication.ActivateHint"/>
</seealso>
</element>

<element name="TApplication.Icon">
<short>The icon associated with this application.</short>
<descr>
<p>
Icon is TIcon property with the image used to represent the application on 
the desktop, task bar, and system menus.
</p>
<p>
The image can be assigned to TIcon at design-time using the Lazarus object 
inspector, or by setting values in the Project options dialog. The image can 
also be assigned at run-time using properties and methods in the TIcon 
instance.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.LayoutAdjustmentPolicy">
<short>
Indicates the layout and sizing policy used for forms and controls in the 
application.
</short>
<descr/>
<seealso>
<link id="TLayoutAdjustmentPolicy"/>
</seealso>
</element>

<element name="TApplication.Navigation">
<short>Allows switching between controls using keyboard navigation.</short>
<descr>
<p>
By default, the following keys can be used for keyboard navigation in an LCL 
application:
</p>
<dl>
<dt>Tab, Shift+Tab</dt>
<dd>Moves the Focus to the next (or previous) control in TabOrder.</dd>
<dt>Enter</dt>
<dd>Triggers the default action for the form or control.</dd>
<dt>Escape</dt>
<dd>Triggers the Cancel action for the form or control.</dd>
<dt>F1</dt>
<dd>Displays context sensitive help (when available).</dd>
<dt>Cursor or arrow keys</dt>
<dd>Moves the focus or cursor.</dd>
</dl>
</descr>
<seealso>
<link id="TApplicationNavigationOptions"/>
</seealso>
</element>

<element name="TApplication.MainForm">
<short>Contains the main form for the application.</short>
<descr>
<p>
<var>MainForm</var> is a read-only <var>TForm</var> property which contains 
the form that is the main or primary form for the application.
</p>
<p>
The value in MainForm is assigned when the first form is created using the 
<var>CreateForm</var> method and the <var>FormStyle</var> for the form 
contains a value other than <var>fsSplash</var>.
</p>
<p>
The form instance in MainForm is displayed when the <var>Run</var> method is 
called to start the message processing loop for the application.
</p>
<p>
The application is terminated when this form is closed.
</p>
</descr>
<seealso>
<link id="TApplication.CreateForm"/>
<link id="TApplication.Run"/>
<link id="TCustomForm.FormStyle"/>
<link id="TForm"/>
</seealso>
</element>

<element name="TApplication.MainFormHandle">
<short>Window handle for the MainForm in the application.</short>
<descr>
<p>
<var>MainFormHandle</var> is a read-only <var>HWND</var> property which 
contains the handle for the form instance used as the main form in the 
application.
</p>
<p>
The value for the property is derived using the 
<var>OnGetMainFormHandle</var> event handler (when assigned) or a 
<var>TGetHandleEvent</var> handler assigned in the application. When neither 
of these mechanisms provides a value other than zero (0), the window handle 
assigned in the <var>MainForm</var> property is used.
</p>
<p>
MainFormHandle is used in the implementation of methods in WidgetSet classes, 
primarily for the Windows platform, and in custom-drawn controls.
</p>
</descr>
<seealso>
<link id="TApplication.MainForm"/>
<link id="TApplication.OnGetMainFormHandle"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.MainFormOnTaskBar">
<short>
Controls whether a button is displayed on the task bar for the main form in 
the application.
</short>
<descr>
<p>
<var>MainFormOnTaskBar</var> is a <var>Boolean</var> property which 
determines whether the icon for the main form in the application is displayed 
on the task bar. When MainFormOnTaskBar is set to <b>True</b>, a button 
representing the main form is displayed on the task bar area in the window 
manager. When set to <b>False</b>, the button is not displayed in the task 
bar area.
</p>
<p>
Changing the value in the property causes the Widgetset class to be notified 
of the new property value.
</p>
<p>
MainFormOnTaskBar is a platform-dependent property. It may not be implemented 
for all platforms supported for the Lazarus application. In addition, some 
platforms which display task bar thumbnails (like Windows Vista) may require 
the property to be set to <b>True</b>.
</p>
<p>
The default value for the property is normally set in the Lazarus project 
file (<b>.lpr</b>) used to compile the application.
</p>
</descr>
<seealso>
<link id="TApplication.MainForm"/>
<link id="TApplication.Icon"/>
<link id="TApplication.Title"/>
</seealso>
</element>

<element name="TApplication.ModalLevel">
<short>The number of modal forms shown.</short>
<descr>
<p>
<var>ModalLevel</var> is a read-only <var>Integer</var> property with the 
number of forms displayed modally in the application.
</p>
<p>
The value in ModalLevel is incremented in the <var>ModalStarted</var> method. 
It causes the <var>OnModalBegin</var> event handler and application handlers 
for the <var>ahtModalBegin</var> handler type to be signalled (when assigned) 
when its value is <b>1</b> following the increment.
</p>
<p>
The value in ModalLevel is decremented in the <var>ModalFinished</var> 
method. It causes the <var>OnModalEnd</var> event handler and application 
handlers for the <var>ahtModalEnd</var> handler type to be signalled (when 
assigned) when its value is <b>0</b> following the decrement.
</p>
</descr>
<seealso>
<link id="TApplication.ModalStarted"/>
<link id="TApplication.ModalFinished"/>
<link id="TApplication.OnModalBegin"/>
<link id="TApplication.OnModalEnd"/>
<link id="#lazutils.lazmethodlist.TMethodList.CallNotifyEvents">
TMethodList.CallNotifyEvents</link>
</seealso>
</element>

<element name="TApplication.MoveFormFocusToChildren">
<short>
Indicates if an active control is focused when a form receives focus.
</short>
<descr>
<p>
<var>MoveFormFocusToChildren</var> is a <var>Boolean</var> property which 
indicates if an active control is focused when a form receives focus in the 
application.
</p>
<p>
The default value is <b>True</b>. When set to <b>False</b>, the window or 
form will still receive focus, but a child control is not selected.
</p>
<p>
Used in the <var>SetActive</var> method in <var>TCustomForm</var>.
</p>
</descr>
<seealso>
<link id="TCustomForm.Active"/>
</seealso>
</element>

<element name="TApplication.MouseControl">
<short>Contains the control currently under the mouse pointer.</short>
<descr>
<p>
Used to detect when the mouse enters and leaves a control. MouseControl is 
updated and used in methods like GetControlAtMouse and UpdateMouseControl.
</p>
</descr>
<seealso>
</seealso>
</element>

<element name="TApplication.TaskBarBehavior">
<short>Indicates how forms are represented in the task bar.</short>
<descr>
<p>
<var>TaskBarBehavior</var> is a <var>TTaskBarBehavior</var> property which 
indicates how forms in the application are represented in the task bar. The 
property value is used in conjunction with the <var>ShowInTaskBar</var> 
property for the TCustomForm instances in the application. For example:
</p>
<dl>
<dt>tbDefault</dt>
<dd>
Shows task bar buttons according to the default behavior for the platform.
</dd>
<dt>tbMultiButton</dt>
<dd>
Shows a task bar button for each form with stDefault in its ShowInTaskBar 
property.
</dd>
<dt>tbSingleButton</dt>
<dd>
Hide buttons for Forms with stDefault in its ShowInTaskBar property.
</dd>
</dl>
<p>
When the property value is changed, the <var>UpdateShowInTaskBar</var> for 
each TCustomForm instance is called when its ShowInTaskBar property is 
<var>stDefault</var>.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.UpdateFormatSettings">
<short>
Indicates if application format settings are updated when changed in a 
widgetset class.
</short>
<descr>
<p>
<var>UpdateFormatSettings</var> is a platform-specific <var>Boolean</var> 
property which indicates if application format settings are updated when 
changed in a widgetset class. The default value for the property is 
<b>True</b>, as assigned in the <var>Create</var> constructor.
</p>
<p>
The property value is used in the <var>IntfSettingsChange</var> method to 
determine if the <var>GetFormatSettings</var> or 
<var>GetFormatSettingsUTF8</var> method is called for the Windows platform. 
GetFormatSettings is called when <b>DisableUTF8RTL</b> is defined for the 
compiler. Other platforms are not affected, and do not call either method.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.OnActionExecute">
<short>Default handler for unhandled Actions.</short>
<descr>
<p>
<var>OnActionExecute</var> is a <var>TActionEvent</var> property with the 
event handler signalled (when assigned) from the <var>ExecuteAction</var> 
method.
</p>
<p>
The <var>AAction</var> argument contains the <var>TBasicAction</var> instance 
executed in the event handler. <var>Handled</var> indicates whether the 
action was executed in the event handler. Set Handled to <b>False</b> if the 
action was not executed.
</p>
</descr>
<seealso>
<link id="TApplication.ExecuteAction"/>
<link id="#lcl.actnlist.TActionEvent">TActionEvent</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>

<element name="TApplication.OnActionUpdate">
<short>
Event handler signalled to update actions used in the application.
</short>
<descr>
<p>
<var>OnActionUpdate</var> is a <var>TActionEvent</var> property with the 
event handler signalled to update actions used in the application. 
OnActionUpdate is signalled from the <var>UpdateAction</var> method called 
when the <var>CM_UPDATEACTIONS</var> control message is handled in the 
application.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.OnActivate">
<short>
Event handler signalled when an Activate message is handled in the 
application.
</short>
<descr>
<p>
<var>OnActivate</var> is a <var>TNotifyEvent</var> property with the event 
handler signalled when an <var>Activate</var> message is handled for the 
application.
</p>
<p>
OnActivate is signalled from the <var>NotifyActivateHandler</var> method, 
which occurs when the Activate method is called for the application. The 
event handler is also signalled (via Activate) from the <var>WMActivate</var> 
method in <var>TCustomForm</var> to ensure that the application is activated 
before one of its forms is updated in the task bar.
</p>
<p>
Use the <var>OnDeactivate</var> event handler to perform actions needed when 
the main form in an application is de-activated.
</p>
<p>
Use the <var>TApplicationProperties</var> class to assign properties and 
event handlers at design-time that are applied to the application instance at 
run-time.
</p>
</descr>
<seealso>
<link id="TApplication.NotifyActivateHandler"/>
<link id="TApplication.AddOnActivateHandler"/>
<link id="TApplication.RemoveOnActivateHandler"/>
<link id="TApplication.OnDeactivate"/>
<link id="TApplicationHandlerType"/>
<link id="TApplicationProperties"/>
</seealso>
</element>

<element name="TApplication.OnDeactivate">
<short>
Event handler signalled when a Deactivate message is handled in the 
application.
</short>
<descr>
<p>
<var>OnDeactivate</var> is a <var>TNotifyEvent</var> property with the event 
handler signalled when a <var>Deactivate</var> message is handled in the 
application.
</p>
<p>
It is signalled from the <var>NotifyDeactivateHandler</var> method, and 
occurs when the Deactivate method is called for the application. The event 
handler is also signalled (via Deactivate) from the <var>WMActivate</var> 
method in <var>TCustomForm</var> to ensure that the application is 
de-activated when its main form is de-activated.
</p>
<p>
Use the <var>OnActivate</var> event handler to perform actions needed when 
the application is activated.
</p>
<p>
Use the <var>TApplicationProperties</var> class to assign properties and 
event handlers at design-time that are applied to the application instance at 
run-time.
</p>
</descr>
<seealso>
<link id="TApplication.NotifyDeactivateHandler"/>
<link id="TApplication.AddOnDeactivateHandler"/>
<link id="TApplication.RemoveOnDeactivateHandler"/>
<link id="TApplicationHandlerType"/>
<link id="TApplicationProperties"/>
</seealso>
</element>

<element name="TApplication.OnGetMainFormHandle">
<short>
Event handler used to provide a value for the MainFormHandle property.
</short>
<descr>
<p>
Used in the implementation of the <var>GetMainFormHandle</var> method. 
Provides the first opportunity to set the value for <var>MainFormHandle</var> 
before calling the other handlers added to the application.
</p>
</descr>
<seealso>
<link id="TApplication.MainFormHandle"/>
<link id="TApplication.MainForm"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.OnIdle">
<short>
Event handler signalled when the application enters the idle state.
</short>
<descr>
<p>
<var>OnIdle</var> is a <var>TIdleEvent</var> property with the event handler 
signalled when the application enters the idle state. Assign an object 
procedure to the event handler to perform actions needed when other window or 
control messages are not present.
</p>
<p>
It is signalled from the <var>Idle</var> method, and occurs after released 
components and asynchronous callbacks have been processed for the 
application. It occurs before the <var>NotifyIdleHandler</var> method is 
called to process other application handlers using the <var>ahtIdle</var> 
type.
</p>
<p>
Any actions performed in the event handler should have a short duration, and 
relatively low resource requirements. This will ensure that system 
performance is not adversely affected, and the application is responsive.
</p>
<p>
Use <var>OnIdleEnd</var> to perform actions needed when the application 
leaves the idle state.
</p>
<p>
Use the <var>TApplicationProperties</var> class to assign properties and 
event handlers for an application instance at design-time that are applied at 
run-time.
</p>
</descr>
<seealso>
<link id="TApplication.Idle"/>
<link id="TApplication.NotifyIdleHandler"/>
<link id="TApplication.OnIdleEnd"/>
<link id="TApplicationHandlerType"/>
<link id="TApplicationProperties"/>
</seealso>
</element>

<element name="TApplication.OnIdleEnd">
<short>
Event handler signalled when the application leaves the Idle state.
</short>
<descr>
<p>
<var>OnIdleEnd</var> is a <var>TNotifyEvent</var> property with the event 
handler signalled when the application leaves the <var>Idle</var> state.
</p>
<p>
It is signalled from the <var>DoOnIdleEnd</var> method, and occurs after the 
<var>AppWaitMessage</var> method in the widgetset class has been completed. 
It occurs before the <var>NotifyIdleEndHandler</var> method is called to 
process other application handlers using the <var>ahtIdleEnd</var> type.
</p>
<p>
Use <var>OnIdle</var> to perform actions needed when the application enters 
the idle state.
</p>
<p>
Use the <var>TApplicationProperties</var> class to assign properties and 
event handlers for an application instance at design-time that are applied at 
run-time.
</p>
</descr>
<seealso>
<link id="TApplication.Idle"/>
<link id="TApplication.NotifyIdleEndHandler"/>
<link id="TApplication.OnIdle"/>
<link id="TApplicationHandlerType"/>
<link id="TApplicationProperties"/>
</seealso>
</element>

<element name="TApplication.OnEndSession">
<short>
Event handler signalled when a session is ended in the application.
</short>
<descr>
<p>
<var>OnEndSession</var> is a <var>TNotifyEvent</var> property with the event 
handler signalled when a session is ended in the application. It is called 
from the <var>IntfEndSession</var> method, and occurs when the 
<var>WM_ENDSESSION</var> message is handled in the widget class. It is 
signalled before other application handlers using the 
<var>ahtEndSession</var> type.
</p>
<remark>
OnEndSession may not work reliably on all platforms supported supported for 
Lazarus. Some environments / window managers do not post a WM_ENDSESSION 
message when the process is killed.
</remark>
</descr>
<seealso>
<link id="TApplication.IntfEndSession"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.OnQueryEndSession">
<short>
Event handler signalled to determine if the current session be be ended, and 
the application can be closed.
</short>
<descr/>
<seealso>
<link id="TApplication.IntfQueryEndSession"/>
<link id="TQueryEndSessionEvent"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.OnMinimize">
<short>Event handler signalled when the application is minimized.</short>
<descr>
<p>
<var>OnMinimize</var> is a <var>TNotifyEvent</var> property with the event 
handler signalled when the application has been minimized (iconified in GTK 
terminology). The application is minimized when its main form is also 
minimized.
</p>
<p>
OnMinimize is signalled when the <var>IntfAppMinimize</var> method is called 
by the widgetset class, and occurs before other application handlers using 
the <var>ahtMinimize</var> type are notified.
</p>
<p>
Use <var>OnRestore</var> to perform actions when the main form is restored 
from its minimized state.
</p>
</descr>
<seealso>
<link id="TApplication.IntfAppMinimize"/>
<link id="TApplication.OnRestore"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.OnMessageDialogFinished">
<short>
Event handler signalled when a message dialog in the application has been 
completed.
</short>
<descr>
<p>
Used in the CustomDraw interface.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.OnModalBegin">
<short>
Event handler signalled when a form in the application is displayed as a 
modal form.
</short>
<descr>
<p>
<var>OnModalBegin</var> is a <var>TNotifyEvent</var> property with the event 
handler signalled when a form in the application is displayed as a modal form.
</p>
<p>
OnModalBegin is signalled from the <var>ModalStarted</var> method, which is 
called when the form instance calls its <var>ShowModal</var> method. It 
occurs only once - when the first modal form is displayed. Subsequent events 
are ignored in ModalStarted when a modal form is already active.
</p>
<p>
Use <var>OnModalEnd</var> to perform actions needed when the number of modal 
forms for the application reaches <b>0</b> (<b>zero</b>).
</p>
</descr>
<seealso>
<link id="TApplication.ModalStarted"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.OnModalEnd">
<short>
Event handler signalled when the last modal form for the application has been 
exited.
</short>
<descr>
<p>
<var>OnModalEnd</var> is a <var>TNotifyEvent</var> property with the event 
handler signalled when the last modal form or dialog in the application has 
been exited.
</p>
<p>
It is signalled from the <var>ModalFinished</var> method if the number of 
modal forms in the application is <b>0</b> (<b>zero</b>). It is signalled 
prior to other application handlers using the <var>ahtModalEnd</var> handler 
type.
</p>
<p>
Use <var>OnModalBegin</var> to perform actions needed when the first modal 
form is displayed for the application.
</p>
</descr>
<seealso>
<link id="TApplication.ModalFinished"/>
<link id="TCustomForm.ShowModal"/>
<link id="#lcl.dialogs.TCommonDialog.Execute">TCommonDialog.Execute</link>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.OnRestore">
<short>
Event handler signalled when the application is restored from a minimized / 
maximized state.
</short>
<descr>
<p>
<var>OnRestore</var> is a <var>TNotifyEvent</var> property with the event 
handler signalled when the application is restored from a minimized / 
maximized state. It is signalled from the <var>IntfAppRestore</var> method, 
and occurs before other application handlers using the <var>ahtRestore</var> 
type are notified.
</p>
<p>
Use OnMinimize to respond to the notification when the application is 
minimized.
</p>
</descr>
<seealso>
<link id="TApplication.IntfAppRestore"/>
<link id="TApplication.AddOnRestoreHandler"/>
<link id="TApplication.RemoveOnRestoreHandler"/>
<link id="TApplication.OnMinimize"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.OnDropFiles">
<short>
Event handler signalled when file(s) are dropped into the application.
</short>
<descr>
<p>
<var>OnDropFiles</var> is a <var>TDropFilesEvent</var> property with the 
event handler signalled when one or more files are dropped onto a form in the 
application. It is signalled from the <var>IntfDropFiles</var> method, and 
occurs after the corresponding method for the form that is the drop target 
has been notified from the window processing loop.
</p>
<remark>
For the macOS Carbon widgetset, the OnDropFiles event is fired when a file is 
dropped on the Application dock icon or opened via Finder (when associated). 
The event must be enabled in the Application Bundle.
</remark>
</descr>
<seealso>
<link id="TApplication.IntfDropFiles"/>
<link id="TCustomForm.IntfDropFiles"/>
<link id="TCustomForm.AllowDropFiles"/>
</seealso>
</element>

<element name="TApplication.OnHelp">
<short>
Event handler signalled when help is requested in the application.
</short>
<descr>
<p>
<var>OnHelp</var> is a <var>THelpEvent</var> property with the event handler 
signalled (if assigned) when help is requested in the application. It is 
signalled from the <var>DoOnHelp</var> method when the <var>ActiveForm</var> 
does not have an assigned <var>OnHelp</var> event handler or does not respond 
the specified help command. It occurs before other application handlers using 
the <var>ahtHelp</var> handler type are notified.
</p>
</descr>
<seealso>
<link id="TApplication.DoOnHelp"/>
<link id="TApplication.HelpContext"/>
<link id="TApplication.HelpKeyword"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.OnHint">
<short>
Event handler signalled when a hint is requested in the application.
</short>
<descr>
<p>
<var>OnHint</var> is a <var>TNotifyEvent</var> property with the event handler 
signalled when the value for the <var>Hint</var> property is needed in the 
application. It is signalled (when assigned) when a new value is assigned to 
the Hint property, and occurs when the mouse is hovered over a control.
</p>
<p>
OnHint, and other application handlers using the ahtHint type, can be used to 
override the value assigned to the Hint property. OnHint occurs before other 
application handlers using the <var>ahtHint</var> handler type are notified.
OnHint can be implemented to provide hint text using any method needed for the 
application; it does not have to use the Hint text for the hovered control. 
</p>
<p>
If OnHint (or other handlers) are not assigned, a TCustomHintAction is created 
and executed to get the value for the Hint property. OnActionExecute can then 
be used to intercept and fulfill the request for Hint text.
</p>
</descr>
<seealso>
<link id="TApplication.Hint"/>
<link id="TApplication.AddOnHintHandler"/>
<link id="TApplication.RemoveOnHintHandler"/>
<link id="TApplication.OnActionExecute"/>
<link id="TApplicationHandlerType"/>
<link id="TCustomHintAction"/>
</seealso>
</element>

<element name="TApplication.OnShortcut">
<short>
Event handler signalled to determine if a keystroke message is a shortcut key 
in the application.
</short>
<descr>
<p>
<var>OnShortcut</var> is a <var>TShortcutEvent</var> property with the event 
handler signalled to determine if a keystroke message is a shortcut (or 
accelerator) key in the application. It is signalled (when assigned) from the 
<var>IsShortcut</var> method, and occurs before the OnShortcut event handlers 
for other forms are checked.
</p>
<p>
This event handler can interpret keystrokes as shortcuts, before the normal 
target handles the key. The event handler can set its <var>Handled</var> 
argument to <b>True</b> when the <var>Msg</var> argument contains a shortcut 
keystroke specific to the application. This prevents the OnShortcut event 
handlers in the application forms from being notified.
</p>
</descr>
<seealso>
<link id="TApplication.IsShortcut"/>
<link id="TShortCutEvent"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.OnShowHint">
<short>
Event handler signalled prior to displaying a hint window.
</short>
<descr>
<p>
<var>OnShowHint</var> is a <var>TShowHintEvent</var> property with the event 
handler signalled prior to displaying a hint window for the application.
</p>
<p>
It is signalled (when assigned) from the <var>ShowHintWindow</var> method 
when <var>ShowHint</var> has been enabled in the application. It occurs after 
<var>HintControl</var> has been assigned to the hint window, and the position 
for the hint window relative to HintControl has been calculated. It occurs 
before other application handlers using the ahtShowHint type are notified, 
and the hint window is made visible and activated.
</p>
</descr>
<seealso>
<link id="TApplication.ShowHintWindow"/>
<link id="TApplication.AddOnShowHintHandler"/>
<link id="TApplication.RemoveOnShowHintHandler"/>
<link id="THintWindow.HintControl"/>
<link id="THintWindow.HintData"/>
<link id="THintWindow.HintRect"/>
<link id="TShowHintEvent"/>
<link id="TApplicationHandlerType"/>
</seealso>
</element>

<element name="TApplication.OnUserInput">
<short>
Event handler signalled to handle user input messages.
</short>
<descr>
<p>
<var>OnUserInput</var> is a <var>TOnUserInputEvent</var> property with the 
event handler signalled when an input message is available in the processing 
loop for the widgetset class. It is signalled (when assigned) from the 
<var>NotifyUserInputHandler</var> method, and occurs before other application 
handlers using the <var>ahtUserInput</var> type are notified.
</p>
</descr>
<seealso>
<link id="TApplicationHandlerType"/>
<link id="TApplication.NotifyUserInputHandler"/>
<link id="TOnUserInputEvent"/>
</seealso>
</element>

<element name="TApplication.OnDestroy">
<short>Event handler signalled when the application is freed.</short>
<descr>
<p>
<var>OnDestroy</var> is signalled from the <var>Destroy</var> destructor 
prior to freeing resources allocated in the application class instance. It 
provides the first opportunity to respond to application shutdown after 
<var>Flags</var> has been updated to include the <var>AppDestroying</var> 
enumeration value.
</p>
</descr>
<seealso>
<link id="TApplication.Destroy"/>
<link id="TApplication.Flags"/>
<link id="TApplicationFlags"/>
</seealso>
</element>

<element name="TApplication.OnCircularException">
<short>
Event handler signalled when a circular exception occurs before the 
application is halted.
</short>
<descr>
<p>
<var>OnCircularException</var> is a <var>TExceptionEvent</var> property with 
the event handler signalled when a circular exception occurs in an 
application. It is signalled from the <var>HandleException</var> method when 
another Exception occurs within the exception handler.
</p>
</descr>
<seealso>
<link id="TApplication.HandleException"/>
<link id="TExceptionEvent"/>
</seealso>
</element>

<element name="TApplication.ShowButtonGlyphs">
<short>
Allows the platform defaults for glyphs on buttons to be overridden.
</short>
<descr>
<p>
Some platforms always show glyphs on buttons, while others do not.
</p>
</descr>
<seealso>
</seealso>
</element>

<element name="TApplication.ShowMenuGlyphs">
<short>
Sets the default policy for showing or hiding glyph images in menus.
</short>
<descr/>
<seealso>
<link id="#lcl.menus.TGlyphShowMode">TGlyphShowMode</link>
</seealso>
</element>

<element name="TApplication.ShowHint">
<short>
Indicates if Hints are displayed for the application.
</short>
<descr>
<p>
<var>ShowHint</var> is a <var>Boolean</var> property which indicates if 
<var>Hints</var> are displayed for the application. It is used when tracking 
the position of the mouse cursor over controls and forms, and determines if 
the items require a hint display. The value is used in ShowHintWindow to 
determine whether the hint window can be activated for the application.
</p>
<p>
The default value for the property is <b>True</b>. Setting the value in 
<var>ShowHint</var> to <b>False</b> causes an existing <var>THintWindow</var> 
instance in the application to be freed.
</p>
<p>
Use the Hint, ShowHint, and ParentShowHint properties in TControl to determine 
whether that particular control can display a hint.
</p>
</descr>
<seealso>
<link id="TApplicationProperties.ShowHint"/>
<link id="TForm.ShowHint"/>
<link id="TControl.ParentShowHint"/>
<link id="THintWindow"/>
</seealso>
</element>

<element name="TApplication.ShowMainForm">
<short>
Allows the main form to be shown or hidden when an application is started.
</short>
<descr>
<p>
Allows the main form to be shown or hidden when an application is started. 
The default value for the property is <b>True</b> as assigned in the 
<var>Create</var> constructor.
</p>
<p>
The property value is updated at run-time when a new value is assigned to the 
<var>ShowMainForm</var> property in <var>TApplicationProperties</var>.
</p>
<p>
ShowMainForm is used in the <var>Run</var> method to determine if the 
<var>Show</var> method is called for an assigned <var>MainForm</var> 
instance. The form is displayed prior to calling the <var>AppRun</var> method 
in the widgetset class.
</p>
</descr>
<seealso/>
</element>

<element name="TApplication.Title">
<short>Contains the title for the application.</short>
<descr>
<p>
The read and write access specifiers for the property are overridden in 
<var>TApplication</var>. Read access ensures that an empty title defaults to 
the file name (without path information) for the application executable file. 
Write access ensures that a new value for the property is applied to the 
widgetset class using its <var>AppSetTitle</var> method.
</p>
<remark>
For the macOS Carbon widgetset, Title cannot be changed at run-time. It must 
be changed in the Application Bundle.
</remark>
</descr>
<seealso>
<link id="#fcl.CustApp.TCustomApplication.Title">TCustomApplication.Title</link>
</seealso>
</element>

<element name="TApplication.Scaled">
<short>
Indicates if forms and controls in the application can be scaled to different 
display densities (Pixels per Inch).
</short>
<descr>
<p>
<var>Scaled</var> is a <var>Boolean</var> property which indicates if the 
application can be scaled between differing display densities (Pixels per 
Inch) at run-time. The default value for the property is normally set in the 
project file used to compile the application and its forms and controls.
</p>
<p>
When Scaled is set to <b>True</b>, the application allows the design-time 
PixelsPerInch value to be adjusted to reflect the run-time value. Forms, 
frames, image lists, and other controls also have a Scaled property which 
determines if the feature is enabled for that particular class type. If 
Scaled is set to <b>False</b> in TApplication, the feature is disabled for 
all of the other class types. Scaled (at the application-level) is normally 
checked before the component- or control-level setting.
</p>
</descr>
<seealso/>
</element>

<element name="DefaultApplicationBiDiMode">
<short>
Contains the default BiDiMode value used for the current LCL version.
</short>
<descr>
<p>
The default value is <var>bdLeftToRight</var>.
</p>
</descr>
<seealso/>
</element>

<element name="DefHintColor">
<short>The default hint window background color.</short>
<descr/>
<seealso/>
</element>

<element name="DefHintPause">
<short>
The default pause before the hint window is displayed (in milliseconds).
</short>
<descr/>
<seealso/>
</element>

<element name="DefHintShortPause">
<short>
The default pause (in milliseconds) before a Hint is re-displayed.
</short>
<descr/>
<seealso/>
</element>

<element name="DefHintHidePause">
<short>
The default pause (in milliseconds) before a hint is hidden.
</short>
<descr/>
<seealso/>
</element>

<element name="DefHintHidePausePerChar">
<short>
The default pause (in milliseconds) added to DefHintHidePause.
</short>
<descr/>
<seealso/>
</element>

<element name="TApplicationProperties">
<short>
A component that provides access to the properties for the current 
application.
</short>
<descr>
<p>
<var>TApplicationProperties</var> is a non-visual component used to provide 
design-time settings that are applied at run-time to an application, 
including:
</p>
<ul>
<li>CaptureExceptions</li>
<li>HelpFile</li>
<li>Hint</li>
<li>HintColor</li>
<li>HintHidePause</li>
<li>HintPause</li>
<li>HintShortCuts</li>
<li>HintShortPause</li>
<li>ShowButtonGlyphs</li>
<li>ShowMenuGlyphs</li>
<li>ShowHint</li>
<li>ShowMainForm</li>
<li>Title</li>
<li>OnException</li>
<li>OnGetMainFormHandle</li>
<li>OnIdle</li>
<li>OnIdleEnd</li>
<li>OnEndSession</li>
<li>OnQueryEndSession</li>
<li>OnMinimize</li>
<li>OnModalBegin</li>
<li>OnModalEnd</li>
<li>OnRestore</li>
<li>OnDropFiles</li>
<li>OnHelp</li>
<li>OnHint</li>
<li>OnShowHint</li>
<li>OnUserInput</li>
</ul>
<p>
Values for the properties are assigned in the constructor using the currently 
assigned values in the <var>Application</var> singleton. The assignments can 
be maintained at design-time.
</p>
<p>
At run-time, changes to the properties are also assigned to the 
<var>Application</var> singleton. For event handler properties, the previous 
routine is removed as a handler and the new handler is added to the 
<var>Application</var> singleton. When the component is freed, the event 
handlers are removed from the <var>Application</var> singleton. The changed 
properties are not assigned to the <var>Application</var> singleton at 
design-time.
</p>
<p>
<var>TApplicationProperties</var> is available on the <b>Additional</b> tab 
in the Lazarus IDE Component Palette. <var>TApplicationProperties</var> is 
similar to the TApplicationEvents class in Delphi.
</p>
</descr>
<seealso>
<link id="TApplicationProperties.Create"/>
<link id="TApplication"/>
<link id="Application"/>
</seealso>
</element>

<element name="TApplicationProperties.FCaptureExceptions" link="#lcl.forms.TApplicationProperties.CaptureExceptions"/>
<element name="TApplicationProperties.FExceptionDialogType"/>
<element name="TApplicationProperties.FHelpFile" link="#lcl.forms.TApplicationProperties.HelpFile"/>
<element name="TApplicationProperties.FHint" link="#lcl.forms.TApplicationProperties.Hint"/>
<element name="TApplicationProperties.FHintColor" link="#lcl.forms.TApplicationProperties.HintColor"/>
<element name="TApplicationProperties.FHintHidePause" link="#lcl.forms.TApplicationProperties.HintHidePause"/>
<element name="TApplicationProperties.FHintPause" link="#lcl.forms.TApplicationProperties.HintPause"/>
<element name="TApplicationProperties.FHintShortCuts" link="#lcl.forms.TApplicationProperties.HintShortCuts"/>
<element name="TApplicationProperties.FHintShortPause" link="#lcl.forms.TApplicationProperties.HintShortPause"/>
<element name="TApplicationProperties.FOnActivate"/>
<element name="TApplicationProperties.FOnDeactivate"/>
<element name="TApplicationProperties.FOnDropFiles" link="#lcl.forms.TApplicationProperties.OnDropFiles"/>
<element name="TApplicationProperties.FOnGetMainFormHandle" link="#lcl.forms.TApplicationProperties.OnGetMainFormHandle"/>
<element name="TApplicationProperties.FOnModalBegin" link="#lcl.forms.TApplicationProperties.OnModalBegin"/>
<element name="TApplicationProperties.FOnModalEnd" link="#lcl.forms.TApplicationProperties.OnModalEnd"/>
<element name="TApplicationProperties.FShowButtonGlyphs" link="#lcl.forms.TApplicationProperties.ShowButtonGlyphs"/>
<element name="TApplicationProperties.FShowHint" link="#lcl.forms.TApplicationProperties.ShowHint"/>
<element name="TApplicationProperties.FShowMainForm" link="#lcl.forms.TApplicationProperties.ShowMainForm"/>
<element name="TApplicationProperties.FShowMenuGlyphs" link="#lcl.forms.TApplicationProperties.ShowMenuGlyphs"/>
<element name="TApplicationProperties.FTitle" link="#lcl.forms.TApplicationProperties.Title"/>
<element name="TApplicationProperties.FOnException" link="#lcl.forms.TApplicationProperties.OnException"/>
<element name="TApplicationProperties.FOnIdle" link="#lcl.forms.TApplicationProperties.OnIdle"/>
<element name="TApplicationProperties.FOnIdleEnd" link="#lcl.forms.TApplicationProperties.OnIdleEnd"/>
<element name="TApplicationProperties.FOnHelp" link="#lcl.forms.TApplicationProperties.OnHelp"/>
<element name="TApplicationProperties.FOnHint" link="#lcl.forms.TApplicationProperties.OnHint"/>
<element name="TApplicationProperties.FOnShowHint" link="#lcl.forms.TApplicationProperties.OnShowHint"/>
<element name="TApplicationProperties.FOnUserInput" link="#lcl.forms.TApplicationProperties.OnUserInput"/>
<element name="TApplicationProperties.FOnEndSession" link="#lcl.forms.TApplicationProperties.OnEndSession"/>
<element name="TApplicationProperties.FOnQueryEndSession" link="#lcl.forms.TApplicationProperties.OnQueryEndSession"/>
<element name="TApplicationProperties.FOnMinimize" link="#lcl.forms.TApplicationProperties.OnMinimize"/>
<element name="TApplicationProperties.FOnRestore" link="#lcl.forms.TApplicationProperties.OnRestore"/>
<element name="TApplicationProperties.FOnActionExecute"/>
<element name="TApplicationProperties.FOnActionUpdate"/>

<element name="TApplicationProperties.SetExceptionDialog">
<short>Sets the value for the ExceptionDialog property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.ExceptionDialog"/>
</seealso>
</element>
<element name="TApplicationProperties.SetExceptionDialog.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetCaptureExceptions">
<short>Sets the value for the CaptureExceptions property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.CaptureExceptions"/>
</seealso>
</element>
<element name="TApplicationProperties.SetCaptureExceptions.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetHelpFile">
<short>Sets the value for the HelpFile property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.HelpFile"/>
</seealso>
</element>
<element name="TApplicationProperties.SetHelpFile.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetHint">
<short>Sets the value for the Hint property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.Hint"/>
</seealso>
</element>
<element name="TApplicationProperties.SetHint.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetHintColor">
<short>Sets the value for the HintColor property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.HintColor"/>
</seealso>
</element>
<element name="TApplicationProperties.SetHintColor.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetHintHidePause">
<short>Sets the value for the HintHidePause property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.HintHidePause"/>
</seealso>
</element>
<element name="TApplicationProperties.SetHintHidePause.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetHintPause">
<short>Sets the value for the HintPause property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.HintPause"/>
</seealso>
</element>
<element name="TApplicationProperties.SetHintPause.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetHintShortCuts">
<short>Sets the value for the HintShortCuts property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.HintShortCuts"/>
</seealso>
</element>
<element name="TApplicationProperties.SetHintShortCuts.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetHintShortPause">
<short>Sets the value for the HintShortPause property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.HintShortPause"/>
</seealso>
</element>
<element name="TApplicationProperties.SetHintShortPause.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetShowButtonGlyphs">
<short>Sets the value for the ShowButtonGlyphs property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.ShowButtonGlyphs"/>
</seealso>
</element>
<element name="TApplicationProperties.SetShowButtonGlyphs.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetShowMenuGlyphs">
<short>Sets the value for the ShowMenuGlyphs property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.ShowMenuGlyphs"/>
</seealso>
</element>
<element name="TApplicationProperties.SetShowMenuGlyphs.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetShowHint">
<short>Sets the value for the ShowHint property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.ShowHint"/>
</seealso>
</element>
<element name="TApplicationProperties.SetShowHint.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetShowMainForm">
<short>Sets the value for the ShowMainForm property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.ShowMainForm"/>
</seealso>
</element>
<element name="TApplicationProperties.SetShowMainForm.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetTitle">
<short>Sets the value for the Title property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.Title"/>
</seealso>
</element>
<element name="TApplicationProperties.SetTitle.AValue">
<short>New value for the property.</short>
</element>
<element name="TApplicationProperties.SetOnActivate">
<short>Sets the value for the OnActivate property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnActivate"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnActivate.AValue">
<short>New value for the property.</short>
</element>
<element name="TApplicationProperties.SetOnDeactivate">
<short>Sets the value for the OnDeactivate property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnDeactivate"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnDeactivate.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnException">
<short>Sets the value for the OnException property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnException"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnException.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnGetMainFormHandle">
<short>Sets the value for the OnGetMainFormHandle property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnGetMainFormHandle"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnGetMainFormHandle.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnIdle">
<short>Sets the value for the OnIdle property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnIdle"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnIdle.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnIdleEnd">
<short>Sets the value for the OnIdleEnd property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnIdleEnd"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnIdleEnd.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnEndSession">
<short>Sets the value for the OnEndSession property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnEndSession"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnEndSession.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnQueryEndSession">
<short>Sets the value for the OnQueryEndSession property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnQueryEndSession"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnQueryEndSession.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnMinimize">
<short>Sets the value for the OnMinimize property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnMinimize"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnMinimize.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnModalBegin">
<short>Sets the value for the OnModalBegin property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnModalBegin"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnModalBegin.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnModalEnd">
<short>Sets the value for the OnModalEnd property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnModalEnd"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnModalEnd.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnRestore">
<short>Sets the value for the OnRestore property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnRestore"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnRestore.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnDropFiles">
<short>Sets the value for the OnDropFiles property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnDropFiles"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnDropFiles.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnHelp">
<short>Sets the value for the OnHelp property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnHelp"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnHelp.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnHint">
<short>Sets the value for the OnHint property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnHint"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnHint.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnShowHint">
<short>Sets the value for the OnShowHint property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnShowHint"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnShowHint.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnUserInput">
<short>Sets the value for the OnUserInput property.</short>
<descr/>
<seealso>
<link id="TApplicationProperties.OnUserInput"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnUserInput.AValue">
<short>New value for the property.</short>
</element>

<element name="TApplicationProperties.SetOnActionExecute">
<short>
Sets the value for the OnActionExecute property.
</short>
<descr/>
<seealso>
<link id="#lcl.forms.TApplicationProperties.OnActionExecute"/>
<link id="#lcl.forms.TApplication.RemoveOnActionExecuteHandler"/>
<link id="#lcl.forms.TApplication.AddOnActionExecuteHandler"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnActionExecute.AValue">
<short>
New value for the OnActionExecute property.
</short>
</element>

<element name="TApplicationProperties.SetOnActionUpdate">
<short>
Sets the value for the OnActionUpdate property.
</short>
<descr/>
<seealso>
<link id="#lcl.forms.TApplicationProperties.OnActionUpdate"/>
<link id="#lcl.forms.TApplication.RemoveOnActionUpdateHandler"/>
<link id="#lcl.forms.TApplication.AddOnActionUpdateHandler"/>
</seealso>
</element>
<element name="TApplicationProperties.SetOnActionUpdate.AValue">
<short>
New value for the OnActionUpdate property.
</short>
</element>

<element name="TApplicationProperties.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the constructor for TApplicationProperties. Create calls 
the inherited <var>Create</var> method, and sets the defaults values when a 
new application is being designed, or loads local values for an existing 
application.
</p>
</descr>
<seealso>
<link id="#rtl.Classes.TComponent.Create">TComponent.Create</link>
</seealso>
</element>
<element name="TApplicationProperties.Create.AOwner">
<short>Owner of the class instance.</short>
</element>

<element name="TApplicationProperties.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance. 
<var>Destroy</var> ensures that event handlers in the class instance are 
removed from the handlers registered in the global <var>TApplication</var> 
instance.
</p>
<remark>
Event handlers are not removed from the Application variable at design-time; 
they were not added at design-time either.
</remark>
<p>
<var>Destroy</var> calls the inherited destructor prior to exiting from the 
method.
</p>
</descr>
<seealso>
<link id="TApplicationProperties.OnActivate"/>
<link id="TApplicationProperties.OnDeactivate"/>
<link id="TApplicationProperties.OnException"/>
<link id="TApplicationProperties.OnGetMainFormHandle"/>
<link id="TApplicationProperties.OnIdle"/>
<link id="TApplicationProperties.OnIdleEnd"/>
<link id="TApplicationProperties.OnEndSession"/>
<link id="TApplicationProperties.OnQueryEndSession"/>
<link id="TApplicationProperties.OnMinimize"/>
<link id="TApplicationProperties.OnModalBegin"/>
<link id="TApplicationProperties.OnModalEnd"/>
<link id="TApplicationProperties.OnRestore"/>
<link id="TApplicationProperties.OnDropFiles"/>
<link id="TApplicationProperties.OnHelp"/>
<link id="TApplicationProperties.OnHint"/>
<link id="TApplicationProperties.OnShowHint"/>
<link id="TApplicationProperties.OnUserInput"/>
</seealso>
</element>
<element name="TApplicationProperties.CaptureExceptions" link="#lcl.forms.TApplication.CaptureExceptions"/>
<element name="TApplicationProperties.ExceptionDialog">
<short>Indicates the dialog type displayed for an exception.</short>
<descr>The default value is aedOkCancelDialog.</descr>
<seealso/>
</element>

<element name="TApplicationProperties.HelpFile">
<short>Contains the name for the help file in an application.</short>
<descr>
<p>
<var>HelpFile</var> is a <var>String</var> property with the name of the help 
file for an application. It is read from or written to the HelpFile property 
in the Application singleton. Changing the value for the property at run-time 
causes the Application instance to be updated.
</p>
</descr>
<seealso>
<link id="TCustomForm.HelpFile"/>
<link id="Application"/>
</seealso>
</element>

<element name="TApplicationProperties.Hint" link="#lcl.forms.TApplication.Hint"/>
<element name="TApplicationProperties.HintColor" link="#lcl.forms.TApplication.HintColor"/>
<element name="TApplicationProperties.HintHidePause" link="#lcl.forms.TApplication.HintHidePause"/>
<element name="TApplicationProperties.HintPause" link="#lcl.forms.TApplication.HintPause"/>
<element name="TApplicationProperties.HintShortCuts" link="#lcl.forms.TApplication.HintShortCuts"/>
<element name="TApplicationProperties.HintShortPause" link="#lcl.forms.TApplication.HintShortPause"/>
<element name="TApplicationProperties.ShowButtonGlyphs" link="#lcl.forms.TApplication.ShowButtonGlyphs"/>
<element name="TApplicationProperties.ShowMenuGlyphs" link="#lcl.forms.TApplication.ShowMenuGlyphs"/>
<element name="TApplicationProperties.ShowHint" link="#lcl.forms.TApplication.ShowHint"/>
<element name="TApplicationProperties.ShowMainForm" link="#lcl.forms.TApplication.ShowMainForm"/>
<element name="TApplicationProperties.Title" link="#lcl.forms.TApplication.Title"/>
<element name="TApplicationProperties.OnActivate" link="#lcl.forms.TApplication.OnActivate"/>
<element name="TApplicationProperties.OnDeactivate" link="#lcl.forms.TApplication.OnDeactivate"/>

<element name="TApplicationProperties.OnException">
<short>
Event handler signalled to handle an exception in an application.
</short>
<descr>
<p>
OnException is a TExceptionEvent property with an event handler signalled to 
handle an exception in an application. Its value is assigned to the 
OnException property in the Application singleton at run-time.
</p>
<p>
Changing the value for the property at run-time causes the Application 
singleton to be updated.
</p>
</descr>
<seealso>
<link id="Application"/>
<link id="TApplication.HandleException"/>
<link id="#fcl.custapp.TCustomApplication.OnException">TCustomApplication.OnException</link>
</seealso>
</element>

<element name="TApplicationProperties.OnGetMainFormHandle" link="#lcl.forms.TApplication.OnGetMainFormHandle"/>
<element name="TApplicationProperties.OnIdle" link="#lcl.forms.TApplication.OnIdle"/>
<element name="TApplicationProperties.OnIdleEnd" link="#lcl.forms.TApplication.OnIdleEnd"/>
<element name="TApplicationProperties.OnEndSession" link="#lcl.forms.TApplication.OnEndSession"/>
<element name="TApplicationProperties.OnQueryEndSession" link="#lcl.forms.TApplication.OnQueryEndSession"/>
<element name="TApplicationProperties.OnMinimize" link="#lcl.forms.TApplication.OnMinimize"/>
<element name="TApplicationProperties.OnModalBegin" link="#lcl.forms.TApplication.OnModalBegin"/>
<element name="TApplicationProperties.OnModalEnd" link="#lcl.forms.TApplication.OnModalEnd"/>
<element name="TApplicationProperties.OnRestore" link="#lcl.forms.TApplication.OnRestore"/>
<element name="TApplicationProperties.OnDropFiles" link="#lcl.forms.TApplication.OnDropFiles"/>
<element name="TApplicationProperties.OnHelp" link="#lcl.forms.TApplication.OnHelp"/>
<element name="TApplicationProperties.OnHint" link="#lcl.forms.TApplication.OnHint"/>
<element name="TApplicationProperties.OnShowHint" link="#lcl.forms.TApplication.OnShowHint"/>
<element name="TApplicationProperties.OnUserInput" link="#lcl.forms.TApplication.OnUserInput"/>
<element name="TApplicationProperties.OnActionExecute" link="#lcl.forms.TApplication.OnActionExecute"/>
<element name="TApplicationProperties.OnActionUpdate" link="#lcl.forms.TApplication.OnActionUpdate"/>

<element name="TIDesigner">
<short>The abstract base class for visual Form designers.</short>
<descr>
<p>
<var>TIDesigner</var> is a <var>TObject</var> descendant which specifies the 
interface used for visual Form designers. TIDesigner is the type used for 
the <var>TCustomForm.Designer</var> property.
</p>
<p>
It is used as the ancestor for <var>TComponentEditorDesigner</var>, and the 
type expected in the RootDesigner for the Object Inspector and Property 
editors used in the Lazarus IDE.
</p>
</descr>
<seealso>
<link id="TCustomForm.Designer"/>
<link id="FindRootDesigner"/>
</seealso>
</element>

<element name="TIDesigner.FLookupRoot">
<short>Member with the value for the LookupRoot property.</short>
</element>

<element name="TIDesigner.FDefaultFormBoundsValid">
<short>Member with the value for the DefaultFormBoundsValid property.</short>
</element>

<element name="TIDesigner.IsDesignMsg">
<short>
Checks a message received from the Sender argument, and returns <b>True</b> if 
it is a design message.
</short>
<descr/>
<seealso/>
</element>
<element name="TIDesigner.IsDesignMsg.Result">
<short>
<b>True</b> if the message is targeted at the designer class instance.
</short>
</element>
<element name="TIDesigner.IsDesignMsg.Sender">
<short>
Object instance (TControl) where the specified message originated.
</short>
</element>
<element name="TIDesigner.IsDesignMsg.Message">
<short>
Message examined in the method.
</short>
</element>

<element name="TIDesigner.UTF8KeyPress">
<short>
Defines the method used to handle a key press event for a UTF-8-encoded 
character.
</short>
<descr/>
<seealso/>
</element>
<element name="TIDesigner.UTF8KeyPress.UTF8Key">
<short>UTF-8-encoded character for the key press event.</short>
</element>

<element name="TIDesigner.Modified">
<short>Method when design is <var>Modified</var>.</short>
<descr/>
<seealso/>
</element>

<element name="TIDesigner.Notification">
<short>
<var>Notification</var> that the supplied Operation has been applied to the
specified Component.
</short>
<descr/>
<seealso/>
</element>
<element name="TIDesigner.Notification.AComponent">
<short>
Component affected by the notification.
</short>
</element>
<element name="TIDesigner.Notification.Operation">
<short>
Operation performed on the component.
</short>
</element>

<element name="TIDesigner.PaintGrid">
<short>
<var>PaintGrid</var> - method for painting the grid in the designer.</short>
<descr/>
<seealso/>
</element>

<element name="TIDesigner.ValidateRename">
<short>
<var>ValidateRename</var> - method to validate the Rename process.</short>
<descr/>
<seealso/>
</element>
<element name="TIDesigner.ValidateRename.AComponent">
<short/>
</element>
<element name="TIDesigner.ValidateRename.CurName">
<short/>
</element>
<element name="TIDesigner.ValidateRename.NewName">
<short/>
</element>

<element name="TIDesigner.GetShiftState">
<short>
Gets the value for the shift state (whether Shift, Ctrl, or Alt key).
</short>
<descr/>
<seealso/>
</element>
<element name="TIDesigner.GetShiftState.Result">
<short>Shift, Ctrl, Alt modifier for the designer.</short>
</element>

<element name="TIDesigner.SelectOnlyThisComponent">
<short>
Method to select only the current component in the designer.
</short>
<descr/>
<seealso/>
</element>
<element name="TIDesigner.SelectOnlyThisComponent.AComponent">
<short/>
</element>

<element name="TIDesigner.UniqueName">
<short>
Returns a Unique name for the designer, using the BaseName as a starting 
point.
</short>
<descr/>
<seealso/>
</element>
<element name="TIDesigner.UniqueName.Result">
<short/>
</element>
<element name="TIDesigner.UniqueName.BaseName">
<short/>
</element>

<element name="TIDesigner.PrepareFreeDesigner">
<short>Prepares the design surface and frees the root control.</short>
<descr/>
<seealso/>
</element>
<element name="TIDesigner.PrepareFreeDesigner.AFreeComponent">
<short/>
</element>

<element name="TIDesigner.LookupRoot">
<short>Component that is the root control in the form design surface.</short>
<descr/>
<seealso/>
</element>

<element name="TIDesigner.DefaultFormBoundsValid">
<short>
Indicates whether the bounds are valid after moving or sizing the form on the 
design surface.
</short>
<descr/>
<seealso/>
</element>

<element name="TFormPropertyStorage">
<short>
<var>TFormPropertyStorage</var> - class for storage of a Form's properties.
</short>
<descr>
<p>
<var>TFormPropertyStorage</var> is a <var>TControlPropertyStorage</var> 
descendant which extends the ancestor class to read and write form values. It 
provides additional methods called when a form is created, closed, or freed. 
TFormPropertyStorage is the base class for descendants like 
<var>TCustomIniPropStorage</var>, <var>TCustomJSONPropStorage</var>, and 
<var>TCustomXMLPropStorage</var>.
</p>
</descr>
<seealso/>
</element>

<element name="TFormPropertyStorage.FormCreate">
<short>
Handler routine used as an OnCreate handler in the Owner of the class 
instance.
</short>
<descr>
Calls the Restore method.
</descr>
<seealso/>
</element>
<element name="TFormPropertyStorage.FormCreate.Sender">
<short>Form which owns the class instance.</short>
</element>

<element name="TFormPropertyStorage.FormClose">
<short>
Handler routine used as an OnClose handler in the Owner of the class instance.
</short>
<descr/>
<seealso/>
</element>
<element name="TFormPropertyStorage.FormClose.Sender">
<short>Form which owns the class instance.</short>
</element>
<element name="TFormPropertyStorage.FormClose.CloseAction">
<short>Close action performed in the method.</short>
</element>

<element name="TFormPropertyStorage.FormDestroy">
<short>
Handler routine used as an OnDestroy handler in the Owner of the class 
instance.
</short>
<descr/>
<seealso/>
</element>
<element name="TFormPropertyStorage.FormDestroy.Sender">
<short>Form which owns the class instance.</short>
</element>

<element name="TFormPropertyStorage.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
Create is the overridden constructor for the class instance. It calls the 
inherited method on entry, using the value in TheOwner as the Owner for the 
class instance. Create ensures that private methods in the class instance are 
assigned as event handler routines for the TCustomForm instance in TheOwner.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.Create">TComponent.Create</link>
</seealso>
</element>
<element name="TFormPropertyStorage.Create.TheOwner">
<short>TCustomForm instance which owns the class instance.</short>
</element>

<element name="TFormPropertyStorage.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
Destroy is the overridden destructor for the class instance. It ensures that 
event handler routines, assigned in the constructor to the form which owns 
the class instance, are removed before the class instance is freed. It calls 
the inherited destructor prior to exit.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.Destroy">TComponent.Destroy</link>
</seealso>
</element>

<element name="KeysToShiftState">
<short>
Converts modifier keys in the LParam for a mouse message to a TShiftState 
value.
</short>
<descr>
<p>
<var>KeysToShiftState</var> returns a <var>TShiftState</var> type with the 
<var>TShiftStateEnum</var> values needed to represent the mouse key states in 
the <var>Keys</var> argument. KeysToShiftState <b>AND</b>s the value in Keys 
with RTL mouse key constants to determine the values in the set, including:
</p>
<dl>
<dt>MK_Shift</dt>
<dd>Includes ssShift for a non-zero result.</dd>
<dt>MK_Control</dt>
<dd>Includes ssCtrl for a non-zero result.</dd>
<dt>MK_LButton</dt>
<dd>Includes ssLeft for a non-zero result.</dd>
<dt>MK_RButton</dt>
<dd>Includes ssRight for a non-zero result.</dd>
<dt>MK_MButton</dt>
<dd>Includes ssMiddle for a non-zero result.</dd>
<dt>MK_XBUTTON1</dt>
<dd>Includes ssExtra1 for a non-zero result.</dd>
<dt>MK_XBUTTON2</dt>
<dd>Includes ssExtra2 for a non-zero result.</dd>
<dt>MK_DOUBLECLICK</dt>
<dd>Includes ssDouble for a non-zero result.</dd>
<dt>MK_TRIPLECLICK</dt>
<dd>Includes ssTriple for a non-zero result.</dd>
<dt>MK_QUADCLICK</dt>
<dd>Includes ssQuad for a non-zero result.</dd>
</dl>
<p>
GetKeyState is also called, and the following virtual key codes are processed 
for the return value:
</p>
<dl>
<dt>VK_MENU</dt>
<dd>Includes ssAlt when the result is a negative number.</dd>
<dt>VK_LWIN, VK_RWIN</dt>
<dd>Includes ssMeta when the result is a negative number.</dd>
</dl>
<p>
KeysToShiftState is used to translate the key values for mouse messages in 
methods like DoMouseDown, DoMouseUp, and WMMouseMove in TControl.
</p>
</descr>
<seealso>
<link id="ShiftStateToKeys"/>
<link id="KeyDataToShiftState"/>
<link id="#rtl.classes.TShiftState">TShiftState</link>
<link id="#lcl.lcltype.MK_SHIFT">MK_SHIFT</link>
<link id="#lcl.lcltype.MK_CONTROL">MK_CONTROL</link>
<link id="#lcl.lcltype.MK_LBUTTON">MK_LBUTTON</link>
<link id="#lcl.lcltype.MK_RBUTTON">MK_RBUTTON</link>
<link id="#lcl.lcltype.MK_MBUTTON">MK_MBUTTON</link>
<link id="#lcl.lcltype.MK_XBUTTON1">MK_XBUTTON1</link>
<link id="#lcl.lcltype.MK_XBUTTON2">MK_XBUTTON2</link>
</seealso>
</element>
<element name="KeysToShiftState.Result">
<short>
Set type with the TShiftStateEnum values representing the specified Keys.
</short>
</element>
<element name="KeysToShiftState.Keys">
<short>
Pointer to an unsigned Integer with the mouse key states examined in the 
routine.
</short>
</element>

<element name="KeyDataToShiftState">
<short>
Converts modifier keys from the LParam in a keyboard message (WM_KEYUP for
example) to a TShiftState value.
</short>
<descr>
<p>
Calls MsgKeyDataToShiftState in the lclintf.pas unit to get the TShiftState 
return value.
</p>
</descr>
<seealso>
<link id="KeysToShiftState"/>
<link id="ShiftStateToKeys"/>
<link id="#lcl.lclintf.MsgKeyDataToShiftState">MsgKeyDataToShiftState</link>
<link id="#lcl.lcltype.MK_SHIFT">MK_SHIFT</link>
<link id="#lcl.lcltype.MK_CONTROL">MK_CONTROL</link>
<link id="#lcl.lcltype.MK_LBUTTON">MK_LBUTTON</link>
<link id="#lcl.lcltype.MK_RBUTTON">MK_RBUTTON</link>
<link id="#lcl.lcltype.MK_MBUTTON">MK_MBUTTON</link>
<link id="#lcl.lcltype.MK_XBUTTON1">MK_XBUTTON1</link>
<link id="#lcl.lcltype.MK_XBUTTON2">MK_XBUTTON2</link>
<link id="#rtl.classes.TShiftState">TShiftState</link>
</seealso>
</element>
<element name="KeyDataToShiftState.Result">
<short>
Set type with the TShiftStateEnum values representing the specified KeyData.
</short>
</element>
<element name="KeyDataToShiftState.KeyData">
<short>
PtrInt value with the address for the key data examined in the routine.
</short>
</element>

<element name="KeyboardStateToShiftState">
<short>
Converts virtual key state codes to TShiftState values.
</short>
<descr>
<p>
Calls GetKeyState to get the virtual key codes for the following:
</p>
<ul>
<li>VK_SHIFT</li>
<li>VK_CONTROL</li>
<li>VK_MENU</li>
<li>VK_LWIN</li>
<li>VK_RWIN</li>
</ul>
<p>
The return value is a set type with the TShiftState values corresponding to 
the virtual key codes. It may be an empty set when none of the virtual keys 
are detected.
</p>
</descr>
<seealso/>
</element>
<element name="KeyboardStateToShiftState.Result">
<short>
Set type with the TShiftStateEnum values representing the current key states.
</short>
</element>

<element name="ShiftStateToKeys">
<short>
Converts a shift state into a key state value compatible with the key state 
of a Windows API LParam.
</short>
<descr>
<p>
The return value is a PtrUInt type and contains an OR'ed combination of the 
following constants:
</p>
<ul>
<li>MK_Shift</li>
<li>MK_Control</li>
<li>MK_LButton</li>
<li>MK_RButton</li>
<li>MK_MButton</li>
<li>MK_XBUTTON1</li>
<li>MK_XBUTTON2</li>
</ul>
</descr>
<seealso>
<link id="#rtl.classes.TShiftState">TShiftState</link>
<link id="KeysToShiftState"/>
<link id="KeyDataToShiftState"/>
<link id="#lcl.lcltype.MK_SHIFT">MK_SHIFT</link>
<link id="#lcl.lcltype.MK_CONTROL">MK_CONTROL</link>
<link id="#lcl.lcltype.MK_LBUTTON">MK_LBUTTON</link>
<link id="#lcl.lcltype.MK_RBUTTON">MK_RBUTTON</link>
<link id="#lcl.lcltype.MK_MBUTTON">MK_MBUTTON</link>
<link id="#lcl.lcltype.MK_XBUTTON1">MK_XBUTTON1</link>
<link id="#lcl.lcltype.MK_XBUTTON2">MK_XBUTTON2</link>
</seealso>
</element>
<element name="ShiftStateToKeys.Result">
<short>
PtrUInt type with the address for the value representing the specified 
ShiftState enumeration values.
</short>
</element>
<element name="ShiftStateToKeys.ShiftState">
<short>
Set type with the TShiftStateEnum values examined in the routine.
</short>
</element>

<element name="WindowStateToStr">
<short>
Converts a TWindowState enumeration value to its String representation.
</short>
<descr>
<p>
<var>WindowStateToStr</var> is a <var>String</var> function used to get the 
string representation for the <var>TWindowState</var> enumeration value in 
the <var>State</var> argument. Calls <var>GetEnumName</var> in 
<file>lazutilities</file> to get the String representation for the value in 
<var>State</var>.
</p>
</descr>
<seealso>
<link id="#rtl.typinfo.GetEnumName">GetEnumName</link>
</seealso>
</element>
<element name="WindowStateToStr.Result">
<short>String representing the specified enumeration value.</short>
</element>
<element name="WindowStateToStr.State">
<short>TWindowState enumeration value converted in the routine.</short>
</element>

<element name="StrToWindowState">
<short>Converts a string to a TWindowState enumeration value.</short>
<descr>
<p>
<var>StrToWindowState</var> is a <var>TWindowState</var> function used to get 
the value from the TWindowState enumeration for the specified string. 
StrToWindowState calls the <var>GetEnumValueDef</var> routine in 
<file>lazutilities</file> to convert the string to its value in the 
TWindowState enumeration. The return value defaults to <var>wsNormal</var> 
when <var>Name</var> does not represent a value in the TWindowState 
enumeration.
</p>
</descr>
<seealso>
<link id="#lazutils.lazutilities.GetEnumValueDef">GetEnumValueDef</link>
</seealso>
</element>
<element name="StrToWindowState.Result">
<short>
TWindowState value for the specified string, or wsNormal by default.
</short>
</element>
<element name="StrToWindowState.Name">
<short>String representation for the window state enumeration value.</short>
</element>

<element name="dbgs">
<short>
Formats debugger messages for various types by converting their values into 
readable text.
</short>
<descr>
<p>
<var>dbgs</var> is overloaded in <file>forms.pp</file>. The overloads handle 
creating textual information for the TWindowState, TCloseAction, and 
TScrollBarKind types. The text is used in DebugLn and WriteLn messages in the 
Lazarus debugger.
</p>
</descr>
<seealso/>
</element>
<element name="dbgs.Result">
<short>
The formatted text with values for the specified argument.
</short>
</element>
<element name="dbgs.State">
<short>
TWindowState instance with values included in the text.
</short>
</element>
<element name="dbgs.Action">
<short>
TCloseAction instance with values included in the text.
</short>
</element>
<element name="dbgs.Kind">
<short>
TScrollBar instance with values included in the text.
</short>
</element>

<element name="TFocusState">
<short>
Pointer to focus state information for the last active control in an 
application.
</short>
<descr>
<p>
Alias for the Pointer type. Used as the return value for the SaveFocusState 
function.
</p>
</descr>
<seealso>
<link id="SaveFocusState"/>
</seealso>
</element>

<element name="SaveFocusState">
<short>
Saves the last focus state (focused control) in an application.
</short>
<descr>
<p>
<var>SaveFocusState</var> returns the value from the LastFocusedControl 
variable in the implementation for the unit. The type used for the return 
value is <var>TFocusState</var>, and is a Pointer to the TWinControl instance 
in LastFocusedControl.
</p>
<p>
SaveFocusState is used, along with RestoreFocusState, in form and dialog 
methods (like SetFocusedControl, ShowModal, and Execute) and when the value in 
FocusedForm is updated in TScreen.
</p>
</descr>
<seealso>
<link id="RestoreFocusState"/>
<link id="TCustomForm.ShowModal"/>
<link id="TCustomForm.SetFocusedControl"/>
<link id="TScreen.FocusedForm"/>
<link id="TFocusState"/>
<link id="#lcl.dialogs.TCommonDialog.Execute">TCommonDialog.Execute</link>
</seealso>
</element>
<element name="SaveFocusState.Result">
<short>Last control which had focus in the application.</short>
</element>

<element name="RestoreFocusState">
<short>
Restores the previous focus state for an application to the specified value.
</short>
<descr/>
<seealso>
<link id="SaveFocusState"/>
<link id="TCustomForm.ShowModal"/>
<link id="TCustomForm.SetFocusedControl"/>
</seealso>
</element>
<element name="RestoreFocusState.FocusState">
<short>
Control set as the focused control in the routine.
</short>
</element>

<element name="TGetDesignerFormEvent">
<short>
Specifies an event handler signalled to get the form with the designer for a 
persistent object.
</short>
<descr>
<p>
<var>TGetDesignerFormEvent</var> is an object function type which specifies 
an event handler signalled to get the form instance with the designer object 
for <var>APersistent</var>. The return value contains the 
<var>TCustomForm</var> instance which contains the designer object for the 
persistent object, and may be unassigned (<b>Nil</b>) if a form hosting 
APersistent cannot be located.
</p>
<p>
TGetDesignerFormEvent is the type used for the <var>OnGetDesignerForm</var> 
variable in the <file>forms</file> unit.
</p>
</descr>
<seealso>
<link id="OnGetDesignerForm"/>
<link id="GetDesignerForm"/>
</seealso>
</element>
<element name="TGetDesignerFormEvent.Result">
<short>
TCustomForm instance with the designer object for the specified persistent 
object.
</short>
</element>
<element name="TGetDesignerFormEvent.APersistent">
<short>
TPersistent instance for the event notification.
</short>
</element>

<element name="TIsFormDesignFunction">
<short>
Specifies a Boolean function type used to implement the routine assigned to 
the IsFormDesign variable.
</short>
<descr>
TIsFormDesignFunction is a Boolean function type used in the IsFormDesign 
variable.
</descr>
<seealso>
<link id="IsFormDesign"/>
</seealso>
</element>
<element name="TIsFormDesignFunction.Result">
<short>
Returns <b>True</b> when the form has csDesignInstance in its component state.
</short>
</element>
<element name="TIsFormDesignFunction.AForm">
<short/>
</element>

<element name="OnGetDesignerForm">
<short>
Event handler signalled to get the designer form for the specified form or 
control.
</short>
<descr>
<p>
OnGetDesignerForm is a TGetDesignerFormEvent variable that contains the event 
handler signalled to get a form with a design surface for the specified form 
or control.
</p>
</descr>
<seealso/>
</element>

<element name="IsFormDesign">
<short>
Address of the function used to determine if a specified control is a form 
designer.
</short>
<descr/>
<seealso/>
</element>

<element name="GetParentForm">
<short>Gets the form instance for the specified Control.</short>
<descr>
<p>
<var>GetParentForm</var> is a <var>TCustomForm</var> function used to the 
form instance for the control specified in the <var>Control</var> argument.
</p>
<p>
Control is the <var>TControl</var> instance examined in the method. The 
<var>Parent</var> property is used to navigate to preceding parent controls 
until a <var>TCustomForm</var> instance is found.
</p>
<p>
<var>TopForm</var> indicates if the top-most form instance in the hierarchy 
is needed. When set to <b>False</b>, the first TCustomForm instance found in 
the control hierarchy is used. Otherwise, all Parent controls in the 
hierarchy are examined until a Parent control has not been assigned.
</p>
<p>
The return value can contain the value in Control if it is a TCustomForm 
descendant and no other form instances are used in the control hierarchy. 
This is Delphi compatible.
</p>
</descr>
<seealso/>
</element>
<element name="GetParentForm.Result">
<short>
Form instance that is the parent for the specified control.
</short>
</element>
<element name="GetParentForm.Control">
<short>
Control used to locate the parent form in the control hierarchy.
</short>
</element>
<element name="GetParentForm.TopForm">
<short>
<b>True</b> if the top-most form instance in the control hierarchy is needed.
</short>
</element>

<element name="GetDesignerForm">
<short>
Gets the Form with the designer object for the specified control or 
persistent object.
</short>
<descr>
<p>
GetDesignerForm is a TCustomForm function used to get the form instance with 
the designer object for the specified control or persistent object instance. 
The function is overloaded to allow use of a TControl or a TPersistent 
instance to locate the form.
</p>
<p>
The return value contains the top-most TCustomForm instance with a TIDesigner 
instance for the value in Control or APersistent. The return value is Nil 
when a form is not found which hosts the specified argument.
</p>
</descr>
<seealso/>
</element>
<element name="GetDesignerForm.Result">
<short>Form instance with the designer for the specified argument.</short>
</element>
<element name="GetDesignerForm.Control">
<short>TControl instance used to locate the owner form.</short>
</element>
<element name="GetDesignerForm.APersistent">
<short>TPersistent instance used to locate the owner form.</short>
</element>

<element name="GetFirstParentForm">
<short>
Performs a recursive search for the first Parent of type TCustomForm.
</short>
<descr>
<p>
<var>GetFirstParentForm</var> is a <var>TCustomForm</var> function used to 
find the first form instance in the Parents for the specified 
<var>Control</var>. GetFirstParentForm calls the <var>GetParentForm</var> 
routine to get the form instance used as the return value. The return value 
is <b>Nil</b> when Control has not been assigned, or a form is not found in 
GetParentForm.
</p>
<p>
GetFirstParentForm is called from the <var>IntfGetDropFilesTarget</var> 
method in <var>TWinControl</var>, and from routines which handle accelerator 
keys for widgetset classes.
</p>
</descr>
<seealso>
<link id="GetParentForm"/>
</seealso>
</element>
<element name="GetFirstParentForm.Result">
<short>
The first custom form instance found by ascending the control hierarchy.
</short>
</element>
<element name="GetFirstParentForm.Control">
<short>
TControl instance where the search for a parent form is started.
</short>
</element>

<element name="GetTopFormSkipNonDocked">
<short>
Gets the top-most form which hosts the specified control docksite form 
instances.
</short>
<descr/>
<seealso/>
</element>
<element name="GetTopFormSkipNonDocked.Result">
<short/>
</element>
<element name="GetTopFormSkipNonDocked.Control">
<short/>
</element>

<element name="ValidParentForm">
<short>Gets a valid parent form for the specified control.</short>
<descr>
<p>
<var>ValidParentForm</var> is a <var>TCustomForm</var> function used to get a 
valid parent form for the control specified in the <var>Control</var> 
argument. <var>TopForm</var> indicates if the return value should contain the 
absolute root ancestor in the ancestry tree. ValidParentForm calls 
<var>GetParentForm</var> to get the return value for the routine.
</p>
<p>
ValidParentForm raises an <var>EInvalidOperation</var> exception with the 
message in <var>sParentRequired</var> when a valid parent form is not found 
for the specified control.
</p>
</descr>
<errors>
Raises an EInvalidOperation exception with the message in sParentRequired 
when a valid parent form is not found for the specified control.
</errors>
<seealso/>
</element>
<element name="ValidParentForm.Result">
<short>Form instance that is the parent form for the control.</short>
</element>
<element name="ValidParentForm.Control">
<short>Control examined in the routine.</short>
</element>
<element name="ValidParentForm.TopForm">
<short><b>True</b> if all parent forms are located in the routine.</short>
</element>

<element name="FindRootDesigner">
<short>
Gets the designer object for the specified persistent object (or its parent).
</short>
<descr>
<p>
<var>FindRootDesigner</var> is a <var>TIDesigner</var> function used to get 
the root designer object for the specified persistent object instance. The 
TIDesigner instance is found on the Form where the object (or its parent) is 
hosted in the Lazarus IDE. The return value is <b>Nil</b> when a parent form 
for <var>APersistent</var> is not found.
</p>
</descr>
<seealso/>
</element>
<element name="FindRootDesigner.Result">
<short>
TIDesigner instance for the object, or Nil when a parent form is not found.
</short>
</element>
<element name="FindRootDesigner.APersistent">
<short>
Persistent object examined for a designer instance in the routine.
</short>
</element>

<element name="GetParentDesignControl">
<short>
Gets the control which is the top-most TCustomDesignControl instance for the 
specified control, or Nil when not a TCustomDesignControl instance.
</short>
<descr/>
<seealso/>
</element>
<element name="GetParentDesignControl.Result">
<short/>
</element>
<element name="GetParentDesignControl.Control">
<short/>
</element>

<element name="NeedParentDesignControl">
<short>
Ensures that a TCustomDesignControl instance is found for the specified 
control.
</short>
<descr>
<p>
Calls <var>GetParentDesignControl</var> to get the return value for the 
function. Raises an <var>EInvalidOperation</var> exception if a 
<var>TCustomDesignControl</var> instance is not found for the specified 
control.
</p>
<p>
Used in methods which perform scaling operations for <var>TCustomForm</var> 
or <var>TControl</var> instances.
</p>
</descr>
<seealso/>
</element>
<element name="NeedParentDesignControl.Result">
<short/>
</element>
<element name="NeedParentDesignControl.Control">
<short/>
</element>

<element name="IsAccel">
<short>
Determines whether the specified virtual key is used as an accelerator (short 
cut) in the given caption string.
</short>
<descr>
<p>
An accelerator consists of an ampersand followed by the accelerator key. 
Duplicate ampersands are ignored; they denote a literal (displayed) ampersand 
character (<b>&amp;</b>).
</p>
<p>
<var>IsAccel</var> calls UTF8Pos to locate all occurrences of a single 
Ampersand character in Str. The character immediately following the Ampersand 
is the short cut character for the accelerator, and it is compared to the 
numeric value in VK. If one of the short cut characters matches the value in 
VK, the return value is set to <b>True</b> and the routine is exited. If none 
of the short cut characters match VK, or an accelerator is not present in 
Str, the return value is <b>False</b>.
</p>
<p>
IsAccel is called from controls which implement overridden CMDialogChar or 
DialogChar methods. It is also called when widgetset classes handle menu item 
selection and execution in an application.
</p>
</descr>
<seealso/>
</element>
<element name="IsAccel.Result">
<short><b>True</b> when the key is used as an accelerator.</short>
</element>
<element name="IsAccel.VK">
<short>The virtual key (uppercase ASCII) to find.</short>
</element>
<element name="IsAccel.Str">
<short>The string to scan.</short>
</element>

<element name="NotifyApplicationUserInput">
<short>
Signals all user input handlers for the application using the specified 
message.
</short>
<descr>
<p>
Calls the NotifyUserInputHandler method in the Application singleton when it 
has been assigned using Msg as an argument.
</p>
<p>
NotifyApplicationUserInput is used as a callback routine in widgetset 
classes. It allows the widget to notify the application when a mouse or a 
keyboard event is pending in the LCL interface.
</p>
</descr>
<seealso>
<link id="TApplication.NotifyUserInputHandler"/>
<link id="TApplication.OnUserInput"/>
<link id="TApplication.DoOnMouseMove"/>
<link id="TApplication.ActivateHint"/>
<link id="Application"/>
</seealso>
</element>
<element name="NotifyApplicationUserInput.Msg">
<short>The message to process.</short>
</element>

<element name="GetShortHint">
<short>Returns the short version of a Hint string.</short>
<descr>
<p>
A short Hint is separated from the long Hint by a '|' character. If the 
character is not found, the whole Hint string is returned.
</p>
</descr>
<seealso>
<link id="GetLongHint"/>
<link id="TControl.Hint"/>
<link id="TControl.DialogChar"/>
</seealso>
</element>
<element name="GetShortHint.Result">
<short>The short version of the Hint text (when available).</short>
</element>
<element name="GetShortHint.Hint">
<short>
The string containing both short and long Hint text in the format: 'Short 
Hint|This is the Long Hint for a control.'
</short>
</element>

<element name="GetLongHint">
<short>Returns the long version of a Hint string.</short>
<descr>
<p>
A long Hint is the part of the text which appears after a '|' character in 
Str. For example:
</p>
<code>'Short Hint|This is the Long Hint for a control.'</code>
<p>
If the '|' character is not found, the value in Str is returned.
</p>
</descr>
<seealso>
<link id="GetShortHint"/>
<link id="TControl.Hint"/>
<link id="TControl.DialogChar"/>
</seealso>
</element>
<element name="GetLongHint.Result">
<short>The long variant of the specified hint text.</short>
</element>
<element name="GetLongHint.Hint">
<short>
The string containing both short and long Hint text in the format: 'Short 
Hint|This is the Long Hint for a control.'
</short>
</element>

<element name="Application">
<short>The TApplication singleton.</short>
<descr>
<p>
<var>Application</var> is a unit global variable with the 
<var>TApplication</var> instance representing the currently executing 
application. The value for the variable is assigned in the initialization 
section for the unit when the application is started. It is freed in the 
finalization section when the application is terminated.
</p>
<p>
Use the <var>TApplicationProperties</var> component to provide design-time 
configuration settings for properties (including event handlers) which are 
automatically applied to Application at run-time.
</p>
</descr>
<seealso>
<link id="TApplication"/>
<link id="TApplicationProperties"/>
</seealso>
</element>

<element name="Screen">
<short>The TScreen singleton for the application.</short>
<descr>
<p>
<var>Screen</var> is a unit global <var>TScreen</var> variable which provides 
information about the display devices attached to the system. It allows 
access to the physical attributes for the monitors available in the 
application, as well logical attributes for the Desktop. It can also be used 
to access information about the Forms, DataModules, Fonts, and Cursor shapes 
used on the displays.
</p>
<p>
See TScreen for more information about the properties, methods and events in 
the class instance.
</p>
<p>
Screen is allocated in the initialization section for the 
<file>forms.pp</file> unit. It is freed in the finalization section for the 
unit.
</p>
</descr>
<seealso>
<link id="TScreen"/>
</seealso>
</element>

<element name="ExceptionObject">
<short>
Variable representing the current exception object in an application.
</short>
<descr>
<p>
Used in the implementation of the TApplication.HandleException method.
</p>
</descr>
<seealso>
<link id="TApplication.HandleException"/>
</seealso>
</element>

<element name="HintWindowClass">
<short>
The class type used to create hint window instances for an application.
</short>
<descr/>
<seealso/>
</element>

<element name="RequireDerivedFormResource">
<short>
When <b>True</b> every form must have a resource (e.g. a .res file). An 
exception is raised if the resource is missing when creating a form.
</short>
<descr>
<p>
The form resource is the <file>.lfm</file> file compiled into the executable 
of your application. For this flag, it does not matter if it was compiled via 
an <file>.lrs</file> file or via <file>fpcres</file>. The resource is 
automatically loaded by <var>TForm</var> and its descendants when created 
using the <var>Create(Owner)</var> method.
</p>
<p>
If the resource file is missing, there is something wrong with either a 
resource or the unit which contains the faulty form. If the flag is 
<b>False</b>, you will see a blank form and probably search a long time what 
is wrong. If you set this flag to <b>True</b>, you get an exception.
</p>
<p>
For creating forms without resources, you have 3 options:
</p>
<ul>
<li>Create a TForm class (not a descendant).</li>
<li>Construct your form using the CreateNew() constructor.</li>
<li>
It is also possible to disable the exception by setting the global
variable RequireDerivedFormResource to <b>False</b>.
</li>
</ul>
<p>
History: Before 0.9.31 there was no exception. Therefore some resource-less 
forms might use the standard constructor Create(Owner) and will now get 
exceptions. This change is Delphi compatible and compatible with TFrame and 
TDataModule components.
</p>
</descr>
<seealso>
</seealso>
</element>

<element name="TMessageBoxFunction">
<short>The type used for the MessageBox variable.</short>
<descr>
<p>
TMessageBoxFunction is an Integer function type which specifies the routine 
used to perform a message box or dialog.
</p>
<p>
Arguments passed to the function identify the content for the message dialog, 
including:
</p>
<ul>
<li>Text displayed in the message dialog</li>
<li>Title used on dialog form</li>
<li>Flag values that control the buttons and icon for the dialog</li>
</ul>
<p>
The return value contains the modal result returned from the message dialog.
</p>
</descr>
<seealso>
<link id="MessageBoxFunction"/>
</seealso>
</element>
<element name="TMessageBoxFunction.Result">
<short>
Modal result from the message dialog routine.
</short>
</element>
<element name="TMessageBoxFunction.Text">
<short>
Main content for the message dialog.
</short>
</element>
<element name="TMessageBoxFunction.Caption">
<short>
Title displayed on the message dialog.
</short>
</element>
<element name="TMessageBoxFunction.Flags">
<short>
Numeric flag value for the buttons and icons displayed on the message dialog.
</short>
</element>

<element name="MessageBoxFunction">
<short>
Provides the routine used to display a message dialog in widgetset 
implementations.
</short>
<descr>
<p>
Normally contains a reference to the <var>DefaultMessageBox</var> function. 
It may have another function reference assigned to the variable in specific 
widgetset implementations (such as CustomDraw controls).
</p>
</descr>
<seealso>
<link id="#lcl.dialogs.DefaultMessageBox">DefaultMessageBox</link>
</seealso>
</element>

<element name="DefaultBorderIcons">
<short>Maps form border styles to their border icons.</short>
<descr>
<p>
<var>DefaultBorderIcons</var> is an array constant with 
<var>TBorderIcons</var> values indicating the icons available for the various 
form border styles. Values in the array are indexed by the enumeration values 
in TFormBorderStyle. Each element in the array contains zero (0) or more 
values from the TBorderIcon enumeration, and indicates that the icon is used 
for the form border style.
</p>
<p>
DefaultBorderIcons contains the following values for the corresponding 
TFormBorderStyle values:
</p>
<dl>
<dt>bsNone</dt>
<dd>An empty set ([])</dd>
<dt>bsSingle</dt>
<dd>[biSystemMenu, biMinimize]</dd>
<dt>bsSizeable</dt>
<dd>[biSystemMenu, biMinimize, biMaximize]</dd>
<dt>bsDialog</dt>
<dd>[biSystemMenu]</dd>
<dt>bsToolWindow</dt>
<dd>[biSystemMenu, biMinimize]</dd>
<dt>bsSizeToolWin</dt>
<dd>[biSystemMenu, biMinimize, biMaximize]</dd>
</dl>
<p>
DefaultBorderIcons is used in the implementation of the SetFormBorderStyle 
method in TCustomForm.
</p>
</descr>
<seealso/>
</element>

<element name="CreateWidgetset">
<short>Creates the widgetset singleton.</short>
<descr>
<p>
<var>CreateWidgetset</var> is a procedure used to create the 
<var>WidgetSet</var> singleton. CreateWidgetset executes the initialization 
handlers for the LCL interface.
</p>
<p>
<var>AWidgetsetClass</var> is the <var>TWidgetsetClass</var> class type used 
to create the <var>WidgetSet</var> singleton. CreateWidgetset is called from 
the <file>interfaces.pp</file> unit for a specific widgetset implementation 
(win32, gtk, gtk2, gtk3, qt, qt5, et. al.).
</p>
</descr>
<seealso/>
</element>
<element name="CreateWidgetset.AWidgetsetClass">
<short>
TWidgetsetClass class type for the desired widgetset implementation.
</short>
</element>

<element name="FreeWidgetSet">
<short>
Destroys singletons for the Screen, Application, and WidgetSet.
</short>
<descr>
<p>
<var>FreeWidgetSet</var> is a procedure used to free resources allocated to 
the <var>Screen</var>, <var>Application</var>, <var>Clipboards</var>, and 
<var>WidgetSet</var> singletons.
</p>
<p>
For Screen, allocated cursors and monitors are destroyed. Application is 
freed, and set to Nil. All clipboard formats are freed as well. The WidgetSet 
singleton is freed, and set to Nil.
</p>
<p>
FreeWidgetSet executes the <var>CallInterfaceFinalizationHandlers</var> 
routine to perform any finalization handlers installed for the <b>LCL</b> 
interface.
</p>
</descr>
<seealso>
<link id="Application"/>
<link id="Screen"/>
<link id="WidgetSet"/>
<link id="#lcl.lclproc.CallInterfaceFinalizationHandlers">CallInterfaceFinalizationHandlers</link>
</seealso>
</element>

<element name="Register">
<short>Registers components declared in this unit.</short>
<descr>
<p>
<var>Register</var> is a procedure used to register components declared in 
the <file>forms.pp</file> unit for use in the Lazarus IDE. The following 
components are added to the component palette in the Lazarus IDE:
</p>
<p>
<b>Standard</b> Tab
</p>
<ul>
<li>TFrame</li>
</ul>
<p>
<b>Additional</b> Tab
</p>
<ul>
<li>TScrollBox</li>
<li>TApplicationProperties</li>
</ul>
</descr>
<seealso/>
</element>
</module>
<!-- Forms -->
</package>
</fpdoc-descriptions>
