<?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
file://../../cc-by-sa-4-0.txt

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

-->
<fpdoc-descriptions>
<package name="lcl">
<!--
====================================================================
LCLProc
====================================================================
-->
<module name="LCLProc">
<short>Useful lower-level helper functions and classes.</short>
<descr>
<p>
<file>lclproc.pas</file> contains lower-level classes and helper routines 
that are useful in LCL applications.
</p>
<p>
<file>lclproc.pas</file> is part of the Lazarus Component Library (<b>LCL</b>).
</p>
</descr>

<!-- unresolved external references -->
<element name="MacOSAll"/>
<element name="Classes"/>
<element name="SysUtils"/>
<element name="Math"/>
<element name="Types"/>
<element name="Laz_AVL_Tree"/>
<element name="LazFileUtils"/>
<element name="LazUtilities"/>
<element name="LazMethodList"/>
<element name="LazUTF8"/>
<element name="LazLoggerBase"/>
<element name="LazTracer"/>
<element name="LCLStrConsts"/>
<element name="LCLType"/>

<element name="TMethodList">
<short>A list for method references.</short>
<descr>
<p>
<var>TMethodList</var> is an alias for the TMethodList type in the 
<file>LazMethodList</file> unit.
</p>
</descr>
<seealso>
<link id="#lazutils.lazmethodlist.TMethodList">TMethodList</link>
</seealso>
</element>

<element name="TDebugLCLItemInfo">
<short>
A node in TDebugLCLItems, holding information about a heap object.
</short>
<descr/>
<seealso>
<link id="TDebugLCLItems"/>
</seealso>
</element>

<element name="TDebugLCLItemInfo.Item">
<short>The address of the item.</short>
<descr/>
<seealso/>
</element>

<element name="TDebugLCLItemInfo.IsDestroyed">
<short><b>True</b> when the item has been destroyed.</short>
<descr/>
<seealso/>
</element>

<element name="TDebugLCLItemInfo.Info">
<short>A descriptive string for the item.</short>
<descr/>
<seealso/>
</element>

<element name="TDebugLCLItemInfo.CreationStack">
<short>Stack trace at creation of the object.</short>
<descr/>
<seealso/>
</element>

<element name="TDebugLCLItemInfo.DestructionStack">
<short>Stack trace at destruction of the object.</short>
<descr/>
<seealso/>
</element>

<element name="TDebugLCLItemInfo.AsString">
<short>All information about the object as a string value.</short>
<descr/>
<seealso/>
</element>
<element name="TDebugLCLItemInfo.AsString.Result">
<short/>
</element>
<element name="TDebugLCLItemInfo.AsString.WithStackTraces">
<short><b>True</b> to include stack traces.</short>
</element>

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

<element name="TDebugLCLItems">
<short>
A list describing dynamically allocated (and destroyed) memory objects.
</short>
<descr>
The list holds descriptive information about the object, and stack traces at 
the time of creation and destruction.
</descr>
<seealso/>
</element>

<element name="TDebugLCLItems.FItems">
<short>The list entries, organized as an AVL tree.</short>
</element>

<element name="TDebugLCLItems.FName" link="#lcl.lclproc.TDebugLCLItems.Name"/>

<element name="TDebugLCLItems.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
Sets the <var>Name</var> property to the value in <var>TheName</var>. 
Allocates resources for the internal <var>TAvlTree</var> instance used in the 
class.
</p>
</descr>
</element>
<element name="TDebugLCLItems.Create.TheName">
<short>The descriptive name of the list.</short>
</element>

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

<element name="TDebugLCLItems.FindInfo">
<short>
Returns information about an item, optionally creating an entry if not found.
</short>
<descr/>
<errors>
</errors>
<seealso/>
</element>
<element name="TDebugLCLItems.FindInfo.Result">
<short>
The item information, or <b>Nil</b> if none was found or created.
</short>
</element>
<element name="TDebugLCLItems.FindInfo.p">
<short>The address of the item to find.</short>
</element>
<element name="TDebugLCLItems.FindInfo.CreateIfNotExists">
<short>
<b>True</b> means create an according list entry, if none existed yet.
</short>
</element>

<element name="TDebugLCLItems.IsDestroyed">
<short><b>True</b> when the item has been destroyed.</short>
<descr/>
<errors>
</errors>
<seealso/>
</element>
<element name="TDebugLCLItems.IsDestroyed.Result">
<short>
<b>True</b> when destroyed, <b>False</b> when alive or not listed.
</short>
</element>
<element name="TDebugLCLItems.IsDestroyed.p">
<short>The address to find.</short>
</element>

<element name="TDebugLCLItems.IsCreated">
<short><b>True</b> when the item is alive.</short>
<descr/>
<seealso/>
</element>
<element name="TDebugLCLItems.IsCreated.Result">
<short>
<b>True</b> when the item is listed and has not yet been destroyed.
</short>
</element>
<element name="TDebugLCLItems.IsCreated.p">
<short>The address to find.</short>
</element>

<element name="TDebugLCLItems.MarkCreated">
<short>Checked insert of an item.</short>
<descr/>
<errors>
GDB exception 'RaiseDoubleCreated' when the address is already in use.
</errors>
<seealso/>
</element>
<element name="TDebugLCLItems.MarkCreated.Result">
<short>The info object describing the address.</short>
</element>
<element name="TDebugLCLItems.MarkCreated.p">
<short>The address to add.</short>
</element>
<element name="TDebugLCLItems.MarkCreated.InfoText">
<short>Descriptive text about the item.</short>
</element>

<element name="TDebugLCLItems.MarkDestroyed">
<short>Checked destruction notification.</short>
<descr/>
<errors>
<ul>
<li>
GDB exception 'TDebugLCLItems.MarkDestroyed' when the item was not yet 
created.
</li>
<li>
GDB exception 'RaiseDoubleDestroyed' when the item was already destroyed.
</li>
</ul>
</errors>
<seealso/>
</element>

<element name="TDebugLCLItems.MarkDestroyed.p">
<short>The address to mark as destroyed.</short>
</element>

<element name="TDebugLCLItems.GetInfo">
<short>Returns textual information about an object.</short>
<descr/>
<seealso/>
</element>
<element name="TDebugLCLItems.GetInfo.Result">
<short>The descriptive string.</short>
</element>
<element name="TDebugLCLItems.GetInfo.p">
<short>The address to find.</short>
</element>
<element name="TDebugLCLItems.GetInfo.WithStackTraces">
<short><b>True</b> means include stack traces.</short>
</element>

<element name="TDebugLCLItems.Name">
<short>The descriptive name of the list.</short>
<descr/>
<seealso/>
</element>

<element name="CompareDebugLCLItemInfos">
<short>Compare function for the TDebugLCLItems AVL tree.</short>
<descr>
Compares the Item addresses.
</descr>
<seealso/>
</element>
<element name="CompareDebugLCLItemInfos.Result">
<short/>
</element>
<element name="CompareDebugLCLItemInfos.Data1">
<short/>
</element>
<element name="CompareDebugLCLItemInfos.Data2">
<short/>
</element>

<element name="CompareItemWithDebugLCLItemInfo">
<short>Compare function for <link id="TDebugLCLItems.FindInfo"/></short>
<descr/>
<seealso/>
</element>
<element name="CompareItemWithDebugLCLItemInfo.Result">
<short/>
</element>
<element name="CompareItemWithDebugLCLItemInfo.Item">
<short/>
</element>
<element name="CompareItemWithDebugLCLItemInfo.DebugItemInfo">
<short/>
</element>

<element name="TStringsSortCompare">
<short>
Specifies a comparison function type for string values in a TStrings instance.
</short>
<descr>
<p>
TStringsSortCompare is an Integer function type used to compare string values 
to determine the relative sort order. The return value indicates the relative 
sort order for the compared items, and normally contains a value like the one 
returned from CompareText. For example:
</p>
<dl>
<dt>&lt;0</dt>
<dd>Item1 has a value that comes before Item2.</dd>
<dt>0</dt>
<dd>Item1 and Item2 have the same value.</dd>
<dt>&gt;0</dt>
<dd>Item1 has a value that comes after Item2.</dd>
</dl>
<p>
The address for a TStringsSortCompare type is passed as an argument to the 
MergeSort routine.
</p>
</descr>
<seealso>
<link id="MergeSort"/>
</seealso>
</element>
<element name="TStringsSortCompare.Result">
<short>Integer with the relative sort order for the compared values.</short>
</element>
<element name="TStringsSortCompare.Item1">
<short>First string value for the comparison.</short>
</element>
<element name="TStringsSortCompare.Item2">
<short>Second string value for the comparison.</short>
</element>

<element name="MergeSort">
<short>Implements a merge/sort for TStrings or TFPList.</short>
<descr>
<p>
MergeSort is an overloaded routine used to implement a comparison-based sort 
routine for values in List. List can be a TStrings or TFPList instance. No 
actions are performed in the routine when List has not been assigned 
(contains <b>Nil</b>).
</p>
<p>
The StartIndex and EndIndex arguments allow the initial and final entries in 
a TFPList instance to be specified. When the values are omitted, they default 
to the first value (position 0) and the last value (Count-1) in List.
</p>
<p>
OnCompare is the comparison routine used to determine the order for the 
sorted values. It can be a TListSortCompare or TStringsSortCompare function, 
depending on the overloaded variant of the called routine.
</p>
<p>
MergeSort implements the J. von Nuemann divide-and-conquer algorithm, with an 
insertion sort used for lists with 6 or fewer elements.
</p>
</descr>
<seealso>
<link id="TListSortCompare"/>
<link id="TStringsSortCompare"/>
</seealso>
</element>
<element name="MergeSort.List">
<short>The list of values to sort (overloaded type).</short>
</element>
<element name="MergeSort.OnCompare">
<short>The sort compare function.</short>
</element>
<element name="MergeSort.StartIndex">
<short>The initial entry in List used in the merge/sort.</short>
</element>
<element name="MergeSort.EndIndex">
<short>The final entry in List used in the merge/sort.</short>
</element>

<element name="KeyAndShiftStateToKeyString">
<short>
Converts the specified key code and shift modifier to their representation as 
a String.
</short>
<descr/>
<seealso/>
</element>
<element name="KeyAndShiftStateToKeyString.Result">
<short>
String representation for the specified value; i. e. 'Ctrl+Home'.
</short>
</element>
<element name="KeyAndShiftStateToKeyString.Key">
<short>Key code converted in the routine.</short>
</element>
<element name="KeyAndShiftStateToKeyString.ShiftState">
<short>Shift, Ctrl, Alt modifier converted in the routine.</short>
</element>

<element name="KeyStringIsIrregular">
<short>
Indicates if the string contains the 'Word(nn)' representation for an unknown 
key code.
</short>
<descr/>
<seealso/>
</element>
<element name="KeyStringIsIrregular.Result">
<short><b>True</b> when the string is not a named virtual key code.</short>
</element>
<element name="KeyStringIsIrregular.s">
<short>Value examined in the method.</short>
</element>

<element name="ShortCutToText">
<short>
Returns the localized textual representation for a shortcut value.
</short>
<descr>
<p>
<var>ShortCutToText</var> is the counterpart to the TextToShortCut routine, and 
converts the numeric TShortCut value in ShortCut its textual representation. 
</p>
<p>
<var>ShortCut</var> is the <var>Word</var> value with the modifier keys and the 
key code OR'd together. The high-order byte contains the Shift/Ctrl/Alt/Meta 
modifier(s) for the shortcut. The low-order-byte contains the virtual key code 
for the shortcut.
</p>
<p>
The return value contains localized versions of text for the modifiers and 
the key cap used in the shortcut. For example:
</p>
<code>
Ctrl+V
Ctrl+Alt+Del
^V
Shift+F9
Alt+G
Meta+Q
</code>
<p>
Use ShortCutToTextRaw to get the text for a shortcut without localization.
</p>
</descr>
<seealso>
<link id="ShortCutToTextRaw"/>
<link id="TextToShortCut"/>
<link id="#rtl.classes.TShortCut">TShortCut</link>
</seealso>
</element>
<element name="ShortCutToText.Result">
<short>
Localized text value for the specified shortcut.
</short>
</element>
<element name="ShortCutToText.ShortCut">
<short>
TShortCut instance with the numeric shift modifier and key code handled in the 
routine.
</short>
</element>

<element name="ShortCutToTextRaw">
<short>
Converts a shortcut value to its text representation without localization.
</short>
<descr>
<p>
<var>ShortCutToTextRaw</var> is similar to ShortCutToText, but does not use 
localization for the modifiers or key caps found in the shortcut.
</p>
<p>
See <link id="ShortCutToText">ShortCutToText</link> for more information.
</p>
<p>
Use <var>TextToShortCutRaw</var> to create a shortcut for text which does not 
use localization.
</p>
</descr>
<seealso/>
</element>
<element name="ShortCutToTextRaw.Result">
<short>Non-localized text value for the specified shortcut.</short>
</element>
<element name="ShortCutToTextRaw.ShortCut">
<short>Shortcut value converted in the method.</short>
</element>

<element name="TextToShortCut">
<short>
Converts the textual representation for a shortcut to its TShortCut value.
</short>
<descr>
<p>
<var>TextToShortCut</var> is a <var>TShortcut</var> function used to convert 
the string representation for a shortcut (or accelerator) to a TShortCut 
instance.
</p>
<p>
<var>ShortCutText</var> contains the text which represents a key or a key 
combination used as a shortcut in an application. It can contain optional key 
modifier(s) as well as a key caption. For example:
</p>
<code>
Ctrl+V
Ctrl+Alt+Del
^V
Shift+F9
Alt+G
Meta+Q
</code>
<p>
Recognized key modifiers include:
</p>
<code>
Alt
Ctrl or ^
Meta
Shift
</code>
<p>
Recognized key captions include the standard key caps for your keyboard and the 
localized versions of the following:
</p>
<dl>
<dt>BkSp</dt>
<dd>VK_BACK</dd>
<dt>Del</dt>
<dd>VK_DELETE</dd>
<dt>Down</dt>
<dd>VK_DOWN</dd>
<dt>End</dt>
<dd>VK_END</dd>
<dt>Enter</dt>
<dd>VK_RETURN</dd>
<dt>Esc</dt>
<dd>VK_ESCAPE</dd>
<dt>Help</dt>
<dd>VK_HELP</dd>
<dt>Home</dt>
<dd>VK_HOME</dd>
<dt>Ins</dt>
<dd>VK_INSERT</dd>
<dt>Left</dt>
<dd>VK_LEFT</dd>
<dt>PgDn</dt>
<dd>VK_NEXT</dd>
<dt>PgUp</dt>
<dd>VK_PRIOR</dd>
<dt>Right</dt>
<dd>VK_RIGHT</dd>
<dt>Space</dt>
<dd>VK_SPACE</dd>
<dt>Tab</dt>
<dd>VK_TAB</dd>
<dt>Up</dt>
<dd>VK_UP</dd>
</dl>
<p>
The return value is a TShortCut instance with the numeric value used to 
represent both the Shift/Ctrl/Alt modifier and the key code for the shortcut. 
It consists of the Shift and Key values OR'd together.
</p>
<p>
Use TextToShortCutRaw to convert a non-localized string to it TShortCut 
equivalent.
</p>
<p>
Use ShortCutToText to reverse the process.
</p>
</descr>
<seealso>
<link id="TextToShortCutRaw"/>
<link id="ShortCutToText"/>
<link id="ShortCutToTextRaw"/>
<link id="#rtl.classes.TShortCut">TShortCut</link>
</seealso>
</element>
<element name="TextToShortCut.Result">
<short>
TShortcut value for the specified text.
</short>
</element>
<element name="TextToShortCut.ShortCutText">
<short>
Text converted to a shortcut value in the routine.
</short>
</element>

<element name="TextToShortCutRaw">
<short>
Converts the non-localized textual representation for a shortcut to a TShortCut 
value.
</short>
<descr>
<p>
<var>TextToShortCutRaw</var> is similar to <var>TextToShortCut</var>, but does 
not handle or use localized versions of modifiers or key caps in 
<var>ShortCutText</var>.
</p>
<p>
See <link id="TextToShortCut">TextToShortCut</link> for more information.
</p>
<p>
Use ShortCutToTextRaw to reverse the process.
</p>
</descr>
<seealso>
<link id="ShortCutToTextRaw"/>
<link id="ShortCutToText"/>
<link id="TextToShortCut"/>
<link id="#rtl.classes.TShortCut">TShortCut</link>
</seealso>
</element>
<element name="TextToShortCutRaw.Result">
<short>
TShortcut value for the specified text.
</short>
</element>
<element name="TextToShortCutRaw.ShortCutText">
<short>
Text converted to a shortcut value in the routine.
</short>
</element>

<element name="GetCompleteText">
<short>
Finds a string in a list, given its first few characters.
</short>
<descr/>
<seealso/>
</element>
<element name="GetCompleteText.Result">
<short>The found string.</short>
</element>
<element name="GetCompleteText.sText">
<short>The begin of the string to find.</short>
</element>
<element name="GetCompleteText.iSelStart">
<short>The list index where the search should start.</short>
</element>
<element name="GetCompleteText.bCaseSensitive">
<short><b>True</b> means case-sensitive comparison.</short>
</element>
<element name="GetCompleteText.bSearchAscending">
<short><b>True</b> means search ascending from iSelStart.</short>
</element>
<element name="GetCompleteText.slTextList">
<short>The list to search.</short>
</element>

<element name="IsEditableTextKey">
<short>
Indicates if the specified key code has a value allowed in an editable text 
string.
</short>
<descr/>
<seealso/>
</element>
<element name="IsEditableTextKey.Result">
<short/>
</element>
<element name="IsEditableTextKey.Key">
<short>The virtual key code examined in the routine.</short>
</element>

<element name="TSendApplicationMessageFunction">
<short>Hook used to prevent circular unit references.</short>
<descr/>
<seealso/>
</element>
<element name="TSendApplicationMessageFunction.Result">
<short/>
</element>
<element name="TSendApplicationMessageFunction.Msg">
<short/>
</element>
<element name="TSendApplicationMessageFunction.WParam">
<short/>
</element>
<element name="TSendApplicationMessageFunction.LParam">
<short/>
</element>

<element name="TOwnerFormDesignerModifiedProc">
<short>Hook used to prevent circular unit references.</short>
<descr/>
<seealso/>
</element>
<element name="TOwnerFormDesignerModifiedProc.AComponent">
<short>Component for the change notification.</short>
</element>

<element name="SendApplicationMessageFunction">
<short>
Function used to send an application message using the specified parameter 
values.
</short>
<descr/>
<seealso/>
</element>

<element name="OwnerFormDesignerModifiedProc">
<short>
Routine used to notify the form designer which owns the specified component 
when it has been changed.
</short>
<descr/>
<seealso>
<link id="TOwnerFormDesignerModifiedProc"/>
</seealso>
</element>
<element name="OwnerFormDesignerModifiedProc.AComponent">
<short>
Modified component that needs to be updated on its form design surface.
</short>
</element>

<element name="SendApplicationMessage">
<short>
Sends an application message using the specified parameter values.
</short>
<descr/>
<errors/>
<seealso/>
</element>
<element name="SendApplicationMessage.Result">
<short/>
</element>
<element name="SendApplicationMessage.Msg">
<short/>
</element>
<element name="SendApplicationMessage.WParam">
<short/>
</element>
<element name="SendApplicationMessage.LParam">
<short/>
</element>

<element name="OwnerFormDesignerModified">
<short>
Executes the routine which notifies the form designer when the specified 
component has been changed.
</short>
<descr>
<p>
The <file>forms.pp</file> unit provides a private implementation in its 
IfOwnerIsFormThenDesignerModified routine which is assigned to the variable 
during unit initialization.
</p>
</descr>
<seealso/>
</element>
<element name="OwnerFormDesignerModified.AComponent">
<short>
The modified component which needs to be updated on its form design surface.
</short>
</element>

<element name="FreeThenNil">
<short>
Frees the TObject instance (when assigned) before setting the reference to 
<b>Nil</b>.
</short>
<descr>
<p>
Calls the FreeThenNil routine in the <file>lazutilities.pas</file> unit from 
the <file>lazutils</file> package.
</p>
</descr>
<version>
Deprecated in LCL version 3.0. Use the FreeThenNil routine in the 
<file>LazUtilities.pas</file> unit from the <file>LazUtils</file> package 
instead.
</version>
<seealso>
<link id="#lazutils.lazutilities.FreeThenNil">LazUtilities.FreeThenNil</link>
</seealso>
</element>
<element name="FreeThenNil.obj">
<short>The object reference freed and <b>Nil</b>'d in the routine.</short>
</element>

<element name="RegisterInterfaceInitializationHandler">
<short>
Registers an initialization routine needed before the LCL is initialized.
</short>
<descr/>
<seealso/>
</element>
<element name="RegisterInterfaceInitializationHandler.p">
<short>Procedure registered in the routine.</short>
</element>

<element name="CallInterfaceInitializationHandlers">
<short>Calls each of the registered initialization handlers.</short>
<descr/>
<seealso/>
</element>

<element name="RegisterInterfaceFinalizationHandler">
<short>
Registers an finalization routine needed after the LCL has been finalized.
</short>
<descr/>
<errors/>
<seealso/>
</element>
<element name="RegisterInterfaceFinalizationHandler.p">
<short/>
</element>

<element name="CallInterfaceFinalizationHandlers">
<short>Calls each of the registered finalization handlers.</short>
<descr/>
<errors/>
<seealso/>
</element>

<element name="OffsetRect">
<short>
Deprecated. Increments the Top, Left and Bottom, Right rectangle coordinates 
by the specified amounts.
</short>
<descr>
<p>
Deprecated. Use the OffsetRect function in the RTL <file>types.pp</file> unit 
instead.
</p>
</descr>
<version>
Deprecated in LCL version 3.0.
</version>
<seealso>
<link id="#rtl.types.OffsetRect">RTL.Types.OffsetRect</link>
</seealso>
</element>
<element name="OffsetRect.Result"/>
<element name="OffsetRect.ARect"/>
<element name="OffsetRect.dx"/>
<element name="OffsetRect.dy"/>

<element name="MoveRect">
<short>
Deprecated. Use GraphMath.MoveRect in the <file>LazUtils</file> package 
instead.
</short>
<descr/>
<version>
Deprecated in LCL version 3.0.
</version>
<seealso>
<link id="#lazutils.graphmath.MoveRect">LazUtils.GraphMath.MoveRect</link>
</seealso>
</element>
<element name="MoveRect.ARect"/>
<element name="MoveRect.x"/>
<element name="MoveRect.y"/>

<element name="MoveRectToFit">
<short>
Deprecated. Use GraphMath.MoveRectToFit in the <file>LazUtils</file> package 
instead.
</short>
<descr/>
<version>
Deprecated in LCL version 3.0.
</version>
<seealso>
<link id="#lazutils.graphmath.MoveRectToFit">LazUtils.GraphMath.MoveRectToFit</link>
</seealso>
</element>
<element name="MoveRectToFit.ARect"/>
<element name="MoveRectToFit.MaxRect"/>

<element name="MakeMinMax">
<short>
Deprecated. Use GraphMath.MakeMinMax in the <file>LazUtils</file> package 
instead.
</short>
<descr/>
<version>
Deprecated in LCL version 3.0.
</version>
<seealso>
<link id="#lazutils.graphmath.MakeMinMax">LazUtils.GraphMath.MakeMinMax</link>
</seealso>
</element>
<element name="MakeMinMax.i1"/>
<element name="MakeMinMax.i2"/>

<element name="CalculateLeftTopWidthHeight">
<short>
Deprecated. Use GraphMath.CalculateLeftTopWidthHeight in the 
<file>LazUtils</file> package instead.
</short>
<descr/>
<version>
Deprecated in LCL version 3.0.
</version>
<seealso>
<link id="#lazutils.graphmath.CalculateLeftTopWidthHeight">LazUtils.GraphMath.CalculateLeftTopWidthHeight</link>
</seealso>
</element>
<element name="CalculateLeftTopWidthHeight.X1"/>
<element name="CalculateLeftTopWidthHeight.Y1"/>
<element name="CalculateLeftTopWidthHeight.X2"/>
<element name="CalculateLeftTopWidthHeight.Y2"/>
<element name="CalculateLeftTopWidthHeight.Left"/>
<element name="CalculateLeftTopWidthHeight.Top"/>
<element name="CalculateLeftTopWidthHeight.Width"/>
<element name="CalculateLeftTopWidthHeight.Height"/>

<element name="DeleteAmpersands">
<short>
Removes all Ampersand ('&amp;') characters Str, and return the position for 
the first occurrence.
</short>
<descr>
<p>
<var>DeleteAmpersands</var> is an <var>Integer</var> function used to remove 
all occurrences of the Ampersand character in Str. The return value contains 
the position in Str where the first occurrence of the of the character was 
found.
</p>
<p>
Double Ampersands (&amp;&amp;) are converted to a single &amp; character in 
Str.
</p>
<p>
DeleteAmpersands can be used to remove the prefix used for accelerator keys 
in button, tool bar, and menu captions.
</p>
</descr>
<errors/>
<seealso/>
</element>
<element name="DeleteAmpersands.Result">
<short>Position where the first ampersand character was found.</short>
</element>
<element name="DeleteAmpersands.Str">
<short>String with values converted in the method.</short>
</element>

<element name="RemoveAmpersands">
<short>
Removes single Ampersand characters, and returns the converted value.
</short>
<descr>
<p>
<var>RemoveAmpersands</var> is an overloaded function used to remove all 
occurrences of a single Ampersand (&amp;) character from the specified value. 
It provides variants that operate on String and PChar types. The return value 
contains the original value after all single Ampersand characters have been 
removed. Double Ampersand (&amp;&amp;) characters are converted into a single 
Ampersand character.
</p>
<p>
Use <var>DeleteAmpersands</var> to remove Ampersand character in the original 
String value.
</p>
</descr>
<seealso/>
</element>
<element name="RemoveAmpersands.Result">
<short>Value after single Ampersand characters are removed.</short>
</element>
<element name="RemoveAmpersands.ASource">
<short>String with the values examined in the routine.</short>
</element>
<element name="RemoveAmpersands.Src">
<short>PChar value examined in the routine.</short>
</element>
<element name="RemoveAmpersands.LineLength">
<short>Length of the value in Src.</short>
</element>

<element name="CompareHandles">
<short>
Compares two Handles, returning the relative order for the handle values.
</short>
<descr>
<p>
The return value contains the following:
</p>
<dl>
<dt>-1</dt>
<dd>h1 has a lower value than h2.</dd>
<dt>0</dt>
<dd>h1 and h2 have the same value.</dd>
<dt>1</dt>
<dd>h1 has a higher value than h2.</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="CompareHandles.Result">
<short>Relative order for the compared handle values.</short>
</element>
<element name="CompareHandles.h1">
<short>First handle for the comparison.</short>
</element>
<element name="CompareHandles.h2">
<short>Second handle for the comparison.</short>
</element>

<element name="CompareRect">
<short>
Indicates if the specified rectangle pointers have the same coordinate values.
</short>
<descr/>
<errors/>
<seealso/>
</element>
<element name="CompareRect.Result">
<short>
<b>True</b> when the top, left, bottom, and right values in each rectangle 
are the same.
</short>
</element>
<element name="CompareRect.R1">
<short>Pointer to the first rectangle for the comparison.</short>
</element>
<element name="CompareRect.R2">
<short>Pointer to the second rectangle for the comparison.</short>
</element>

<element name="ComparePoints">
<short>
Compares the specified TPoint values to get their relative order.
</short>
<descr>
<p>
<var>ComparePoints</var> is an <var>Integer</var> function used to compare 
the coordinates in the specified <var>TPoint</var> instances to determine 
their relative order. The return value contains -1, 0, or 1 for the following 
conditions:
</p>
<dl>
<dt>-1</dt>
<dd>p1.y is smaller than p2.y, or p1.x is smaller than p2.x.</dd>
<dt>0</dt>
<dd>p1 and p2 have the same x and y values.</dd>
<dt>1</dt>
<dd>p1.y is larger than p2.y, or p1.x is larger than p2.x.</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="ComparePoints.Result">
<short>Relative order for the compared TPoint values.</short>
</element>
<element name="ComparePoints.p1">
<short>First TPoint instance for the comparison.</short>
</element>
<element name="ComparePoints.p2">
<short>Second TPoint instance for the comparison.</short>
</element>

<element name="CompareCaret">
<short>See ComparePoints.</short>
<descr>
<p>
See ComparePoints.
</p>
</descr>
<seealso>
<link id="ComparePoints"/>
</seealso>
</element>
<element name="CompareCaret.Result">
<short/>
</element>
<element name="CompareCaret.FIrstCaret">
<short/>
</element>
<element name="CompareCaret.SecondCaret">
<short/>
</element>

<element name="RaiseGDBException">
<short>Raises a catchable exception.</short>
<descr>
<p>
Normally, GDB does not catch FPC Exception objects. This procedure raises a 
standard divide by zero exception which is caught by GDB.
</p>
</descr>
<errors/>
<seealso/>
</element>
<element name="RaiseGDBException.Msg">
<short/>
</element>

<element name="DebugLn">
<short>
Writes a number of strings (heavily overloaded) to the debug output.
</short>
<errors/>
<seealso/>
</element>
<element name="DebugLn.S">
<short>A single string, or a Format string when followed by an argument list.
</short>
</element>
<element name="DebugLn.Args">
<short>Writes the formatted dump of the typed arguments.</short>
</element>
<element name="DebugLn.s1">
<short/>
</element>
<element name="DebugLn.s2">
<short/>
</element>
<element name="DebugLn.s3">
<short/>
</element>
<element name="DebugLn.s4">
<short/>
</element>
<element name="DebugLn.s5">
<short/>
</element>
<element name="DebugLn.s6">
<short/>
</element>
<element name="DebugLn.s7">
<short/>
</element>
<element name="DebugLn.s8">
<short/>
</element>
<element name="DebugLn.s9">
<short/>
</element>
<element name="DebugLn.s10">
<short/>
</element>
<element name="DebugLn.s11">
<short/>
</element>
<element name="DebugLn.s12">
<short/>
</element>
<element name="DebugLn.s13">
<short/>
</element>
<element name="DebugLn.s14">
<short/>
</element>
<element name="DebugLn.s15">
<short/>
</element>
<element name="DebugLn.s16">
<short/>
</element>

<element name="DebugLnEnter">
<short>
Optionally writes a value to the debugger and increases the indentation level.
</short>
<descr/>
<seealso/>
</element>
<element name="DebugLnEnter.s">
<short/>
</element>
<element name="DebugLnEnter.Args">
<short/>
</element>
<element name="DebugLnEnter.s1"/>
<element name="DebugLnEnter.s2"/>
<element name="DebugLnEnter.s3"/>
<element name="DebugLnEnter.s4"/>
<element name="DebugLnEnter.s5"/>
<element name="DebugLnEnter.s6"/>
<element name="DebugLnEnter.s7"/>
<element name="DebugLnEnter.s8"/>
<element name="DebugLnEnter.s9"/>
<element name="DebugLnEnter.s10"/>
<element name="DebugLnEnter.s11"/>
<element name="DebugLnEnter.s12"/>
<element name="DebugLnEnter.s13"/>
<element name="DebugLnEnter.s14"/>
<element name="DebugLnEnter.s15"/>
<element name="DebugLnEnter.s16"/>
<element name="DebugLnEnter.s17"/>
<element name="DebugLnEnter.s18"/>

<element name="DebugLnExit">
<short>
Optionally writes a value to the debugger and decreases the indentation level.
</short>
<descr/>
<errors>
</errors>
<seealso/>
</element>
<element name="DebugLnExit.s">
<short/>
</element>
<element name="DebugLnExit.Args">
<short/>
</element>
<element name="DebugLnExit.s1"/>
<element name="DebugLnExit.s2"/>
<element name="DebugLnExit.s3"/>
<element name="DebugLnExit.s4"/>
<element name="DebugLnExit.s5"/>
<element name="DebugLnExit.s6"/>
<element name="DebugLnExit.s7"/>
<element name="DebugLnExit.s8"/>
<element name="DebugLnExit.s9"/>
<element name="DebugLnExit.s10"/>
<element name="DebugLnExit.s11"/>
<element name="DebugLnExit.s12"/>
<element name="DebugLnExit.s13"/>
<element name="DebugLnExit.s14"/>
<element name="DebugLnExit.s15"/>
<element name="DebugLnExit.s16"/>
<element name="DebugLnExit.s17"/>
<element name="DebugLnExit.s18"/>

<element name="DbgOut">
<short>
Signals the OnDbgOut event handler for the debug logger class instance.
</short>
<descr/>
<errors/>
<seealso/>
</element>
<element name="DbgOut.s">
<short/>
</element>
<element name="DbgOut.Args">
<short/>
</element>
<element name="DbgOut.s1"/>
<element name="DbgOut.s2"/>
<element name="DbgOut.s3"/>
<element name="DbgOut.s4"/>
<element name="DbgOut.s5"/>
<element name="DbgOut.s6"/>
<element name="DbgOut.s7"/>
<element name="DbgOut.s8"/>
<element name="DbgOut.s9"/>
<element name="DbgOut.s10"/>
<element name="DbgOut.s11"/>
<element name="DbgOut.s12"/>

<element name="DbgS">
<short>Formats debug output for various argument types (overloaded).</short>
<descr>
<ul>
<li>boolean: "True" or "False".</li>
<li>pointer: hexadecimal address.</li>
<li>TRect, TPoint: shows the x/y coordinates.</li>
<li>TComponentState: set.</li>
<li>TObject: Name:ClassName.</li>
<li>TClass: ClassName.</li>
<li>
String, WideString: chars &gt; #126 are translated into #nn (or #nnnn) 
character constants.
</li>
</ul>
</descr>
<seealso/>
</element>
<element name="DbgS.Result">
<short/>
</element>
<element name="DbgS.s">
<short/>
</element>
<element name="DbgS.q">
<short/>
</element>
<element name="DbgS.MaxDecimals">
<short/>
</element>
<element name="DbgS.m">
<short/>
</element>
<element name="DbgS.c">
<short/>
</element>
<element name="DbgS.i">
<short/>
</element>
<element name="DbgS.r">
<short/>
</element>
<element name="DbgS.p">
<short/>
</element>
<element name="DbgS.e">
<short/>
</element>
<element name="DbgS.b">
<short/>
</element>
<element name="DbgS.Shift">
<short/>
</element>
<element name="DbgS.i1">
<short/>
</element>
<element name="DbgS.i2">
<short/>
</element>
<element name="DbgS.i3">
<short/>
</element>
<element name="DbgS.i4">
<short/>
</element>
<element name="DbgS.ASize">
<short/>
</element>
<element name="DbgS.ATM">
<short/>
</element>
<element name="DbgS.AScrollInfo">
<short/>
</element>

<element name="DbgSName">
<short>Returns the component or class name.</short>
<descr/>
<seealso/>
</element>
<element name="DbgSName.Result">
<short/>
</element>
<element name="DbgSName.p">
<short/>
</element>

<element name="DbgStr">
<short>
Converts control characters, or characters above #126 into #hex format.
</short>
<descr/>
<seealso/>
</element>
<element name="DbgStr.Result">
<short/>
</element>
<element name="DbgStr.StringWithSpecialChars">
<short/>
</element>

<element name="DbgWideStr">
<short>
Converts control characters, or characters above #126 into #hex format.
</short>
<descr/>
<seealso/>
</element>
<element name="DbgWideStr.Result">
<short/>
</element>
<element name="DbgWideStr.StringWithSpecialChars">
<short/>
</element>

<element name="dbgMemRange">
<short>Provides an hex dump of a memory section.
</short>
<descr/>
<seealso/>
</element>
<element name="dbgMemRange.Result">
<short>The formatted dump.</short>
</element>
<element name="dbgMemRange.P">
<short>The start address.</short>
</element>
<element name="dbgMemRange.Count">
<short>The number of bytes to dump.</short>
</element>
<element name="dbgMemRange.Width">
<short>The number of bytes per line, zero for no line breaks.</short>
</element>

<element name="dbgMemStream">
<short>Provides a hex dump of an memory stream.</short>
<descr/>
<errors>
<p>
The dump starts at the <b>current</b> stream position, the position moves to 
the end of the dumped range.
</p>
</errors>
<seealso/>
</element>
<element name="dbgMemStream.Result">
<short/>
</element>
<element name="dbgMemStream.MemStream">
<short/>
</element>
<element name="dbgMemStream.Count">
<short>The maximum number of bytes to dump.</short>
</element>

<element name="dbgObjMem">
<short>Provides an hex dump of an TObject.</short>
<descr/>
<errors>
</errors>
<seealso/>
</element>
<element name="dbgObjMem.Result">
<short/>
</element>
<element name="dbgObjMem.AnObject">
<short/>
</element>

<element name="dbghex">
<short>Provides a hex dump of an Int64 value, (sign + absolute value).</short>
<descr/>
<errors>
</errors>
<seealso/>
</element>
<element name="dbghex.Result">
<short/>
</element>
<element name="dbghex.i">
<short/>
</element>

<element name="DbgSWindowPosFlags">
<short>Provides a dump of SetWindowPosition flags.</short>
<descr/>
<seealso/>
</element>
<element name="DbgSWindowPosFlags.Result">
<short/>
</element>
<element name="DbgSWindowPosFlags.Flags">
<short/>
</element>

<element name="DbgsVKCode">
<short>Converts a virtual key code to its String representation.</short>
<descr/>
<seealso/>
</element>
<element name="DbgsVKCode.Result">
<short/>
</element>
<element name="DbgsVKCode.c">
<short/>
</element>

<element name="DbgOutThreadLog">
<short>
Writes a debugging message to the log file for the current thread.
</short>
<descr/>
<seealso/>
</element>
<element name="DbgOutThreadLog.Msg">
<short/>
</element>

<element name="DebuglnThreadLog">
<short>
Writes a debugging message to the log file for the current thread which 
includes the thread identifier.
</short>
<descr/>
<seealso/>
</element>
<element name="DebuglnThreadLog.Msg">
<short/>
</element>
<element name="DebuglnThreadLog.Args">
<short/>
</element>

<element name="DbgSaveData">
<short>Writes data to a file.</short>
<descr/>
<seealso/>
</element>
<element name="DbgSaveData.FileName">
<short/>
</element>
<element name="DbgSaveData.AData">
<short/>
</element>
<element name="DbgSaveData.ADataSize">
<short/>
</element>

<element name="DbgAppendToFile">
<short>Appends a line to the given file.</short>
<descr/>
<seealso/>
</element>
<element name="DbgAppendToFile.FileName">
<short/>
</element>
<element name="DbgAppendToFile.S">
<short/>
</element>

<element name="DbgAppendToFileWithoutLn">
<short>Appends (pre-formatted) text to an file.</short>
<descr/>
<errors>
</errors>
<seealso/>
</element>
<element name="DbgAppendToFileWithoutLn.FileName">
<short/>
</element>
<element name="DbgAppendToFileWithoutLn.S">
<short/>
</element>

<element name="CloseDebugOutput">
<short>Calls the Finish method for the debug logger class instance.</short>
<descr/>
<errors>
</errors>
<seealso/>
</element>

<element name="ClassCase">
<short>Indicates if a TClass instance is found in the specified array.</short>
<descr/>
<seealso/>
</element>
<element name="ClassCase.Result">
<short>
Ordinal position in ACase where the TClass instance was found, or -1 when not 
found.
</short>
</element>
<element name="ClassCase.AClass">
<short>TClass instance to locate in ACase.</short>
</element>
<element name="ClassCase.ACase">
<short>Array of TClass instances to examine in the routine.</short>
</element>
<element name="ClassCase.ADescendant">
<short>
<b>True</b> to consider descendants of AClass as a match in the routine.
</short>
</element>

<element name="UTF16String">
<short>Alias to the UnicodeString type.</short>
<descr/>
<seealso/>
</element>

<element name="PUTF16String" link="UTF16String">
<short>Pointer to the UTF16String type.</short>
<descr/>
<seealso/>
</element>

<element name="UTF16CharacterLength">
<short>
Deprecated, see the <file>LazUTF16</file> unit in the <file>LazUtils</file> 
package for replacements.
</short>
</element>
<element name="UTF16CharacterLength.Result">
<short/>
</element>
<element name="UTF16CharacterLength.p">
<short/>
</element>

<element name="UTF16Length">
<short>
Deprecated, see the <file>LazUTF16</file> unit in the <file>LazUtils</file> 
package for replacements.
</short>
</element>
<element name="UTF16Length.Result">
<short/>
</element>
<element name="UTF16Length.s">
<short/>
</element>
<element name="UTF16Length.p">
<short/>
</element>
<element name="UTF16Length.WordCount">
<short/>
</element>

<element name="UTF16CharacterToUnicode">
<short>
Deprecated, see the <file>LazUTF16</file> unit in the <file>LazUtils</file> 
package for replacements.
</short>
</element>
<element name="UTF16CharacterToUnicode.Result">
<short/>
</element>
<element name="UTF16CharacterToUnicode.p">
<short/>
</element>
<element name="UTF16CharacterToUnicode.CharLen">
<short/>
</element>

<element name="UnicodeToUTF16">
<short>
Deprecated, see the <file>LazUTF16</file> unit in the <file>LazUtils</file> 
package for replacements.
</short>
</element>
<element name="UnicodeToUTF16.Result">
<short/>
</element>
<element name="UnicodeToUTF16.u">
<short/>
</element>

<element name="CreateFirstIdentifier">
<short>Replaces last digits with 1.</short>
<descr>
<p>
For example Name321 becomes Name1.
</p>
</descr>
<seealso/>
</element>
<element name="CreateFirstIdentifier.Result">
<short/>
</element>
<element name="CreateFirstIdentifier.Identifier">
<short/>
</element>

<element name="CreateNextIdentifier">
<short>
Deprecated, see the <file>LazUTF8</file> unit in the <file>LazUtils</file> 
package for replacements.
</short>
</element>
<element name="CreateNextIdentifier.Result">
<short/>
</element>
<element name="CreateNextIdentifier.Identifier">
<short/>
</element>

<element name="IsFontNameDefault">
<short>Indicates if the specified name contains 'default'.</short>
<descr/>
<seealso/>
</element>
<element name="IsFontNameDefault.Result">
<short><b>True</b> when AName contains 'default'.</short>
</element>
<element name="IsFontNameDefault.AName">
<short>Font name examined in the routine.</short>
</element>

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