lazarus/components/lazcontrols/docs/spinex.xml

2722 lines
99 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<fpdoc-descriptions>
<package name="LazControls">
<!-- SpinEx -->
<module name="SpinEx">
<short>Provides extended TSpinEdit- and TFloatSpinEdit-like controls.</short>
<descr>
<p>
Implements <var>TSpinEditEx</var> and <var>TFloatSpinEditEx</var>, which
allow a <var>NullValue</var> and provide behaviors applied when the text for
the control is not a valid number.
</p>
<p>
Initial implementation: 2016 by Bart Broersma. Revised in August 2020.
</p>
<p>
<file>spinex.pps</file> is part of the <file>LazControls</file> package.
</p>
</descr>
<!-- unresolved external references -->
<element name="Classes"/>
<element name="SysUtils"/>
<element name="Math"/>
<element name="LCLType"/>
<element name="LCLProc"/>
<element name="Controls"/>
<element name="ClipBrd"/>
<element name="ComCtrls"/>
<element name="GroupedEdit"/>
<element name="LResources"/>
<element name="TNullValueBehaviour">
<short>
Specifies the behavior applied in a control when its text is not a valid
number.
</short>
<descr>
<p>
<var>TNullValueBehaviour</var> is an enumerated type with values that control
the behavior in TSpinEditEx or TFloatSpinEditEx when their value is not a
valid number, or not within the Min and Max value for the control.
</p>
</descr>
<seealso/>
</element>
<element name="TNullValueBehaviour.nvbShowTextHint">
<short>
Value becomes NullValue, and Text becomes empty. TextHint will show when
focus is lost.
</short>
</element>
<element name="TNullValueBehaviour.nvbLimitedNullValue">
<short>
Value becomes GetLimitedValue(NullValue), and Text becomes Value.
</short>
</element>
<element name="TNullValueBehaviour.nvbMinValue">
<short>
Value becomes MinValue, and Text becomes Value. Please note that this is the
default behavior, as used in Delphi.
</short>
</element>
<element name="TNullValueBehaviour.nvbMaxValue">
<short>
Value becomes MaxValue, and Text becomes Value.
</short>
</element>
<element name="TNullValueBehaviour.nvbInitialValue">
<short>
Value becomes InitialValue (OnEnter), and Text becomes Value.
</short>
</element>
<element name="TSpinEditExBase">
<short>
Specifies the base class for extended spin edit controls in the unit.
</short>
<descr>
<p>
<var>TSpinEditExBase</var> is a generic class type, and a descendant of
<var>TCustomAbstractGroupedEdit</var>. TSpinEditExBase specifies the base
class for the extended spin edit controls including <var>TSpinEditEx</var>
and <var>TFloatSpinEditEx</var>. TSpinEditExBase must be specialized in a
descendent class for a specific data type. The specialization type is used to
implement properties including: Increment, MinValue, MaxValue, NullValue, and
Value.
</p>
</descr>
<seealso>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit"/>
<link id="TCustomFloatSpinEditEx"/>
<link id="TCustomSpinEditEx"/>
<link id="TFloatSpinEditEx"/>
<link id="TSpinEditEx"/>
<link id="IntroToSpinEx"/>
</seealso>
</element>
<!-- private constants -->
<element name="TSpinEditExBase.DefIncrement">
<short>Default value for the Increment property.</short>
</element>
<element name="TSpinEditExBase.DefMaxValue">
<short>Default value for the MaxValue property.</short>
</element>
<element name="TSpinEditExBase.DefMinValue">
<short>Default value for the MinValue property.</short>
</element>
<element name="TSpinEditExBase.DefMinRepeatValue">
<short>Default value for the MinRepeatValue property.</short>
</element>
<!-- private members -->
<element name="TSpinEditExBase.FArrowKeys"/>
<element name="TSpinEditExBase.FIncrement"/>
<element name="TSpinEditExBase.FMaxValue"/>
<element name="TSpinEditExBase.FMinValue"/>
<element name="TSpinEditExBase.FInitialValue"/>
<element name="TSpinEditExBase.FMinRepeatValue"/>
<element name="TSpinEditExBase.FNullValue"/>
<element name="TSpinEditExBase.FNullValueBehaviour"/>
<element name="TSpinEditExBase.FOrientation"/>
<element name="TSpinEditExBase.FValue"/>
<element name="TSpinEditExBase.FUpdatePending"/>
<element name="TSpinEditExBase.FSettingValue"/>
<!-- private methods -->
<element name="TSpinEditExBase.GetEdit">
<short>Gets the value for the Edit property.</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.Edit"/>
</seealso>
</element>
<element name="TSpinEditExBase.GetEdit.Result">
<short>Value for the property.</short>
</element>
<element name="TSpinEditExBase.SetMinRepeatValue">
<short>Sets the value for the MinRepeatValue property.</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.MinRepeatValue"/>
</seealso>
</element>
<element name="TSpinEditExBase.SetMinRepeatValue.AValue">
<short>New value for the property.</short>
</element>
<element name="TSpinEditExBase.SpinUpDown">
<short>
Called when one of the buttons in the TUpDown control has been clicked.
</short>
<descr>
<p>
<var>SpinUpDown</var> ensures that the value in <var>Text</var> is a valid
representation for the numeric type used in the control. It calls
<var>GetLimitedValue</var> to ensure that <var>Value</var> is in the range
specified in <var>MinValue</var> and <var>MaxValue</var>. MinValue is used if
<var>TextIsNumber</var> returns <b>False</b>.
</p>
<p>
SpinUpDown sets the value in <var>Modified</var> to <b>True</b> when Value
has been updated in the method.
</p>
<p>
Called when key or mouse events are handled in <var>EditKeyDown</var>,
<var>EditMouseWheelDown</var>, and <var>EditMouseWheelUp</var>. It is also
assigned as the handler routine for the <var>OnChangingEx</var> event in the
<var>UpDown</var> property in the constructor for the class instance.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.UpDown"/>
<link id="TSpinEditExBase.MinValue"/>
<link id="TSpinEditExBase.MaxValue"/>
<link id="TSpinEditExBase.GetLimitedValue"/>
<link id="TSpinEditExBase.TextIsNumber"/>
</seealso>
</element>
<element name="TSpinEditExBase.SpinUpDown.Up">
<short>
<b>True</b> when the Up button in the TUpDown control has been clicked;
<b>False</b> when the Down button has been clicked.
</short>
</element>
<element name="TSpinEditExBase.GetNullValue">
<short>Gets the value for the NullValue property.</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.NullValue"/>
</seealso>
</element>
<element name="TSpinEditExBase.GetNullValue.Result">
<short>
Returns the generic type with the value for the NullValue property.
</short>
</element>
<element name="TSpinEditExBase.GetOrientation">
<short>
Gets the value for the Orientation property.
</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.Orientation"/>
</seealso>
</element>
<element name="TSpinEditExBase.GetOrientation.Result">
<short>
Value for the Orientation property.
</short>
</element>
<element name="TSpinEditExBase.GetUpDown">
<short>Gets the value for the UpDown property.</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.UpDown"/>
</seealso>
</element>
<element name="TSpinEditExBase.GetUpDown.Result">
<short>Value for the property.</short>
</element>
<element name="TSpinEditExBase.GetValue">
<short>Gets the value for the Value property.</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.Value"/>
</seealso>
</element>
<element name="TSpinEditExBase.GetValue.Result">
<short>Value for the property.</short>
</element>
<element name="TSpinEditExBase.IncrementStored">
<short>Gets the storage specifier for the Increment property.</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.Increment"/>
</seealso>
</element>
<element name="TSpinEditExBase.IncrementStored.Result">
<short>
<b>True</b> when a value other than DefIncrement has been assigned to the
Increment property.
</short>
</element>
<element name="TSpinEditExBase.IsLimited">
<short>
Indicates if valid values have been assigned to the MinValue and MaxValue
properties.
</short>
<descr>
<p>
The return value is <b>True</b> when MaxValue is larger than MinValue.
IsLimited is used in the implementation of the <var>IsOutOfLimits</var>
method.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.MinValue"/>
<link id="TSpinEditExBase.MaxValue"/>
</seealso>
</element>
<element name="TSpinEditExBase.IsLimited.Result">
<short>
<b>True</b> when the typed value in MaxValue is larger than the typed value
in MinValue.
</short>
</element>
<element name="TSpinEditExBase.IsOutOfLimits">
<short>
Determines if the specified value is not within the limits set in MinValue
and MaxValue.
</short>
<descr/>
<seealso/>
</element>
<element name="TSpinEditExBase.IsOutOfLimits.Result">
<short>
<b>True</b> when the value is outside the limits specified in the MinValue
and MaxValue properties.
</short>
</element>
<element name="TSpinEditExBase.IsOutOfLimits.AValue">
<short>Value examined in the method.</short>
</element>
<element name="TSpinEditExBase.MaxValueStored">
<short>Gets the storage specifier for the MaxValue property.</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.MaxValue"/>
</seealso>
</element>
<element name="TSpinEditExBase.MaxValueStored.Result">
<short>
<b>True</b> when a value other than DefMaxValue has been assigned to the
MaxValue property.
</short>
</element>
<element name="TSpinEditExBase.MinValueStored">
<short>Gets the storage specifier for the MaxValue property.</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.MinValue"/>
</seealso>
</element>
<element name="TSpinEditExBase.MinValueStored.Result">
<short>
<b>True</b> when a value other than DefMaxValue has been assigned to the
MinValue property.
</short>
</element>
<element name="TSpinEditExBase.SetOrientation">
<short>
Sets the value for the Orientation property.
</short>
<descr/>
<seealso/>
</element>
<element name="TSpinEditExBase.SetOrientation.AValue">
<short>
New value for the Orientation property.
</short>
</element>
<element name="TSpinEditExBase.UpdateControl">
<short>Updates members in the control when editing is completed.</short>
<descr>
<p>
<var>UpdateControl</var> is a method used to update members in the class
instance to reflect the state for the control. It is called when a new value
is assigned to properties in the class instance. It is called when editing
has been completed using the <var>Edit</var> for the grouped editing control.
It is also called when the handle is allocated for the control in
<var>InitializeWnd</var>.
</p>
<p>
<var>NullValueBehaviour</var> is used to determine whether <var>Value</var>
is adjusted to ensure that it is in the range specified by MinValue and
MaxValue. A value other than <var>nvbShowTextHint</var> causes
<var>GetLimitedValue</var> to be called to get the adjusted Value.
</p>
<p>
No additional actions are performed in the method when a handle has not been
allocated for the control, or at design-time.
</p>
<p>
When NullValueBehaviour is set to <var>nvbShowTextHint</var>, an invalid
numeric value entered in <var>Text</var> causes Text to be set to an empty
string. This allows the <var>TextHint</var> for the control to be displayed.
</p>
<p>
When Value is a valid number, and in the required range, it is converted to
its <var>String</var> representation and assigned to the Text for the control.
</p>
</descr>
<seealso/>
</element>
<element name="TSpinEditExBase.UpDownChangingEx">
<short>Implements the OnChangingEx event handler assigned to UpDown.</short>
<descr>
<p>
No actions are performed in the handler when <var>ReadOnly</var> is set to
<b>True</b>.
</p>
<p>
When <var>Direction</var> is <var>updUp</var>, the <var>SpinUpDown</var>
method is called using <b>True</b> as an argument. Otherwise, SpinUpDown is
called using <b>False</b> as an argument.
</p>
</descr>
<seealso/>
</element>
<element name="TSpinEditExBase.UpDownChangingEx.Sender">
<short>Control for the event notification.</short>
</element>
<element name="TSpinEditExBase.UpDownChangingEx.AllowChange">
<short>Not used in the method.</short>
</element>
<element name="TSpinEditExBase.UpDownChangingEx.NewValue">
<short>Not used in the method.</short>
</element>
<element name="TSpinEditExBase.UpDownChangingEx.Direction">
<short>Indicates whether the up or down button was clicked in UpDown.</short>
</element>
<element name="TSpinEditExBase.UpDownClick">
<short>Implements the OnClick event handler assigned to UpDown.</short>
<descr>
<p>
Calls the <var>BuddyClick</var> method for the grouped edit control.
</p>
</descr>
<seealso>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.BuddyClick"/>
</seealso>
</element>
<element name="TSpinEditExBase.UpDownClick.Sender">
<short>Control for the event notification.</short>
</element>
<element name="TSpinEditExBase.UpDownClick.Button">
<short>The button type for the TUpDown control.</short>
</element>
<!-- protected members and properties -->
<element name="TSpinEditExBase.GetBuddyClassType">
<short>Gets the class type used for Buddy in the grouped edit control.</short>
<descr/>
<seealso>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.GetBuddyClassType"/>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.Buddy"/>
</seealso>
</element>
<element name="TSpinEditExBase.GetBuddyClassType.Result">
<short>Returns a class reference to TUpDown.</short>
</element>
<element name="TSpinEditExBase.DoEnter">
<short>Performs actions needed when the control is focused.</short>
<descr>
<p>
<var>DoEnter</var> is an overridden method in <var>TSpinEditExBase</var>, and
calls the inherited method on entry. The inherited methods handle the change
in control focus, and signal the OnEnter event handler (when assigned).
DoEnter ensures that the initial <var>Value</var> for the control is stored
internally for use with the <var>NullValueBehaviour</var> used for the
control instance.
</p>
</descr>
<seealso>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.DoEnter"/>
<link id="TSpinEditExBase.NullValue"/>
<link id="TSpinEditExBase.MinValue"/>
<link id="TSpinEditExBase.MaxValue"/>
<link id="TSpinEditExBase.NullValueBehaviour"/>
</seealso>
</element>
<element name="TSpinEditExBase.RealGetText">
<short>Gets the text displayed for the control.</short>
<descr>
<p>
<var>RealGetText</var> is an overridden <var>TCaption</var> function in
<var>TSpinEditExBase</var> used to get the text displayed for the control.
RealGetText checks whether a handle has been allocated for the control in the
widget set class. When a handle is assigned, the inherited method is called
to the <var>Text</var> for the <var>Edit</var> in the grouped edit control.
Otherwise, <var>ValueToStr</var> is called to get the string representation
for the control <var>Value</var>.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.Value"/>
<link id="TSpinEditExBase.ValueToStr"/>
<link id="TSpinEditExBase.Edit"/>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.RealGetText">TCustomAbstractGroupedEdit.RealGetText</link>
</seealso>
</element>
<element name="TSpinEditExBase.RealGetText.Result">
<short>Contains the text with the value for the control.</short>
</element>
<element name="TSpinEditExBase.Reset">
<short>Reverts changes made to the value for the control.</short>
<descr>
<p>
<var>Reset</var> is an overridden method in <var>TSpinEditExBase</var> used
to revert changes made to the <var>Value</var> for the control. The
<var>IsMasked</var> property is used to determine if an editing mask is in
use in the <var>Edit</var> for the grouped edit control. When set to
<b>True</b>, the inherited method is called to revert any changes made in
Edit. When an editing mask is not in use, the initial value for the control
(captured when it received focus) is restored in the Value property.
</p>
<p>
Reset is used in the implementation of the <var>EditKeyDown</var> event
handler assigned to Edit. It is called when the <b>Escape</b> key
(<b>VK_Escape</b>) is pressed in the Edit control.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.Value"/>
<link id="TSpinEditExBase.Edit"/>
<link id="TSpinEditExBase.EditKeyDown"/>
<link id="TSpinEditExBase.DoEnter"/>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.Reset"/>
</seealso>
</element>
<element name="TSpinEditExBase.EditChange">
<short>
Signals the OnChange event handler for the Edit in the grouped edit control.
</short>
<descr>
<p>
<var>EditChange</var> is an overridden method in <var>TSpinEditExBase</var>.
It ensures that <var>Modified</var> is set to <b>True</b> when
<var>Value</var> has been changed using the <var>UpDown</var> buttons, Up or
Down cursor keys, or by scrolling the mouse wheel. EditChange calls the
inherited method prior to exit to signal the <var>OnChange</var> event
handler (when assigned).
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.Value"/>
<link id="TSpinEditExBase.UpDown"/>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.EditChange"/>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.OnChange"/>
</seealso>
</element>
<element name="TSpinEditExBase.EditKeyDown">
<short>Implements the KeyDown handler for the grouped edit control.</short>
<descr>
<p>
<var>EditKeyDown</var> is an overridden method in <var>TSpinEditExBase</var>
which implements the <var>KeyDown</var> event handler for the <var>Edit</var>
control. It calls the inherited method which signals the <var>OnKeyDown</var>
event handler (when assigned). It also ensures that any keys explicitly
handled in the grouped edit control are discarded by setting <var>Key</var>
to <b>0</b> (<b>zero</b>). This includes the following virtual key codes and
their associated actions:
</p>
<dl>
<dt>VK_Escape</dt>
<dd>Calls Reset.</dd>
<dt>VK_Up</dt>
<dd>
Calls SpinUpDown when ArrowKeys is set to <b>True</b> and the control is not
ReadOnly.
</dd>
<dt>VK_Down</dt>
<dd>
Calls SpinUpDown when ArrowKeys is set to <b>True</b> and the control is not
ReadOnly.
</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="TSpinEditExBase.EditKeyDown.Key">
<short>Virtual key code examined in the handler.</short>
</element>
<element name="TSpinEditExBase.EditKeyDown.Shift">
<short>Shift, Ctrl, or Alt modifier for the key code.</short>
</element>
<element name="TSpinEditExBase.EditMouseWheelUp">
<short>Applies a Mouse Wheel Up message to the value for the control.</short>
<descr>
<p>
<var>EditMouseWheelUp</var> is the handler signalled when a Mouse Wheel Up
message occurs in the <var>Edit</var> for the control. EditMouseWheelUp is
overridden in <var>TSpinEditExBase</var>, and calls the inherited method.
<var>Handled</var> is set to <b>True</b> if the mouse wheel message was
handled in the ancestor class. When set to <b>False</b>, the
<var>SpinUpDown</var> method is called to increment the value in the control.
</p>
</descr>
<seealso>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.EditMouseWheelUp"/>
</seealso>
</element>
<element name="TSpinEditExBase.EditMouseWheelUp.Shift">
<short>Shift, Alt, or Ctrl modifier for the mouse wheel message.</short>
</element>
<element name="TSpinEditExBase.EditMouseWheelUp.MousePos">
<short>Coordinates for the Mouse pointer.</short>
</element>
<element name="TSpinEditExBase.EditMouseWheelUp.Handled">
<short><b>True</b> when the message is handled in the ancestor class.</short>
</element>
<element name="TSpinEditExBase.EditMouseWheelDown">
<short>Handles mouse wheel down messages for the Edit in the control.</short>
<descr>
<p>
<var>EditMouseWheelDown</var> is the handler signalled when a Mouse Wheel
Down message occurs in the <var>Edit</var> for the control.
EditMouseWheelDown is overridden in <var>TSpinEditExBase</var>, and calls the
inherited method. <var>Handled</var> is set to <b>True</b> if the mouse wheel
message was handled in the ancestor class. When set to <b>False</b>, the
<var>SpinUpDown</var> method is called to decrement the value in the control.
</p>
</descr>
<seealso>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.EditMouseWheelUp"/>
</seealso>
</element>
<element name="TSpinEditExBase.EditMouseWheelDown.Shift">
<short>Shift, Alt, or Ctrl modifier for the mouse message.</short>
</element>
<element name="TSpinEditExBase.EditMouseWheelDown.MousePos">
<short>Coordinates for the mouse cursor.</short>
</element>
<element name="TSpinEditExBase.EditMouseWheelDown.Handled">
<short><b>True</b> when the message was handled in the method.</short>
</element>
<element name="TSpinEditExBase.SafeInc">
<short>
Ensures the incremented value is a valid number for the data type.
</short>
<descr>
<p>
<var>SafeInc</var> is a function used to increase the specified value by the
<var>Increment</var> for the control. SafeInc ensures that the incremented
value is valid for a given data type. It is an abstract virtual method, and
must be implemented in a descendent class to use the specific data type for
the specialization.
</p>
<p>
<var>AValue</var> contains the type with the numeric value to be incremented.
</p>
<p>
The return value contains the numeric value for the type after the value in
Increment has been added. The return value is constrained when the
incremented value is too large for the data type.
</p>
<p>
SafeInc is used in the implementation of the <var>SpinUpDown</var> method.
</p>
</descr>
<seealso>
<link id="TCustomSpinEditEx.SafeInc"/>
<link id="TCustomFloatSpinEditEx.SafeInc"/>
</seealso>
</element>
<element name="TSpinEditExBase.SafeInc.Result">
<short>The incremented (and possibly constrained) value.</short>
</element>
<element name="TSpinEditExBase.SafeInc.AValue">
<short>Value incremented in the method.</short>
</element>
<element name="TSpinEditExBase.SafeDec">
<short>
Ensures the decremented value is a valid number for the data type.
</short>
<descr>
<p>
<var>SafeDec</var> is a function used to decrease the specified value by the
<var>Increment</var> for the control. SafeDec ensures that the decremented
value is valid for a given data type. It is an abstract virtual method, and
must be implemented in a descendent class to use the specific data type for
the specialization.
</p>
<p>
<var>AValue</var> contains the type with the numeric value to be decremented.
</p>
<p>
The return value contains the numeric value for the type after the value in
Increment has been subtracted. The return value is range limited when the
incremented value is too large for the data type.
</p>
<p>
SafeDec is used in the implementation of the <var>SpinUpDown</var> method.
</p>
</descr>
<seealso>
<link id="TCustomSpinEditEx.SafeDec"/>
<link id="TCustomFloatSpinEditEx.SafeDec"/>
</seealso>
</element>
<element name="TSpinEditExBase.SafeDec.Result">
<short>Control value after the decrement operation.</short>
</element>
<element name="TSpinEditExBase.SafeDec.AValue">
<short>The decremented (and possibly range limited) value.</short>
</element>
<element name="TSpinEditExBase.SameValue">
<short>Determines whether the specified arguments have the same value.</short>
<descr>
<p>
<var>SameValue</var> is a <var>Boolean</var> function used to compare the
values in <var>AValue1</var> and <var>AValue2</var> to determine if they have
the same value. The return value is <b>True</b> when both AValue1 and
AValue2 have the same value. It is defined as an abstract virtual method in
<var>TSpinEditExBase</var>, and must be implemented in descendent classes to
compare the data type for the specialization.
</p>
<p>
SameValue is used in the implementation of storage specifiers for the
<var>Increment</var>, <var>MinValue</var>, and <var>MaxValue</var> properties.
</p>
<p>
This method was introduced to ensure that the type specialization for the
class instance is used when value comparisons are performed.
</p>
</descr>
<version>
Introduced in version 2.2.0. Modified in version 2.4 to remove the define
for FPC compiler version.
</version>
<seealso>
<link id="TSpinEditExBase.Increment"/>
<link id="TSpinEditExBase.MinValue"/>
<link id="TSpinEditExBase.MaxValue"/>
<link id="TCustomFloatSpinEditEx"/>
<link id="TCustomSpinEditEx"/>
<link id="#rtl.math.SameValue">Math.SameValue</link>
</seealso>
</element>
<element name="TSpinEditExBase.SameValue.Result">
<short><b>True</b> if both arguments have the same value.</short>
</element>
<element name="TSpinEditExBase.SameValue.AValue1">
<short>First value for the comparison.</short>
</element>
<element name="TSpinEditExBase.SameValue.AValue2">
<short>Second value for the comparison.</short>
</element>
<element name="TSpinEditExBase.SetValue">
<short>Sets the value for the Value property.</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.Value"/>
</seealso>
</element>
<element name="TSpinEditExBase.SetValue.AValue">
<short>New value for the property.</short>
</element>
<element name="TSpinEditExBase.SetNullValue">
<short>Sets the value for the NullValue property.</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.NullValue"/>
</seealso>
</element>
<element name="TSpinEditExBase.SetNullValue.AValue">
<short>New value for the property.</short>
</element>
<element name="TSpinEditExBase.SetMaxValue">
<short>Sets the value for the MaxValue property.</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.MaxValue"/>
</seealso>
</element>
<element name="TSpinEditExBase.SetMaxValue.AValue">
<short>New value for the property.</short>
</element>
<element name="TSpinEditExBase.SetMinValue">
<short>Sets the value for the MinValue property.</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.MinValue"/>
</seealso>
</element>
<element name="TSpinEditExBase.SetMinValue.AValue">
<short>New value for the property.</short>
</element>
<element name="TSpinEditExBase.SetIncrement">
<short>Sets the value for the Increment property.</short>
<descr/>
<seealso>
<link id="TSpinEditExBase.Increment"/>
</seealso>
</element>
<element name="TSpinEditExBase.SetIncrement.AIncrement">
<short>New value for the property.</short>
</element>
<element name="TSpinEditExBase.TextIsNumber">
<short>
Indicates if the specified String contains a valid numeric value.
</short>
<descr>
<p>
<var>TextIsNumber</var> is an abstract virtual <var>Boolean</var> function
which indicates the value specified in <var>S</var> represents a valid
number. <var>ANumber</var> is an output parameter where the numeric value for
the data type is stored.
</p>
<p>
TextIsNumber must be implemented in a descendent class using the data type
for the specialization.
</p>
</descr>
<seealso>
<link id="TCustomSpinEditEx.TextIsNumber"/>
<link id="TCustomFloatSpinEditEx.TextIsNumber"/>
</seealso>
</element>
<element name="TSpinEditExBase.TextIsNumber.Result">
<short>
<b>True</b> when S contains a value that can be converted to the data type
for ANumber.
</short>
</element>
<element name="TSpinEditExBase.TextIsNumber.S">
<short>String converted to a numeric value in the method.</short>
</element>
<element name="TSpinEditExBase.TextIsNumber.ANumber">
<short>Numeric value for the specified String.</short>
</element>
<element name="TSpinEditExBase.InitializeWnd">
<short>
Performs actions needed when the handle is allocated for the control.
</short>
<descr>
<p>
<var>InitializeWnd</var> is an overridden method used to perform actions
needed when the handle is allocated for the control, and before child
controls are created. InitializeWnd calls the inherited method on entry.
</p>
<p>
InitializeWnd calls <var>UpdateControl</var> to validate and update members
in the class instance.
</p>
</descr>
<seealso/>
</element>
<element name="TSpinEditExBase.FinalizeWnd">
<short>Performs actions prior to freeing the handle for the control.</short>
<descr>
<p>
Ensures that the Value property is up-to-date before releasing the Handle for
the control.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.FinalizeWnd">TWinControl.FinalizeWnd</link>
</seealso>
</element>
<element name="TSpinEditExBase.Loaded">
<short>
Performs action needed when the component has been loaded from the LCL
streaming mechanism.
</short>
<descr>
<p>
<var>Loaded</var> is an overridden method in <var>TSpinEditExBase</var>, and
calls the inherited method on entry. Loaded corrects an undesirable behavior
in the ancestor class; it sends a <b>CM_PARENTFONTCHANGED</b> message which
also alters the color in the grouped edit control. Loaded calls
<var>UpdateSpacing</var> prior to restoring the initial color assigned to the
edit control.
</p>
</descr>
<seealso>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.Loaded"/>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.UpdateSpacing"/>
</seealso>
</element>
<element name="TSpinEditExBase.ArrowKeys">
<short>
Indicates is Up and Down cursor keys can be used in the Edit for the control
</short>
<descr>
<p>
<var>ArrowKeys</var> is a <var>Boolean</var> property which indicates if
cursor keys can be used to navigate content in the Edit for the control.
</p>
<p>
When set to <b>True</b>, the <b>Up</b> (<var>VK_UP</var>) and <b>Down</b>
(<var>VK_Down</var>) arrow keys can be used to increase or decrease the
<var>Value</var> for the control. The key events are handled in the
<var>EditKeyDown</var> event handler assigned to <var>Edit</var>. When set to
<b>False</b>, the Up and Down keys are ignored in Edit.
</p>
<p>
The default value for the property is <b>True</b>.
</p>
<p>
Use <var>UpDown</var> to access the <var>TUpDown</var> instance used in the
grouped edit control.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.Edit"/>
<link id="TSpinEditExBase.EditKeyDown"/>
<link id="TSpinEditExBase.Value"/>
<link id="TSpinEditExBase.UpDown"/>
<link id="#lcl.comctrls.TUpDown"/>
</seealso>
</element>
<element name="TSpinEditExBase.Edit">
<short>Text editor for the grouped edit control.</short>
<descr>
<p>
<var>Edit</var> a read-only <var>TGEEdit</var> property which contains the
editor for the grouped edit control. Edit is used to perform direct input of
a new <var>Value</var> for the control. Edit allows use of the <b>Up</b> and
<b>Down</b> cursor keys to increment or decrement the value when
<var>ArrowKeys</var> is enabled.
</p>
<p>
<var>UpDown</var> is the <var>TUpDown</var> instance used to increment and
decrement the value for the grouped edit control using mouse clicks.
</p>
</descr>
<seealso>
<link id="#lcl.groupededit.TGEEdit"/>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit"/>
</seealso>
</element>
<element name="TSpinEditExBase.UpDown">
<short>Contains the TUpDown instance used in the grouped edit control.</short>
<descr>
<p>
<var>UpDown</var> is a read-only property which contains the
<var>TUpDown</var> instance used to increment or decrement the
<var>Value</var> for the grouped edit control. Click on the buttons in UpDown
to increase or decrease the <var>Value</var> for the control by the amount
specified in the <var>Increment</var> property.
</p>
<p>
<var>Edit</var> is used to perform direct input of the value for the grouped
edit control.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.Increment"/>
<link id="TSpinEditExBase.Edit"/>
<link id="#lcl.comctrls.TUpDown"/>
</seealso>
</element>
<element name="TSpinEditExBase.UpDownVisible">
<short>
Indicates whether the TUpDown instance for the grouped edit control is
visible.
</short>
<descr>
<p>
<var>UpDownVisible</var> is a <var>Boolean</var> property which indicates if
<var>UpDown</var> in the grouped edit control is visible. It is a convenience
property; read and write access for the value are redirected to the
<var>Visible</var> property in the <var>TUpDown</var> instance in UpDown. The
default value for the property is <b>True</b>.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.UpDown"/>
<link id="#lcl.comctrls.TUpDown"/>
<link id="#lcl.comctrls.TUpDown.Visible"/>
</seealso>
</element>
<element name="TSpinEditExBase.MinRepeatValue">
<short>
Contains the repeat interval for the TUpDown instance in the grouped edit
control.
</short>
<descr>
<p>
<var>MinRepeatValue</var> contains the repeat interval used for the
<var>UpDown</var> control in the grouped edit. The default value for the
property is defined in the <var>DefMinRepeatValue</var> constant.
</p>
<p>
Changing the value for the property causes the <var>MinRepeatInterval</var>
property in <var>UpDown</var> to be updated with the new value.
</p>
</descr>
<seealso>
<link id="#lcl.comctrls.TUpDown.MinRepeatInterval"/>
</seealso>
</element>
<element name="TSpinEditExBase.Orientation">
<short>
Controls the orientation for the increment and decrement buttons used to
change the value for the control.
</short>
<descr>
<p>
<var>Orientation</var> is a <var>TUDOrientation</var> property which
determines the orientation for the buttons on the associated control used to
change the Value property. The property value is read from and written to the
UpDown property which is the Buddy (associate) in the grouped edit control.
</p>
<p>
The default value for the Orientation property is <var>udVertical</var>, and
causes the buttons to be stacked vertically on the edge of the control where
the buttons are aligned. The increment button in placed above the decrement
button. Each button uses one half of the Height for the control excluding the
spacing between the buttons.
</p>
<p>
<var>udHorizontal</var> causes the buttons to be displayed side-by-side on the
edge of the control where the buttons are aligned. The decrement button is
placed to the left of the increment button. Each button has the same width and
mirrors the height for the control. This causes the buttons to have a larger
visual footprint than when the vertical orientation is used.
</p>
<p>
Changing the value for the property causes the UpDown control to be updated
with the new property value, and the Width in the UpDown control is adjusted
for the new orientation.
</p>
<p>
Use the Layout property to control the position of the Edit box within the
grouped edit control. Use UpDownVisible to display or hide the TUpDown Buddy
control for the grouped edit control.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.Edit"/>
<link id="TSpinEditExBase.UpDownVisible"/>
<link id="#lcl.comctrls.TUpDown.Orientation">TUpDown.Orientation</link>
<link id="#lcl.comctrls.TUDOrientation">TUDOrientation</link>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.Buddy">TCustomAbstractGroupedEdit.Buddy</link>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.Layout">TCustomAbstractGroupedEdit.Layout</link>
</seealso>
</element>
<!-- public methods and properties -->
<element name="TSpinEditExBase.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance, and
calls the inherited constructor on entry. Create sets the default values for
properties, including:
</p>
<ul>
<li>ArrowKeys</li>
<li>Increment</li>
<li>MaxValue</li>
<li>NullValueBehaviour</li>
<li>MinRepeatValue</li>
</ul>
<p>
Create configures the <var>Edit</var> and <var>UpDown</var> instances used in
the grouped edit control. Edit is configured to use right alignment for its
text (since it is a numeric value). UpDown is configured to include the flags
needed in its ControlStyle property. The OnChangingEx and OnClick event
handlers for UpDown are also set in the method.
</p>
<remark>
UpDown does not use its Associate property to maintain the relationship to
Edit. This is by design, and allows Edit to be used with floating point
numbers and have a NullValue (in a descendent class instance). It also
enables proper alignment and anchoring for the grouped edit control.
</remark>
<p>
Internal members needed in the class instance are also initialized.
</p>
<p>
Create calls <var>SetInitialBounds</var> to set the size for the control to
the default values returned from <var>GetControlClassDefaultSize</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TSpinEditExBase.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TSpinEditExBase.GetLimitedValue">
<short>
Constrains the specified value to MinValue and MaxValue for the control.
</short>
<descr>
<p>
<var>GetLimitedValue</var> is used in the implementation of
<var>UpdateControl</var>, <var>SpinUpDown</var>, and <var>StrToValue</var>
methods. It is also called from the <var>ValueToStr</var> method in
<var>TCustomFloatSpinEditEx</var>.
</p>
<p>
GetLimitedValue ensures that the value for the type specified in
<var>AValue</var> is constrained to the range specified in the
<var>MinValue</var> and <var>MaxValue</var> properties.
</p>
<p>
The return value contains the original value after it has been range
adjusted. When AValue is smaller than MinValue, MinValue is assigned to the
return value. When AValue is larger than MaxValue, MaxValue is assigned to
the return value.
</p>
<remark>
The return value is not range adjusted when MinValue and MaxValue have the
same value. This is Delphi VCL compatible.
</remark>
</descr>
<seealso/>
</element>
<element name="TSpinEditExBase.GetLimitedValue.Result">
<short>
Value adjusted (when needed) to the MinValue and MaxValue constraints.
</short>
</element>
<element name="TSpinEditExBase.GetLimitedValue.AValue">
<short>Value examined (and adjusted when needed) in the method.</short>
</element>
<element name="TSpinEditExBase.ValueToStr">
<short>Converts the specified value to its representation as a String.</short>
<descr>
<p>
<var>ValueToStr</var> is an abstract virtual <var>String</var> function used
to convert the value specified in <var>AValue</var> to its representation as
a String data type. ValueToStr must be implemented in a descendent class to
use the data type and formatting needed for the specialization.
</p>
</descr>
<seealso>
<link id="TCustomSpinEditEx.ValueToStr"/>
<link id="TCustomFloatSpinEditEx.ValueToStr"/>
</seealso>
</element>
<element name="TSpinEditExBase.ValueToStr.Result">
<short>String representation for the specified data type.</short>
</element>
<element name="TSpinEditExBase.ValueToStr.AValue">
<short>Type with the numeric value converted in the method.</short>
</element>
<element name="TSpinEditExBase.StrToValue">
<short>
Converts the specified string to a numeric value for the generic data type.
</short>
<descr>
<p>
<var>StrToValue</var> is a function which returns a generic type with the
numeric value for the specified String. <var>TextIsNumber</var> is used to
determine if <var>S</var> contains a valid numeric value. If S is not a valid
number, the <var>NullValueBehaviour</var> property is used to determine the
return value for the method.
</p>
<dl>
<dt>nvbShowTextHint</dt>
<dd>NullValue is used as the return value.</dd>
<dt>nvbLimitedNullValue</dt>
<dd>GetLimitedValue is used to derive the Null return value.</dd>
<dt>nvbMinValue</dt>
<dd>MinValue is used as the return value.</dd>
<dt>nvbMaxValue</dt>
<dd>MaxValue is used as the return value.</dd>
<dt>nvbInitialValue</dt>
<dd>The initial value for the control is used as the return value.</dd>
<dt>nvbShowTextHint</dt>
<dd>GetLimitedValue is used to get the return value</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="TSpinEditExBase.StrToValue.Result">
<short>Numeric value for the specified string.</short>
</element>
<element name="TSpinEditExBase.StrToValue.S">
<short>String representation converted in method.</short>
</element>
<element name="TSpinEditExBase.EditEditingDone">
<short>
Implements the EditingDone handler for the Edit in the grouped edit control.
</short>
<descr>
<p>
<var>EditEditingDone</var> is an overridden method in
<var>TSpinEditExBase</var>. It calls the inherited method on entry to signal
the <var>OnEditingDone</var> event handler (when assigned).
</p>
<p>
EditEditingDone updates the <var>Value</var> for the control from the
<var>Text</var> in the <var>Edit</var>. <var>UpdateControl</var> is called to
ensure that members in the property are updated and validated after a change
to the Value property.
</p>
</descr>
<seealso>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.EditEditingDone"/>
</seealso>
</element>
<element name="TSpinEditExBase.Increment">
<short>
Value added to or subtracted from Value when the UpDown control is clicked.
</short>
<descr>
<p>
<var>Increment</var> is a property which defines the value added to or
subtracted from the control <var>Value</var> when the <var>UpDown</var>
control is clicked. It is also used when <var>ArrowKeys</var> are enable in
the Edit for the grouped edit control.
</p>
<p>
Increment uses the generic type for the class instance. There is no default
value for the control in TSpinEditExBase, but it may be re-specified in a
descendent class specialized for a given data type.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.Value"/>
<link id="TSpinEditExBase.UpDown"/>
<link id="TSpinEditExBase.Edit"/>
<link id="TSpinEditExBase.ArrowKeys"/>
<link id="TCustomSpinEditEx"/>
<link id="TCustomFloatSpinEditEx"/>
</seealso>
</element>
<element name="TSpinEditExBase.MinValue">
<short>Minimum value allowed in the Value property.</short>
<descr>
<p>
<var>MinValue</var> is a property used to specify the minimum numeric value
allowed in the <var>Value</var> property. MinValue uses the type specified
for the generic class.
</p>
<p>
Use <var>MaxValue</var> to specify the upper limit for the value in the
control.
</p>
<p>
MinValue is used, along with MaxValue, to ensure that the Value property
falls within the specified limits. MinValue and MaxValue are not enforced
when they have not been explicitly assigned, if they contain the same value,
or when MaxValue is smaller than MinValue. This allows any numeric value to
be assigned to the control.
</p>
<p>
MinValue is used in the implementation of private methods such as IsLimited,
IsOutOfLimits, and SpinUpDown. It also influences the value stored in the
control when <var>GetLimitedValue</var> or <var>NullValueBehaviour</var> is
applied.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.Value"/>
<link id="TSpinEditExBase.NullValue"/>
<link id="TSpinEditExBase.MaxValue"/>
<link id="TSpinEditExBase.NullValueBehaviour"/>
<link id="TSpinEditExBase.GetLimitedValue"/>
</seealso>
</element>
<element name="TSpinEditExBase.MaxValue">
<short>Maximum value allowed in the Value property.</short>
<descr>
<p>
<var>MaxValue</var> is a property used to specify the largest numeric value
allowed in the <var>Value</var> property. MaxValue uses the type specified
for the generic class.
</p>
<p>
Use <var>MinValue</var> to specify the lower limit for the value in the
control.
</p>
<p>
MaxValue is used, along with MinValue, to ensure that the Value property
falls within the specified limits. MinValue and MaxValue are not enforced
when they have not been explicitly assigned, if they contain the same value,
or when MaxValue is smaller than MinValue. This allows any numeric value to
be assigned to the control.
</p>
<p>
MaxValue is used in the implementation of private methods such as IsLimited,
IsOutOfLimits, and SpinUpDown. It also influences the value stored in the
control when <var>GetLimitedValue</var> or <var>NullValueBehaviour</var> is
applied.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.Value"/>
<link id="TSpinEditExBase.NullValue"/>
<link id="TSpinEditExBase.MinValue"/>
<link id="TSpinEditExBase.NullValueBehaviour"/>
<link id="TSpinEditExBase.GetLimitedValue"/>
</seealso>
</element>
<element name="TSpinEditExBase.NullValue">
<short>Value used when the text for the control is not a valid number.</short>
<descr>
<p>
<var>NullValue</var> contains the numeric value used when the text for the
control does not represent a valid number. NullValue is assigned to Value
when the NullValueBehaviour property is set to nvbLimitedNullValue or
nvbShowTextHint.
</p>
</descr>
<seealso/>
</element>
<element name="TSpinEditExBase.NullValueBehaviour">
<short>
Controls the logic applied when control text is not a valid number.
</short>
<descr>
<p>
<var>NullValueBehaviour</var> is a <var>TNullValueBehaviour</var> property
which contains the logic applied when the text for the control does not
represent a valid numeric value. The default value for the property is
<var>nvbMinValue</var>, and indicates that the value in <var>MinValue</var>
is stored in the <var>Value</var> property when an invalid number is detected.
</p>
<p>
See <link id="TNullValueBehaviour">TNullValueBehaviour</link> for more
information about values in the enumeration and their meanings.
</p>
<p>
NullValueBehaviour is used in the implementation of the
<var>UpdateControl</var> and <var>StrToValue</var> methods.
</p>
</descr>
<seealso/>
</element>
<element name="TSpinEditExBase.Value">
<short>Numeric value for the control.</short>
<descr>
<p>
<var>Value</var> is a property which contains the numeric value for the
spin edit control. Value uses the data type specified for the generic
class.
</p>
<p>
If a valid Handle has been allocated for the control, the property value is
retrieved by calling <var>StrToValue</var> using the <var>Text</var> for the
control. If the handle has not been allocated, the value stored in the
internal member is used.
</p>
<p>
Setting a new value for the property ensures that text assigned directly to
<var>Edit</var> contains a valid number for the data type. This is done by
calling <var>TextIsNumber</var>. If the new value is the same as the stored
property value, no actions are performed.
</p>
<p>
When the property value is changed, it is range checked and validated. Use
<var>MinValue</var> and <var>MaxValue</var> to control the minimum and
maximum values allowed in the control. The range limits are not enforced if
they have not been explicitly assigned, contain the same value, or when
MaxValue is smaller than MinValue.
</p>
<p>
Use <var>Increment</var> to control the amount applied to the control value
when a button in the <var>UpDown</var> control is clicked. Use
<var>NullValue</var> and <var>NullValueBehaviour</var> to control the logic
applied with an invalid numeric value is stored in the control.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.Increment"/>
<link id="TSpinEditExBase.MaxValue"/>
<link id="TSpinEditExBase.MinValue"/>
<link id="TSpinEditExBase.NullValue"/>
<link id="TSpinEditExBase.NullValueBehaviour"/>
<link id="TSpinEditExBase.StrToValue"/>
<link id="TSpinEditExBase.TextIsNumber"/>
<link id="TSpinEditExBase.UpDown"/>
</seealso>
</element>
<element name="TDisplayMode">
<short>
Indicates the display mode used for the floating point value in
TFloatSpinEditEx.
</short>
<descr/>
<seealso/>
</element>
<element name="TDisplayMode.dmFixed">
<short>Value is displayed with fixed precision and decimal places.</short>
</element>
<element name="TDisplayMode.dmScientific">
<short>
Value is displayed in scientific (exponential) notation used for numbers that
are too large or too small to be easily represented using the decimal form.
</short>
</element>
<element name="TDisplayMode.dmAuto">
<short>
Value is automatically formatted using scientific notation when it exceeds
the limits assigned in ExponentialFormatLimitPos or ExponentialFormatLimitNeg.
</short>
</element>
<element name="TDisplayMode.dmAutoZeroFixed">
<short>
When Value is 0.0, it is formatted using 20 digits of fixed precision with
the number of decimals in DecimalPlaces. Similar to dmAuto but using fixed
precision.
</short>
</element>
<element name="TCustomFloatSpinEditEx">
<short>A specialization of TSpinEditExBase for the Double data type.</short>
<descr>
<p>
<var>TCustomFloatSpinEditEx</var> defines an extended spin edit control with
an editor for the numeric value, and buttons to increment or decrement the
control value.It is a <var>TSpinEditExBase</var> descendant which
specializes the generic ancestor for the <url
href="https://www.freepascal.org/docs-html/ref/refsu5.html"><var>Double</var></url>
data type. Double is a real type which allows values in the range 5.0E-324 ..
1.7E+308 and uses 15-16 digits of precision. Double is used to implement
properties including: <var>Increment</var>, <var>MinValue</var>,
<var>MaxValue</var>, <var>NullValue</var>, and <var>Value</var>.
</p>
<p>
Do not create instances of TCustomFloatSpinEditEx; use the
<var>TFloatSpinEditEx</var> descendant which sets the visibility and default
values for properties in the class.
</p>
<remark>
The <var>NumbersOnly</var> property has been removed as a published property
in TCustomFloatSpinEditEx and its descendent classes. It is not appropriate
for use in floating point notation. Removed in LazUtils version 2.3.0.
</remark>
</descr>
<seealso>
<link id="TSpinEditExBase"/>
<link id="TFloatSpinEditEx"/>
<link id="IntroToSpinEx"/>
</seealso>
</element>
<!-- private constants -->
<element name="TCustomFloatSpinEditEx.DefDecimals">
<short>
Default number of decimal places used to display the Value for the control.
</short>
</element>
<element name="TCustomFloatSpinEditEx.DefDecimalSeparator">
<short>Default decimal separator used in the floating point value.</short>
</element>
<!-- private members and methods -->
<element name="TCustomFloatSpinEditEx.FDecimals">
<short>
Number of decimal places used to display the Value for the control.
</short>
</element>
<element name="TCustomFloatSpinEditEx.FDisplayMode">
<short>Formatting used to edit and display the Value for the control.</short>
</element>
<element name="TCustomFloatSpinEditEx.FExponentDigits">
<short>
Number of digits displayed in an exponent using scientific notation.
</short>
</element>
<element name="TCustomFloatSpinEditEx.FExponentialFormatLimitNeg">
<short>
Maximum exponent digits allowed before exponential notation is used for
negative values.
</short>
</element>
<element name="TCustomFloatSpinEditEx.FExponentialFormatLimitPos">
<short>
Maximum exponent digits allowed before exponential notation is used for
positive values.
</short>
</element>
<element name="TCustomFloatSpinEditEx.FFS">
<short>Local format settings used in the control.</short>
</element>
<element name="TCustomFloatSpinEditEx.FPrecision">
<short>
Number of digits of precision used to edit and display the Value for the
control.
</short>
</element>
<element name="TCustomFloatSpinEditEx.GetDecimalSeparator">
<short>Gets the value for the DecimalSeparator property.</short>
<seealso>
<link id="TCustomFloatSpinEditEx.DecimalSeparator"/>
</seealso>
</element>
<element name="TCustomFloatSpinEditEx.GetDecimalSeparator.Result">
<short>Value for the property.</short>
</element>
<element name="TCustomFloatSpinEditEx.SetDecimalSeparator">
<short>Sets the value for the DecimalSeparator property.</short>
<seealso>
<link id="TCustomFloatSpinEditEx.DecimalSeparator"/>
</seealso>
</element>
<element name="TCustomFloatSpinEditEx.SetDecimalSeparator.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomFloatSpinEditEx.SetDisplayMode">
<short>Sets the value for the DisplayMode property.</short>
<descr/>
<seealso>
<link id="TCustomFloatSpinEditEx.DisplayMode"/>
</seealso>
</element>
<element name="TCustomFloatSpinEditEx.SetDisplayMode.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomFloatSpinEditEx.SetExponentDigits">
<short>Sets the value for the ExponentDigits property.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomFloatSpinEditEx.SetExponentDigits.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomFloatSpinEditEx.SetExponentialFormatLimitNeg">
<short>Sets the value for the ExponentialFormatLimitNeg property.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomFloatSpinEditEx.SetExponentialFormatLimitNeg.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomFloatSpinEditEx.SetExponentialFormatLimitPos">
<short>Sets the value for the ExponentialFormatLimitPos property.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomFloatSpinEditEx.SetExponentialFormatLimitPos.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomFloatSpinEditEx.SetPrecision">
<short>Sets the value for the Precision property.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomFloatSpinEditEx.SetPrecision.AValue">
<short>New value for the property.</short>
</element>
<!-- protected methods -->
<element name="TCustomFloatSpinEditEx.GetFormatsettings">
<short>Gets the local format settings for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomFloatSpinEditEx.GetFormatsettings.Result">
<short>Local format settings used for the control.</short>
</element>
<element name="TCustomFloatSpinEditEx.EditKeyPress">
<short>
Implements handler for KeyPress events in the Edit for the control.
</short>
<descr>
<p>
<var>EditKeyPress</var> is an overridden method in
<var>TCustomFloatSpinEditEx</var> used to ensure that the specified character
is valid for the Edit in the control. <var>Key</var> contains the character
examined in the method. The allowed values in Key include the following
characters:
</p>
<dl>
<dt>Numeric Digits</dt>
<dd>Characters in the range '0'..'9'.</dd>
<dt>Decimal separator</dt>
<dd>
Accepts either ',' (Comma), or '.' (Period) characters as the decimal
separator, and is automatically translated to the value used in local format
settings in the DecimalSeparator property. Any decimal separator will,
however, be discarded when DecimalPlaces is set to 0 (zero).
</dd>
<dt>Exponent Notation</dt>
<dd>
Allows 'E' or 'e' to represent the exponent character used to represent "...
times ten raised to the power of ...".
</dd>
<dt>Control Characters</dt>
<dd>
Allows the following control characters to be passed to the Edit control: #8
(BackSpace), #9 (Tab), ^C (Ctrl+C or Copy), ^X (Ctrl+X or Cut), ^V (Ctrl+V or
Paste), ^Z (Ctrl+Z or Undo).
</dd>
</dl>
<p>
EditKeyPress calls the inherited method to signal the OnKeyPress event
handler (when assigned).
</p>
<p>
Any character which is not allowed in the floating point value is set to #0
to discard the character value.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.Edit"/>
<link id="TCustomFloatSpinEditEx.DecimalPlaces"/>
<link id="TCustomFloatSpinEditEx.DecimalSeparator"/>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.EditKeyPress"/>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.OnKeyPress"/>
</seealso>
</element>
<element name="TCustomFloatSpinEditEx.EditKeyPress.Key">
<short>Character examined in the method.</short>
</element>
<element name="TCustomFloatSpinEditEx.TextIsNumber">
<short>
Determines if the specified string is a valid number for the numeric data
type.
</short>
<descr>
<p>
<var>TextIsNumber</var> is an overridden <var>Boolean</var> function used to
determine if the specified string contains a valid representation for the
numeric data type in the control. TextIsNumber re-implements the inherited
method to use the <var>Double</var> data type, and does not call the method
in the ancestor class.
</p>
<p>
TextIsNumber calls <var>TryStrToFloat</var> using the local format settings
for the control to convert the value in <var>S</var> to a floating point
value. An exception raised by TryStrToFloat is handled in the method. The
converted numeric value is stored in the <var>ANumber</var> argument on
success. ANumber should be considered "undefined" when the conversion fails
due to an exception.
</p>
<p>
The return value is <b>True</b> when the value in S can be converted to the
Double data type. It is <b>False</b> when an exception was raised and handled
in the method.
</p>
<p>
TextIsNumber is used in the implementation of methods like
<var>UpdateControl</var>, <var>SpinUpDown</var>, and <var>StrToValue</var>.
It is also called when setting a new value in the <var>Value</var> property.
</p>
<p>
Set values in the <var>MinValue</var>, <var>MaxValue</var>,
<var>NullValue</var>, and <var>NullValueBehaviour</var> properties to control
the actions performed when TextIsNumber returns <b>False</b>.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase"/>
<link id="TSpinEditExBase.TextIsNumber"/>
<link id="TFloatSpinEditEx"/>
</seealso>
</element>
<element name="TCustomFloatSpinEditEx.TextIsNumber.Result">
<short><b>True</b> if the specified string is a valid numeric value.</short>
</element>
<element name="TCustomFloatSpinEditEx.TextIsNumber.S">
<short>String with the value examined in the method.</short>
</element>
<element name="TCustomFloatSpinEditEx.TextIsNumber.ANumber">
<short>
Stores the numeric value for the specified string; undefined when the result
is <b>False</b>.
</short>
</element>
<element name="TCustomFloatSpinEditEx.SafeInc">
<short>
Ensures the incremented value is a valid number for the Double data type.
</short>
<descr>
<p>
<var>SafeInc</var> is an overridden function in
<var>TCustomFloatSpinEditEx</var> used to increase the specified value by the
<var>Increment</var> for the control. SafeInc ensures that the incremented
value is valid for the <var>Double</var> data type. SafeInc does not call the
inherited method.
</p>
<p>
<var>AValue</var> contains the type with the numeric value to be incremented.
</p>
<p>
The return value contains the numeric value after the value in Increment has
been added. The return value is constrained when the incremented value is too
large for the Double data type. The upper limit for the value in the data
type is defined in the <var>MaxDouble</var> constant.
</p>
<p>
SafeInc is used in the implementation of the <var>SpinUpDown</var> method.
</p>
<p>
<var>SafeDec</var> is used to decrement a specified Double value.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.Increment"/>
<link id="TCustomFloatSpinEditEx.SafeDec"/>
</seealso>
</element>
<element name="TCustomFloatSpinEditEx.SafeInc.Result">
<short>The numeric value after Increment has been added.</short>
</element>
<element name="TCustomFloatSpinEditEx.SafeInc.AValue">
<short>Numeric value incremented in the method.</short>
</element>
<element name="TCustomFloatSpinEditEx.SafeDec">
<short>
Ensures the decremented value is a valid number for the Double data type.
</short>
<descr>
<p>
<var>SafeDec</var> is an overridden function in
<var>TCustomFloatSpinEditEx</var> used to decrease the specified value by the
<var>Increment</var> for the control. SafeDec ensures that the decremented
value is valid for the <var>Double</var> data type. SafeDec does not call the
inherited method.
</p>
<p>
<var>AValue</var> contains the type with the numeric value to be decremented.
</p>
<p>
The return value contains the numeric value after the value in Increment has
been subtracted. The return value is constrained when the decremented value
is too small for the Double data type. The lower limit for the value in the
data type is defined as <var>-1 * MaxDouble</var>.
</p>
<p>
SafeDec is used in the implementation of the <var>SpinUpDown</var> method.
</p>
<p>
<var>SafeInc</var> is used to increment a specified Double value.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomFloatSpinEditEx.SafeDec.Result">
<short>The numeric value after Increment has been subtracted.</short>
</element>
<element name="TCustomFloatSpinEditEx.SafeDec.AValue">
<short>Numeric value decremented in the method.</short>
</element>
<element name="TCustomFloatSpinEditEx.SameValue">
<short>Determines whether the specified arguments have the same value.</short>
<descr>
<p>
<var>SameValue</var> is an overridden <var>Boolean</var> function used to
compare the values in <var>AValue1</var> and <var>AValue2</var> to determine
if they have the same value. The return value is <b>True</b> when both
AValue1 and AValue2 have the same value. The arguments are implemented using
the Double type in TCustomFloatSpinEditEx. The overloaded SameValue routine
in the <file>math.pp</file> unit is called to get the return value for the
method.
</p>
<p>
This method was introduced to ensure that the type specialization for the
class instance is used when value comparisons are performed.
</p>
</descr>
<version>
Introduced in version 2.2.0. Modified in version 2.4 to remove the define
for FPC compiler version.
</version>
<seealso>
<link id="TSpinEditExBase.SameValue"/>
<link id="#rtl.math.SameValue">Math.SameValue</link>
</seealso>
</element>
<element name="TCustomFloatSpinEditEx.SameValue.Result">
<short><b>True</b> if both arguments have the same value.</short>
</element>
<element name="TCustomFloatSpinEditEx.SameValue.AValue1">
<short>First value for the comparison.</short>
</element>
<element name="TCustomFloatSpinEditEx.SameValue.AValue2">
<short>Second value for the comparison.</short>
</element>
<element name="TCustomFloatSpinEditEx.SetDecimals">
<short>Sets the value for the DecimalPlaces property.</short>
<descr/>
<seealso>
<link id="TCustomFloatSpinEditEx.DecimalPlaces"/>
</seealso>
</element>
<element name="TCustomFloatSpinEditEx.SetDecimals.AValue">
<short>New value for the property.</short>
</element>
<element name="TCustomFloatSpinEditEx.WSRegisterClass">
<short>Registers the widget set class used for the control.</short>
<descr>
<p>
Calls the inherited method on entry, and registers the following properties
to be skipped during LCL component streaming:
</p>
<dl>
<dt>NumbersOnly</dt>
<dd>Property should not be published for this control.</dd>
</dl>
</descr>
<version>
Added in LazUtils version 2.3.0 and higher.
</version>
<seealso/>
</element>
<element name="TCustomFloatSpinEditEx.DisplayMode">
<short>
Specifies the formatting used to edit and display the Value for the control.
</short>
<descr>
<p>
<var>DisplayMode</var> is a <var>TDisplayMode</var> property which specifies
the formatting used to edit and display the <var>Value</var> for the control.
The default value for the property is <var>dmFixed</var>, and indicates that
fixed precision and decimals are used when formatting the control value.
See <var>TDisplayMode</var> for more information about the values and
meanings in the enumeration.
</p>
<p>
Changing the value in DisplayMode causes the Value for the control to be
updated. It also forces <var>UpdateControl</var> to be called to validate
and normalize members in the class instance.
</p>
<p>
DisplayMode is used in the implementation of the <var>ValueToStr</var> method
which generates the string representation for the Value in the control, and
is assigned to the <var>Text</var> property in the <var>Edit</var> for the
grouped edit control.
</p>
</descr>
<seealso>
<link id="TDisplayMode"/>
<link id="TSpinEditExBase.Value"/>
<link id="TCustomFloatSpinEditEx.ValueToStr"/>
<link id="TSpinEditExBase.Edit"/>
</seealso>
</element>
<element name="TCustomFloatSpinEditEx.ExponentialFormatLimitPos">
<short>
Maximum exponent digits allowed before exponential notation is required for a
positive number.
</short>
<descr>
<p>
<var>ExponentialFormatLimitPos</var> is an <var>Integer</var> property which
contains the maximum exponent allowed before a positive <var>Value</var> in
the control must be represented using exponential notation. The default value
for the property is <b>6</b> (six) and indicates that Value must exceed 10^6
before exponential notation is required for a positive number.
</p>
<p>
Setting a new value for the property causes Value to be updated, and calls
the <var>UpdateControl</var> method to validate and normalize members in the
class instance.
</p>
<p>
ExponentialFormatLimitPos is used in the <var>ValueToStr</var> method when
<var>DisplayMode</var> contains the value <var>dmAuto</var> and Value has a
non-zero floating point value.
</p>
<p>
Use <var>ExponentialFormatLimitNeg</var> to specify the maximum exponent
allowed before using exponential notation for a negative value in the control.
</p>
<p>
Use <var>Precision</var> to specify the total number of digits used for a
number in scientific notation. Use <var>ExponentDigits</var> to specify the
number of exponent digits used for a number in scientific notation.
</p>
</descr>
<seealso>
<link id="TCustomFloatSpinEditEx.DisplayMode"/>
<link id="TCustomFloatSpinEditEx.Precision"/>
<link id="TCustomFloatSpinEditEx.ExponentDigits"/>
<link id="TSpinEditExBase.Value"/>
<link id="TCustomFloatSpinEditEx.ValueToStr"/>
<link id="TCustomFloatSpinEditEx.ExponentialFormatLimitNeg"/>
<link id="TDisplayMode"/>
</seealso>
</element>
<element name="TCustomFloatSpinEditEx.ExponentialFormatLimitNeg">
<short>
Maximum exponent digits allowed before exponential notation is required for a
negative number.
</short>
<descr>
<p>
<var>ExponentialFormatLimitNeg</var> is an <var>Integer</var> property which
contains the exponent value at which use of scientific notation is triggered
for a negative <var>Value</var> in the control. The default value for the
property is <b>-6</b>, and indicates that scientific notation is required
when Value is smaller than 10^-6.
</p>
<p>
Changing the value for the property causes GetValue and UpdateControl to be
called.
</p>
<p>
ExponentialFormatLimitNeg is used in the <var>ValueToStr</var> method when
<var>DisplayMode</var> is <var>dmAuto</var> and the <var>Value</var> is not
0.0.
</p>
<p>
Use <var>ExponentialFormatLimitPos</var> to specify the exponent value which
triggers use of scientific notation for a positive value.
</p>
<p>
Use <var>Precision</var> to specify the total number of digits used for a
number in scientific notation. Use <var>ExponentDigits</var> to specify the
number of exponent digits used for a number in scientific notation.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.Value"/>
<link id="TCustomFloatSpinEditEx.ValueToStr"/>
<link id="TCustomFloatSpinEditEx.DisplayMode"/>
<link id="TCustomFloatSpinEditEx.ExponentialFormatLimitPos"/>
<link id="TCustomFloatSpinEditEx.Precision"/>
<link id="TCustomFloatSpinEditEx.ExponentDigits"/>
</seealso>
</element>
<element name="TCustomFloatSpinEditEx.Precision">
<short>
Number of digits of precision used after the decimal point in scientific
notation.
</short>
<descr>
<p>
Precision is an Integer property which specifies the number of digits of
precision used after the decimal point for a floating point value in
scientific notation. It is the value used as the precision argument for the
FloatToStrF routine in RTL. The default value for the property is <b>6</b>.
The maximum precision for the data type is 15.
</p>
<p>
Changing the value for the property causes the GetValue and UpdateControl
methods to be called.
</p>
<p>
Precision is used in the ValueToStr method when <var>DisplayMode</var> is
<var>dmScientific</var> or <var>dmAuto</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TCustomFloatSpinEditEx.ExponentDigits">
<short>
Number of digits prior to the decimal point used in scientific notation.
</short>
<descr>
<p>
<var>ExponentDigits</var> is an <var>Integer</var> property which contains
the number of digits used before the decimal point when using scientific
notation. The default value for the property is <b>2</b>.
</p>
<p>
Changing the value for the property causes the <var>GetValue</var> and
<var>UpdateControl</var> methods to be called.
</p>
<p>
ExponentDigits is used in the <var>ValueToStr</var> method when the
<var>DisplayMode</var> is <var>dmScientific</var> or <var>dmAuto</var>.
</p>
<p>
Use <var>Precision</var> to specify the number of digits after the decimal
point in a floating point value using scientific notation.
</p>
</descr>
<seealso>
<link id="TCustomFloatSpinEditEx.Precision"/>
<link id="TCustomFloatSpinEditEx.DisplayMode"/>
<link id="TCustomFloatSpinEditEx.ValueToStr"/>
<link id="TSpinEditExBase.Value"/>
</seealso>
</element>
<!-- public methods and properties -->
<element name="TCustomFloatSpinEditEx.ValueToStr">
<short>
Gets the string representation for the numeric Value in the control.
</short>
<descr/>
<seealso/>
</element>
<element name="TCustomFloatSpinEditEx.ValueToStr.Result">
<short>String representation for the numeric Value.</short>
</element>
<element name="TCustomFloatSpinEditEx.ValueToStr.AValue">
<short>Numeric value examined and converted in the method.</short>
</element>
<element name="TCustomFloatSpinEditEx.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance, and
calls the inherited constructor on entry.
</p>
<p>
Create makes an internal copy of the default format settings for the
platform. This allows the value in <var>DecimalSeparator</var> to be
specified and stored independent of the value in
<var>DefaultFormatSettings</var>. The local copy is modified to used the
value in the <var>DefDecimalSeparator</var> constant as the default value for
DecimalSeparator.
</p>
<p>
Create sets the default values for properties, including:
</p>
<dl>
<dt>DecimalPlaces</dt>
<dd>Set to the value in the DefDecimals constant.</dd>
<dt>ExponentialFormatLimitPos</dt>
<dd>Set to 6 (six).</dd>
<dt>ExponentialFormatLimitNeg</dt>
<dd>Set to -6.</dd>
<dt>Precision</dt>
<dd>Set 6 digits for the mantissa.</dd>
<dt>ExponentDigits</dt>
<dd>Set to 2.</dd>
<dt>DisplayMode</dt>
<dd>
Set to the value dmFixed for fixed format using the Precision and
ExponentDigits defined in the control.
</dd>
</dl>
</descr>
<seealso/>
</element>
<element name="TCustomFloatSpinEditEx.DecimalSeparator">
<short>Value used to represent a decimal point in the Edit control.</short>
<descr>
<p>
<var>DecimalSeparator</var> is a <var>Char</var> property which contains the
character used as the decimal point in a floating point value. Read and write
access for the property value are redirected to the local
<var>TFormatSetting</var> stored in the class instance. This allows the
control to set the decimal separator independent of the format settings for
the platform or operating system.
</p>
<p>
The default value for the property is defined in the
<var>DefDecimalSeparator</var> constant. Changing the value for the property
updates the local format settings, and calls <var>UpdateControl</var> to
validate and update members in the class instance.
</p>
<p>
DecimalSeparator is used in <var>EditKeyPress</var> to validate characters
entered in the <var>Edit</var> for the control. It is also used in
<var>ValueToStr</var> to format the value in the control for the selected
<var>DisplayMode</var>.
</p>
</descr>
<seealso>
<link id="TCustomFloatSpinEditEx.Create"/>
<link id="TSpinEditExBase.Edit"/>
<link id="TCustomFloatSpinEditEx.EditKeyPress"/>
<link id="TCustomFloatSpinEditEx.ValueToStr"/>
<link id="TCustomFloatSpinEditEx.DisplayMode"/>
</seealso>
</element>
<element name="TCustomFloatSpinEditEx.DecimalPlaces">
<short>
Number of decimal places used to edit and display the Value for the control.
</short>
<descr>
<p>
<var>DecimalPlaces</var> is an <var>Integer</var> property which indicates
the number of decimal places used when formatting the <var>Value</var> for
the control. It must contain a positive integer value or <b>0</b>
(<b>zero</b>). The default value for the property is defined in the
<var>DefDecimals</var> constant. Changing the value for the property causes
the Value property to be updated, and calls <var>UpdateControl</var> to
validate and update other members in the class instance.
</p>
<p>
DecimalPlaces is used in <var>ValueToStr</var> to format the value in the
control for the selected <var>DisplayMode</var>.
</p>
</descr>
<seealso>
<link id="TCustomFloatSpinEditEx.Create"/>
<link id="TSpinEditExBase.Edit"/>
<link id="TSpinEditExBase.Value"/>
<link id="TCustomFloatSpinEditEx.ValueToStr"/>
<link id="TCustomFloatSpinEditEx.DisplayMode"/>
</seealso>
</element>
<element name="TFloatSpinEditEx">
<short>
Implement a spin edit control for a value using the Double data type.
</short>
<descr>
<p>
<var>TFloatSpinEditEx</var> is a <var>TCustomFloatSpinEditEx</var> descendant
which implements a spin edit control for a value using the <var>Double</var>
data type. TFloatSpinEditEx sets the visibility for properties defined in
ancestor classes.
</p>
<p>
<var>TFloatSpinEditEx</var> defines an extended spin edit control with an
editor for the numeric value, and buttons to increment or decrement the
control value. It specializes the generic ancestor for the <url
href="https://www.freepascal.org/docs-html/ref/refsu5.html"><var>Double</var></url>
data type. Double is a real type which allows values in the range 5.0E-324 ..
1.7E+308 and uses 15-16 digits of precision. Double is used to implement
properties including: <var>Increment</var>, <var>MinValue</var>,
<var>MaxValue</var>, <var>NullValue</var>, and <var>Value</var>.
</p>
</descr>
<seealso>
<link id="TCustomFloatSpinEditEx"/>
<link id="IntroToSpinEx"/>
</seealso>
</element>
<element name="TFloatSpinEditEx.AutoSelected" link="#lcl.groupededit.TCustomAbstractGroupedEdit.AutoSelected"/>
<element name="TFloatSpinEditEx.AutoSelect" link="#lazcontrols.spinex.TCustomEdit.AutoSelect"/>
<element name="TFloatSpinEditEx.AutoSizeHeightIsEditHeight" link="#lcl.groupededit.TCustomAbstractGroupedEdit.AutoSizeHeightIsEditHeight"/>
<element name="TFloatSpinEditEx.AutoSize" link="#lcl.groupededit.TCustomAbstractGroupedEdit.AutoSize"/>
<element name="TFloatSpinEditEx.Action" link="#lcl.controls.TControl.Action"/>
<element name="TFloatSpinEditEx.Align" link="#lcl.controls.TControl.Align"/>
<element name="TFloatSpinEditEx.Alignment" link="#lcl.groupededit.TCustomAbstractGroupedEdit.Alignment"/>
<element name="TFloatSpinEditEx.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TFloatSpinEditEx.BiDiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TFloatSpinEditEx.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TFloatSpinEditEx.BorderStyle" link="#lcl.controls.TCustomControl.BorderStyle"/>
<element name="TFloatSpinEditEx.CharCase" link="#lcl.groupededit.TCustomAbstractGroupedEdit.CharCase"/>
<element name="TFloatSpinEditEx.Color" link="#lcl.groupededit.TCustomAbstractGroupedEdit.Color"/>
<element name="TFloatSpinEditEx.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TFloatSpinEditEx.Cursor" link="#lcl.controls.TControl.Cursor"/>
<element name="TFloatSpinEditEx.DirectInput" link="#lcl.groupededit.TCustomAbstractGroupedEdit.DirectInput"/>
<element name="TFloatSpinEditEx.EchoMode" link="#lcl.groupededit.TCustomAbstractGroupedEdit.EchoMode"/>
<element name="TFloatSpinEditEx.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TFloatSpinEditEx.FocusOnBuddyClick" link="#lcl.groupededit.TCustomAbstractGroupedEdit.FocusOnBuddyClick"/>
<element name="TFloatSpinEditEx.Font" link="#lcl.controls.TControl.Font"/>
<element name="TFloatSpinEditEx.Hint" link="#lcl.controls.TControl.Hint"/>
<element name="TFloatSpinEditEx.Layout" link="#lcl.groupededit.TCustomAbstractGroupedEdit.Layout"/>
<element name="TFloatSpinEditEx.MaxLength" link="#lcl.groupededit.TCustomAbstractGroupedEdit.MaxLength"/>
<element name="TFloatSpinEditEx.ParentBiDiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TFloatSpinEditEx.ParentColor" link="#lcl.groupededit.TCustomAbstractGroupedEdit.ParentColor"/>
<element name="TFloatSpinEditEx.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TFloatSpinEditEx.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TFloatSpinEditEx.PopupMenu" link="#lcl.groupededit.TCustomAbstractGroupedEdit.PopupMenu"/>
<element name="TFloatSpinEditEx.ReadOnly" link="#lcl.groupededit.TCustomAbstractGroupedEdit.ReadOnly"/>
<element name="TFloatSpinEditEx.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TFloatSpinEditEx.TabOrder" link="#lcl.controls.TWinControl.TabOrder"/>
<element name="TFloatSpinEditEx.TabStop" link="#lcl.groupededit.TCustomAbstractGroupedEdit.TabStop"/>
<element name="TFloatSpinEditEx.TextHint" link="#lcl.groupededit.TCustomAbstractGroupedEdit.TextHint"/>
<element name="TFloatSpinEditEx.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TFloatSpinEditEx.OnChange" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnChange"/>
<element name="TFloatSpinEditEx.OnClick" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnClick"/>
<element name="TFloatSpinEditEx.OnDblClick" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnDblClick"/>
<element name="TFloatSpinEditEx.OnDragDrop" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnDragDrop"/>
<element name="TFloatSpinEditEx.OnDragOver" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnDragOver"/>
<element name="TFloatSpinEditEx.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TFloatSpinEditEx.OnEditingDone" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnEditingDone"/>
<element name="TFloatSpinEditEx.OnEndDrag" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnEndDrag"/>
<element name="TFloatSpinEditEx.OnEnter" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnEnter"/>
<element name="TFloatSpinEditEx.OnExit" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnExit"/>
<element name="TFloatSpinEditEx.OnKeyDown" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnKeyDown"/>
<element name="TFloatSpinEditEx.OnKeyPress" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnKeyPress"/>
<element name="TFloatSpinEditEx.OnKeyUp" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnKeyUp"/>
<element name="TFloatSpinEditEx.OnMouseDown" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseDown"/>
<element name="TFloatSpinEditEx.OnMouseEnter" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseEnter"/>
<element name="TFloatSpinEditEx.OnMouseLeave" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseLeave"/>
<element name="TFloatSpinEditEx.OnMouseMove" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseMove"/>
<element name="TFloatSpinEditEx.OnMouseUp" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseUp"/>
<element name="TFloatSpinEditEx.OnMouseWheel" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseWheel"/>
<element name="TFloatSpinEditEx.OnMouseWheelDown" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseWheelDown"/>
<element name="TFloatSpinEditEx.OnMouseWheelUp" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseWheelUp"/>
<element name="TFloatSpinEditEx.OnStartDrag" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnStartDrag"/>
<element name="TFloatSpinEditEx.OnUTF8KeyPress" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnUTF8KeyPress"/>
<element name="TFloatSpinEditEx.ArrowKeys" link="#lazcontrols.spinex.TSpinEditExBase.ArrowKeys"/>
<element name="TFloatSpinEditEx.DecimalSeparator" link="#lazcontrols.spinex.TCustomFloatSpinEditEx.DecimalSeparator"/>
<element name="TFloatSpinEditEx.DecimalPlaces" link="#lazcontrols.spinex.TCustomFloatSpinEditEx.DecimalPlaces"/>
<element name="TFloatSpinEditEx.Increment" link="#lazcontrols.spinex.TSpinEditExBase.Increment"/>
<element name="TFloatSpinEditEx.MaxValue" link="#lazcontrols.spinex.TSpinEditExBase.MaxValue"/>
<element name="TFloatSpinEditEx.MinValue" link="#lazcontrols.spinex.TSpinEditExBase.MinValue"/>
<element name="TFloatSpinEditEx.MinRepeatValue" link="#lazcontrols.spinex.TSpinEditExBase.MinRepeatValue"/>
<element name="TFloatSpinEditEx.NullValue" link="#lazcontrols.spinex.TSpinEditExBase.NullValue"/>
<element name="TFloatSpinEditEx.NullValueBehaviour" link="#lazcontrols.spinex.TSpinEditExBase.NullValueBehaviour"/>
<element name="TFloatSpinEditEx.Orientation" link="#lazcontrols.spinex.TSpinEditExBase.Orientation"/>
<element name="TFloatSpinEditEx.Spacing" link="#lcl.groupededit.TCustomAbstractGroupedEdit.Spacing"/>
<element name="TFloatSpinEditEx.UpDownVisible" link="#lazcontrols.spinex.TSpinEditExBase.UpDownVisible"/>
<element name="TFloatSpinEditEx.Value" link="#lazcontrols.spinex.TSpinEditExBase.Value"/>
<element name="TFloatSpinEditEx.DisplayMode" link="#lazcontrols.spinex.TCustomFloatSpinEditEx.DisplayMode"/>
<element name="TFloatSpinEditEx.ExponentialFormatLimitPos" link="#lazcontrols.spinex.TCustomFloatSpinEditEx.ExponentialFormatLimitPos"/>
<element name="TFloatSpinEditEx.ExponentialFormatLimitNeg" link="#lazcontrols.spinex.TCustomFloatSpinEditEx.ExponentialFormatLimitNeg"/>
<element name="TFloatSpinEditEx.Precision" link="#lazcontrols.spinex.TCustomFloatSpinEditEx.Precision"/>
<element name="TFloatSpinEditEx.ExponentDigits" link="#lazcontrols.spinex.TCustomFloatSpinEditEx.ExponentDigits"/>
<element name="TCustomSpinEditEx">
<short>
Defines the base class for a spin edit control for Int64 values.
</short>
<descr>
<p>
<var>TCustomSpinEditEx</var> is a specialization of the generic
<var>TSpinEditExBase</var> class for the <var>Int64</var> data type. In
addition to implementing the Int64 data type, it provides additional
properties and methods used to validate, format, and display the numeric
value.
</p>
<p>
Use the <var>ThousandSeparator</var> to set the UTF-8-encoded value used as
the decimal point in the control value.
</p>
<p>
Set <var>Increment</var> to the value by which the control is increased or
decreased when the <var>UpDown</var> button is clicked.
</p>
<p>
Use <var>ValueToStr</var> to get the string representation for the numeric
value.
</p>
<p>
Do not create instances of TCustomSpinEditEx; use <var>TSpinEditEx</var>,
which sets the visibility for properties, instead.
</p>
<p>
Use <var>TFloatSpinEditEx</var> to edit a floating point value using fixed or
scientific notation.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase"/>
<link id="TSpinEditEx"/>
<link id="TFloatSpinEditEx"/>
<link id="IntroToSpinEx"/>
</seealso>
</element>
<!-- private members and methods -->
<element name="TCustomSpinEditEx.FThousandSeparator">
<short>Stores the thousands separator.</short>
</element>
<element name="TCustomSpinEditEx.SetThousandSeparator">
<short>Sets the value for the ThousandSeparator property.</short>
<seealso>
<link id="TCustomSpinEditEx.ThousandSeparator"/>
</seealso>
</element>
<element name="TCustomSpinEditEx.SetThousandSeparator.AValue">
<short>New value for the property.</short>
</element>
<!-- protected methods -->
<element name="TCustomSpinEditEx.EditKeyPress">
<short>
Implements the handler for KeyPress events in the Edit for the control.
</short>
<descr>
<p>
<var>EditKeyPress</var> is an overridden method in
<var>TCustomSpinEditEx</var>, and calls the inherited method on entry. The
<var>OnKeyPress</var> event handler is signalled (when assigned) by the
inherited method.
</p>
<p>
EditKeyPress ensures that the value in <var>Key</var> is valid for the
control. An invalid value is discarded by setting Key to the <b>#0</b>
character (Decimal 0). Valid characters include numeric digits
(<b>'0'..'9'</b>), the value in <var>ThousandSeparator</var>, and the
negative sign indicator (<b>'-'</b>).
</p>
<p>
Please note: The sign indicator will be disallowed when a positive non-zero
value is specified in the <var>MinValue</var> property.
</p>
<p>
Tab, BackSpace, Cut, Paste, Copy, and Undo key presses are passed to the
inherited method.
</p>
</descr>
<seealso>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.EditKeyPress"/>
<link id="#lcl.groupededit.TCustomAbstractGroupedEdit.OnKeyPress"/>
<link id="TCustomSpinEditEx.ThousandSeparator"/>
<link id="TCustomSpinEditEx.MinValue"/>
</seealso>
</element>
<element name="TCustomSpinEditEx.EditKeyPress.Key">
<short>Character examined in the method.</short>
</element>
<element name="TCustomSpinEditEx.SafeInc">
<short>Ensures the incremented value is valid for the data type.</short>
<descr>
<p>
<var>SafeInc</var> is a function used to increase <var>AValue</var> by the
amount specified in the <var>Increment</var> property. SafeInc is overridden
in TCustomSpinEditEx to ensure that the incremented value is valid for the
<var>Int64</var> data type.
</p>
<p>
<var>AValue</var> contains the the numeric value to be incremented.
</p>
<p>
The return value contains the Int64 value after Increment has been added. The
return value is constrained when the incremented value is too large for the
Int64 data type; its value is set to <var>High(Int64)</var>.
</p>
<p>
SafeInc is used in the implementation of the <var>SpinUpDown</var> method in
the ancestor class.
</p>
</descr>
<seealso>
<link id="TCustomSpinEditEx.Increment"/>
<link id="TSpinEditExBase.SafeInc"/>
</seealso>
</element>
<element name="TCustomSpinEditEx.SafeInc.Result">
<short>Numeric value after the increment has been added.</short>
</element>
<element name="TCustomSpinEditEx.SafeInc.AValue">
<short>Numeric value incremented in the method.</short>
</element>
<element name="TCustomSpinEditEx.SafeDec">
<short>Ensures the decremented value is valid for the data type.</short>
<descr>
<p>
<var>SafeDec</var> is a function used to decrease the specified value by the
amount specified in the <var>Increment</var> property. SafeDec is overridden
in <var>TCustomSpinEditEx</var> to ensure that the decremented value is valid
for the <var>Int64</var> data type.
</p>
<p>
<var>AValue</var> contains the numeric value to be decremented.
</p>
<p>
The return value contains the Int64 value after Increment has been
subtracted. The return value is constrained when the decremented value is too
small for the Int64 data type; its value is set to <b>Low(Int64)</b>.
</p>
<p>
SafeDec is used in the implementation of the <var>SpinUpDown</var> method in
the ancestor class.
</p>
</descr>
<seealso>
<link id="TCustomSpinEditEx.Increment"/>"
<link id="TSpinEditExBase.SafeDec"/>
</seealso>
</element>
<element name="TCustomSpinEditEx.SafeDec.Result">
<short>Numeric value after the increment has been subtracted.</short>
</element>
<element name="TCustomSpinEditEx.SafeDec.AValue">
<short>Numeric value decremented in the method.</short>
</element>
<element name="TCustomSpinEditEx.SameValue">
<short>Determines whether the specified arguments have the same value.</short>
<descr>
<p>
<var>SameValue</var> is an overridden <var>Boolean</var> function used to
compare the values in <var>AValue1</var> and <var>AValue2</var> to determine
if they have the same value. The return value is <b>True</b> when both
AValue1 and AValue2 have the same value. The arguments are implemented using
the Int64 type in TCustomSpinEditEx.
</p>
<p>
This method was introduced to ensure that the type specialization for the class instance is used when value comparisons are performed.
</p>
</descr>
<version>
Introduced in version 2.2.0. Modified in version 2.4 to remove the FPC version compiler define.
</version>
<seealso>
<link id="TSpinEditExBase.SameValue"/>
<link id="#rtl.math.SameValue">Math.SameValue</link>
</seealso>
</element>
<element name="TCustomSpinEditEx.SameValue.Result">
<short><b>True</b> if both arguments have the same value.</short>
</element>
<element name="TCustomSpinEditEx.SameValue.AValue1">
<short>First value for the comparison.</short>
</element>
<element name="TCustomSpinEditEx.SameValue.AValue2">
<short>Second value for the comparison.</short>
</element>
<element name="TCustomSpinEditEx.TextIsNumber">
<short>
Indicates if the specified String contains a valid Int64 data type.
</short>
<descr>
<p>
<var>TextIsNumber</var> is an overridden <var>Boolean</var> function which
indicates if the value specified in <var>S</var> represents a valid number
for the <var>Int64</var> data type.
</p>
<p>
<var>ANumber</var> is an output parameter where the numeric value from the
conversion from the is stored.
</p>
<p>
The return value is a <var>Boolean</var> type which contains <b>True</b> when
the text in <var>S</var> is successfully converted to an Int64 value and
stored i the <var>N</var> argument. If the conversion raises an exception, it
is handled in the method and the return value is set to <b>False</b>. The
value in N should be considered as "undefined" in this scenario.
</p>
</descr>
<seealso>
<link id="TCustomSpinEditEx.ThousandSeparator"/>
</seealso>
</element>
<element name="TCustomSpinEditEx.TextIsNumber.Result">
<short><b>True</b> when the text contains a valid Int64 value.</short>
</element>
<element name="TCustomSpinEditEx.TextIsNumber.S">
<short>Text converted to a numeric value in the method.</short>
</element>
<element name="TCustomSpinEditEx.TextIsNumber.ANumber">
<short>
Contains the successfully converted numeric value for the string.
</short>
</element>
<!-- public methods and properties -->
<element name="TCustomSpinEditEx.ValueToStr">
<short>
Converts the specified numeric value to its String representation.
</short>
<descr>
<p>
<var>ValueToStr</var> is an overridden <var>String</var> function used to
convert the value specified in <var>AValue</var> to its representation as a
<var>String</var> data type. AValue is an <var>Int64</var> type.
</p>
<p>
<var>ValueToStr</var> calls <var>IntToStr</var> to convert the integer value
to the String used as the return value for the method. When
<var>ThousandSeparator</var> has been assigned, the
<var>InsertThousandSeparator</var> routine is called to apply the display
formatting to the return value.
</p>
<p>
ValueToStr is used in the implementation of both the <var>UpdateControl</var>
and <var>RealGetText</var> methods in the ancestor class.
</p>
</descr>
<seealso>
<link id="TCustomSpinEditEx.ThousandSeparator"/>
<link id="TSpinEditExBase.RealGetText"/>
</seealso>
</element>
<element name="TCustomSpinEditEx.ValueToStr.Result">
<short>String representation for the specified numeric value.</short>
</element>
<element name="TCustomSpinEditEx.ValueToStr.AValue">
<short>Numeric value converted in the method.</short>
</element>
<element name="TCustomSpinEditEx.Increment">
<short>
Amount by which the control value is increased or decreased when UpDown is
clicked.
</short>
<descr>
<p>
<var>Increment</var> is an <var>Int64</var> property in
<var>TCustomSpinEditEx</var>, and represents the amount by which the control
value is increased or decreased when the UpDown button is clicked. The
default value for the property is <b>1</b>.
</p>
<p>
Increment is used in the implementation of the <var>SafeInc</var> and
<var>SafeDec</var> methods.
</p>
</descr>
<seealso>
<link id="TCustomSpinEditEx.SafeInc"/>
<link id="TCustomSpinEditEx.SafeDec"/>
</seealso>
</element>
<element name="TCustomSpinEditEx.ThousandSeparator">
<short>
Contains the thousands separator used to format and display the control value.
</short>
<descr>
<p>
<var>ThousandSeparator</var> is a <var>String</var> property which contains
the character used as the thousands separator in the control. It is
implemented as a <var>String</var> type to allow use of UTF-8-encoded
characters in the property value. When it is unassigned (contains an empty
string), the separator is not used to format the string value for the control.
</p>
<p>
Changing the value in ThousandSeparator causes the <var>UpdateControl</var>
method to be called to update the display for the control.
</p>
<p>
ThousandSeparator is used in methods like <var>EditKeyPress</var>,
<var>TextIsNumber</var>, and <var>ValueToStr</var>.
</p>
</descr>
<seealso>
<link id="TSpinEditExBase.EditKeyPress"/>
<link id="TCustomSpinEditEx.TextIsNumber"/>
<link id="TCustomSpinEditEx.ValueToStr"/>
</seealso>
</element>
<element name="TSpinEditEx">
<short>Implements a spin edit control for an Int64 data type.</short>
<descr>
<p>
<var>TSpinEditEx</var> is a <var>TCustomSpinEditEx</var> descendant which
implements a spin edit control using an <var>Int64</var> value. TSpinEditEx
sets the visibility for properties defined in ancestor classes.
</p>
<p>
Use the <var>ThousandSeparator</var> to set the UTF-8-encoded value used as
the decimal point in the control value.
</p>
<p>
Set <var>Increment</var> to the value by which the control is increased or
decreased when the <var>UpDown</var> button is clicked.
</p>
<p>
Use <var>ValueToStr</var> to get the string representation for the numeric
value.
</p>
</descr>
<seealso>
<link id="TCustomSpinEditEx"/>
<link id="IntroToSpinEx"/>
</seealso>
</element>
<!-- public properties -->
<element name="TSpinEditEx.AutoSelected" link="#lcl.groupededit.TCustomAbstractGroupedEdit.AutoSelected"/>
<!-- published properties -->
<element name="TSpinEditEx.AutoSelect" link="#lcl.groupededit.TCustomAbstractGroupedEdit.AutoSelect"/>
<element name="TSpinEditEx.AutoSizeHeightIsEditHeight" link="#lcl.groupededit.TCustomAbstractGroupedEdit.AutoSizeHeightIsEditHeight"/>
<element name="TSpinEditEx.AutoSize" link="#lcl.groupededit.TCustomAbstractGroupedEdit.AutoSize"/>
<element name="TSpinEditEx.Action" link="#lcl.controls.TControl.Action"/>
<element name="TSpinEditEx.Align" link="#lcl.controls.TControl.Align"/>
<element name="TSpinEditEx.Alignment" link="#lcl.groupededit.TCustomAbstractGroupedEdit.Alignment"/>
<element name="TSpinEditEx.Anchors" link="#lcl.controls.TControl.Anchors"/>
<element name="TSpinEditEx.BiDiMode" link="#lcl.controls.TControl.BiDiMode"/>
<element name="TSpinEditEx.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TSpinEditEx.BorderStyle" link="#lcl.controls.TCustomControl.BorderStyle"/>
<element name="TSpinEditEx.CharCase" link="#lcl.groupededit.TCustomAbstractGroupedEdit.CharCase"/>
<element name="TSpinEditEx.Color" link="#lcl.groupededit.TCustomAbstractGroupedEdit.Color"/>
<element name="TSpinEditEx.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TSpinEditEx.Cursor" link="#lcl.controls.TControl.Cursor"/>
<element name="TSpinEditEx.DirectInput" link="#lcl.groupededit.TCustomAbstractGroupedEdit.DirectInput"/>
<element name="TSpinEditEx.EchoMode" link="#lcl.groupededit.TCustomAbstractGroupedEdit.EchoMode"/>
<element name="TSpinEditEx.Enabled" link="#lcl.controls.TControl.Enabled"/>
<element name="TSpinEditEx.FocusOnBuddyClick" link="#lcl.groupededit.TCustomAbstractGroupedEdit.FocusOnBuddyClick"/>
<element name="TSpinEditEx.Font" link="#lcl.controls.TControl.Font"/>
<element name="TSpinEditEx.Hint" link="#lcl.controls.TControl.Hint"/>
<element name="TSpinEditEx.Layout" link="#lcl.groupededit.TCustomAbstractGroupedEdit.Layout"/>
<element name="TSpinEditEx.MaxLength" link="#lcl.groupededit.TCustomAbstractGroupedEdit.MaxLength"/>
<element name="TSpinEditEx.NumbersOnly" link="#lcl.groupededit.TCustomAbstractGroupedEdit.NumbersOnly"/>
<element name="TSpinEditEx.ParentBiDiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element name="TSpinEditEx.ParentColor" link="#lcl.controls.TControl.ParentColor"/>
<element name="TSpinEditEx.ParentFont" link="#lcl.controls.TControl.ParentFont"/>
<element name="TSpinEditEx.ParentShowHint" link="#lcl.controls.TControl.ParentShowHint"/>
<element name="TSpinEditEx.PopupMenu" link="#lcl.groupededit.TCustomAbstractGroupedEdit.PopupMenu"/>
<element name="TSpinEditEx.ReadOnly" link="#lcl.groupededit.TCustomAbstractGroupedEdit.ReadOnly"/>
<element name="TSpinEditEx.ShowHint" link="#lcl.controls.TControl.ShowHint"/>
<element name="TSpinEditEx.TabOrder" link="#lcl.controls.TWinControl.ShowHint"/>
<element name="TSpinEditEx.TabStop" link="#lcl.groupededit.TCustomAbstractGroupedEdit.TabStop"/>
<element name="TSpinEditEx.TextHint" link="#lcl.groupededit.TCustomAbstractGroupedEdit.TextHint"/>
<element name="TSpinEditEx.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TSpinEditEx.OnChange" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnChange"/>
<element name="TSpinEditEx.OnClick" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnClick"/>
<element name="TSpinEditEx.OnDblClick" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnDblClick"/>
<element name="TSpinEditEx.OnDragDrop" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnDragDrop"/>
<element name="TSpinEditEx.OnDragOver" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnDragOver"/>
<element name="TSpinEditEx.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TSpinEditEx.OnEditingDone" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnEditingDone"/>
<element name="TSpinEditEx.OnEndDrag" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnEndDrag"/>
<element name="TSpinEditEx.OnEnter" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnEnter"/>
<element name="TSpinEditEx.OnExit" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnExit"/>
<element name="TSpinEditEx.OnKeyDown" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnKeyDown"/>
<element name="TSpinEditEx.OnKeyPress" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnKeyPress"/>
<element name="TSpinEditEx.OnKeyUp" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnKeyUp"/>
<element name="TSpinEditEx.OnMouseDown" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseDown"/>
<element name="TSpinEditEx.OnMouseEnter" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseEnter"/>
<element name="TSpinEditEx.OnMouseLeave" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseLeave"/>
<element name="TSpinEditEx.OnMouseMove" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseMove"/>
<element name="TSpinEditEx.OnMouseUp" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseUp"/>
<element name="TSpinEditEx.OnMouseWheel" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseWheel"/>
<element name="TSpinEditEx.OnMouseWheelDown" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseWheelDown"/>
<element name="TSpinEditEx.OnMouseWheelUp" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnMouseWheelUp"/>
<element name="TSpinEditEx.OnStartDrag" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnStartDrag"/>
<element name="TSpinEditEx.OnUTF8KeyPress" link="#lcl.groupededit.TCustomAbstractGroupedEdit.OnUTF8KeyPress"/>
<element name="TSpinEditEx.ArrowKeys" link="#lazcontrols.spinex.TSpinEditExBase.ArrowKeys"/>
<element name="TSpinEditEx.Increment" link="#lazcontrols.spinex.TCustomSpinEditEx.Increment"/>
<element name="TSpinEditEx.MaxValue" link="#lazcontrols.spinex.TCustomSpinEditEx.MaxValue"/>
<element name="TSpinEditEx.MinValue" link="#lazcontrols.spinex.TCustomSpinEditEx.MinValue"/>
<element name="TSpinEditEx.MinRepeatValue" link="#lazcontrols.spinex.TSpinEditExBase.MinRepeatValue"/>
<element name="TSpinEditEx.NullValue" link="#lazcontrols.spinex.TSpinEditExBase.NullValue"/>
<element name="TSpinEditEx.NullValueBehaviour" link="#lazcontrols.spinex.TSpinEditExBase.NullValueBehaviour"/>
<element name="TSpinEditEx.Orientation" link="#lazcontrols.spinex.TSpinEditExBase.Orientation"/>
<element name="TSpinEditEx.Spacing" link="#lcl.groupededit.TCustomAbstractGroupedEdit.Spacing"/>
<element name="TSpinEditEx.ThousandSeparator" link="#lazcontrols.spinex.TCustomSpinEditEx.ThousandSeparator"/>
<element name="TSpinEditEx.UpDownVisible" link="#lazcontrols.spinex.TSpinEditExBase.UpDownVisible"/>
<element name="TSpinEditEx.Value" link="#lazcontrols.spinex.TSpinEditExBase.Value"/>
<element name="DbgS">
<short>
Gets debugging information about a value from TNullValueBehaviour.
</short>
<descr>
<p>
<var>DbgS</var> is an overloaded <var>String</var> function used to get
information displayed in the Debugger. This variant of the routine accepts a
<var>TNullValueBehaviour</var> argument, an converts the specified value to
its string representation,
</p>
</descr>
</element>
<element name="DbgS.Result">
<short>String representation for the specified null value behavior.</short>
</element>
<element name="DbgS.ANvb">
<short>Enumeration value converted to a string in the method.</short>
</element>
<topic name="IntroToSpinEx">
<short>Introduction to Extended Spin Edit Controls.</short>
<descr>
<p>
The <file>SpinEx.pp</file> unit contains extended spin edit controls, like
<var>TSpinEditEx</var> and <var>TFloatSpinEditEx</var>. They are very similar
to <var>TSpinEdit</var> and <var>TFloatSpinEdit</var>, but provide additional
features which allow a NullValue for the control and behaviors performed when
the value for the control is not a valid numeric value.
</p>
<p>
This introduction will discuss the problems the design of the controls, and
the problems they are intended to eliminate.
</p>
<p>
<b>Why another SpinEdit or FloatSpinEdit control?</b>
</p>
<p>
The standard controls, TSpinEdit and TFloatSpinEdit, do not support a
NullValue mechanism. Also, their implementations are widgetset dependent.
While this provides a control that has the look and feel native to the
widgetset, the behavior also depends on the widgetset. This is especially
important when the text for the control contains an invalid numeric value
(otherwise not a number). In such a case, when querying the control for it's
Value, the results are not consistent for the various platforms. The
difference in behavior between widgetsets also prevents implementation of the
NullValue mechanism, especially the possibility to leave the control empty or
to display informative text inside the control about the condition.
</p>
<p>
TSpinEditEx handles Int64 values, while TSpinEdit is limited to LongInt
values. This is because TSpinEdit inherits from TCustomFloatSpinEdit and the
internal member for the Value is stored using the Double type, and Double
does not have enough significant digits to handle the range for the Int64
type.
</p>
<p>
In addition, TFloatSpinEditEx can set the value for its DecimalSeparator
property independent of the value in the DefaultFormatSettings for the
platform or operating system. Note: Unlike T(Float)SpinEdit, the GetValue
method is always derived from the actual text in the control. This is by
design, and it should not be altered.
</p>
<p>
<b>Why not simply associate a TUpDown with a TEdit instead?</b>
</p>
<p>
Using TEdit with a TUpDown control has several disadvantages:
</p>
<ul>
<li>It does not allow floating point values.</li>
<li>Its range is limited to the range for the SmallInt type.</li>
<li>It does not properly anchor and/or align.</li>
</ul>
<p>
While both TSpinEditEx and TFloatSpinEditEx use a TUpDown control in their
implementations, they do not use the Associate property in TUpDown. The two
controls (the edit and the up/down button) are embedded in a TCustomControl
(much like TEditButton) to provide proper alignment and anchoring behavior.
</p>
</descr>
<seealso/>
</topic>
</module>
<!-- SpinEx -->
</package>
</fpdoc-descriptions>