lazarus/docs/xml/lcl/dbctrls.xml
2024-09-28 09:40:52 +02:00

10495 lines
383 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!--
Documentation for LCL (Lazarus Component Library) and LazUtils (Lazarus
Utilities) are published under the Creative Commons Attribution-ShareAlike 4.0
International public license.
https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt
file://../../cc-by-sa-4-0.txt
Copyright (c) 1997-2024, by the Lazarus Development Team.
-->
<fpdoc-descriptions>
<package name="lcl">
<!--
====================================================================
DbCtrls
====================================================================
-->
<module name="DbCtrls">
<short>
Data-aware controls commonly used for viewing and operating on information
held in databases.
</short>
<descr>
<p>
<file>dbctrls.pp</file> contains data-aware controls used to access, view,
edit, and navigate databases in the Lazarus Component Library (<b>LCL</b>).
</p>
<p>
The following components are added to the <b>Data Controls</b> tab in the
Lazarus IDE Component Palette:
</p>
<ul>
<li>TDBNavigator</li>
<li>TDBText</li>
<li>TDBEdit</li>
<li>TDBMemo</li>
<li>TDBImage</li>
<li>TDBListBox</li>
<li>TDBLookupListBox</li>
<li>TDBComboBox</li>
<li>TDBLookupComboBox</li>
<li>TDBCheckBox</li>
<li>TDBRadioGroup</li>
<li>TDBCalendar</li>
<li>TDBGroupBox</li>
</ul>
<p>
DefaultFieldClasses (defined in the FPC FCL) are registered as database field
classes in the IDE. The TIntegerField type (also defined in the FPC FCL) is
registered as a database field class, and is aliased to the TLongintField
type. For more information about database field classes, see <link
id="#fcl.db.DefaultFieldClasses">DefaultFieldClasses</link> and <link
id="#fcl.db.TIntegerField">TIntegerField</link>.
</p>
</descr>
<element name="Types"/>
<element name="Classes"/>
<element name="SysUtils"/>
<element name="DB"/>
<element name="Variants"/>
<element name="LCLStrConsts"/>
<element name="LMessages"/>
<element name="LCLType"/>
<element name="LCLIntf"/>
<element name="LResources"/>
<element name="Controls"/>
<element name="Graphics"/>
<element name="Dialogs"/>
<element name="StdCtrls"/>
<element name="Buttons"/>
<element name="MaskEdit"/>
<element name="ExtCtrls"/>
<element name="Calendar"/>
<element name="ImgList"/>
<element name="GraphType"/>
<element name="LazTracer"/>
<element name="LazUtilities"/>
<element name="TFieldDataLink">
<short>
Maintains an association between a control, an action, and a field in a
linked dataset.
</short>
<descr>
<p>
<var>TFieldDataLink</var> is a <var>TDataLink</var> descendant which
maintains an association between a control, an action, and a field in a
linked dataset. TFieldDataLink extends the ancestor class to provide
additional properties, methods, and events useful when working with a
data-aware control linked to a field in a dataset.
</p>
<p>
The following key properties are added in the class:
</p>
<ul>
<li>Control</li>
<li>FieldName</li>
<li>Field</li>
</ul>
<p>
The following events are added in the class:
</p>
<ul>
<li>OnDataChange</li>
<li>OnUpdateData</li>
<li>OnEditingDone</li>
<li>OnActiveChange</li>
</ul>
<p>
TFieldDataLink is used in the implementation of several data-aware controls.
In most cases, it is used in an internal member and not exposed in the
interface for the control. It can, however, be used as a public or published
property.
</p>
</descr>
<seealso>
<link id="TDBLookup"/>
<link id="TDBEdit"/>
<link id="TDBText"/>
<link id="TDBRadioGroup"/>
<link id="TDBCheckBox"/>
<link id="TDBMemo"/>
<link id="TDBGroupBox"/>
<link id="TDBImage"/>
<link id="TDBCalendar"/>
<link id="TCustomDBComboBox"/>
<link id="#fcl.db.TDataLink">TDataLink</link>
</seealso>
</element>
<element name="TFieldDataLink.FField"/>
<element name="TFieldDataLink.FFieldName"/>
<element name="TFieldDataLink.FControl"/>
<element name="TFieldDataLink.FOnDataChange"/>
<element name="TFieldDataLink.FOnEditingChange"/>
<element name="TFieldDataLink.FOnUpdateData"/>
<element name="TFieldDataLink.FOnActiveChange"/>
<element name="TFieldDataLink.FEditing"/>
<element name="TFieldDataLink.FEditingSourceSet"/>
<element name="TFieldDataLink.FEditingSource"/>
<element name="TFieldDataLink.IsModified"/>
<element name="TFieldDataLink.FieldCanModify">
<short>Indicates if the Field for the data link can be modified.</short>
</element>
<element name="TFieldDataLink.FieldCanModify.Result">
<short>
<b>True</b> when Field is assigned and its CanModify method is also
<b>True</b>.
</short>
</element>
<element name="TFieldDataLink.IsKeyField">
<short>
Indicates if the specified field is present in the KeyFields for the data
link.
</short>
</element>
<element name="TFieldDataLink.IsKeyField.Result">
<short>
<b>True</b> when the name for the field is present in KeyFields.
</short>
</element>
<element name="TFieldDataLink.IsKeyField.aField">
<short>Field definition to locate in the KeyFields for the data link.</short>
</element>
<element name="TFieldDataLink.GetCanModify">
<short>Gets the value for the CanModify property.</short>
<seealso>
<link id="TFieldDataLink.CanModify"/>
</seealso>
</element>
<element name="TFieldDataLink.GetCanModify.Result">
<short>Value for the property.</short>
</element>
<element name="TFieldDataLink.SetFieldName">
<short>Sets the value for the FieldName property.</short>
<descr/>
<seealso>
<link id="TFieldDataLink.FieldName"/>
</seealso>
</element>
<element name="TFieldDataLink.SetFieldName.Value">
<short>Value for the property.</short>
</element>
<element name="TFieldDataLink.UpdateField">
<short>
Retrieves the value for the Field property from the linked dataset.
</short>
<descr/>
<seealso/>
</element>
<element name="TFieldDataLink.ValidateField">
<short>
Checks for FieldName in the linked Dataset, and updates the value in Field.
</short>
<descr/>
<seealso>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.Field"/>
<link id="#fcl.db.TDataLink.Active">TDataLink.Active</link>
</seealso>
</element>
<element name="TFieldDataLink.ResetEditingSource">
<short>Resets the EditingSource and EditingSourceSet Boolean flags.</short>
<descr/>
<seealso/>
</element>
<element name="TFieldDataLink.ActiveChanged">
<short>
<var>ActiveChanged</var> - method to process changes in the <var>Active</var>
property.
</short>
<descr>
<p>
<var>ActiveChanged</var> - method to process changes in the <var>Active</var>
property.
</p>
<p>
Any change to the <var>Active</var> property triggers the
<var>ActiveChanged</var> method.
</p>
<p>
If the method is triggered by a transition into an <var>Active</var> state,
then <var>ActiveChanged</var> ensures that this <var>TFieldDataLink</var>'s
<var>Field</var> is still valid before calling the event handler.
</p>
<p>
ActiveChanged calls the <var>OnActiveChange</var> event handler if one has
been assigned.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.OnActiveChange"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
</seealso>
</element>
<element name="TFieldDataLink.EditingChanged">
<short>
<var>EditingChanged</var> - method for processing changes in the
<var>Editing</var> property.
</short>
<descr>
<p>
<var>EditingChanged</var> is an overridden method which re-implements the
virtual method defined in <var>TDataLink</var>. EditingChanged ensures that
the
<var>Editing</var> property is updated to reflect actual state for the
<var>Field</var> in the linked dataset. If the real editing state does not
match the value in the Editing property, internal flags are reset to reflect
the new editing state and the <var>OnEditingChange</var> event handler is
signalled (when assigned).
</p>
<p>
EditingChanged is used in the implementation of the <var>LayoutChanged</var>
method. It is also called when the value in the <var>FieldName</var> or
<var>Active</var> property is changed.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Editing"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.EditingChanged"/>
<link id="TFieldDataLink.OnEditingChange"/>
</seealso>
</element>
<element name="TFieldDataLink.LayoutChanged">
<short>
<var>LayoutChanged</var>- called if layout is changed: tests validity of
field then calls <var>OnLayoutChange</var> event handler.
</short>
<descr>
<p>
<var>LayoutChanged</var> is an overridden procedure called when the field
binding in the linked dataset for a data-aware Control has been changed.
LayoutChanged calls the ValidateField method to ensure that the Field is
valid / up-to-date, or set to <b>Nil</b> when the FieldName does not exist in
the linked dataset. If the Field is assigned (not <b>Nil</b>), the
EditingChanged and RecordChanged methods are called.
</p>
<remark>
LayoutChanged does not call the inherited method.
</remark>
<p>
LayoutChanged is used primarily in the implementation of methods in
TCustomDBGrid and descendent classes.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Control"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.EditingChanged"/>
<link id="TFieldDataLink.RecordChanged"/>
<link id="#lcl.dbgrids.TCustomDBGrid">TCustomDBGrid</link>
</seealso>
</element>
<element name="TFieldDataLink.RecordChanged">
<short>
<var>RecordChanged</var> - triggered if the contents of the current record
change; calls
<var>Reset</var>.
</short>
<descr>
<p>
<var>RecordChanged</var> is an overridden procedure called when the current
record in the linked dataset has been changed.
</p>
<p>
<var>AField</var> contains the TField definition with the value that has
changed in the current record. It may contain <b>Nil</b> when more than one
field has been changed in the current record for the linked dataset.
</p>
<p>
RecordChanged calls the Reset method when any of the following are
<b>True</b>:
</p>
<ul>
<li>AField is unassigned (contains Nil)</li>
<li>AField has the same value as the Field property</li>
<li>Field is an assigned key field which uses the fkLookup field kind</li>
</ul>
<p>
Applications should not call this method; it is executed when values are
stored by data-aware controls which use the field data link.
</p>
</descr>
<seealso/>
</element>
<element name="TFieldDataLink.RecordChanged.aField">
<short>Field definition with the value updated in the current record.</short>
</element>
<element name="TFieldDataLink.UpdateData">
<short>
Signals the <var>OnUpdateData</var> event handler for pending changes to the
linked dataset.
</short>
<descr>
<p>
<var>UpdateData</var> is an overridden procedure used to post pending updates
from a data-aware control to the linked dataset. UpdateData uses the value in
the internal IsModified flag to determine if additional actions are required
in the method. No actions are performed when the internal IsModified flag has
not been set.
</p>
<p>
UpdateData signals the <var>OnUpdateData</var> event handler when it has been
assigned for the class instance. This event handler normally contains a
reference to the <var>UpdateData</var> method defined for the associated
data-aware <var>Control</var>, such as <var>TCustomDBGrid.UpdateData</var>
and <var>TDBEdit.UpdateData</var>.
</p>
<remark>
UpdateData does <b>not</b> call the inherited method in the ancestor class.
</remark>
</descr>
<seealso>
<link id="TFieldDataLink.OnUpdateData"/>
<link id="TFieldDataLink.Control"/>
</seealso>
</element>
<element name="TFieldDataLink.FocusControl">
<short>
<var>FocusControl</var> gives the input focus to the data-aware control in
the class instance.
</short>
<descr>
<p>
<var>FocusControl</var> is an overridden procedure used to give input focus
to the data-aware <var>Control</var> for the class instance.
</p>
<p>
<var>AField</var> is a reference to the <var>TField</var> which defines the
field for the data-aware control. AField must be assigned, and point to the
<var>Field</var> used in the class instance. No actions are performed in the
method if either condition is not met.
</p>
<p>
FocusControl can be used for any Control descended from TWinControl where its
CanFocus value is <b>True</b>; the SetFocus method in the Control is called
to receive the input focus.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Control"/>
<link id="TFieldDataLink.Field"/>
<link id="#lcl.controls.TWinControl.CanFocus">TWinControl.CanFocus</link>
<link id="#lcl.controls.TWinControl.SetFocus">TWinControl.SetFocus</link>
</seealso>
</element>
<element name="TFieldDataLink.FocusControl.aField">
<short>Reference to the field expected for the focused control.</short>
</element>
<element name="TFieldDataLink.Create">
<short>Constructor for the class instance.
</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance, and
calls the inherited constructor on entry to the method. Create sets the value
in the <var>VisualControl</var> property to <b>True</b>.
</p>
</descr>
<seealso>
<link id="#fcl.db.TDataLink.Create">TDataLink.Create</link>
</seealso>
</element>
<element name="TFieldDataLink.Edit">
<short>
<var>Edit</var> - if the field can be modified, performs inherited Edit and
shows editing status.
</short>
<descr>
<p>
<var>Edit</var> is a <var>Boolean</var> function used to ensure that the
field in the linked dataset can be modified. The return value is
<b>True</b> when the DataSource is already in an edit state, or if it is
successfully changed to an edit state. The return value is
<b>False</b> if a dataset is not available, or not in a valid edit state.
</p>
<p>
Edit calls the inherited method when CanModify is <b>True</b> and the dataset
is not already in an edit state. This causes the DataSource to call its Edit
method.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.CanModify"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.Edit">TDataLink.Edit</link>
<link id="#fcl.db.TDataSource.Edit">TDataSource.Edit</link>
</seealso>
</element>
<element name="TFieldDataLink.Edit.Result">
<short><b>True</b> if the linked dataset is in an edit state.</short>
</element>
<element name="TFieldDataLink.Modified">
<short>Updates the class when the linked dataset enters an edit state.</short>
<descr>
<p>
<var>Modified</var> is a procedure which updates the class when the linked
dataset is placed in an edit state. Modified sets the value in the internal
IsModified member to <b>True</b> to track the state change independent of the
real state for the linked dataset.
</p>
<p>
The EditingChanged, UpdateData, and Reset methods reverse the action
performed in Modified.
</p>
<p>
Modified is used in the implementation of methods in data-aware controls, and
generally occurs just prior to calling the Change method to signal an update
to the value for the control.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.EditingChanged"/>
<link id="TFieldDataLink.UpdateData"/>
<link id="TFieldDataLink.Reset"/>
<link id="TDBEdit.Change"/>
<link id="TDBImage.Change"/>
<link id="TDBMemo.Change"/>
</seealso>
</element>
<element name="TFieldDataLink.Reset">
<short>
Checks whether the link is active, calls the <var>OnDataChange</var> event
handler then sets <var>IsModified</var> to <b>False</b>.
</short>
<descr>
<p>
<var>Reset</var> is a procedure used to cancel pending changes in the Control
value before they are written to the Field in the linked dataset. Reset
signals the
<var>OnDataChange</var> event handler (when assigned), but does not store
pending changes to the current record in the linked dataset.
</p>
<p>
The internal IsModified flag is reset in the method, as are flags which track
the editing state for the source of the control value. Call the OnDataChange
event handler to affect the internal IsModified flag only.
</p>
<p>
Reset is used in the implementation of methods in data-aware controls which
process, apply, or cancel changes to the control value.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Control"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="TDBEdit.Reset"/>
<link id="TDBEdit.KeyDown"/>
</seealso>
</element>
<element name="TFieldDataLink.Control">
<short>The <var>Control</var> to which this datalink is attached.</short>
<descr>
<p>
<var>Controls</var> is a <var>TComponent</var> property which contains the
control which provides editing facilities for the value in the linked
dataset. The value in control is generally assigned when a data-aware control
is created and its data link is configured.
</p>
<p>
The value in Control is used in the implementation of the
<var>FocusControl</var> method to give input focus to the control.
</p>
<p>
Use the <var>FieldName</var> property to access the name of the field in the
linked dataset.
</p>
<p>
Use the <var>DataSource</var> property to access the component which provides
access to the linked <var>DataSet</var> with the <var>Field</var> value.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FocusControl"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
</seealso>
</element>
<element name="TFieldDataLink.Field">
<short>The <var>Field</var> to which the datalink is attached.</short>
<descr>
<p>
<var>Field</var> is a read-only <var>TField</var> property which contains the
field definition in the linked <var>DataSet</var> for the database column
represented by the <var>FieldName</var> property. Field provides access to
the metadata for the database column, such as: field type, size, display
values, lookup settings and content, editing mask, et. al.
</p>
<p>
The value in Field is assigned in the private UpdateField method when the
value for the FieldName property is changed. Its value is also accessible to
the data-aware <var>Control</var> using the TFieldDataLink instance.
</p>
<p>
The <var>DataSource</var> and <var>DataSet</var> properties contain the
source with the fields and values for the class instance.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Control"/>
<link id="TFieldDataLink.FieldName"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
</seealso>
</element>
<element name="TFieldDataLink.FieldName">
<short>
<var>FieldName</var> - the name of the attached field, stored as a string.
</short>
<descr>
<p>
<var>FieldName</var> is a <var>String</var> property which contains the name
of the field in the linked <var>Dataset</var> with the value for a data-aware
<var>Control</var>. Changing the value for the property causes
<var>Field</var> to be updated to reflect the new value. If the data link is
marked as <var>Active</var>, the <var>EditingChanged</var> and
<var>Reset</var> methods are called to trigger event handlers in the class
instance.
</p>
<p>
Use the DataSource property to assign the component with the linked DataSet
which contains the specified FieldName.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Control"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.EditingChanged"/>
<link id="TFieldDataLink.Reset"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
<link id="#fcl.db.TDataLink.Active">TDataLink.Active</link>
</seealso>
</element>
<element name="TFieldDataLink.CanModify">
<short>
<b>True</b> if the linked field is capable of being modified.
</short>
<descr>
<p>
<var>CanModify</var> is a read-only <var>Boolean</var> property which
indicates if the field in the linked <var>DataSet</var> can be modified. The
property value is determined by examining the <var>Field</var> definition in
the DataSet.
</p>
<p>
If Field has not been assigned by setting the <var>FieldName</var> property,
the property value is <b>False</b>. If the Field is a lookup field type, the
value is <b>True</b> when its list fields can be modified. Otherwise, the
value in the CanModify property for the Field and the ReadOnly property in
the data link determine the property value.
</p>
<p>
CanModify is used in the implementation of the EditingChanged and Edit
methods.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.Edit"/>
<link id="TFieldDataLink.EditingChanged"/>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.ReadOnly">TDataLink.ReadOnly</link>
</seealso>
</element>
<element name="TFieldDataLink.Editing">
<short>
<b>True</b> if the linked field is being edited.
</short>
<descr>
<p>
<var>Editing</var> is a read-only <var>Boolean</var> property which indicates
if values in the class instance have been updated in its methods. It is used
in methods for data-aware controls, and determines whether a control uses the
data link to commit or discard value changes in the control.
</p>
<p>
The value in Editing is updated following changes to the
<var>DataSource</var>, <var>FieldName</var>, <var>Field</var>,
<var>ReadOnly</var>, or <var>Active</var> properties.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.ActiveChanged"/>
<link id="TFieldDataLink.EditingChanged"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.Active">TDataLink.Active</link>
<link id="#fcl.db.TDataLink.ReadOnly">TDataLink.ReadOnly</link>
</seealso>
</element>
<element name="TFieldDataLink.EditingSource">
<short>Indicates if the data link is changing its source properties.
</short>
<descr>
<p>
<var>EditingSource</var> is a read-only <var>Boolean</var> property which
indicates if the data link is changing the source properties for the class
instance. The source properties include <var>DataSource</var>,
<var>FieldName</var>, and <var>Field</var>.
</p>
<p>
The value in EditingSource is updated when the <var>Edit</var> or
<var>EditingChanged</var> methods are called. It is used to prevent multiple
calls to the Edit method.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.Edit"/>
<link id="TFieldDataLink.EditingChanged"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
</seealso>
</element>
<element name="TFieldDataLink.OnDataChange">
<short>
Event handler signalled when the field data link has been changed.
</short>
<descr>
<p>
<var>OnDataChange</var> is a <var>TNotifyEvent</var> property which contains
the event handler signalled when the <var>DataSource</var> or
<var>Field</var> has been changed in the class instance. OnDataChange is
normally signalled from the <var>DataChange</var> method in a data-aware
control which has been assigned to the event handler when the control was
initialized. It is also signalled from the <var>Reset</var> method which
cancels field updates for the control.
</p>
<p>
See <var>OnUpdateData</var> for the event handler signalled when pending
edits are written to the linked <var>DataSet</var>. See
<var>EditingChanged</var> for the event handler signalled for pending changes
to the <var>DataSource</var>, <var>Field</var>, or <var>FieldName</var>
properties.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.Reset"/>
<link id="TFieldDataLink.OnUpdateData"/>
<link id="TFieldDataLink.OnEditingChange"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="TFieldDataLink.EditingChanged"/>
<link id="TFieldDataLink.UpdateData"/>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>
<element name="TFieldDataLink.OnEditingChange">
<short>
<var>OnEditingChange</var> - event handler for a changed in the
<var>Editing</var> property.
</short>
<descr>
<p>
<var>OnEditingChange</var> is a <var>TNotifyEvent</var> property which
contains the event handler signalled when the value in the <var>Editing</var>
property has been changed. OnEditingChange is signalled from the
<var>EditingChanged</var> method (when assigned) after Editing has been
updated to reflect the current edit state.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Editing"/>
<link id="TFieldDataLink.EditingChanged"/>
</seealso>
</element>
<element name="TFieldDataLink.OnUpdateData">
<short>
<var>OnUpdateData</var> - event handler for updating any pending changes in
the data.
</short>
<descr>
<p>
<var>OnUpdateData</var> is a <var>TNotifyEvent</var> property which contains
the event handler signalled for changes to the data in the control.
</p>
<p>
OnUpdateData is signalled from the <var>UpdateData</var> method, and normally
contains a reference to the UpdateData method in the data-aware control which
contains the class instance. The method in the data-aware control is
responsible for performing any actions needed before the field value is
written to its dataset. This can include validation of the field value, and
potentially raising an exception for an invalid field value.
</p>
</descr>
<seealso/>
</element>
<element name="TFieldDataLink.OnActiveChange">
<short>
<var>OnActiveChange</var> - event handler for a change in the
<var>Active</var> property.
</short>
<descr>
<p>
<var>OnActiveChange</var> is a <var>TNotifyEvent</var> property which
contains the event handler signalled when the value for the <var>Active</var>
property has been changed. OnActiveChange is signalled from the
<var>ActiveChanged</var> method, and occurs after the <var>Field</var>
property has been updated and the <var>OnDataChange</var> event handler has
been executed.
</p>
<p>
Applications can implement and assign an object procedure to the property to
allow responding the event notification.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.ActiveChanged"/>
<link id="TFieldDataLink.EditingChanged"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.Reset"/>
<link id="#fcl.db.TDataLink.Active">TDataLink.Active</link>
<link id="#rtl.classes.TNotifyEvent">TNotifyEvent</link>
</seealso>
</element>
<element name="TDBLookup">
<short>
<var>TDBLookup</var> - used as source of data by <var>TDBLookupListBox</var>
or
<var>TDBLookupComboBox</var>, to find data from a lookup table.
</short>
<descr>
<p>
<var>TDBLookup</var> component is typically owned by a Lookup control like
<var>TDBLookupListBox</var> or <var>TDBLookupComboBox</var>.
</p>
<p>
The <var>ListSource</var> is the <var>TDataSource</var> for the other Dataset
from which lookup values are retrieved.
</p>
<p>
The <var>KeyField</var> is the lookup key in <var>ListSource</var> which
corresponds to the <var>DataField</var> value.
</p>
<p>
The <var>ListField</var> is the name of the field in <var>ListSource</var> to
list into the <var>Items</var> property of the lookup control.
</p>
<p>
Use <var>EmptyValue</var> to specify a <var>KeyField</var> value
automatically added to the <var>ControlItems</var> property when the linked
lookup dataset contains no records. No entry is added to Controlitems when
the value in EmptyValue is an empty string <b>('')</b>. The value in
<var>DisplayEmpty</var> is used for the ListField displayed in the control.
</p>
</descr>
<version>
The EmptyValue and DisplayEmpty properties were added in revision 62844, and
released in LCL version 2.0.8 and higher.
</version>
</element>
<element name="TDBLookup.FControlLink"/>
<element name="TDBLookup.FControlItems"/>
<element name="TDBLookup.FListLink"/>
<element name="TDBLookup.FListSource"/>
<element name="TDBLookup.FLookupSource"/>
<element name="TDBLookup.FDataFieldNames"/>
<element name="TDBLookup.FKeyFieldNames"/>
<element name="TDBLookup.FListFieldName"/>
<element name="TDBLookup.FEmptyValue"/>
<element name="TDBLookup.FDisplayEmpty"/>
<element name="TDBLookup.FListFieldIndex"/>
<element name="TDBLookup.FDataFields"/>
<element name="TDBLookup.FKeyFields"/>
<element name="TDBLookup.FListField"/>
<element name="TDBLookup.FListKeys"/>
<element name="TDBLookup.FNullValueKey"/>
<element name="TDBLookup.FHasLookUpField"/>
<element name="TDBLookup.FLookUpFieldIsCached"/>
<element name="TDBLookup.FLookupCache"/>
<element name="TDBLookup.FInitializing"/>
<element name="TDBLookup.FScrollListDataset"/>
<element name="TDBLookup.FFetchingLookupData"/>
<element name="TDBLookup.ActiveChange"/>
<element name="TDBLookup.ActiveChange.Sender"/>
<element name="TDBLookup.DataSetChange"/>
<element name="TDBLookup.DatasetChange.Sender"/>
<element name="TDBLookup.DoInitialize"/>
<element name="TDBLookup.FetchLookupData"/>
<element name="TDBLookup.GetKeyFieldName"/>
<element name="TDBLookup.GetKeyFieldName.Result"/>
<element name="TDBLookup.GetListSource"/>
<element name="TDBLookup.GetListSource.Result"/>
<element name="TDBLookup.SetKeyFieldName"/>
<element name="TDBLookup.SetKeyFieldName.Value"/>
<element name="TDBLookup.SetListFieldName"/>
<element name="TDBLookup.SetListFieldName.Value"/>
<element name="TDBLookup.SetListSource"/>
<element name="TDBLookup.SetListSource.Value"/>
<element name="TDBLookup.SetLookupCache"/>
<element name="TDBLookup.SetLookupCache.Value"/>
<element name="TDBLookup.HandleNullKey"/>
<element name="TDBLookup.HandleNullKey.Result"/>
<element name="TDBLookup.HandleNullKey.Key"/>
<element name="TDBLookup.HandleNullKey.Word"/>
<element name="TDBLookup.Notification">
<short>
Performs the notification message received for a component in the class
instance.</short>
<descr>
<p>
Notification is an overridden method in TDBLookup. It calls the inherited
method, and ensures that the ListSource property is set to Nil when the
component is being removed.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.Notification">TComponent.Notification</link>
</seealso>
</element>
<element name="TDBLookup.Notification.AComponent">
<short>Component for the notification.</short>
</element>
<element name="TDBLookup.Notification.Operation">
<short>Operation for the notification.</short>
</element>
<element name="TDBLookup.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. Create allocates resources needed for
internal members in the class instance, and sets the default values for the
<var>DisplayEmpty</var> and <var>EmptyValue</var> properties (both are set to
an empty string).
</p>
</descr>
<seealso>
<link id="TDBLookup.DisplayEmpty"/>
<link id="TDBLookup.EmptyValue"/>
<link id="#rtl.classes.TComponent.Create">TComponent.Create</link>
</seealso>
</element>
<element name="TDBLookup.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance.
Destroy ensures that resources allocated to internal members in the class
instance are freed, and calls the inherited destructor prior to exiting from
the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.Destroy">TComponent.Destroy</link>
</seealso>
</element>
<element name="TDBLookup.Initialize">
<short>
<var>Initialize</var> makes links between local Fields and the appropriate
fields in the remote data source, then fetches the lookup data.
</short>
<descr>
<p>
<var>Initialize</var> is called when the value in the <var>Active</var>
property for the list dataset is changed to <b>True</b>. No actions are
performed in the method if it has already been called, but has not yet
finished.
</p>
<p>
When <var>ScrollListDataset</var> is <b>True</b>, the linked datasets for the
control and its lookup list are synchronized. The lookup dataset is
positioned to the record with the values in the key fields. When
ScrollListDataset is set to <b>False</b>, the datasets are not synchronized.
</p>
</descr>
</element>
<element name="TDBLookup.Initialize.AControlDataLink">
<short>
Link to the dataset with the keys and display values for the control.
</short>
</element>
<element name="TDBLookup.Initialize.AControlItems">
<short>Contains the keys and display values for the lookup control.</short>
</element>
<element name="TDBLookup.KeyFieldValue">
<short>
Gets the value(s) for one or more key fields defined for the Field in the
linked dataset.
</short>
<descr>
<p>
<var>KeyFieldValue</var> is a <var>Variant</var> function used to get one or
more values for fields which make up the index key for the linked dataset in
the control. KeyFieldValue uses the internal <var>TFieldDataLink</var>
instance in the class to get the return value for the method. The return
value contains the content from the <var>FieldValues</var> property for the
linked <var>DataSet</var>.
</p>
<p>
The return value is <b>Null</b> under the following conditions:
</p>
<ul>
<li>The internal data link has not been assigned</li>
<li>The Dataset in the data link is not Active</li>
<li>The Field in the data link does not have defined key field names</li>
</ul>
<p>
KeyFieldValue is useful for getting the index value for the current record in
the linked dataset. It is not, however, used in the implementation of the
class or descendants.
</p>
</descr>
<seealso>
<link id="TDBLookup.KeyField"/>
<link id="TFieldDataLink.Field"/>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
<link id="#fcl.db.TDataSet.FieldValues">TDataSet.FieldValues</link>
</seealso>
</element>
<element name="TDBLookup.KeyFieldValue.Result">
<short>
Variant value for the key fields in the field definition for the control.
</short>
</element>
<element name="TDBLookup.UpdateData">
<short>
Signals the <var>OnUpdateData</var> event handler for pending changes to the
linked dataset.
</short>
<descr>
<p>
<var>UpdateData</var> is a procedure used to post pending updates from a
data-aware control to the specified key field in the linked dataset.
<var>ValueIndex</var> contains the ordinal position in the list of key fields
for the value updated in the method. No actions are performed in the method
when ValueIndex is not a valid position for the list of key fields.
</p>
<p>
UpdateData uses the value in <var>ScrollListDataset</var> to determine
whether the lookup dataset is moved to the new key value. When
ScrollListDataset contains <b>True</b>, the linked lookup dataset calls its
Locate method to find the record with the key value in its index fields. The
lookup dataset is not moved when ScrollListDataset contains <b>False</b>.
</p>
<p>
The internal <var>TFieldDataLink</var> is used to access the linked dataset
where the value for the control is stored. It has not been assigned, is not
<var>Active</var>, or already contains the new key value, no additional
actions are performed in the method. Otherwise, the new key value is stored
in the field for the index key field.
</p>
</descr>
<seealso>
<link id="TDBLookup.KeyField"/>
<link id="TDBLookup.ScrollListDataset"/>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
<link id="#fcl.db.TDataLink.Active">TDataLink.Active</link>
</seealso>
</element>
<element name="TDBLookup.UpdateData.ValueIndex">
<short>Ordinal position in the key fields located in the method.</short>
</element>
<element name="TDBLookup.GetKeyValue">
<short>
Gets the value for the key field at the specified ordinal position in the
list of values from the lookup dataset.
</short>
<descr>
<p>
<var>GetKeyValue</var> is a <var>Variant</var> function used to get a values
from an index key field in the linked lookup dataset.
</p>
<p>
<var>ValueIndex</var> contains the ordinal position in the list of fields
defined as key fields in the Field for the linked dataset. When ValueIndex
contains a valid position for the list of fields names, the corresponding
field value from the lookup dataset is returned. Otherwise, the <b>Null</b>
value is used as the the return value for the method.
</p>
<p>
GetKeyField is called from methods in controls which use TDBLookup in their
implementation, such as <var>TDBLookupListBox</var> and
<var>TDBLookupComboBox</var>.
</p>
</descr>
<seealso>
<link id="TDBLookupListBox"/>
<link id="TDBLookupComboBox"/>
<link id="#fcl.db.TDataSet.Fields">TDataSet.Fields</link>
<link id="#fcl.db.TField.KeyFields">TField.KeyFields</link>
<link id="#fcl.db.TField.LookupKeyFields">TField.LookupKeyFields</link>
</seealso>
</element>
<element name="TDBLookup.GetKeyValue.Result">
<short>Value for the Key field retrieved from the lookup dataset.</short>
</element>
<element name="TDBLookup.GetKeyValue.ValueIndex">
<short>
Ordinal position in the list of key values from the lookup dataset.
</short>
</element>
<element name="TDBLookup.GetKeyIndex">
<short>
Gets the ordinal position in the list for the specified key value.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBLookup.GetKeyIndex.Result">
<short>Ordinal position for the specified key value.</short>
</element>
<element name="TDBLookup.GetKeyIndex.AKeyValue">
<short>Key value to locate in the method.</short>
</element>
<element name="TDBLookup.ControlItems">
<short>Contains the items displayed for the lookup control.</short>
<descr>
<p>
<var>ControlItems</var> is a <var>TStrings</var> property used to store the
display values for items in the lookup control.
</p>
<p>
Values in ControlItems are passed as an argument to the Initialize method
called when the value in Active is changed. It is updated when values are
retrieved from a linked lookup dataset using the ListField defined for the
control. ControlItems is cleared if the linked lookup dataset does not
contain any records; an empty value is added to the property when EmptyValue
and DisplayEmpty have been assigned in the control.
</p>
</descr>
<seealso/>
</element>
<element name="TDBLookup.LookupCache">
<short>
Indicates if look-up information is cached in the field data link for the
control.
</short>
<descr>
<p>
Used in classes with TDBLookup in their implementation, like
<var>TDBLookupComboBox</var> and <var>TDBLookupListBox</var>.
</p>
</descr>
<seealso/>
</element>
<element name="TDBLookup.KeyField">
<short>The name of the <var>KeyField</var> used in the lookup search.</short>
</element>
<element name="TDBLookup.ListField">
<short>
<var>ListField</var> - the name of the list field displayed for the
lookup.</short>
</element>
<element name="TDBLookup.ListFieldIndex">
<short>
<var>ListFieldIndex</var> - the index value of the list field.</short>
</element>
<element name="TDBLookup.ListSource">
<short>
<var>ListSource</var> - the data source that contains the lookup list.
</short>
</element>
<element name="TDBLookup.NullValueKey">
<short>
Keyboard shortcut which causes an empty value to be assigned to each of the
key fields defined for the lookup control.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBLookup.ScrollListDataset">
<short>
Indicates if the Dataset in ListSource can be scrolled when loading/locating
key and display values.
</short>
<descr>
<p>
<var>ScrollListDataset</var> is a <var>Boolean</var> property which indicates
if the linked lookup dataset can be scrolled when loading values from the
fields identified in KeyField and ListField. The value in ScrollListDataset
is used in the implementation of the <var>Initialize</var> and
<var>UpdateData</var> methods.
</p>
</descr>
<seealso>
<link id="TDBLookup.KeyField"/>
<link id="TDBLookup.ListField"/>
<link id="TDBLookup.ListSource"/>
<link id="TDBLookup.Initialize"/>
<link id="TDBLookup.UpdateData"/>
</seealso>
</element>
<element name="TDBLookup.EmptyValue">
<short>
Value stored for the lookup control when a lookup value is not available.
</short>
<descr>
<p>
<var>EmptyValue</var> is a <var>String</var> property which contains the
value stored in the list of key values when no records are available in the
linked lookup dataset, or when the <var>NullValueKey</var> shortcut is
pressed.
</p>
<p>
Use <var>EmptyValue</var> to specify a KeyField value automatically added to
the <var>ControlItems</var> property when the linked lookup dataset contains
no records. No entry is added to Controlitems when the value in EmptyValue is
an empty string (''). The value in <var>DisplayEmpty</var> is used for the
<var>ListField</var>displayed in the control.
</p>
<p>
Use <var>DisplayEmpty</var> to specify the value displayed in the lookup
control when no records are available in the linked lookup dataset, or when
the NullValueKey shortcut is pressed.
</p>
</descr>
<seealso>
<link id="TDBLookup.DisplayEmpty"/>
<link id="TDBLookup.ControlItems"/>
<link id="TDBLookup.ListField"/>
<link id="TDBLookup.KeyField"/>
<link id="TDBLookup.NullValueKey"/>
</seealso>
<version>
The EmptyValue and DisplayEmpty properties were added in revision 62844, and
released in LCL version 2.0.8 and higher.
</version>
</element>
<element name="TDBLookup.DisplayEmpty">
<short>
Value displayed in the lookup control when a lookup value is not available.
</short>
<descr>
<p>
<var>DisplayEmpty</var> is a <var>String</var> property which contains the
value displayed in the lookup when no records are available in the linked
lookup dataset, or when the <var>NullValueKey</var> shortcut is pressed.
</p>
<p>
Use <var>EmptyValue</var> to specify a KeyField value automatically added to
the <var>ControlItems</var> property when the linked lookup dataset contains
no records. No entry is added to Controlitems when the value in EmptyValue is
an empty string (''). The value in <var>DisplayEmpty</var> is used for the
<var>ListField</var> displayed in the control.
</p>
<p>
Use <var>EmptyValue</var> to specify the value stored in the lookup when no
records are available in the linked lookup dataset, or when the NullValueKey
shortcut is pressed.
</p>
</descr>
<seealso>
<link id="TDBLookup.EmptyValue"/>
<link id="TDBLookup.ControlItems"/>
<link id="TDBLookup.ListField"/>
<link id="TDBLookup.KeyField"/>
<link id="TDBLookup.NullValueKey"/>
</seealso>
<version>
The EmptyValue and DisplayEmpty properties were added in revision 62844, and
released in LCL version 2.0.8 and higher.
</version>
</element>
<element name="TDBEdit">
<short>
<var>TDBEdit</var> - a data-aware edit box for processing a single
text-string from a dataset.
</short>
<descr>
<p>
<var>TDBEdit</var> is a <var>TCustomMaskEdit</var> descendant which
implements a data-aware control which allows editing of the value in a
database field. Like its ancestor class, TDBEdit displays and edits a single
line of text. For multi-line text values, use the <var>TDBMemo</var> control.
</p>
<p>
TDBEdit extends the ancestor class with additional properties needed to
configure the data-aware features in the control, including:
</p>
<dl>
<dt>DataSource</dt>
<dd>Component which provides access to the dataset with the field value</dd>
<dt>DataField</dt>
<dd>Name of the field in the dataset edited in the control</dd>
<dt>Field</dt>
<dd>Field definition and metadata in the dataset</dd>
<dt>ReadOnly</dt>
<dd>Indicates if the value for the control (and its field) cannot be
changed</dd>
</dl>
<p>
An internal <var>TFieldDataLink</var> class instance is used to maintain an
association between the control and its data source. TDBEdit provides methods
which support use of TBasicAction with the data link for the control.
</p>
<p>
TDBEdit extends the masking capabilities from the ancestor to include use of
mask-related properties like <var>EditMask</var> and <var>Alignment</var> set
in the <var>TField</var> instance for the control. Use the
<var>CustomEditMask</var> property to enable an edit mask independent of the
value defined in the dataset <var>Field</var>.
</p>
</descr>
<seealso>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
</seealso>
</element>
<element name="TDBEdit.FDataLink"/>
<element name="TDBEdit.FCustomEditMask"/>
<element name="TDBEdit.FFocusedDisplay"/>
<element name="TDBEdit.DataChange">
<short>
Performs actions needed when values in the dataset have been changed.
</short>
<descr>
<p>
DataChange implements the OnDataChange event handler used in the internal
TFieldDataLink instance.
</p>
</descr>
<seealso/>
</element>
<element name="TDBEdit.DataChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBEdit.UpdateData">
<short>
Performs actions needed to validate the edit control, and update the field in
the linked dataset.
</short>
<descr>
<p>
UpdateData is assigned to the OnUpdateData event handler in the internal
TFieldDataLink instance used in the control.
</p>
</descr>
<seealso/>
</element>
<element name="TDBEdit.UpdateData.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBEdit.GetDataField">
<short>Gets the value for the DataField property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBEdit.GetDataField.Result">
<short>Value for the property.</short>
</element>
<element name="TDBEdit.GetDataSource">
<short>Gets the value for the DataSource property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBEdit.GetDataSource.Result">
<short>Value for the property.</short>
</element>
<element name="TDBEdit.GetField">
<short>Gets the value for the Field property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBEdit.GetField.Result">
<short>Value for the property.</short>
</element>
<element name="TDBEdit.SetDataField">
<short>Sets the value for the DataField property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBEdit.SetDataField.Value">
<short>New value for the property.</short>
</element>
<element name="TDBEdit.SetDataSource">
<short>Sets the value for the DataSource property.</short>
<descr>
<p>
Calls the ChangeDataSource routine to perform free notifications and update
the TFieldDataLink used in the class instance.
</p>
</descr>
<seealso/>
</element>
<element name="TDBEdit.SetDataSource.Value">
<short>New value for the property.</short>
</element>
<element name="TDBEdit.CMGetDataLink">
<short>Implements the CM_GETDATALINK control message.</short>
<descr/>
<seealso/>
</element>
<element name="TDBEdit.CMGetDataLink.Message">
<short>Message examined and updated in the method.</short>
</element>
<element name="TDBEdit.GetReadOnly">
<short>Gets the value for the ReadOnly property.</short>
<descr>
<p>
<var>GetReadOnly</var> is a <var>Boolean</var> function used to get the value
for the <var>ReadOnly</var> property. Read access for the property value
redirected to the ReadOnly property in the internal <var>TFieldDataLink</var>
instance used in the class.
</p>
</descr>
<seealso>
<link id="TDBEdit.ReadOnly"/>
<link id="#lcl.stdctrls.TCustomEdit.GetReadOnly">TCustomEdit.GetReadOnly</link>
<link id="#fcl.db.TDataLink.ReadOnly">TDataLink.ReadOnly</link>
</seealso>
</element>
<element name="TDBEdit.GetReadOnly.Result">
<short>Value for the property.</short>
</element>
<element name="TDBEdit.SetReadOnly">
<short>Sets the value for the ReadOnly property.</short>
<descr>
<p>
<var>SetReadOnly</var> is a procedure used to set the value for the
<var>ReadOnly</var> property. SetReadOnly calls the inherited method. Write
access for the property value is redirected to the ReadOnly property in the
internal <var>TFieldDataLink</var> instance used in the class.
</p>
</descr>
<seealso>
<link id="TDBEdit.ReadOnly"/>
<link id="#fcl.db.TDataLink.ReadOnly">TDataLink.ReadOnly</link>
<link id="#lcl.stdctrls.TCustomEdit.SetReadOnly">TCustomEdit.SetReadOnly</link>
</seealso>
</element>
<element name="TDBEdit.SetReadOnly.Value">
<short>New value for the property.</short>
</element>
<element name="TDBEdit.KeyDown">
<short>Handles key down events in the control.</short>
<descr>
<p>
<var>KeyDown</var> is an overridden method in <var>TDBEdit</var>. KeyDown
calls the inherited method, and ensures that the specified virtual key code
and modifier are applied in the manner needed for the data-aware control.
KeyDown handles the following virtual key codes:
</p>
<dl>
<dt>VK_ESCAPE</dt>
<dd>
Cancels an active edit and resets the state for the DataSource. Calls the
<var>Reset</var> method in the internal <var>TFieldDataLink</var>, and
re-selects the content in the control. Sets Key to the value
<b>VK_UNKNOWN</b>.
</dd>
<dt>VK_DELETE or VK_BACK</dt>
<dd>
Sets the value in Key to <b>VK_UNKNOWN</b> when the control is used on a
field that cannot be edited.
</dd>
<dt>VK_RETURN</dt>
<dd>
Calls the <var>UpdateRecord</var> method in the internal
<var>TFieldDataLink</var> instance when it is in an edit state.
</dd>
</dl>
<p>
For the macOS (Darwin) platform, additional virtual key codes are detected (and
discarded) if the contents of the field in the linked dataset cannot be
modified. These keys include:
</p>
<dl>
<dt>VK_0..VK_9</dt>
<dd>numeric characters not on the numeric keypad</dd>
<dt>VK_A..VK_Z</dt>
<dd>alphabetic characters</dd>
<dt>VK_SPACE</dt>
<dd>space character</dd>
<dt>VK_NUMPAD0..VK_NUMPAD9</dt>
<dd>numeric digits on the numeric keypad</dd>
<dt>VK_MULTIPLY, VK_DIVIDE, VK_ADD, VK_SUBTRACT</dt>
<dd>operators on the numeric keypad</dd>
<dt>VK_SEPARATOR, VK_DECIMAL </dt>
<dd>padded and non-padded Decimal separators</dd>
<dt>VK_OEM_1</dt>
<dd>';:' keycap on the US standard keyboard</dd>
<dt>VK_OEM_2</dt>
<dd>'/?' keycap on the US standard keyboard</dd>
<dt>VK_OEM_3</dt>
<dd>'`~' keycap on the US standard keyboard</dd>
<dt>VK_OEM_4</dt>
<dd>'[{' keycap on the US standard keyboard</dd>
<dt>VK_OEM_5</dt>
<dd>'\|' keycap on the US standard keyboard</dd>
<dt>VK_OEM_6</dt>
<dd>']}' keycap on the US standard keyboard</dd>
<dt>VK_OEM_7</dt>
<dd>
'&apos;&quot;' (Apostrophe and Quote) keycap on the US standard keyboard
</dd>
<dt>VK_OEM_8</dt>
<dd>miscellaneous character; varies by keyboard layout</dd>
</dl>
<p>
For these macOS-specific keys, the value in Key is set to 0 if the field cannot
be modified.
</p>
</descr>
<version>
Modified in LCL version 3.6 to handle additional data keys on the macOS
(Darwin) platform.
</version>
<seealso>
<link id="TFieldDataLink.Reset"/>
<link id="TFieldDataLink.Editing"/>
<link id="TFieldDataLink.Field"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.UpdateRecord">TDataLink.UpdateRecord</link>
<link id="#lcl.controls.TWinControl.KeyDown">TWinControl.KeyDown</link>
</seealso>
</element>
<element name="TDBEdit.KeyDown.Key">
<short>Virtual key code examined and applied in the method.</short>
</element>
<element name="TDBEdit.KeyDown.Shift">
<short>Key modifier examined and applied in the method.</short>
</element>
<element name="TDBEdit.UTF8KeyPress">
<short>Handles UTF-8 characters for the data-aware control.</short>
<descr>
<p>
<var>UTF8KeyPress</var> is an overridden method in TDBEdit. UTF8KeyPress
calls the inherited method, and performs actions needed to handle the
UTF-8-encoded character specified in the <var>UTF8Key</var> argument.
</p>
<p>
UTF8KeyPress checks the value in UTF8Key to determine the number of bytes
required for the code point. A single-byte code point is converted to a Char
type, and passed to the <var>FieldCanAcceptKey</var> routine to validate its
content for the Field in the control. Multi-byte Unicode code points are
ignored, and the Extended ASCII <b>NbSp</b> character (Decimal 255) is passed
to FieldCanAcceptKey. The value in UTF8Key is set to an empty string if it is
valid for the Field.
</p>
<p>
Use the OnUTF8KeyPress event handler to handle/convert specific multi-byte
character values.
</p>
</descr>
<seealso>
<link id="TDBEdit.OnUTF8KeyPress"/>
<link id="#lcl.maskedit.TCustomMaskEdit.UTF8KeyPress">TCustomMaskEdit.UTF8KeyPress</link>
<link id="#lcl.maskedit.TCustomMaskEdit.HandleKeyPress">TCustomMaskEdit.HandleKeyPress</link>
<link id="#lcl.controls.TWinControl.UTF8KeyPress">TWinControl.UTF8KeyPress</link>
<link id="#lcl.controls.TWinControl.OnUTF8KeyPress">TWinControl.OnUTF8KeyPress</link>
<link id="#fcl.db.TField.IsValidChar">TField.IsValidChar</link>
</seealso>
</element>
<element name="TDBEdit.UTF8KeyPress.UTF8Key">
<short>UTF-8 character examined in the method.</short>
</element>
<element name="TDBEdit.Notification">
<short>
Handles notifications when a component is added or removed from the control.
</short>
<descr>
<p>
Notification is overridden in TDBEdit to ensure that the DataSource for the
data link in the control is set to Nil when the component is freed.
Notification calls the inherited method.
</p>
</descr>
<seealso>
<link id="TDBEdit.DataSource"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#rtl.classes.TComponent.Notification">TComponent.Notification</link>
</seealso>
</element>
<element name="TDBEdit.Notification.AComponent">
<short>Component for the notification.</short>
</element>
<element name="TDBEdit.Notification.Operation">
<short>Operation for the notification.</short>
</element>
<element name="TDBEdit.EditCanModify">
<short>
Indicates if the control can modify the text for the control value.
</short>
<descr>
<p>
<var>EditCanModify</var> is an overridden <var>Boolean</var> function in
TDBEdit. The return value contains the value for the <var>CanModify</var>
property in the
<var>TFieldDataLink</var> instance in the control.
</p>
<remark>
EditCanModify does <b>NOT</b> call the inherited method which always returns
<b>True</b>. In addition, it is provided to maintain Delphi code
compatibility; it is not referenced directly by any methods in the
implementation of the control or its descendants.
</remark>
</descr>
<seealso>
<link id="TFieldDataLink.CanModify"/>
<link id="#lcl.maskedit.TCustomMaskEdit.EditCanModify">TCustomMaskEdit.EditCanModify</link>
</seealso>
</element>
<element name="TDBEdit.EditCanModify.Result">
<short>
<b>True</b> when the control can modify the value for the field in the linked
dataset.
</short>
</element>
<element link="#LCL.MaskEdit.TCustomMaskEdit.GetEditText" name="TDBEdit.GetEditText"/>
<element link="#LCL.MaskEdit.TCustomMaskEdit.GetEditText.Result" name="TDBEdit.GetEditText.Result"/>
<element name="TDBEdit.Change">
<short>
Performs actions needed when the value for the control has been changed.
</short>
<descr>
<p>
<var>Change</var> is an overridden procedure in <var>TDBEdit</var> used to
ensure that the internal <var>TFieldDataLink</var> instance for the control
is notified when the value for the control has been modified. Change calls
the <var>Modified</var> method in <var>TFieldDataLink</var> to perform the
notification, and calls the inherited Change method.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Modified"/>
<link id="TFieldDataLink.UpdateData"/>
<link id="#lcl.maskedit.TCustomMaskEdit.Change">TCustomMaskEdit.Change</link>
<link id="#fcl.db.TDataLink.UpdateRecord">TDataLink.UpdateRecord</link>
</seealso>
</element>
<element name="TDBEdit.Reset">
<short>Cancels pending changes to the linked dataset.</short>
<descr>
<p>
<var>Reset</var> is an overridden method in <var>TDBEdit</var> which ensures
that the internal <var>TFieldDataLink</var> instance in the control is reset
when pending changes to the control value are cancelled. Reset calls the
Reset method in TFieldDataLink to perform the notification, signal its
<var>OnDataChange</var> event handler, and to reset the state for its
DataSource. Reset calls the inherited method prior to exit.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Reset"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="#lcl.maskedit.TCustomMaskEdit.Reset">TCustomMaskEdit.Reset</link>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
</seealso>
</element>
<element name="TDBEdit.WMSetFocus">
<short>Ensures that the control has the input focus.</short>
<descr>
<p>
<var>WMSetFocus</var> is an overridden method in TDBEdit. WMSetFocus ensures
that the text for the control is updated before calling the inherited method.
This includes applying an edit mask assigned to the control when it has input
focus.
</p>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomEdit.WMSetFocus">TCustomEdit.WMSetFocus</link>
</seealso>
</element>
<element name="TDBEdit.WMSetFocus.Message">
<short>Window message handled for the control.</short>
</element>
<element name="TDBEdit.WMKillFocus">
<short>
Ensures that the liked dataset is updated when the modified control loses
input focus.
</short>
<descr/>
<seealso>
<link id="#lcl.stdctrls.TCustomEdit.WMKillFocus">TCustomEdit.WMKillFocus</link>
</seealso>
</element>
<element name="TDBEdit.WMKillFocus.Message">
<short>Window message handled for the control.</short>
</element>
<element name="TDBEdit.WndProc">
<short>Handles the specified LCL message for the control.</short>
<descr>
<p>
<var>WndProc</var> is an overridden method in TDBEdit. It is used to process
the specified LCL message for the control. WndProc ensures that the message
is applied to the linked dataset when it can be modified, and handles the
following LCL messages:
</p>
<ul>
<li>LM_CLEAR</li>
<li>LM_CUT</li>
<li>LM_PASTE</li>
</ul>
<p>
The Edit and Modified methods in the internal TFieldDataLink instance are
called, and the DataChange method is called to post changes for the control.
No actions are performed on the dataset when it cannot be modified, but the
result value in Message is set to 1 to prevent calling the default procedure
for the window.
</p>
<p>
WndProc calls the inherited method prior to exit.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.CanModify"/>
<link id="TFieldDataLink.Edit"/>
<link id="TFieldDataLink.Modified"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="#lcl.lmessages.TLMessage">TLMessage</link>
<link id="#lcl.lmessages.LM_CLEAR">LM_CLEAR</link>
<link id="#lcl.lmessages.LM_CUT">LM_CUT</link>
<link id="#lcl.lmessages.LM_PASTE">LM_PASTE</link>
<link id="#lcl.stdctrls.TCustomEdit.WndProc">TCustomEdit.WndProc</link>
</seealso>
</element>
<element name="TDBEdit.WndProc.Message">
<short>LCL message examined and applied in the method.</short>
</element>
<element name="TDBEdit.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance.
Create calls the inherited constructor, then creates and configures the
internal <var>TFieldDataLink</var> instance used in the control. The
DataChange and UpdateData methods are assigned to the <var>OnDataChange</var>
and <var>OnUpdateData</var> event handlers in the TFieldDataLink instance.
</p>
</descr>
<errors/>
<seealso>
<link id="TFieldDataLink.OnDataChange"/>
<link id="TFieldDataLink.OnUpdateData"/>
<link id="#lcl.maskedit.TCustomMaskEdit.Create">TCustomMaskEdit.Create</link>
</seealso>
</element>
<element name="TDBEdit.Create.AOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TDBEdit.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance.
Destroy ensures that resources allocated to members in the class instance are
freed prior to destruction of the class instance. Destroy calls the inherited
destructor prior to exit.
</p>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomEdit.Destroy">TCustomEdit.Destroy</link>
</seealso>
</element>
<element name="TDBEdit.ExecuteAction">
<short>Provides support for TBasicAction in the control.</short>
<descr>
<p>
<var>ExecuteAction</var> is an overridden method in <var>TDBEdit</var>. It
calls the inherited method, and when the action is not handled in the
ancestor, executes <var>AAction</var> using the <var>ExecuteAction</var>
method in the internal
<var>TFieldDataLink</var> instance in the class.
</p>
<p>
The return value is <b>True</b> if the action was executed in the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.ExecuteAction">TComponent.ExecuteAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TDBEdit.ExecuteAction.Result">
<short><b>True</b> if the action was executed in the method.</short>
</element>
<element name="TDBEdit.ExecuteAction.AAction">
<short>Action examined and executed in the method.</short>
</element>
<element name="TDBEdit.UpdateAction">
<short>
Updates the specified action to reflect the current state in the linked
dataset.
</short>
<descr>
<p>
<var>UpdateAction</var> is an overridden <var>Boolean</var> function in
<var>TDBEdit</var>. UpdateAction is called when the <var>Application</var>
enters an idle state to ensure that the action reflects the current state for
a linked dataset.
</p>
<p>
<var>AAction</var> is the <var>TBasicAction</var> updated in the method.
</p>
<p>
UpdateAction calls the inherited method, and when the internal dataset link
has been assigned, executes its UpdateAction method. The return value is
<b>True</b> when AAction is updated using either the inherited method, or the
method in the linked dataset. The return value is <b>False</b> when AAction
could not be updated in the method.
</p>
</descr>
<seealso>
<link id="#fcl.db.TDataLink.UpdateAction">TDataLink.UpdateAction</link>
<link id="#rtl.classes.TComponent.UpdateAction">TComponent.UpdateAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TDBEdit.UpdateAction.Result">
<short><b>True</b> if the action was updated in the method.</short>
</element>
<element name="TDBEdit.UpdateAction.AAction">
<short>Action examined and updated in the method.</short>
</element>
<element name="TDBEdit.Field">
<short>
Provides access to the field definition for the data-aware control.
</short>
<descr>
<p>
<var>Field</var> is a read-only <var>TField</var> property which provides
access to the field definition to which the data-aware control is linked.
Read access for the property is redirected to the Field property in the
internal TFieldDataLink class instance. The value in Field is updated when a
new value is assigned to the Field in the TFieldDataLink instance.
</p>
<p>
Use <var>DataField</var> to read or write the field name used for the
data-aware control. Use <var>DataSource</var> to specify the data source with
the dataset containing the specified field name.
</p>
</descr>
<seealso>
<link id="TDBEdit.DataField"/>
<link id="TDBEdit.DataSource"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="#fcl.db.TField">TField</link>
</seealso>
</element>
<element name="TDBEdit.CustomEditMask">
<short>Indicates if a custom edit mask is used in the control.</short>
<descr>
<p>
<var>CustomEditMask</var> is a <var>Boolean</var> property which indicates if
an edit mask other than the one defined for the <var>Field</var> in the
linked dataset is used in the control.
</p>
<p>
When set to <b>True</b>, the features from the ancestor class are used to
provide the editing mask. Set the value in the <var>EditMask</var> property
when CustomEditMask is set to <b>True</b>.
</p>
<p>
When set to <b>False</b>, the EditMask defined in the internal TFieldDataLink
instance (and loaded from the database field definition) is used in the
control.
</p>
</descr>
<seealso>
<link id="TDBEdit.EditMask"/>
<link id="TFieldDataLink.Field"/>
<link id="#lcl.maskedit.TCustomMaskEdit.EditMask">TCustomMaskEdit.EditMask</link>
</seealso>
</element>
<element name="TDBEdit.DataField">
<short>Contains the name of the field with the value for the control.</short>
<descr>
<p>
<var>DataField</var> is a <var>String</var> property which contains the name
for the field in the linked dataset where the value for the control is read
and written. Read and write access to the property value are redirected to
the <var>FieldName</var> property in the internal <var>TFieldDataLink</var>
instance for the control. Changing the value in DataField causes the value in
<var>Field</var> to be updated.
</p>
<p>
Set the value in <var>DataSource</var> to the component which provides access
to the dataset for the data-aware control.
</p>
</descr>
<seealso>
<link id="TDBEdit.Field"/>
<link id="TDBEdit.DataSource"/>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.Field"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
</seealso>
</element>
<element name="TDBEdit.DataSource">
<short>Provides access to the dataset with content for the control.
</short>
<descr>
<p>
<var>DataSource</var> is a <var>TDataSource</var> property which provides
access to the content for the data-aware control. DataSource is used in
conjunction with the <var>Field</var> property to determine the dataset and
field definition used when reading the value for the control.
</p>
<p>
Read and write access to the property value is redirected to the DataSource
property in the internal <var>TFieldDataLink</var> instance used in the
control. Assigning a new value to the property causes the
<var>ChangeDataSource</var> routine to be called to apply the value to the
internal TFieldDataLink instance.
</p>
<p>
Use the <var>DataField</var> property to specify the field name accessed in
the linked dataset.
</p>
</descr>
<seealso>
<link id="TDBEdit.DataField"/>
<link id="TFieldDataLink.FieldName"/>
<link id="ChangeDataSource"/>
<link id="#fcl.db.TDataSource">TDataSource</link>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
</seealso>
</element>
<element name="TDBEdit.ReadOnly">
<short>
Indicates if the control cannot modify the field in the linked dataset.
</short>
<descr>
<p>
<var>ReadOnly</var> is a <var>Boolean</var> property which indicates if the
control cannot modify its <var>DataField</var> in the linked dataset. When
set to <b>True</b>, the underlying field value cannot be modified using the
control.
</p>
<p>
Read and write access for the property value are redirected to the ReadOnly
property in the TFieldDataLink instance used in the control.
</p>
<remark>
A value assigned to ReadOnly may be overridden by the Field definition from
the target database table.
</remark>
</descr>
<seealso>
<link id="TDBEdit.DataField"/>
<link id="TDBEdit.DataSource"/>
<link id="TDBEdit.Field"/>
<link id="TFieldDataLink.Field"/>
<link id="#lcl.stdctrls.TCustomEdit.ReadOnly">TCustomEdit.ReadOnly</link>
<link id="#fcl.db.TDataLink.ReadOnly">TDataLink.ReadOnly</link>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.Align" name="TDBEdit.Align"/>
<element link="#lcl.stdctrls.TCustomEdit.Alignment" name="TDBEdit.Alignment"/>
<element link="#lcl.controls.TControl.Anchors" name="TDBEdit.Anchors"/>
<element link="#lcl.stdctrls.TCustomEdit.AutoSelect" name="TDBEdit.AutoSelect"/>
<element link="#lcl.controls.TControl.AutoSize" name="TDBEdit.AutoSize"/>
<element link="#lcl.controls.TControl.BiDiMode" name="TDBEdit.BiDiMode"/>
<element link="#lcl.controls.TControl.BorderSpacing" name="TDBEdit.BorderSpacing"/>
<element name="TDBEdit.BorderStyle" link="#lcl.controls.TWinControl.BorderStyle"/>
<element name="TDBEdit.CharCase" link="#lcl.stdctrls.TCustomEdit.CharCase"/>
<element link="#lcl.controls.TControl.Color" name="TDBEdit.Color"/>
<element link="#lcl.controls.TControl.Constraints" name="TDBEdit.Constraints"/>
<element link="#lcl.controls.TWinControl.DoubleBuffered" name="TDBEdit.DoubleBuffered"/>
<element link="#lcl.controls.TControl.DragCursor" name="TDBEdit.DragCursor"/>
<element link="#lcl.controls.TControl.DragKind" name="TDBEdit.DragKind"/>
<element link="#lcl.controls.TControl.DragMode" name="TDBEdit.DragMode"/>
<element link="#lcl.controls.TControl.Enabled" name="TDBEdit.Enabled"/>
<element link="#LCL.MaskEdit.TCustomMaskEdit.EditMask" name="TDBEdit.EditMask"/>
<element link="#lcl.controls.TControl.Font" name="TDBEdit.Font"/>
<element link="#lcl.stdctrls.TCustomEdit.MaxLength" name="TDBEdit.MaxLength"/>
<element link="#lcl.controls.TControl.ParentBiDiMode" name="TDBEdit.ParentBiDiMode"/>
<element link="#lcl.controls.TControl.ParentColor" name="TDBEdit.ParentColor"/>
<element link="#lcl.controls.TWinControl.ParentDoubleBuffered" name="TDBEdit.ParentDoubleBuffered"/>
<element link="#lcl.controls.TControl.ParentFont" name="TDBEdit.ParentFont"/>
<element link="#lcl.controls.TControl.ParentShowHint" name="TDBEdit.ParentShowHint"/>
<element link="#lcl.stdctrls.TCustomEdit.PasswordChar" name="TDBEdit.PasswordChar"/>
<element link="#lcl.controls.TControl.PopupMenu" name="TDBEdit.PopupMenu"/>
<element link="#lcl.controls.TControl.ShowHint" name="TDBEdit.ShowHint"/>
<element link="#lcl.controls.TWinControl.TabOrder" name="TDBEdit.TabOrder"/>
<element link="#lcl.controls.TWinControl.TabStop" name="TDBEdit.TabStop"/>
<element name="TDBEdit.TextHint" link="#lcl.stdctrls.TCustomEdit.TextHint"/>
<element link="#lcl.controls.TControl.Visible" name="TDBEdit.Visible"/>
<element link="#lcl.stdctrls.TCustomEdit.OnChange" name="TDBEdit.OnChange"/>
<element name="TDBEdit.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TDBEdit.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TDBEdit.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element link="#lcl.controls.TControl.OnDragDrop" name="TDBEdit.OnDragDrop"/>
<element link="#lcl.controls.TControl.OnDragOver" name="TDBEdit.OnDragOver"/>
<element link="#lcl.controls.TControl.OnEditingDone" name="TDBEdit.OnEditingDone"/>
<element link="#lcl.controls.TControl.OnEndDrag" name="TDBEdit.OnEndDrag"/>
<element link="#lcl.controls.TWinControl.OnEnter" name="TDBEdit.OnEnter"/>
<element link="#lcl.controls.TWinControl.OnExit" name="TDBEdit.OnExit"/>
<element name="TDBEdit.OnKeyDown">
<short>
Event handler signalled when a key is down while control has focus.
</short>
<descr>
<p>
<var>OnKeyDown</var> differs from the method in <link
id="#lcl.controls.TWinControl">TWinControl</link> in that the key may have
already been down when the control received focus; with <var>OnKeyPress</var>
the key needs to become pressed while the control has focus.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.OnKeyDown">TWinControl.OnKeyDown</link>
</seealso>
</element>
<element name="TDBEdit.OnKeyPress">
<short>
Event handler signalled when a key is being pressed while the control has
focus.
</short>
<descr>
<p>
<var>OnKeyPress</var> differs from the method in <link
id="#lcl.controls.TWinControl">TWInControl</link> in that the key needs to
become pressed while the control has focus; with <var>OnKeyDown</var> the key
may have already been down when the control received focus.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.OnKeyPress">TWinControl.OnKeyPress</link>
</seealso>
</element>
<element name="TDBEdit.OnKeyUp">
<short>
Event handler signalled when a key becomes up (not pressed) while the control
has focus.
</short>
<descr>
<p>
<var>OnKeyUp</var> is an event handler signalled when a key is up (not
pressed) while the control has focus. The key may already have been up when
the control received focus, or a pressed key may become released during the
time the control has focus.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.OnKeyUp">TWinControl.OnKeyUp</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.OnMouseDown" name="TDBEdit.OnMouseDown"/>
<element link="#lcl.controls.TControl.OnMouseEnter" name="TDBEdit.OnMouseEnter"/>
<element link="#lcl.controls.TControl.OnMouseLeave" name="TDBEdit.OnMouseLeave"/>
<element link="#lcl.controls.TControl.OnMouseMove" name="TDBEdit.OnMouseMove"/>
<element link="#lcl.controls.TControl.OnMouseUp" name="TDBEdit.OnMouseUp"/>
<element link="#lcl.controls.TControl.OnMouseWheel" name="TDBEdit.OnMouseWheel"/>
<element link="#lcl.controls.TControl.OnMouseWheelDown" name="TDBEdit.OnMouseWheelDown"/>
<element link="#lcl.controls.TControl.OnMouseWheelUp" name="TDBEdit.OnMouseWheelUp"/>
<element link="#lcl.controls.TControl.OnStartDrag" name="TDBEdit.OnStartDrag"/>
<element link="#lcl.controls.TWinControl.OnUTF8KeyPress" name="TDBEdit.OnUTF8KeyPress"/>
<element name="TDBText">
<short>Displays a string value stored in a dataset field.</short>
<descr>
<p>
<var>TDBText</var> is a <var>TCustomLabel</var> descendant which implements a
component to display the text content in a dataset field in the manner used
for a label control. The stored field value is not editable in the control -
just like a label component.
</p>
<p>
Use the <var>Field</var> property to access the field definition used to
provide the value for the control.
</p>
</descr>
<seealso>
<link id="TDBText.Field"/>
<link id="#fcl.db.TField">TField</link>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
</seealso>
</element>
<element name="TDBText.FDataLink"/>
<element name="TDBText.DataChange">
<short>
Updates the control display value when the linked dataset is changed.
</short>
<descr>
<p>
<var>DataChange</var> is used to perform actions needed when the linked
dataset for the control has been changed. In TDBText, this requires setting
the <var>Caption</var> property for the control. DataChange uses the
<var>Field</var> property (when assigned) to get the display text for the
field. At design-time, the <var>Name</var> property is used when Field is
unassigned. At run-time, an empty string (
<b>''</b>) is used when Field is unassigned.
</p>
<p>
DataChange is assigned as the <var>OnDataChange</var> event handler in the
internal <var>TFieldDataLink</var> instance.
</p>
</descr>
<seealso>
<link id="TDBText.Field"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="#lcl.controls.TControl.Caption">TControl.Caption</link>
<link id="#rtl.classes.TComponent.Name">TComponent.Name</link>
</seealso>
</element>
<element name="TDBText.DataChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBText.GetDataField">
<short>
Gets the name of the field in the linked dataset with the value for the
control.
</short>
<descr/>
<seealso>
<link id="TDBText.DataField"/>
</seealso>
</element>
<element name="TDBText.GetDataField.Result">
<short>Value for the property.</short>
</element>
<element name="TDBText.GetDataSource">
<short>Gets the value for the DataSource property.</short>
<descr/>
<seealso>
<link id="TDBText.DataSource"/>
</seealso>
</element>
<element name="TDBText.GetDataSource.Result">
<short>Value for the property.</short>
</element>
<element name="TDBText.GetField">
<short>Gets the value for the Field property.</short>
<descr/>
<seealso>
<link id="TDBText.Field"/>
</seealso>
</element>
<element name="TDBText.GetField.Result">
<short>Value for the property.</short>
</element>
<element name="TDBText.SetDataField">
<short>Sets the value for the DataField property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBText.SetDataField.Value">
<short>New value for the property.</short>
</element>
<element name="TDBText.SetDataSource">
<short>Sets the value for the DataSource property.</short>
<descr/>
<seealso>
<link id="TDBText.DataSource"/>
</seealso>
</element>
<element name="TDBText.SetDataSource.Value">
<short>New value for the property.</short>
</element>
<element name="TDBText.CMGetDataLink">
<short>Handles the CM_GETDATALINK message for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TDBText.CMGetDataLink.Message">
<short>Message handled and updated in the method.</short>
</element>
<element name="TDBText.Notification">
<short>
Handles a notification when a component is added to or removed from the
control.
</short>
<descr>
<p>
<var>Notification</var> is called whenever a child component is destroyed,
inserted or removed from the list of owned component. Components that were
requested to send a notification when they are freed ((with <link
id="TComponent.FreeNotification">FreeNotification</link>) will also call
<var>Notification</var> when they are freed.
</p>
<p>
The <var>AComponent</var> parameter specifies which component sends the
notification, and <var>Operation</var> specifies whether the component is
being inserted into or removed from the child component list, or whether it
is being destroyed.
</p>
<p>
Descendants of <var>TComponent</var> can use <link
id="TComponent.FreeNotification">FreeNotification</link> to handle
notifications when objects are freed. By overriding the
<var>Notification</var> method, they can do special processing (typically,
set a reference to this component to <var>Nil</var>) when this component is
destroyed. The <var>Notification</var> method is called quite often in the
streaming process, so speed should be a consideration when overriding this
method.
</p>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomLabel.Notification">TCustomLabel.Notification</link>
</seealso>
</element>
<element name="TDBText.WSRegisterClass">
<short>
Registers the class type used to create new instance of the control for the
Widgetset.
</short>
<descr>
<p>
<var>WSRegisterClass</var> is an overridden method used to register the
widgetset class type used to create new instances of the control.
WSRegisterClass calls the inherited method, and excludes loading the
<var>Caption</var> property during LCL streaming.
</p>
</descr>
<version>
The <var>Caption</var> property was included in LCL component streaming prior
to LCL version 0.9.29.
</version>
<seealso>
<link id="TDBText.Field"/>
<link id="#lcl.stdctrls.TCustomLabel.WSRegisterClass">TCustomLabel.WSRegisterClass</link>
</seealso>
</element>
<element name="TDBText.Loaded">
<short>
Performs actions when LCL component streaming has been completed.
</short>
<descr>
<p>
<var>Loaded</var> is called by the streaming system when a root component was
completely read from a stream and all properties and references to other
objects have been resolved by the streaming system. Descendants of
<var>TComponent</var> should override this method to do some additional
processing of properties after all published properties have been set from
values obtained from the stream.
</p>
<p>
Application programmers should never call <var>Loaded</var> directly; this is
done automatically by the LCL streaming system.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Loaded">TControl.Loaded</link>
</seealso>
</element>
<element name="TDBText.Notification.AComponent">
<short>Component affected by the notification.</short>
</element>
<element name="TDBText.Notification.Operation">
<short>Operation for the component.</short>
</element>
<element name="TDBText.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for <var>TDBText</var>. It
calls the inherited Create method, and sets up the internal
<var>TFieldDataLink</var> member used in the component.
</p>
</descr>
<seealso>
<link id="TDBText.Create"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="TFieldDataLink"/>
<link id="#lcl.stdctrls.TCustomLabel.Create">TCustomLabel.Create</link>
</seealso>
</element>
<element name="TDBText.Create.AOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TDBText.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for <var>TDBText</var>. It
frees the internal field data link in the class instance, and calls the
inherited
<var>Destroy</var> method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TGraphicControl.Destroy">TGraphicControl.Destroy</link>
</seealso>
</element>
<element name="TDBText.ExecuteAction">
<short>Implements support for standard actions in the control.</short>
<descr>
<p>
<var>ExecuteAction</var> is an overridden <var>Boolean</var> function used to
implement support for <var>TBasicAction</var> in the control. ExecuteAction
extends the inherited method by using the internal field data link (when
assigned) to perform the requested action.
</p>
<p>
<var>AAction</var> is the <var>TBasicAction</var> instance examined and
potentially executed in the method.
</p>
<p>
The return value for the method is <b>True</b> when the action in AAction was
executed for the control.
</p>
</descr>
<seealso>
<link id="TDBText.UpdateAction"/>
<link id="#fcl.db.TDataLink.ExecuteAction">TDataLink.ExecuteAction</link>
<link id="#rtl.classes.TComponent.ExecuteAction">TComponent.ExecuteAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TDBText.ExecuteAction.Result">
<short>
Returns <b>True</b> when the standard action was executed for the control.
</short>
</element>
<element name="TDBText.ExecuteAction.AAction">
<short>Standard action examined in the method.</short>
</element>
<element name="TDBText.UpdateAction">
<short>Updates the specified action to reflect the current state in the
linked dataset.
</short>
<descr>
<p>
<var>UpdateAction</var> is an overridden <var>Boolean</var> function in
<var>TDBText</var>. UpdateAction is called when the <var>Application</var>
enters an idle state to ensure that the action reflects the current state for
a linked dataset.
</p>
<p>
<var>AAction</var> is the <var>TBasicAction</var> updated in the method.
</p>
<p>
UpdateAction calls the inherited method, and when the internal dataset link
has been assigned, executes its UpdateAction method. The return value is
<b>True</b> when AAction is updated using either the inherited method, or the
method in the linked dataset. The return value is <b>False</b> when AAction
could not be updated in the method.
</p>
</descr>
<seealso>
<link id="#fcl.db.TDataLink.UpdateAction">TDataLink.UpdateAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
<link id="#rtl.classes.TComponent.UpdateAction">TComponent.UpdateAction</link>
</seealso>
</element>
<element name="TDBText.Field">
<short>
Provides access to the field definition for the data-aware control.
</short>
<descr>
<p>
<var>Field</var> is a read-only <var>TField</var> property which provides
access to the field definition to which the data-aware control is linked.
Read access for the property is redirected to the Field property in the
internal TFieldDataLink class instance.
</p>
<p>
Use <var>DataField</var> to read or write the field name used for the
data-aware control. Use <var>DataSource</var> to specify the data source with
the dataset containing the specified field name.
</p>
</descr>
<seealso>
<link id="TDBText.DataField"/>
<link id="TDBText.DataSource"/>
<link id="#fcl.db.TField">TField</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.Align" name="TDBText.Align"/>
<element link="#lcl.stdctrls.TCustomLabel.Alignment" name="TDBText.Alignment"/>
<element link="#lcl.controls.TControl.Anchors" name="TDBText.Anchors"/>
<element link="#lcl.controls.TControl.AutoSize" name="TDBText.AutoSize"/>
<element link="#lcl.controls.TControl.BiDiMode" name="TDBText.BiDiMode"/>
<element link="#lcl.controls.TControl.BorderSpacing" name="TDBText.BorderSpacing"/>
<element link="#lcl.controls.TControl.Color" name="TDBText.Color"/>
<element link="#lcl.controls.TControl.Constraints" name="TDBText.Constraints"/>
<element name="TDBText.DataField">
<short>
The name of the field, as a string (i.e. cannot be referred to as an Index).
</short>
<descr>
<p>
<var>DataField</var> is a <var>String</var> property which contains the field
name in the linked dataset with the value displayed in the control. Read and
write access for the property value is redirected to the <var>FieldName</var>
property in the internal <var>TFieldDataLink</var> instance used in the
control.
</p>
<p>
Use <var>DataSource</var> to specify the datasource with the linked dataset
for the control. Use <var>Field</var> to access the definition and metadata
for the field in the linked dataset.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.FieldName"/>
<link id="TDBText.DataSource"/>
<link id="TDBText.Field"/>
</seealso>
</element>
<element name="TDBText.DataSource">
<short>Provides access to the content displayed in the control.
</short>
<descr>
<p>
<var>DataSource</var> is a <var>TDataSource</var> property which provides
access to the content for the data-aware control. DataSource is used in
conjunction with the
<var>Field</var> property to determine the dataset and field definition used
when reading the value for the control.
</p>
<p>
Read and write access to the property value is redirected to the DataSource
property in the internal TFieldDataLink instance used in the control.
Assigning a new value to the property causes the <var>ChangeDataSource</var>
routine to be called to apply the value to the internal TFieldDataLink
instance.
</p>
<p>
Use the <var>DataField</var> property to specify the field name accessed in
the linked dataset.
</p>
</descr>
<seealso>
<link id="TDBText.DataField"/>
<link id="ChangeDataSource"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataSource">TDataSource</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.DragCursor" name="TDBText.DragCursor"/>
<element link="#lcl.controls.TControl.DragKind" name="TDBText.DragKind"/>
<element link="#lcl.controls.TControl.DragMode" name="TDBText.DragMode"/>
<element link="#lcl.controls.TControl.Enabled" name="TDBText.Enabled"/>
<element link="#lcl.stdctrls.TCustomLabel.FocusControl" name="TDBText.FocusControl"/>
<element link="#lcl.controls.TControl.Font" name="TDBText.Font"/>
<element name="TDBText.Layout" link="#lcl.stdctrls.TCustomLabel.Layout"/>
<element link="#lcl.controls.TControl.ParentBiDiMode" name="TDBText.ParentBiDiMode"/>
<element link="#lcl.controls.TControl.ParentColor" name="TDBText.ParentColor"/>
<element link="#lcl.controls.TControl.ParentFont" name="TDBText.ParentFont"/>
<element link="#lcl.controls.TControl.ParentShowHint" name="TDBText.ParentShowHint"/>
<element link="#lcl.controls.TControl.PopupMenu" name="TDBText.PopupMenu"/>
<element name="TDBText.ShowAccelChar">
<short>
Enables or disables drawing of accelerator or shortcut keys for the label.
</short>
<descr>
<p>
<var>ShowAccelChar</var> controls if an underlined character in the label is
drawn for the accelerator or shortcut key. Changing the value for the
property causes the WidgetSetClass to be notified of the potential change to
the Caption and size for the control.
</p>
<p>
The default value for the property is <b>True</b>.
</p>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomLabel.ShowAccelChar">TCustomLabel.ShowAccelChar</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.ShowHint" name="TDBText.ShowHint"/>
<element link="#lcl.stdctrls.TCustomLabel.Transparent" name="TDBText.Transparent"/>
<element name="TDBText.Visible">
<short>Indicates if the control is displayed.</short>
<descr>
<p>
The <var>Visible</var> property represents the ability to see a visual
control. If Visible is set to <b>True</b> the control is shown, otherwise it
is hidden. Calling Show sets Visible to <b>True</b>. Setting Visible to
<b>False</b> is equivalent to calling the <var>Hide</var> method.
</p>
<remark>
The Visible property does not depend on control's parent visibility. Use the
<var>IsVisible</var> method to consider this and get the real visibility.
</remark>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Visible">TControl.Visible</link>
</seealso>
</element>
<element name="TDBText.WordWrap">
<short>Indicates if text is wrapped at the right edge of the control.</short>
<descr>
<p>
<var>WordWrap</var> indicates whether a word is to be wrapped to the next
line if the text is about to become too long for the width available in the
control.
</p>
<p>
The default value for the property is <b>False</b>.
</p>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomLabel.WordWrap">TCustomLabel.WordWrap</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.OnClick" name="TDBText.OnClick"/>
<element link="#lcl.controls.TControl.OnDblClick" name="TDBText.OnDblClick"/>
<element link="#lcl.controls.TControl.OnDragDrop" name="TDBText.OnDragDrop"/>
<element link="#lcl.controls.TControl.OnDragOver" name="TDBText.OnDragOver"/>
<element link="#lcl.controls.TControl.OnEndDrag" name="TDBText.OnEndDrag"/>
<element link="#lcl.controls.TControl.OnMouseDown" name="TDBText.OnMouseDown"/>
<element link="#lcl.controls.TControl.OnMouseEnter" name="TDBText.OnMouseEnter"/>
<element link="#lcl.controls.TControl.OnMouseLeave" name="TDBText.OnMouseLeave"/>
<element link="#lcl.controls.TControl.OnMouseMove" name="TDBText.OnMouseMove"/>
<element link="#lcl.controls.TControl.OnMouseUp" name="TDBText.OnMouseUp"/>
<element link="#lcl.controls.TControl.OnMouseWheel" name="TDBText.OnMouseWheel"/>
<element link="#lcl.controls.TControl.OnMouseWheelDown" name="TDBText.OnMouseWheelDown"/>
<element link="#lcl.controls.TControl.OnMouseWheelUp" name="TDBText.OnMouseWheelUp"/>
<element link="#lcl.controls.TControl.OnChangeBounds" name="TDBText.OnChangeBounds"/>
<element link="#lcl.controls.TControl.OnContextPopup" name="TDBText.OnContextPopup"/>
<element link="#lcl.controls.TControl.OnResize" name="TDBText.OnResize"/>
<element link="#lcl.controls.TControl.OnStartDrag" name="TDBText.OnStartDrag"/>
<element link="#lcl.stdctrls.TCustomLabel.OptimalFill" name="TDBText.OptimalFill"/>
<element name="TCustomDBListBox">
<short>Specifies a data-aware listbox control.</short>
<descr>
<p>
<var>TCustomDBListBox</var> is a <var>TCustomListBox</var> descendant which
specifies the base class for a data-aware listbox control. The control allows
selection and storage of a value from a scrolling list of choices to the
current record in a linked dataset.
</p>
<p>
TCustomDBListBox is the ancestor class for <var>TDBListBox</var>.
Applications should create instances of the derived class.
</p>
<p>
Use the <var>Items</var> property to define the list of choices displayed in
the listbox control.
</p>
<p>
The <var>DataSource</var> property provides access to the linked dataset
where the selected value is stored. <var>Field</var> contains the field
definition for the column in the dataset where the selected value is stored.
Use the <var>DataField</var> property to specify the name for the Field.
</p>
</descr>
<seealso>
<link id="TDBListBox"/>
<link id="TDBListBox.DataSource"/>
<link id="TDBListBox.DataField"/>
<link id="#lcl.stdctrls.TCustomListBox.Items">TCustomListBox.Items</link>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
</seealso>
</element>
<element name="TCustomDBListBox.GetDataField">
<short>
<var>GetDataField</var> - returns the name of the data field as a string.
</short>
<seealso>
<link id="TCustomDBListBox.DataField"/>
</seealso>
</element>
<element name="TCustomDBListBox.GetDataField.Result">
<short>Value for the DataField property.</short>
</element>
<element name="TCustomDBListBox.GetDataSource">
<short>
<var>GetDataSource</var> - returns the identity of the data source.
</short>
<seealso>
<link id="TCustomDBListBox.DataSource"/>
</seealso>
</element>
<element name="TCustomDBListBox.GetDataSource.Result">
<short>Value for the DataSource property.</short>
</element>
<element name="TCustomDBListBox.GetField">
<short>
<var>GetField</var> - returns the identity of the field.
</short>
<seealso>
<link id="TCustomDBListBox.Field"/>
</seealso>
</element>
<element name="TCustomDBListBox.GetField.Result">
<short>Value for the Field property.</short>
</element>
<element name="TCustomDBListBox.GetReadOnly">
<short>
Fetches the <var>ReadOnly</var> status from the field datalink rather than
using the inherited ReadOnly status.
</short>
<descr/>
<seealso>
<link id="TCustomDBListBox.ReadOnly"/>
</seealso>
</element>
<element name="TCustomDBListBox.GetReadOnly.Result">
<short>Value for the ReadOnly property.</short>
</element>
<element name="TCustomDBListBox.SetReadOnly">
<short>
<var>SetReadOnly</var> - changes the datalink <var>ReadOnly</var> property as
well as the local property, to that specified by <var>Value</var>.
</short>
<seealso>
<link id="TCustomDBListBox.ReadOnly"/>
</seealso>
</element>
<element name="TCustomDBListBox.SetReadOnly.Value">
<short>New value for the ReadOnly property.</short>
</element>
<element name="TCustomDBListBox.SetDataField">
<short>
<var>SetDataField</var> - links to the field in the datalink with the given
name.
</short>
<seealso>
<link id="TCustomDBListBox.DataField"/>
</seealso>
</element>
<element name="TCustomDBListBox.SetDataField.Value">
<short>New value for the DataField property.</short>
</element>
<element name="TCustomDBListBox.SetDataSource">
<short>
<var>SetDataSource</var> - changes the attached data source to the one
specified by AValue.
</short>
<seealso>
<link id="TCustomDBListBox.DataSource"/>
</seealso>
</element>
<element name="TCustomDBListBox.SetDataSource.Value">
<short>New value for the DataSource property.</short>
</element>
<element name="TCustomDBListBox.CMGetDataLink">
<short>
<var>CMGetDataLink</var> - control message method for obtaining the data link.
</short>
</element>
<element name="TCustomDBListBox.CMGetDataLink.Message">
<short>Message examined and updated in the method.</short>
</element>
<element name="TCustomDBListBox.FDataLink">
<short>
<var>FDataLink</var> - local variable holding the identity of the field data
link.
</short>
</element>
<element name="TCustomDBListBox.DataChange">
<short>Performs actions needed when the linked dataset is repositioned.
</short>
<descr>
<p>
<var>DataChange</var> is an method used to perform actions needed when the
control needs to be refreshed after a positioning the linked dataset.
DataChange is an abstract virtual method in
<var>TCustomDBListBox</var>, and must be implemented in a descendent class to
perform the actions required for the control.
</p>
<p>
DataChange is assigned to the <var>OnDataChange</var> event handler in the
<var>TFieldDataLink</var> instance used in data-aware controls.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.OnDataChange"/>
<link id="TDBListBox.DataChange"/>
<link id="TDBLookupListBox.DataChange"/>
</seealso>
</element>
<element name="TCustomDBListBox.DataChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TCustomDBListBox.KeyDown">
<short>Handles key down events for the control.</short>
<descr>
<p>
<var>KeyDown</var> is an overridden method in <var>TCustomDBListBox</var>
which applies the specified virtual key code and modifier to the control.
KeyDown calls the inherited method, and ensures that the linked dataset is
updated as needed for the key down event. The following actions are performed
for the corresponding keys:
</p>
<dl>
<dt>VK_ESCAPE</dt>
<dd>
Calls the <var>TFieldDataLink.Reset</var> method to cancel the edit
operation. Key is set to VK_UNKNOWN.
</dd>
<dt>VK_DOWN, VK_UP</dt>
<dd>
Calls the <var>TFieldDataLink.Edit</var> method after changing the selected
item in the control.
</dd>
</dl>
</descr>
<seealso>
<link id="TFieldDataLink.Reset"/>
<link id="TFieldDataLink.Edit"/>
<link id="#lcl.controls.TWinControl.KeyDown">TWinControl.KeyDown</link>
</seealso>
</element>
<element name="TCustomDBListBox.KeyDown.Key">
<short>Virtual key code applied in the method.</short>
</element>
<element name="TCustomDBListBox.KeyDown.Shift">
<short>Modifier for the key code applied in the method.</short>
</element>
<element name="TCustomDBListBox.Notification">
<short>
Handles notifications when a component is added to or removed from the
control.
</short>
<descr>
<p>
<var>Notification</var> is an overridden method in
<var>TCustomDBListBox</var>. Notification calls the inherited method, and
ensures that an assigned <var>DataSource</var> is set to <b>Nil</b> when
<var>Operation</var> contains <var>opRemove</var>.
</p>
</descr>
<seealso>
<link id="TCustomDBListBox.DataSource"/>
<link id="#rtl.classes.TComponent.Notification">TComponent.Notification</link>
</seealso>
</element>
<element link="#rtl.Classes.TComponent.Notification.AComponent" name="TCustomDBListBox.Notification.AComponent"/>
<element link="#rtl.Classes.TComponent.Notification.Operation" name="TCustomDBListBox.Notification.Operation"/>
<element name="TCustomDBListBox.UpdateData">
<short>
<var>UpdateData</var> - method for applying any pending changes to the data.
</short>
<descr>
<p>
<var>UpdateData</var> is a virtual abstract method in
<var>TCustomDBListBox</var>, and must be implemented in a descendent class
(such as <var>TDBListBox</var> or
<var>TDBLookupListBox</var>) to perform the actions needed to update a linked
dataset using the current selection in the control.
</p>
<p>
UpdateData is assigned to the <var>OnUpdateData</var> event handler in the
<var>TFieldDataLink</var> instance for data-aware controls.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.OnUpdateData"/>
<link id="TDBListBox.UpdateData"/>
<link id="TDBLookupListBox.UpdateData"/>
</seealso>
</element>
<element name="TCustomDBListBox.UpdateData.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TCustomDBListBox.SetItems">
<short>
<var>SetItems</var> - copies the specified Values into the
<var>Items</var> property.
</short>
<descr>
<p>
<var>SetItems</var> is overridden in <var>TCustomDBListBox</var> to ensure
that the <var>DataChange</var> method is called when the new Values are
assigned to the <var>Items</var> property.
</p>
</descr>
<seealso>
<link id="TCustomDBListBox.DataChange"/>
<link id="TCustomDBListBox.UpdateData"/>
<link id="#lcl.stdctrls.TCustomListBox.Items">TCustomListBox.Items</link>
</seealso>
</element>
<element name="TCustomDBListBox.SetItems.Values">
<short>New values for the property.</short>
</element>
<element name="TCustomDBListBox.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance.
Create calls the inherited constructor, and allocates and configures the
internal <var>TFieldDataLink</var> used in the class instance. The
<var>DataChange</var> and <var>UpdateData</var> methods are assigned as the
<var>OnDataChange</var> and <var>OnUpdateData</var> event handlers in the
TFieldDataLink instance.
</p>
</descr>
<seealso>
<link id="TCustomDBListBox.DataChange"/>
<link id="TCustomDBListBox.UpdateData"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="TFieldDataLink.OnUpdateData"/>
<link id="#lcl.stdctrls.TCustomListBox.Create">TCustomListBox.Create</link>
</seealso>
</element>
<element name="TCustomDBListBox.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<var>Destroy</var> is the overridden destructor for the class instance.
Destroy frees resources allocated to internal members in the class instance,
and calls the inherited destructor prior to exiting from the method.
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomListBox.Destroy">CustomListBox.Destroy</link>
</seealso>
</element>
<element name="TCustomDBListBox.ExecuteAction">
<short>Implements support for standard actions in the control.</short>
<descr>
<p>
<var>ExecuteAction</var> is an overridden <var>Boolean</var> function used to
implement support for <var>TBasicAction</var> in the control. ExecuteAction
extends the inherited method by using the internal field data link (when
assigned) to perform the requested action.
</p>
<p>
<var>AAction</var> is the <var>TBasicAction</var> instance examined and
potentially executed in the method.
</p>
<p>
The return value for the method is <b>True</b> when the action in AAction was
executed for the control.
</p>
</descr>
<seealso>
<link id="TDBText.UpdateAction"/>
<link id="#fcl.db.TDataLink.ExecuteAction">TDataLink.ExecuteAction</link>
<link id="#fcl.db.TDataLink.UpdateAction">TDataLink.UpdateAction</link>
<link id="#rtl.classes.TComponent.ExecuteAction">TComponent.ExecuteAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TCustomDBListBox.ExecuteAction.Result">
<short><b>True</b> when the action is performed in the method.</short>
</element>
<element name="TCustomDBListBox.ExecuteAction.AAction">
<short>Action examined and executed in the method.</short>
</element>
<element name="TCustomDBListBox.UpdateAction">
<short>Updates the state for the specified action.</short>
<descr>
<p>
<var>UpdateAction</var> is an overridden <var>Boolean</var> function used to
update the state of the <var>TBasicAction</var> (or descendant) instance in
<var>AAction</var>. The return value is <b>True</b> when the action is
updated in the method.
</p>
<p>
UpdateAction calls the inherited method. When the return value is
<b>False</b> and a linked dataset is available in the class instance, the
<var>UpdateAction</var> method in TFieldDataLink is called to update the
action.
</p>
</descr>
<seealso>
<link id="#fcl.db.TDataLink.UpdateAction">TDataLink.UpdateAction</link>
<link id="#fcl.db.TDataLink.ExecuteAction">TDataLink.ExecuteAction</link>
<link id="#rtl.classes.TComponent.UpdateAction">TComponent.UpdateAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TCustomDBListBox.UpdateAction.Result">
<short><b>True</b> if the action was updated in the method.</short>
</element>
<element name="TCustomDBListBox.UpdateAction.AAction">
<short>Action updated in the method.</short>
</element>
<element name="TCustomDBListBox.Field">
<short>Field definition in the linked dataset for the control.</short>
<descr>
<p>
<var>Field</var> is a read-only <var>TField</var> property which contains the
field definition used to access a column defined in the linked dataset for
the control. Read access to the property is redirected to the
<var>Field</var> property in the internal <var>TFieldDataLink</var> instance
used in the control.
</p>
<p>
Use the <var>DataField</var> property to specify the field name updated when
a value is selected using the control. Use <var>DataSource</var> to specify
the datasource component for the linked dataset.
</p>
</descr>
<seealso>
<link id="TCustomDBListBox.DataField"/>
<link id="TCustomDBListBox.DataSource"/>
<link id="TFieldDataLink.Field"/>
<link id="#fcl.db.TField">TField</link>
</seealso>
</element>
<element name="TCustomDBListBox.DataField">
<short>Name for the field in the linked dataset used in the control.</short>
<descr>
<p>
<var>DataField</var> is a <var/>String property which contains the name of
the field in the linked dataset for the control. It is the destination where
a value selected in the control is stored.
</p>
<p>
Read and write access for the property value is redirected to the FieldName
property in the internal TFieldDataLink instance used in the control. Use
Field to access the field definition and metadata for the column in the
linked dataset.
</p>
<p>
Use DataSource to specify the datasource component which provides access to
the linked dataset for the control.
</p>
</descr>
<seealso>
<link id="TCustomDBListBox.DataSource"/>
<link id="TCustomDBListBox.Field"/>
<link id="TFieldDataLink.FieldName"/>
</seealso>
</element>
<element name="TCustomDBListBox.DataSource">
<short>Provides access to the linked dataset for the control.</short>
<descr>
<p>
<var>DataSource</var> is a <var>TDataSource</var> property which contains the
component used to access the linked dataset for the control. Read and write
access for the property value are redirected to the <var>DataSource</var>
property in the internal <var>TFieldDataLink</var> instance for the control.
Changing the value in DataSource causes the <var>ChangeDataSource</var>
routine to be called to perform notification events and assignments for the
TFieldDataLink instance.
</p>
<p>
Use <var>DataField</var> to specify the name of the field in the linked
dataset used to store the value selected in the control. Use <var>Field</var>
to access the field definition and metadata for the column represented by
DataField.
</p>
</descr>
<seealso>
<link id="TCustomDBListBox.DataField"/>
<link id="TCustomDBListBox.Field"/>
<link id="ChangeDataSource"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataSource">TDataSource</link>
</seealso>
</element>
<element name="TCustomDBListBox.ReadOnly">
<short>
Indicates if the linked dataset for the control cannot be modified.
</short>
<descr>
<p>
<var>ReadOnly</var> is a <var>Boolean</var> property which indicates if the
linked dataset for the control cannot be modified. Read and write access for
the property value are redirected to the <var>ReadOnly</var> property in the
internal
<var>TFieldDataLink</var> instance for the control.
</p>
<p>
The default value for the property is <b>False</b>.
</p>
<remark>
The value in the property may be changed during the course of editing. For
example, setting ReadOnly to <b>False</b> when the linked dataset cannot
actually be modified. Eventually, the property value gets updated to reflect
the real read-only state for the linked dataset.
</remark>
</descr>
<seealso>
<link id="#fcl.db.TDataLink.ReadOnly">TDataLink.ReadOnly</link>
</seealso>
</element>
<element name="TDBListBox">
<short>Implements a data-aware version of <var>TListBox</var>.
</short>
<descr>
<p>
<var>TDBListBox</var> implements a data-aware version of <var>TListBox</var>.
The control allows selection and storage of a value from a scrolling list of
choices to the current record in a linked dataset.
</p>
<p>
TDBListBox extends the <var>TCustomDBListBox</var> ancestor class to
implement abstract/virtual methods, and to set the visibility for properties
in the control.
</p>
<p>
Use the <var>Items</var> property to define the list of choices displayed in
the listbox control.
</p>
<p>
The <var>DataSource</var> property provides access to the linked dataset
where the selected value is stored. <var>Field</var> contains the field
definition for the column in the dataset where the selected value is stored.
Use the <var>DataField</var> property to specify the name for the Field.
</p>
</descr>
<seealso>
<link id="TCustomDBListBox"/>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
</seealso>
</element>
<element name="TDBListBox.DataChange">
<short>
Implements the event handler signalled when data in the linked dataset has
been changed.
</short>
<descr>
<p>
<var>DataChange</var> is an overridden procedure in <var>TDBListBox</var>. It
implements the abstract virtual method defined in the ancestor class, and
updates
<var>ItemIndex</var> to reflect the current value in the linked dataset (when
available).
</p>
<p>
When <var>DataField</var> is an empty string, the value in ItemIndex is set
to <b>-1</b> to indicate that no item is selected in the control. Otherwise,
the field value in the linked dataset is located in <var>Items</var> and its
ordinal position is used in ItemIndex.
</p>
<p>
DataChange is used as the OnDataChange event handler in the TFieldDataLink
instance for the control.
</p>
</descr>
<seealso>
<link id="TDBListBox.Items"/>
<link id="TDBLIstBox.DataField"/>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.Field"/>
<link id="TCustomDBListBox.DataChange"/>
<link id="#lcl.stdctrls.TCustomListBox.ItemIndex">TCustomListBox.ItemIndex</link>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
</seealso>
</element>
<element name="TDBListBox.DataChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBListBox.DoSelectionChange">
<short>
Performs actions needed when the current selection in the listbox control is
changed.
</short>
<descr>
<p>
<var>DoSelectionChange</var> is an overridden procedure in
<var>TDBLIstBox</var>. It provides support for changing the modified status
for the linked dataset when a new item is selected in the listbox.
</p>
<p>
<var>User</var> indicates if the change was performed by user interaction
with the listbox, as opposed to a programmatic change from methods or
messages in the class. When User is <b>True</b>, the internal
<var>TFieldDataLink</var> instance is used to edit and set the
<var>Modified</var> property in the linked dataset. When User is
<b>False</b>, the inherited DoSelectionChange method is called.
</p>
<p>
DoSelectionChange is used in the implementation of methods in the ancestor
class, like <var>LMSelChange</var> and <var>SelectAll</var>.
</p>
</descr>
<seealso>
<link id="TCustomListBox.SelectAll"/>
<link id="TFieldDataLink.CanModify"/>
<link id="TFieldDataLink.Edit"/>
<link id="TFieldDataLink.Modified"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="TDBListBox.DataChange"/>
<link id="#lcl.stdctrls.TCustomListBox.DoSelectionChange">TCustomListBox.DoSelectionChange</link>
</seealso>
</element>
<element name="TDBListBox.DoSelectionChange.User">
<short>
Indicates if the change results from user interaction with the control.
</short>
</element>
<element name="TDBListBox.UpdateData">
<short>
Performs actions needed to update the linked dataset when the value for the
control has changed.
</short>
<descr>
<p>
<var>UpdateData</var> is an overridden method in <var>TDBLIstBox</var>. It
implements the abstract virtual method defined in the ancestor, and provides
support for updating the linked dataset when the value for the control has
been changed.
</p>
<p>
UpdateData stores the value from <var>Items</var> located at the position in
<var>ItemIndex</var> to the field for the linked dataset. No actions are
performed in the method when ItemIndex is <b>-1</b> (no item is selected in
the control).
</p>
<p>
UpdateData is used as the <var>OnUpdateData</var> event handler in the
internal <var>TFieldDataLink</var> instance for the control.
</p>
</descr>
<seealso>
<link id="TDBListBox.Items"/>
<link id="TCustomDBListBox.UpdateData"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.OnUpdateData"/>
<link id="#lcl.stdctrls.TCustomListBox.ItemIndex">TCustomListBox.ItemIndex</link>
</seealso>
</element>
<element name="TDBListBox.UpdateData.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBListBox.EditingDone">
<short>
<var>EditingDone</var> - what to do when you have finished editing.
</short>
<descr>
<p>
Called when user has finished editing. This procedure can be used by data
links to commit the changes.
</p>
<p>For example:</p>
<ul>
<li>When focus switches to another control (default)</li>
<li>When user selected another item</li>
</ul>
<p>
It's up to the control to perform the actions needed when the method is
called.
</p>
</descr>
<seealso/>
</element>
<element link="#lcl.controls.TControl.Align" name="TDBListBox.Align"/>
<element link="#lcl.controls.TControl.Anchors" name="TDBListBox.Anchors"/>
<element link="#lcl.controls.TControl.BiDiMode" name="TDBListBox.BiDiMode"/>
<element link="#lcl.controls.TControl.BorderSpacing" name="TDBListBox.BorderSpacing"/>
<element link="#lcl.controls.TWinControl.BorderStyle" name="TDBListBox.BorderStyle"/>
<element link="#lcl.controls.TControl.Color" name="TDBListBox.Color"/>
<element name="TDBListBox.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element link="#lcl.dbctrls.TCustomDBListBox.DataField" name="TDBListBox.DataField"/>
<element link="#lcl.dbctrls.TCustomDBListBox.DataSource" name="TDBListBox.DataSource"/>
<element link="#lcl.controls.TWinControl.DoubleBuffered" name="TDBListBox.DoubleBuffered"/>
<element name="TDBListBox.DragCursor" link="#lcl.controls.TControl.DragCursor"/>
<element name="TDBListBox.DragKind" link="#lcl.controls.TControl.DragKind"/>
<element name="TDBListBox.DragMode" link="#lcl.controls.TControl.DragMode"/>
<element link="#lcl.controls.TControl.Enabled" name="TDBListBox.Enabled"/>
<element link="#lcl.stdctrls.TCustomListBox.ExtendedSelect" name="TDBListBox.ExtendedSelect"/>
<element name="TDBListBox.Font" link="#lcl.controls.TControl.Font"/>
<element link="#lcl.stdctrls.TCustomListBox.ItemHeight" name="TDBListBox.ItemHeight"/>
<element name="TDBListBox.Items" link="#lcl.stdctrls.TCustomListBox.Items"/>
<element link="#lcl.stdctrls.TCustomListBox.MultiSelect" name="TDBListBox.MultiSelect"/>
<element link="#lcl.controls.TControl.OnClick" name="TDBListBox.OnClick"/>
<element name="TDBLIstBox.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TDBListBox.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element link="#lcl.controls.TControl.OnDragDrop" name="TDBListBox.OnDragDrop"/>
<element link="#lcl.controls.TControl.OnDragOver" name="TDBListBox.OnDragOver"/>
<element name="TDBListBox.OnDrawItem">
<short>
Event handler signalled to draw an Item on the data-aware list box.
</short>
<descr>
<p>
<var>OnDrawItem</var> is an event handler used to draw an Item on the
data-aware list box.
</p>
<p>
For example, selecting an item may require it to be highlighted or have its
font or background changed.
</p>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomListBox.OnDrawItem">TCustomListBox.OnDrawItem</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.OnEndDrag" name="TDBListBox.OnEndDrag"/>
<element link="#lcl.controls.TWinControl.OnEnter" name="TDBListBox.OnEnter"/>
<element link="#lcl.controls.TWinControl.OnExit" name="TDBListBox.OnExit"/>
<element name="TDBListBox.OnKeyPress">
<short>
Event handler signalled when a key is pressed while the control has focus.
</short>
<descr>
<p>
<var>OnKeyPress</var> differs from <link
id="#lcl.controls.TWinControl.OnKeyDown">OnKeyDown</link> in that the key
needs to become pressed while the control has focus; with
<var>OnKeyDown</var> the key may have already been down when the control
received focus.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.OnKeyPress">TWinControl.OnKeyPress</link>
</seealso>
</element>
<element name="TDBListBox.OnKeyDown">
<short>
Event handler signalled when a key is down while the control has focus.
</short>
<descr>
<p>
<var>OnKeyDown</var> differs from <link
id="#lcl.controls.TWinControl.OnKeyPress">OnKeyPress</link> in that the key
may have already been down when the control received focus; with
<var>OnKeyPress</var> the key needs to become pressed while the control has
focus.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.OnKeyDown">TWinControl.OnKeyDown</link>
</seealso>
</element>
<element name="TDBListBox.OnKeyUp">
<short>
Event handler signalled when a key is up (not pressed) while the control has
focus.
</short>
<descr>
<p>
In <var>OnKeyUp</var>, the key may already have been up when the control
received focus, or a pressed key may become released during the time the
control has focus.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.OnKeyUp">TWinControl.OnKeyUp</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.OnMouseDown" name="TDBListBox.OnMouseDown"/>
<element link="#lcl.controls.TControl.OnMouseEnter" name="TDBListBox.OnMouseEnter"/>
<element link="#lcl.controls.TControl.OnMouseLeave" name="TDBListBox.OnMouseLeave"/>
<element link="#lcl.controls.TControl.OnMouseMove" name="TDBListBox.OnMouseMove"/>
<element link="#lcl.controls.TControl.OnMouseUp" name="TDBListBox.OnMouseUp"/>
<element link="#lcl.controls.TControl.OnMouseWheel" name="TDBListBox.OnMouseWheel"/>
<element link="#lcl.controls.TControl.OnMouseWheelDown" name="TDBListBox.OnMouseWheelDown"/>
<element link="#lcl.controls.TControl.OnMouseWheelUp" name="TDBListBox.OnMouseWheelUp"/>
<element link="#lcl.controls.TControl.OnResize" name="TDBListBox.OnResize"/>
<element link="#lcl.controls.TControl.OnStartDrag" name="TDBListBox.OnStartDrag"/>
<element link="#lcl.controls.TWinControl.OnUTF8KeyPress" name="TDBListBox.OnUTF8KeyPress"/>
<element name="TDBListBox.Options" link="#lcl.stdctrls.TCustomListBox.Options"/>
<element link="#lcl.controls.TControl.ParentBiDiMode" name="TDBListBox.ParentBiDiMode"/>
<element name="TDBListBox.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element link="#lcl.controls.TControl.ParentShowHint" name="TDBListBox.ParentShowHint"/>
<element name="TDBListBox.PopupMenu" link="#lcl.controls.TControl.PopupMenu"/>
<element link="#lcl.dbctrls.TCustomDBListBox.ReadOnly" name="TDBListBox.ReadOnly"/>
<element link="#lcl.controls.TControl.ShowHint" name="TDBListBox.ShowHint"/>
<element link="#lcl.stdctrls.TCustomListBox.Sorted" name="TDBListBox.Sorted"/>
<element link="#lcl.stdctrls.TCustomListBox.Style" name="TDBListBox.Style"/>
<element link="#lcl.controls.TWinControl.TabOrder" name="TDBListBox.TabOrder"/>
<element link="#lcl.controls.TWinControl.TabStop" name="TDBListBox.TabStop"/>
<element link="#lcl.stdctrls.TCustomListBox.TopIndex" name="TDBListBox.TopIndex"/>
<element name="TDBListBox.Visible">
<short>
Indicates if the control is visible on the parent.
</short>
<descr>
<p>
The <var>Visible</var> property represents the ability to see a visual
control. If Visible is <b>True</b> the control is shown, otherwise it is
hidden. Calling Show sets Visible to <b>True</b>. Setting Visible to
<b>False</b> is equivalent to calling Hide method.
</p>
<remark>
The Visible property does not depend on control's parent visibility. Use
IsVisible method to consider this and get the real visibility.
</remark>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Visible">TControl.Visible</link>
</seealso>
</element>
<element name="TDBLookupListBox">
<short>Implements a data-aware listbox control with database lookup
capabilities.
</short>
<descr>
<p>
<var>TDBLookupListBox</var> is a <var>TCustomDBListBox</var> descendant which
implements a data-aware listbox with database lookup capabilities.
</p>
<p>
TDBLookupListBox allows selection of a value from a list of items, and stores
the value to a field in a linked dataset. The database lookup feature allows
a separate dataset to be used which contains the values for the items
available in the control. Individual fields can be specified for both the
stored value and the the associated display value. Internally, it uses a
TDBLookup component to enable the database lookup feature.
</p>
<p>
In addition, the control can be used in an unbound mode where either the
<var>DataSource</var> or the <var>DataField</var> is not defined for the
control. This allows the lookup dataset to synchronized when the current
selection in the control is changed, but prevents the selected value from
being stored in the linked dataset.
</p>
<p>
Use <var>ListSource</var> to provide access to the lookup dataset used in the
control. Use <var>ListField</var> or <var>ListFieldIndex</var> to specify the
field name or ordinal position in the lookup dataset displayed in the
listbox. Use <var>KeyField</var> to specify the field name in the lookup
dataset with the value stored in the DataField for the control. Use
<var>KeyValue</var> to read or write the value for the KeyField in the lookup
dataset.
</p>
</descr>
<seealso>
<link id="TDBLookupListBox.IsUnbound"/>
<link id="TDBLookupListBox.DataSource"/>
<link id="TDBLookupListBox.DataField"/>
<link id="TDBLookupListBox.ListSource"/>
<link id="TDBLookupListBox.ListField"/>
<link id="TDBLookupListBox.ListFieldIndex"/>
<link id="TDBLookupListBox.KeyField"/>
<link id="TDBLookupListBox.KeyValue"/>
<link id="TDBLookup"/>
</seealso>
</element>
<!-- visibility: private -->
<element name="TDBLookupListBox.FLookup"/>
<element name="TDBLookupListBox.ActiveChange"/>
<element name="TDBLookupListBox.ActiveChange.Sender"/>
<element name="TDBLookupListBox.GetDisplayEmpty"/>
<element name="TDBLookupListBox.GetDisplayEmpty.Result"/>
<element name="TDBLookupListBox.GetEmptyValue"/>
<element name="TDBLookupListBox.GetEmptyValue.Result"/>
<element name="TDBLookupListBox.GetKeyField"/>
<element name="TDBLookupListBox.GetKeyField.Result"/>
<element name="TDBLookupListBox.GetKeyValue"/>
<element name="TDBLookupListBox.GetKeyValue.Result"/>
<element name="TDBLookupListBox.GetListField"/>
<element name="TDBLookupListBox.GetListField.Result"/>
<element name="TDBLookupListBox.GetListFieldIndex"/>
<element name="TDBLookupListBox.GetListFieldIndex.Result"/>
<element name="TDBLookupListBox.GetListSource"/>
<element name="TDBLookupListBox.GetListSource.Result"/>
<element name="TDBLookupListBox.GetLookupCache"/>
<element name="TDBLookupListBox.GetLookupCache.Result"/>
<element name="TDBLookupListBox.GetNullValueKey"/>
<element name="TDBLookupListBox.GetNullValueKey.Result"/>
<element name="TDBLookupListBox.GetScrollListDataset"/>
<element name="TDBLookupListBox.GetScrollListDataset.Result"/>
<element name="TDBLookupListBox.SetDisplayEmpty"/>
<element name="TDBLookupListBox.SetDisplayEmpty.AValue"/>
<element name="TDBLookupListBox.SetEmptyValue"/>
<element name="TDBLookupListBox.SetEmptyValue.AValue"/>
<element name="TDBLookupListBox.SetKeyField"/>
<element name="TDBLookupListBox.SetKeyField.Value"/>
<element name="TDBLookupListBox.SetKeyValue"/>
<element name="TDBLookupListBox.SetKeyValue.AValue"/>
<element name="TDBLookupListBox.SetListField"/>
<element name="TDBLookupListBox.SetListField.Value"/>
<element name="TDBLookupListBox.SetListFieldIndex"/>
<element name="TDBLookupListBox.SetListFieldIndex.Value"/>
<element name="TDBLookupListBox.SetListSource"/>
<element name="TDBLookupListBox.SetListSource.Value"/>
<element name="TDBLookupListBox.SetLookupCache"/>
<element name="TDBLookupListBox.SetLookupCache.Value"/>
<element name="TDBLookupListBox.SetNullValueKey"/>
<element name="TDBLookupListBox.SetNullValueKey.AValue"/>
<element name="TDBLookupListBox.SetScrollListDataset"/>
<element name="TDBLookupListBox.SetScrollListDataset.AValue"/>
<element name="TDBLookupListBox.UpdateLookup"/>
<element name="TDBLookupListBox.DataChange">
<short>
Performs actions needed when a new DataField value is selected using the
lookup dataset.
</short>
<descr>
<p>
<var>DataChange</var> is an overridden method in <var>TDBLookupListBox</var>.
It implements the abstract virtual method defined in the ancestor class, and
provides support for setting the value in <var>ItemIndex</var> when the value
for <var>KeyField</var> in the lookup dataset has changed.
</p>
<p>
DataChange uses the internal <var>TFieldDataLink</var> instance in the
control to determine if the linked dataset has been opened. If the dataset is
active, the value in <var>ItemIndex</var> is set to the key index position
from the lookup dataset. If the linked dataset is not active, the value in
ItemIndex is set to <b>-1</b> (indicating no item is selected in the control).
</p>
<p>
DataChange is used as the <var>OnDataChange</var> event handler for the
internal <var>TFieldDataLink</var> instance in the control, and called from
the <var>DoSelectionChange</var> method.
</p>
</descr>
<seealso>
<link id="TDBLookupListBox.DataField"/>
<link id="TDBLookupListBox.KeyField"/>
<link id="TDBLookup.KeyFieldValue"/>
<link id="TDBLookup.GetKeyIndex"/>
<link id="TCustomDBListBox.DataChange"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="#lcl.stdctrls.TCustomListBox.ItemIndex">TCustomListBox.ItemIndex</link>
</seealso>
</element>
<element name="TDBLookupListBox.DoSelectionChange">
<short>Performs actions needed when the selected item in the listbox is
changed.
</short>
<descr>
<p>
<var>DoSelectionChange</var> is an overridden method in
<var>TDBLookupListBox</var>. It extends the inherited method to provide
support for the "unbound" usage model where either the <var>DataField</var>
or the <var>DataSource</var> is not defined for the control. This allows the
lookup dataset to be synchronized to the current item selection in the
listbox, but does not include storing the new value in the linked dataset.
</p>
<p>
<var>User</var> indicates if the selection change is a result of user
interaction with the listbox control, as opposed to a programmatic change
from methods or messages in the class. When both User and
<var>IsUnbound</var> are <b>True</b>, the <var>UpdateData</var> method is
called to reposition the lookup dataset to the new value for the control.
</p>
<p>
When User is <b>True</b> and IsUnbound is <b>False</b>, the internal
<var>TFieldDataLink</var> is notified of the new value by calling its
<var>CanModify</var>, <var>Modified</var>, and <var>UpdateRecord</var>
methods. If the linked dataset cannot be modified, the <var>DataChange</var>
method is called.
</p>
<p>
DoSelectionChange calls the inherited method prior to exit.
</p>
</descr>
<seealso>
<link id="TDBLookupListBox.DataField"/>
<link id="TDBLookupListBox.DataSource"/>
<link id="TDBLookupListBox.IsUnbound"/>
<link id="TDBLookupListBox.DataChange"/>
<link id="TFieldDataLink.CanModify"/>
<link id="TFieldDataLink.Modified"/>
<link id="#fcl.db.TDataLink.UpdateRecord">TDataLink.UpdateRecord</link>
<link id="#lcl.stdctrls.TCustomListBox.DoSelectionChange">TCustomListBox.DoSelectionChange</link>
<link id="#lcl.stdctrls.TCustomListBox.ItemIndex">TCustomListBox.ItemIndex</link>
</seealso>
</element>
<element name="TDBLookupListBox.DoSelectionChange.User">
<short>Indicates if the selection change is due to user interaction with the
control.
</short>
</element>
<element name="TDBLookupListBox.InitializeWnd">
<short>Initializes the window handle for the control.</short>
<descr>
<p>
<var>InitializeWnd</var> is an overridden procedure in
<var>TDBLookupListBox</var>, and calls the inherited method to initialize the
window handle and the
<var>Items</var> used for the control. InitializeWnd ensures that the Items
property is also assigned to the control items in the TDBLookup instance used
in the control.
</p>
</descr>
<seealso>
<link id="TDBLookup.ControlItems"/>
<link id="#lcl.stdctrls.TCustomListBox.InitializeWnd">TCustomListBox.InitializeWnd</link>
<link id="#lcl.stdctrls.TCustomListBox.Items">TCustomListBox.Items</link>
</seealso>
</element>
<element name="TDBLookupListBox.DestroyWnd">
<short>
Frees the window handle and updates the address used for the Items in the
controls.
</short>
<descr/>
<seealso>
<link id="#lcl.stdctrls.TCustomListBox.DestroyWnd">TCustomListBox.DestroyWnd</link>
</seealso>
</element>
<element name="TDBLookupListBox.KeyDown">
<short>Applies the specified virtual key code to the control.</short>
<descr>
<p>
<var>KeyDown</var> is an overridden procedure used to apply the specified
virtual key code and modifier to the control.
</p>
<p>
<var>Key</var> is the virtual key code examined in the method.
<var>Shift</var> is the modifier for the virtual key code.
</p>
<p>
KeyDown ensures that the <var>NullValueKey</var> shortcut defined for the
control is applied to the control and its lookup dataset in the internal
<var>TDBLookup</var> instance. This causes the value in <var>ItemIndex</var>
to be set to <b>-1</b> to clear the selection in the listbox.
</p>
<p>
KeyDown calls the inherited method prior to exit.
</p>
</descr>
<seealso>
<link id="TDBLookupListBox.NullValueKey"/>
<link id="#fcl.db.TDataLink.Active">TDataLink.Active</link>
<link id="#lcl.stdctrls.TCustomListBox.ItemIndex">TCustomListBox.ItemIndex</link>
</seealso>
</element>
<element name="TDBLookupListBox.KeyDown.Key">
<short>Virtual key code examined in the method.</short>
</element>
<element name="TDBLookupListBox.KeyDown.Shift">
<short>Modifier for the virtual key code.</short>
</element>
<element name="TDBLookupListBox.Loaded">
<short>
Performs actions needed when the control has loaded using the LCL streaming
mechanism.
</short>
<descr>
<p>
<var>Loaded</var> is an overridden procedure in <var>TDBLookupListBox</var>.
It calls the inherited method, and calls the <var>UpdateLookup</var> method
to initialize the internal <var>TDBLookup</var> instance used in the control.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent">TComponent</link>
</seealso>
</element>
<element name="TDBLookupListBox.UpdateData">
<short>Updates the data in the lookup dataset for the control.</short>
<descr>
<p>
<var>UpdateData</var> is an overridden procedure in
<var>TDBLookupListBox</var>. It implements the abstract virtual method
defined in the ancestor class. UpdateData uses the value in
<var>ItemIndex</var> to update the internal TDBLookup instance for the
control. When ItemIndex contains a positive non-zero value, the UpdateData
method in TDBLookup is called to apply the ItemIndex value.
</p>
<remark>
No actions are performed in the method when ItemIndex contains a negative
non-zero value.
</remark>
<p>
UpdateData is called from the <var>DoSelectionChange</var> method when
<var>IsUnbound</var> returns <b>True</b>.
</p>
</descr>
<seealso>
<link id="TDBLookupListBox.IsUnbound"/>
<link id="TDBLookup.UpdateData"/>
<link id="TCustomDBListBox.UpdateData"/>
<link id="#lcl.stdctrls.TCustomListBox.ItemIndex">TCustomListBox.ItemIndex</link>
</seealso>
</element>
<element name="TDBLookupListBox.UpdateData.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBLookupListBox.IsUnbound">
<short>Indicates if the control is being used in the "unbound" mode.</short>
<descr>
<p>
<var>IsUnbound</var> is a <var>Boolean</var> function which indicates if the
control is being used in the "unbound" mode - where either the DataField or
DataSource are not assigned for the control. This mode allows the control to
synchronize the lookup dataset to the current item selection in the control,
but does not post the control value to its linked dataset.
</p>
<p>
IsUnBound is used in the <var>DoSelectionChange</var> method to determine if
the <var>UpdateData</var> method needs to be performed.
</p>
</descr>
<seealso>
<link id="TDBLookupListBox.UpdateData"/>
<link id="TDBLookupListBox.DataField"/>
<link id="TDBLookupListBox.DataSource"/>
<link id="TFieldDataLink.FieldName"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
</seealso>
</element>
<element name="TDBLookupListBox.IsUnbound.Result">
<short><b>True</b> when the control does not store the current selection in
the linked dataset.
</short>
</element>
<element name="TDBLookupListBox.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance.
Create calls the inherited constructor, and allocates resources needed for
the lookup dataset used in the control. Create sets the default values for
properties, and assigns the <var>OnActiveChange</var> event handler used for
the linked dataset where the selected value is stored.
</p>
</descr>
<seealso>
<link id="#LCL.DbCtrls.TCustomDBListBox.Create">TCustomDBListBox.Create</link>
<link id="TFieldDataLink.OnActiveChange"/>
<link id="TDBLookup"/>
</seealso>
</element>
<element name="TDBLookupListBox.Create.AOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TDBLookupListBox.KeyValue">
<short>Accesses the value for the KeyField in the lookup dataset.</short>
<descr>
<p>
<var>KeyValue</var> is a <var>Variant</var> property used to access the value
for the <var>KeyField</var> in the lookup dataset for the control. It is a
Variant type because the KeyField may be represented as any of the valid
field types supported in the lookup dataset.
</p>
<p>
Read and write access to the value is redirected to the internal
<var>TDBLookup</var> instance used in the control. Read access uses the value
in <var>ItemIndex</var> to call the <var>GetKeyValue</var> method in the
lookup component. Write access calls the <var>GetKeyIndex</var> method in the
lookup component.
</p>
</descr>
<seealso>
<link id="TDBLookup.KeyField"/>
<link id="#lcl.stdctrls.TCustomListBox.ItemIndex">TCustomListBox.ItemIndex</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.Align" name="TDBLookupListBox.Align"/>
<element link="#lcl.controls.TControl.Anchors" name="TDBLookupListBox.Anchors"/>
<element link="#lcl.controls.TControl.BiDiMode" name="TDBLookupListBox.BiDiMode"/>
<element link="#lcl.controls.TControl.BorderSpacing" name="TDBLookupListBox.BorderSpacing"/>
<element link="#lcl.controls.TWinControl.BorderStyle" name="TDBLookupListBox.BorderStyle"/>
<element link="#lcl.controls.TControl.Color" name="TDBLookupListBox.Color"/>
<element name="TDBLookupListBox.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element link="#lcl.dbctrls.TCustomDBListBox.DataField" name="TDBLookupListBox.DataField"/>
<element link="#lcl.dbctrls.TCustomDBListBox.DataSource" name="TDBLookupListBox.DataSource"/>
<element link="#lcl.controls.TWinControl.DoubleBuffered" name="TDBLookupListBox.DoubleBuffered"/>
<element link="#lcl.controls.TControl.DragCursor" name="TDBLookupListBox.DragCursor"/>
<element link="#lcl.controls.TControl.DragKind" name="TDBLookupListBox.DragKind"/>
<element link="#lcl.controls.TControl.DragMode" name="TDBLookupListBox.DragMode"/>
<element link="#lcl.controls.TControl.Enabled" name="TDBLookupListBox.Enabled"/>
<element name="TDBLookupListBox.Font" link="#lcl.controls.TControl.Font"/>
<element name="TDBLookupListBox.KeyField">
<short>
Field name in the lookup dataset with the value for the control.
</short>
<descr>
<p>
<var>KeyField</var> is a <var>String</var> property which contains the name
of the field in the lookup dataset which provides the value stored in the
data-aware control. Changing the value in KeyField causes the internal
<var>TDBLookup</var> component to be updated, and calls the
<var>UpdateLookup</var> method.
</p>
<p>
Use <var>ListField</var> to set the field name with the values displayed in
the list of items for the control. Use <var>ListFieldIndex</var> to specify
the list field by its ordinal field position in the lookup dataset.
</p>
</descr>
<seealso>
<link id="TDBLookupListBox.ListField"/>
<link id="TDBLookupListBox.ListFieldIndex"/>
<link id="TDBLookupListBox.ListSource"/>
<link id="TDBLookup"/>
</seealso>
</element>
<element name="TDBLookupListBox.ListField">
<short>Field name with the descriptive value displayed in the listbox.</short>
<descr>
<p>
<var>ListField</var> is a <var>String</var> property which contains the name
of the field in the lookup dataset displayed in the listbox for the control.
ListField normally contains a more descriptive textual value associated the
KeyField.
</p>
<p>
Use <var>ListFieldIndex</var> to specify the list field by its ordinal
position in the lookup dataset. Use <var>KeyField</var> to specify the name
of the field with the value stored in the <var>DataField</var> for the linked
dataset. Use <var>ListSource</var> to specify the datasource component with
the lookup dataset for the control.
</p>
</descr>
<seealso>
<link id="TDBLookupListBox.DataSource"/>
<link id="TDBLookupListBox.DataField"/>
<link id="TDBLookupListBox.ListSource"/>
<link id="TDBLookupListBox.ListFieldIndex"/>
<link id="TDBLookupListBox.KeyField"/>
</seealso>
</element>
<element name="TDBLookupListBox.ListFieldIndex">
<short>
Ordinal position of the field in the lookup dataset with the descriptive
value displayed in the control.
</short>
<descr>
<p>
<var>ListFieldIndex</var> is an
<var>Integer</var> property which contains the ordinal position of the field
in the lookup dataset with the descriptive textual value displayed in the
control.
</p>
<p>
Read and write access to the property value is redirected to the
ListFieldIndex property in the internal <var>TDBLookup</var> instance used in
the control. Assigning a new value to the property causes the
<var>UpdateLookup</var> method to be called to re-initialize the TDBLookup
instance and the value in the <var>ItemIndex</var> property.
</p>
<p>
The default value for the property is zero (<b>0</b>), and indicates that the
first field in the lookup dataset is used as the list field.
</p>
<p>
Use <var>ListSource</var> to specify the datasource component used to access
the lookup dataset for the control. Use <var>ListField</var> to specify the
list field by its field name. Use <var>KeyField</var> to specify the field
with the value stored in the <var>DataField</var> for the control.
</p>
</descr>
<seealso>
<link id="TDBLookupListBox.ListSource"/>
<link id="TDBLookupListBox.ListField"/>
<link id="TDBLookupListBox.KeyField"/>
<link id="TDBLookupListBox.DataField"/>
</seealso>
</element>
<element name="TDBLookupListBox.ListSource">
<short>Datasource with the lookup dataset for the control.</short>
<descr>
<p>
<var>ListSource</var> is a <var>TDataSource</var> property which contains the
datasource component used to access the lookup dataset for the control.
</p>
<p>
Read and write access to the property value is redirected to the
<var>DataSource</var> property in the internal <var>TDBLookup</var> instance
used in the control. Assigning a new value to the property causes the
<var>UpdateLookup</var> method to be called to re-initialize the TDBLookup
instance and the value in the <var>ItemIndex</var> property.
</p>
<p>
Use <var>ListField</var> or <var>ListFieldIndex</var> to specify the field
with the descriptive value displayed in the control. Use <var>KeyField</var>
to specify the field with the value stored in the <var>DataField</var> for
the control.
</p>
</descr>
<seealso>
<link id="TDBLookupListBox.ListField"/>
<link id="TDBLookupListBox.ListFieldIndex"/>
<link id="TDBLookupListBox.KeyField"/>
<link id="TDBLookupListBox.DataField"/>
<link id="TDBLookup"/>
<link id="#lcl.stdctrls.TCustomListBox.ItemIndex">TCustomListBox.ItemIndex</link>
</seealso>
</element>
<element name="TDBLookupListBox.LookupCache">
<short>
Indicates if caching is enabled for fields in the lookup dataset.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBLookupListBox.NullValueKey">
<short>
Keyboard shortcut used to assign the empty key value to the control.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBLookupListBox.EmptyValue">
<short>
Value used as the empty field value in the DataField for the control.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBLookupListBox.DisplayEmpty">
<short>Descriptive text displayed for the EmptyValue in the control.</short>
<descr/>
<seealso/>
</element>
<element link="#lcl.controls.TControl.OnClick" name="TDBLookupListBox.OnClick"/>
<element name="TDBLookupListBox.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element link="#lcl.controls.TControl.OnDblClick" name="TDBLookupListBox.OnDblClick"/>
<element link="#lcl.controls.TControl.OnDragDrop" name="TDBLookupListBox.OnDragDrop"/>
<element link="#lcl.controls.TControl.OnDragOver" name="TDBLookupListBox.OnDragOver"/>
<element link="#lcl.controls.TControl.OnEditingDone" name="TDBLookupListBox.OnEditingDone"/>
<element link="#lcl.controls.TControl.OnEndDrag" name="TDBLookupListBox.OnEndDrag"/>
<element link="#lcl.controls.TWinControl.OnEnter" name="TDBLookupListBox.OnEnter"/>
<element link="#lcl.controls.TWinControl.OnExit" name="TDBLookupListBox.OnExit"/>
<element link="#lcl.controls.TWinControl.OnKeyPress" name="TDBLookupListBox.OnKeyPress"/>
<element link="#lcl.controls.TWinControl.OnKeyDown" name="TDBLookupListBox.OnKeyDown"/>
<element link="#lcl.controls.TWinControl.OnKeyUp" name="TDBLookupListBox.OnKeyUp"/>
<element link="#lcl.controls.TControl.OnMouseDown" name="TDBLookupListBox.OnMouseDown"/>
<element name="TDBLookupListBox.OnMouseEnter" link="#lcl.controls.TControl.OnMouseEnter"/>
<element name="TDBLookupListBox.OnMouseLeave" link="#lcl.controls.TControl.OnMouseLeave"/>
<element name="TDBLookupListBox.OnMouseMove" link="#lcl.controls.TControl.OnMouseMove"/>
<element name="TDBLookupListBox.OnMouseUp" link="#lcl.controls.TControl.OnMouseUp"/>
<element name="TDBLookupListBox.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TDBLookupListBox.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TDBLookupListBox.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element link="#lcl.controls.TControl.OnResize" name="TDBLookupListBox.OnResize"/>
<element link="#lcl.controls.TControl.OnStartDrag" name="TDBLookupListBox.OnStartDrag"/>
<element link="#lcl.controls.TWinControl.OnUTF8KeyPress" name="TDBLookupListBox.OnUTF8KeyPress"/>
<element link="#lcl.stdctrls.TCustomListBox.Options" name="TDBLookupListBox.Options"/>
<element link="#lcl.controls.TControl.ParentBiDiMode" name="TDBLookupListBox.ParentBidiMode"/>
<element link="#lcl.controls.TWinControl.ParentDoubleBuffered" name="TDBLookupListBox.ParentDoubleBuffered"/>
<element link="#lcl.controls.TControl.ParentShowHint" name="TDBLookupListBox.ParentShowHint"/>
<element link="#lcl.controls.TControl.PopupMenu" name="TDBLookupListBox.PopupMenu"/>
<element link="#lcl.dbctrls.TCustomDBListBox.ReadOnly" name="TDBLookupListBox.ReadOnly"/>
<element name="TDBLookupListBox.ScrollListDataset">
<short>
Indicates if the look-up data set is scrolled for a new value in the control.
</short>
<descr>
<p>
Indicates if the look-up data set is searched and scrolled when a new value
is selected in the control. The default value for the property is
<b>False</b>.
</p>
</descr>
<seealso/>
</element>
<element link="#lcl.controls.TControl.ShowHint" name="TDBLookupListBox.ShowHint"/>
<element link="#lcl.stdctrls.TCustomListBox.Sorted" name="TDBLookupListBox.Sorted"/>
<element link="#lcl.controls.TWinControl.TabOrder" name="TDBLookupListBox.TabOrder"/>
<element link="#lcl.controls.TWinControl.TabStop" name="TDBLookupListBox.TabStop"/>
<element link="#lcl.stdctrls.TCustomListBox.TopIndex" name="TDBLookupListBox.TopIndex"/>
<element link="#lcl.controls.TControl.Visible" name="TDBLookupListBox.Visible"/>
<element name="TDBRadioGroup">
<short>
<var>TDBRadioGroup</var> is a data-aware version of <var>TRadioGroup,</var>
providing a series of mutually exclusive buttons to select an entry to insert
into a database field.
</short>
<descr>
<p>
The properties of <var>TDBRadioGroup</var> are similar to those of
<var>TRadioGroup</var> (and <var>TCustomRadioGroup</var>). Access is obtained
to members of the group by selecting (in the Object Inspector) the ellipsis
(...) next to the entry <b>Items</b>, and then editing the stringlist.
</p>
<p>
At run-time, selecting one of the radio buttons makes the corresponding
ItemIndex available to the programmer, and the corresponding string Item gets
selected and appears as the string value for the record in that field.
</p>
</descr>
<seealso>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
</seealso>
</element>
<element name="TDBRadioGroup.FDataLink"/>
<element name="TDBRadioGroup.FOnChange"/>
<element name="TDBRadioGroup.FValue"/>
<element name="TDBRadioGroup.FValues"/>
<element name="TDBRadioGroup.FInSetValue"/>
<element name="TDBRadioGroup.GetDataField"/>
<element name="TDBRadioGroup.GetDataField.Result"/>
<element name="TDBRadioGroup.GetDataSource"/>
<element name="TDBRadioGroup.GetDataSource.Result"/>
<element name="TDBRadioGroup.GetField"/>
<element name="TDBRadioGroup.GetField.Result"/>
<element name="TDBRadioGroup.GetReadOnly"/>
<element name="TDBRadioGroup.GetReadOnly.Result"/>
<element name="TDBRadioGroup.SetDataField"/>
<element name="TDBRadioGroup.SetDataField.AValue"/>
<element name="TDBRadioGroup.SetDataSource"/>
<element name="TDBRadioGroup.SetDataSource.AValue"/>
<element name="TDBRadioGroup.SetItems"/>
<element name="TDBRadioGroup.SetItems.AValue"/>
<element name="TDBRadioGroup.SetReadOnly"/>
<element name="TDBRadioGroup.SetReadOnly.AValue"/>
<element name="TDBRadioGroup.SetValue"/>
<element name="TDBRadioGroup.SetValue.AValue"/>
<element name="TDBRadioGroup.SetValues"/>
<element name="TDBRadioGroup.SetValues.AValue"/>
<element name="TDBRadioGroup.CMGetDataLink"/>
<element name="TDBRadioGroup.CMGetDataLink.Message"/>
<element name="TDBRadioGroup.Change">
<short>Signals the OnChange event handler when assigned.
</short>
<descr>
<var>Change</var> is used to signal the <var>OnChange</var> event handler
(when assigned).
</descr>
<seealso/>
</element>
<element name="TDBRadioGroup.Notification">
<short>
Sets the DataSource to Nil when the control is destroyed.
</short>
<descr>
<p>
<var>Notification</var> is an overridden method in TDBRadioGroup, and calls
the inherited method. Notification ensures the <var>DataSource</var> for the
control is set to <b>Nil</b> when <var>Operation</var> contains
<var>opRemove</var> and
<var>AComponent</var> is the DataSource component.
</p>
</descr>
<seealso>
<link id="TDBRadioGroup.DataSource"/>
<link id="TDBRadioGroup.Destroy"/>
<link id="#rtl.classes.TComponent">TComponent</link>
</seealso>
</element>
<element name="TDBRadioGroup.Notification.AComponent">
<short>Component for the notification.</short>
</element>
<element name="TDBRadioGroup.Notification.Operation">
<short>Operation generating the notification.</short>
</element>
<element name="TDBRadioGroup.DataChange">
<short>Updates the control display value when the linked dataset is
repositioned.
</short>
<descr>
<p>
<var>DataChange</var> is used to perform actions needed when the linked
dataset for the control has been repositioned. In TDBRadioGroup, this
requires setting the
<var>Value</var> property for the control. DataChange uses the
<var>Field</var> property (when assigned) to get the display text for the
field. Value is set to an empty string <b>('')</b> when Field has not been
assigned.
</p>
<p>
DataChange is used as the <var>OnDataChange</var> event handler in the
internal <var>TFieldDataLink</var> instance in the class. It is called
directly when values are assigned to the Items and Value properties, and when
UpdateRadioButtonStates is used to update tab navigation and the current
selection index in the control.
</p>
</descr>
<seealso/>
</element>
<element name="TDBRadioGroup.DataChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBRadioGroup.UpdateData">
<short>Updates the linked dataset using the current selection in the control.
</short>
<descr>
<p>
<var>UpdateData</var> us used to perform the actions needed to update a
linked dataset using the current selection in the control.
</p>
<p>
In <var>TDBRadioGroup</var>, this involves assigning the content from the
<var>Value</var> property to the field for the linked dataset. UpdateData
uses the internal <var>TFieldDataLink</var> instance for the control to
access the <var>Field</var> for the linked dataset. No actions are performed
when the field in the TFieldDataLink instance has not been assigned.
</p>
<p>
UpdateData is assigned to the <var>OnUpdateData</var> event handler in the
<var>TFieldDataLink</var> instance for the data-aware control.
</p>
</descr>
<seealso>
<link id="TDBRadioGroup.DataField"/>
<link id="TDBRadioGroup.DataSource"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.OnUpdateData"/>
</seealso>
</element>
<element name="TDBRadioGroup.UpdateData.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBRadioGroup.DataLink">
<short>Provides access to properties, methods, and events for the data-aware
control.
</short>
<descr>
<p>
<var>DataLink</var> is a read-only TFieldDataLink property which provides
access to properties, methods, and events needed to implement the data-aware
control. It maintains references to the <var>Control</var> and its associated
<var>DataSource</var>, <var>DataSet</var>, and <var>Field</var>.
</p>
<p>
Read and Write access to many of the properties in the control are redirected
to this member in the class instance, including: DataField, DataSource,
Field, ReadOnly, et. al. It is used in the implementation of methods to
synchronize the actions and state for the control and its database-related
components.
</p>
<p>
Methods, such as DataChange and UpdateData, are used as event handlers in the
property.
</p>
</descr>
<seealso>
<link id="TFieldDataLink"/>
<link id="TDBRadioGroup.DataField"/>
<link id="TDBRadioGroup.DataSource"/>
<link id="TDBRadioGroup.Field"/>
<link id="TDBRadioGroup.ReadOnly"/>
<link id="TDBRadioGroup.DataChange"/>
<link id="TDBRadioGroup.UpdateData"/>
</seealso>
</element>
<element name="TDBRadioGroup.GetButtonValue">
<short>Gets the value for the radio button at the specified position in the
control.
</short>
<descr>
<p>
<var>GetButtonValue</var> is a <var>String</var> function used to get the
value for the Radio Button at the ordinal position specified in
<var>Index</var>.
</p>
<p>
When Index is a negative non-zero value, the return value is an empty string
<b>('')</b>. Otherwise, the return value contains the content at the
specified index position in Values. If no corresponding entry is available in
Values, the content from Items at the specified position is used.
</p>
<p>
Use the Items property to define the Radio Buttons displayed in the control.
Use Values to define the content stored in <var>DataField</var> when the
radio button in <var>ItemIndex</var> is selected.
</p>
<p>
GetButtonValue is used in the implementation of the
<var>UpdateRadioButtonStates</var> method.
</p>
</descr>
<seealso>
<link id="TDBRadioGroup.Items"/>
<link id="TDBRadioGroup.ItemIndex"/>
<link id="TDBRadioGroup.Values"/>
<link id="TDBRadioGroup.Value"/>
<link id="TDBRadioGroup.UpdateRadioButtonStates"/>
</seealso>
</element>
<element name="TDBRadioGroup.GetButtonValue.Result">
<short>The value stored for the specified radio button.</short>
</element>
<element name="TDBRadioGroup.GetButtonValue.Index">
<short>Ordinal position in Items for the requested radio button.</short>
</element>
<element name="TDBRadioGroup.UpdateRadioButtonStates">
<short>
Updates the linked dataset to reflect the current radio button selected in
the control.
</short>
<descr>
<p>
<var>UpdateRadioButtonStates</var> is an overridden method in
<var>TDBRadioGroup</var> used to update the the linked dataset for the
data-aware control when the value in ItemIndex has been changed.
</p>
<p>
UpdateRadioButtonStates ensures that the <var>Value</var> for the radio
button in ItemIndex is applied to the linked dataset when it can be modified.
The Edit and Modified methods in DataLink are called to place the linked
dataset in an edit state. Value is updated to apply the new content to the
field in the linked dataset.
</p>
<p>
If the dataset cannot be modified, the <var>DataChange</var> method is called
directly to update the control. Value is changed to 'X' character to indicate
that the linked dataset could not be modified.
</p>
</descr>
<seealso>
<link id="TDBRadioGroup.Value"/>
<link id="TDBRadioGroup.DataLink"/>
<link id="TFieldDataLink.Modified"/>
<link id="TFieldDataLink.Edit"/>
<link id="#lcl.extctrls.TCustomRadioGroup.UpdateRadioButtonStates">
TCustomRadioGroup.UpdateRadioButtonStates</link>
</seealso>
</element>
<element name="TDBRadioGroup.Create">
<short>Constructor for the class instance.
</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for <var>TDBRadioGroup</var>.
It calls the inherited <var>Create</var> method, and allocates resources
needed for the <var>DataLink</var> and <var>Values</var> properties. The
<var>DataChange</var> and <var>UpdateData</var> methods are assigned to event
handlers in DataLink.
</p>
</descr>
<seealso>
<link id="#lcl.extctrls.TCustomRadioGroup.Create">TCustomRadioGroup.Create</link>
</seealso>
</element>
<element name="TDBRadioGroup.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TDBRadioGroup.Destroy">
<short>Destroy is the destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the destructor for <var>TDBRadioGroup</var>. It frees
resources allocated to the <var>DataLink</var> and <var>Values</var>
properties, and calls the inherited destructor prior to exiting from the
method.
</p>
</descr>
<seealso>
<link id="#lcl.extctrls.TCustomRadioGroup.Destroy">TCustomRadioGroup.Destroy</link>
</seealso>
</element>
<element name="TDBRadioGroup.EditingDone">
<short>Performs actions needed when the user has finished editing.</short>
<descr>
<p>
<var>EditingDone</var> is an overridden method in <var>TDBRadioGroup</var>.
It is used to perform actions needed when the user has finished editing using
the control. It occurs when the focus changes to another control, or when the
user selects another item using the mouse.
</p>
<p>
EditingDone extends the behavior from the ancestor class to update the linked
dataset by calling the <var>UpdateRecord</var> method in <var>DataLink</var>.
</p>
<p>
EditingDone calls the inherited method to signal the <var>OnEditingDone</var>
event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TDBRadioGroup.DataLink"/>
<link id="#fcl.db.TDataLink.UpdateRecord">TDataLink.UpdateRecord</link>
<link id="#lcl.controls.TControl.EditingDone">TControl.EditingDone</link>
<link id="#lcl.controls.TControl.OnEditingDone">TControl.OnEditingDone</link>
</seealso>
</element>
<element name="TDBRadioGroup.ExecuteAction">
<short>Implements support for standard actions in the control.</short>
<descr>
<p>
<var>ExecuteAction</var> is an overridden <var>Boolean</var> function used to
implement support for <var>TBasicAction</var> in the control. ExecuteAction
extends the inherited method by using the DataLink (when assigned) to perform
the requested action.
</p>
<p>
<var>AAction</var> is the <var>TBasicAction</var> instance examined and
potentially executed in the method.
</p>
<p>
The return value for the method is <b>True</b> when the action in AAction was
executed for the control.
</p>
</descr>
<seealso>
<link id="TDBRadioGroup.UpdateAction"/>
<link id="#fcl.db.TDataLink.ExecuteAction">TDataLink.ExecuteAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
<link id="#rtl.classes.TComponent.ExecuteAction">TComponent.ExecuteAction</link>
</seealso>
</element>
<element name="TDBRadioGroup.ExecuteAction.Result">
<short><b>True</b> when the action was executed in the method.</short>
</element>
<element name="TDBRadioGroup.ExecuteAction.AAction">
<short>Action examined and executed in the method.</short>
</element>
<element name="TDBRadioGroup.UpdateAction">
<short>Updates the specified action to reflect the current state in the
linked dataset.
</short>
<descr>
<p>
<var>UpdateAction</var> is an overridden <var>Boolean</var> function in
<var>TDBRadioGroup</var>. UpdateAction is called when the
<var>Application</var> enters an idle state to ensure that the action
reflects the current state for a linked dataset.
</p>
<p>
<var>AAction</var> is the <var>TBasicAction</var> updated in the method.
</p>
<p>
UpdateAction calls the inherited method, and when DataLink has been assigned,
executes its UpdateAction method. The return value is <b>True</b> when
AAction is updated using either the inherited method, or the method in
DataLink. The return value is <b>False</b> when AAction could not be updated
in the method.
</p>
</descr>
<seealso>
<link id="#fcl.db.TDataLink.UpdateAction">TDataLink.UpdateAction</link>
<link id="#rtl.classes.TComponent.UpdateAction">TComponent.UpdateAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TDBRadioGroup.UpdateAction.Result">
<short><b>True</b> when the action was updated in the method.</short>
</element>
<element name="TDBRadioGroup.UpdateAction.AAction">
<short>Action examined and updated in the method.</short>
</element>
<element name="TDBRadioGroup.Field">
<short>The DataSet Field relevant to the data being selected.</short>
<descr>
<p>
<var>Field</var> is a read-only <var>TField</var> property which contains the
definition used to access the field in the linked dataset where the
<var>Value</var> for the data-aware control is stored. Read access for the
property value is redirected to the <var>Field</var> property in
<var>DataLink</var>.
</p>
<p>
Use <var>DataSource</var> to assign the component which provides access to
the linked dataset.
</p>
<p>
Use <var>DataField</var> to access the name of the field in the linked
dataset.
</p>
</descr>
<seealso>
<link id="TDBRadioGroup.DataLink"/>
<link id="TDBRadioGroup.DataField"/>
<link id="TDBRadioGroup.DataSource"/>
<link id="TDBRadioGroup.Value"/>
<link id="#fcl.db.TField">TField</link>
</seealso>
</element>
<element name="TDBRadioGroup.ItemIndex">
<short>
Ordinal position for the selected radio button in the group.
</short>
<descr>
<p>
ItemIndex is an Integer property with the ordinal position for the selected
radio button in the group. The default value for the property is -1, and
indicates that no radio button is selected for the group. Changing the value
for the property causes the widgetset control to be updated when its Handle
has been assigned.
</p>
<p>
ItemIndex must be in the range <b>-1..Items.Count-1</b>. An Exception is
raised with the message in rsIndexOutOfBounds if ItemIndex is set to a value
less than -1 or greater than or equal to the number Items for the control.
</p>
<p>
ItemIndex is a public property in TDBRadioGroup.
</p>
<remark>
Some widgetsets do not allow a radio button group to have an unselected item
index. To provide cross-platform compatibility, a hidden radio button is
created for this purpose. When ItemIndex is set to -1, it actually selects
the hidden radio button.
</remark>
</descr>
<seealso>
<link id="#lcl.extctrls.TCustomRadioGroup.ItemIndex">TCustomRadioGroup.ItemIndex</link>
</seealso>
</element>
<element name="TDBRadioGroup.Value">
<short>The value for the selected radio button in the control.</short>
<descr>
<p>
<var>Value</var> is a <var>String</var> property which contains the text for
the radio button at <var>ItemIndex</var> in the control. It is given the
string value from the <var>Values</var> property stored at the position in
ItemIndex. It may contain an 'X' character when the linked dataset has not
been assigned, or when Values does not have a string stored at the requested
position.
</p>
<p>
Assigning a new string to Value causes the <var>Values</var> property to be
searched to locate the radio button with the specified content. ItemIndex is
updated with the new position for the radio button, which initiates a call to
<var>UpdateRadioButtonStates</var> to update the linked dataset and refresh
the control. The <var>Change</var> method is called to signal the
<var>OnChange</var> event handler (when assigned).
</p>
</descr>
<seealso>
<link id="TDBRadioGroup.Items"/>
<link id="TDBRadioGroup.ItemIndex"/>
<link id="TDBRadioGroup.Values"/>
<link id="TDBRadioGroup.Change"/>
<link id="TDBRadioGroup.OnChange"/>
<link id="TDBRadioGroup.UpdateRadioButtonStates"/>
</seealso>
</element>
<element link="#lcl.controls.TControl.Align" name="TDBRadioGroup.Align"/>
<element link="#lcl.controls.TControl.Anchors" name="TDBRadioGroup.Anchors"/>
<element link="#lcl.extctrls.TCustomRadioGroup.AutoFill" name="TDBRadioGroup.AutoFill"/>
<element link="#lcl.controls.TControl.AutoSize" name="TDBRadioGroup.AutoSize"/>
<element link="#lcl.controls.TControl.BiDiMode" name="TDBRadioGroup.BiDiMode"/>
<element link="#lcl.controls.TControl.BorderSpacing" name="TDBRadioGroup.BorderSpacing"/>
<element name="TDBRadioGroup.Caption">
<short>
Text displayed as the caption for the control.
</short>
<descr>
<p>
Gets caption as a text-string (<var>GetText</var>), or stores the new caption
(<var>SetText</var>). Shows flag if caption is stored
(<var>IsCaptionStored</var>).
</p>
<p>
By default, the <var>Caption</var> appears the same as the control
<var>Name</var> in the Object Inspector, and the developer needs to set it
explicitly to some new text.
</p>
<p>
The VCL implementation relies on the virtual <var>Get/SetTextBuf</var> to
exchange text between widgets and VCL. This means a lot of (unnecessary) text
copies.
</p>
<p>
The LCL uses strings for exchanging text (more efficient). To maintain VCL
compatibility, the virtual <var>RealGet/SetText</var> is introduced. These
functions interface with the LCLInterface.
</p>
<p>
The default <var>Get/SetTextBuf</var> implementation calls the
<var>RealGet/SetText</var>. As long as the <var>Get/SetTextBuf</var> isn't
overridden <var>Get/SetText</var> calls <var>RealGet/SetText</var> to avoid
PChar copying.
</p>
<p>
To keep things optimal, LCL implementations should always override
RealGet/SetText. Get/SetTextBuf is only kept for compatibility.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Caption">TControl.Caption</link>
</seealso>
</element>
<element link="#lcl.controls.TWinControl.ChildSizing" name="TDBRadioGroup.ChildSizing"/>
<element link="#lcl.controls.TControl.Color" name="TDBRadioGroup.Color"/>
<element link="#lcl.extctrls.TCustomRadioGroup.ColumnLayout" name="TDBRadioGroup.ColumnLayout"/>
<element name="TDBRadioGroup.Columns">
<short>
Number of columns displayed for the radio buttons on the control.
</short>
<descr>
<p>
Don't confuse this with the Columns entity in a DBGrid, nor with the COLUMNS
entity in a SQL database - it simply refers to the number of columns of radio
buttons to be displayed.
</p>
</descr>
<seealso>
<link id="#lcl.extctrls.TCustomRadioGroup.Columns">TCustomRadioGroup.Columns</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.Constraints" name="TDBRadioGroup.Constraints"/>
<element name="TDBRadioGroup.DataField">
<short>
Name of the Field in the linked dataset where the control Value is stored.
</short>
<descr>
<p>
<var>DataField</var> is a <var>String</var> property which contains the name
of the field in the linked dataset where the <var>Value</var> for the
data-aware control is stored. Read and write access to the property value are
redirected to the FieldName property in DataLink.
</p>
<p>
Use <var>DataSource</var> to access the component which provides the linked
dataset where DataField is located.
</p>
</descr>
<seealso>
<link id="TDBRadioGroup.DataLink"/>
<link id="TDBRadioGroup.DataSource"/>
<link id="TDBRadioGroup.Value"/>
<link id="TFieldDataLink.FieldName"/>
</seealso>
</element>
<element name="TDBRadioGroup.DataSource">
<short>
Provides access to the linked dataset and the field definition used in the
control.
</short>
<descr>
<p>
<var>DataSource</var> is a <var>TDataSource</var> property which contains the
component used to provide access to the linked dataset and the field used in
the data-aware control.
</p>
<p>
Read and write access to the property value are redirected to the
<var>DataSource</var> property in <var>DataLink</var>. Assigning a new value
for the property causes the <var>ChangeDataSource</var> routine to be called
to perform notification messages and update the DataLink property in the
control.
</p>
<p>
Use the <var>DataField</var> property to get or set the name for the field in
the linked dataset where the <var>Value</var> for the control is stored.
</p>
</descr>
<seealso>
<link id="TDBRadioGroup.DataLink"/>
<link id="TDBRadioGroup.DataField"/>
<link id="TDBRadioGroup.Value"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataSource">TDataSource</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.Enabled" name="TDBRadioGroup.Enabled"/>
<element link="#lcl.controls.TWinControl.DoubleBuffered" name="TDBRadioGroup.DoubleBuffered"/>
<element link="#lcl.controls.TControl.DragCursor" name="TDBRadioGroup.DragCursor"/>
<element link="#lcl.controls.TControl.DragMode" name="TDBRadioGroup.DragMode"/>
<element link="#lcl.controls.TControl.Enabled" name="TDBRadioGroup.Enabled"/>
<element link="#lcl.controls.TControl.Font" name="TDBRadioGroup.Font"/>
<element name="TDBRadioGroup.Items">
<short>
Contains the string values used as captions for radio buttons in the grouped
data-aware control.
</short>
<descr>
<p>
<var>Items</var> is a published <var>TStrings</var> property in
<var>TDBRadioGroup</var>. The write access specifier ( <var>SetItems</var>)
is re-implemented in the class to perform the <var>DataChange</var> method
after assigning the new values(s) in the property.
</p>
<p>
Use the <var>Values</var> property to define the strings that can be stored
as the <var>Value</var> for the <var>DataField</var> in the control.
</p>
<p>
Use <var>Value</var> to access the element in Values for the current
selection (<var>ItemIndex</var>) in the control.
</p>
</descr>
<seealso>
<link id="TDBRadioGroup.DataChange"/>
<link id="TDBRadioGroup.ItemIndex"/>
<link id="TDBRadioGroup.DataField"/>
<link id="TDBRadioGroup.DataSource"/>
<link id="TDBRadioGroup.DataLink"/>
<link id="TDBRadioGroup.Value"/>
<link id="#lcl.extctrls.TCustomRadioGroup.Items">TCustomRadioGroup.Items</link>
</seealso>
</element>
<element name="TDBRadioGroup.OnChange">
<short>Event Handler signalled when the Value for the control is changed.
</short>
<descr>
<p>
<var>OnChange</var> is a <var>TNotifyEvent</var> property which contains the
event handler signalled when the <var>Value</var> for the control is changed.
OnChange can be used in an application to perform actions needed after Value
(and <var>ItemIndex</var>) has been updated, and the corresponding radio
button has been set to the checked state.
</p>
<p>
OnChange is signalled from the <var>Change</var> method.
</p>
</descr>
<seealso>
<link id="TDBRadioGroup.Change"/>
<link id="TDBRadioGroup.ItemIndex"/>
<link id="TDBRadioGroup.Value"/>
</seealso>
</element>
<element link="#lcl.controls.TControl.OnChangeBounds" name="TDBRadioGroup.OnChangeBounds"/>
<element link="#lcl.controls.TControl.OnClick" name="TDBRadioGroup.OnClick"/>
<element name="TDBRadioGroup.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element link="#lcl.controls.TControl.OnDragDrop" name="TDBRadioGroup.OnDragDrop"/>
<element link="#lcl.controls.TControl.OnDragOver" name="TDBRadioGroup.OnDragOver"/>
<element link="#lcl.controls.TControl.OnEndDrag" name="TDBRadioGroup.OnEndDrag"/>
<element link="#lcl.controls.TControl.OnMouseDown" name="TDBRadioGroup.OnMouseDown"/>
<element link="#lcl.controls.TControl.OnMouseEnter" name="TDBRadioGroup.OnMouseEnter"/>
<element link="#lcl.controls.TControl.OnMouseLeave" name="TDBRadioGroup.OnMouseLeave"/>
<element link="#lcl.controls.TControl.OnMouseMove" name="TDBRadioGroup.OnMouseMove"/>
<element link="#lcl.controls.TControl.OnMouseUp" name="TDBRadioGroup.OnMouseUp"/>
<element link="#lcl.controls.TControl.OnMouseWheel" name="TDBRadioGroup.OnMouseWheel"/>
<element link="#lcl.controls.TControl.OnMouseWheelDown" name="TDBRadioGroup.OnMouseWheelDown"/>
<element link="#lcl.controls.TControl.OnMouseWheelUp" name="TDBRadioGroup.OnMouseWheelUp"/>
<element link="#lcl.controls.TControl.OnResize" name="TDBRadioGroup.OnResize"/>
<element link="#lcl.controls.TControl.OnStartDrag" name="TDBRadioGroup.OnStartDrag"/>
<element link="#lcl.controls.TControl.ParentBiDiMode" name="TDBRadioGroup.ParentBiDiMode"/>
<element link="#lcl.controls.TControl.ParentColor" name="TDBRadioGroup.ParentColor"/>
<element link="#lcl.controls.TWinControl.ParentDoubleBuffered" name="TDBRadioGroup.ParentDoubleBuffered"/>
<element link="#lcl.controls.TControl.ParentFont" name="TDBRadioGroup.ParentFont"/>
<element link="#lcl.controls.TControl.ParentShowHint" name="TDBRadioGroup.ParentShowHint"/>
<element link="#lcl.controls.TControl.PopupMenu" name="TDBRadioGroup.PopupMenu"/>
<element name="TDBRadioGroup.ReadOnly">
<short>
<var>ReadOnly</var> - if <b>True</b>, data can only be read, not written or
modified. (Doesn't really make sense for a RadioGroup!).
</short>
<descr>
<p>
<var>ReadOnly</var> is a <var>Boolean</var> property which indicates if the
control, and its linked dataset can be modified. Read and write access for
the property value are redirected to the <var>ReadOnly</var> property in
<var>DataLink</var>.
</p>
<p>
The default value for the property is <b>False</b>.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.CanModify"/>
<link id="TDataLink.ReadOnly"/>
</seealso>
</element>
<element link="#lcl.controls.TControl.ShowHint" name="TDBRadioGroup.ShowHint"/>
<element link="#lcl.controls.TWinControl.TabOrder" name="TDBRadioGroup.TabOrder"/>
<element link="#lcl.controls.TWinControl.TabStop" name="TDBRadioGroup.TabStop"/>
<element name="TDBRadioGroup.Values">
<short>
The <var>values</var> of the strings in <var>Items</var>.
</short>
<descr>
<p>
<var>Values</var> is a <var>TStrings</var> property which contains strings
entries that can be stored as the <var>Value</var> for the control. Values is
used in conjunction with the <var>Items</var> property, which defines the
captions displayed for the radio buttons in the grouped control.
</p>
<p>
Assigning a new value to the property causes the <var>DataChange</var> method
to be called after assigning the new property value.
</p>
</descr>
<seealso>
<link id="TDBRadioGroup.Items"/>
<link id="TDBRadioGroup.ItemIndex"/>
<link id="TDBRadioGroup.Value"/>
<link id="TDBRadioGroup.DataChange"/>
</seealso>
</element>
<element name="TDBRadioGroup.Visible">
<short>Indicates if the control is visible on its parent.</short>
<descr>
<p>
The Visible property represents the ability to see a visual control. If
Visible is <b>True</b> the control is shown, otherwise it is hidden. Calling
Show sets, among others, Visible to <b>True</b>. Setting Visible to
<b>False</b> is equivalent to calling Hide method.
</p>
<remark>
The Visible property does not depend on control's parent visibility. Use
IsVisible method to consider this and get real visibility.
</remark>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Visible">TControl.Visible</link>
</seealso>
</element>
<element name="TDBCheckBox">
<short>Implements a data-aware check box control.</short>
<descr>
<p>
<var>TDBCheckBox</var> implements a data-aware check box control for use with
a logical field in a database. The dataset field can be represented using
either a <var>Boolean</var> or a <var>String</var> data type.
</p>
<p>
TDBCheckBox is a <var>TCustomCheckBox</var> descendant, and provides support
for a linked dataset with the value for the control. Internally, it uses a
<var>TFieldDataLink</var> instance to maintain an association between the
control and its <var>DataSource</var> and <var>DataField</var>.
</p>
<p>
Support for <var>TBasicAction</var> is also implemented in the control using
its <var>Action</var> property.
</p>
<p>
Use the following properties to configure and control the data-aware check box
control:
</p>
<ul>
<li>DataSource</li>
<li>DataField</li>
<li>Field</li>
<li>Checked</li>
<li>ValueChecked</li>
<li>ValueUnchecked</li>
<li>Caption</li>
<li>ReadOnly</li>
<li>State</li>
</ul>
</descr>
<seealso>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
</seealso>
</element>
<element name="TDBCheckBox.FDataLink"/>
<element name="TDBCheckBox.FValueCheck"/>
<element name="TDBCheckBox.FValueUncheck"/>
<element name="TDBCheckBox.GetDataField">
<short>Gets the value for the DataField property.</short>
</element>
<element name="TDBCheckBox.GetDataField.Result">
<short>Value for the property.</short>
</element>
<element name="TDBCheckBox.GetDataSource">
<short>Gets the value for the DataSource property.</short>
</element>
<element name="TDBCheckBox.GetDataSource.Result">
<short>Value for the property.</short>
</element>
<element name="TDBCheckBox.GetField">
<short>Gets the value for the Field property.</short>
</element>
<element name="TDBCheckBox.GetField.Result">
<short>Value for the property.</short>
</element>
<element name="TDBCheckBox.GetReadOnly">
<short>Gets the value for the ReadOnly property.</short>
</element>
<element name="TDBCheckBox.GetReadOnly.Result">
<short>Value for the property.</short>
</element>
<element name="TDBCheckBox.SetDataField">
<short>Sets the value for the DataField property.</short>
<descr/>
<seealso>
<link id="TDBCheckBox.DataField"/>
</seealso>
</element>
<element name="TDBCheckBox.SetDataField.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCheckBox.SetDataSource">
<short>Sets the value for the DataSource property.</short>
<descr/>
<seealso>
<link id="TDBCheckBox.DataSource"/>
</seealso>
</element>
<element name="TDBCheckBox.SetDataSource.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCheckBox.SetReadOnly">
<short>Sets the value for the ReadOnly property.</short>
<descr/>
<seealso>
<link id="TDBCheckBox.ReadOnly"/>
</seealso>
</element>
<element name="TDBCheckBox.SetReadOnly.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCheckBox.SetValueChecked">
<short>Sets the value for the ValueChecked property.</short>
<descr/>
<seealso>
<link id="TDBCheckBox.ValueChecked"/>
</seealso>
</element>
<element name="TDBCheckBox.SetValueChecked.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCheckBox.SetValueUnchecked">
<short>Sets the value for the ValueUnchecked property.</short>
<descr/>
<seealso>
<link id="TDBCheckBox.ValueUnchecked"/>
</seealso>
</element>
<element name="TDBCheckBox.SetValueUnchecked.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCheckBox.NonDefaultValueChecked"/>
<element name="TDBCheckBox.NonDefaultValueChecked.Result"/>
<element name="TDBCheckBox.NonDefaultValueUnchecked"/>
<element name="TDBCheckBox.NonDefaultValueUnchecked.Result"/>
<element name="TDBCheckBox.CMGetDataLink">
<short>
Implements the CM_GETDATALINK control message for the data-aware
control.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBCheckBox.CMGetDataLink.Message">
<short>Message examined and updated in the method.</short>
</element>
<element name="TDBCheckBox.GetFieldCheckState">
<short>
<var>GetFieldCheckState</var> - returns the check box state for the current
field.
</short>
<descr>
<p>
<var>GetFieldCheckState</var> is a <var>TCheckBoxState</var> function used to
get the current value for the State property in the data-aware check box
control. GetFieldCheckState uses the internal <var>TFieldDataLink</var>
instance in the class to access the <var>Field</var> in the linked dataset represented by <var>DataField</var>.
</p>
<p>
The field type and value are examined to determine the return value for the
method. The return value can be one of the following:
</p>
<dl>
<dt>cbChecked</dt>
<dd>
Used when the Boolean value in the Field is <b>True</b>.
</dd>
<dt>cbUnchecked</dt>
<dd>
Used when the Boolean value in the Field is <b>False</b>, or the String value
matched ValueChecked. Also used when the Field has not been assigned
(contains <b>Nil</b>).
</dd>
<dt>cbGrayed</dt>
<dd>
Used when the value in Field is not NULL (depends on the database and the field type), and when none of the previous conditions are <b>True</b>.
</dd>
</dl>
<p>
The return value is assigned to the <var>State</var> property when the
<var>DoOnChange</var> and <var>DataChange</var> methods are executed.
</p>
</descr>
<seealso/>
</element>
<element name="TDBCheckBox.GetFieldCheckState.Result">
<short>Current TCheckBoxState for the control.</short>
</element>
<element name="TDBCheckBox.DataChange">
<short>
Updates the control display value when the linked dataset is changed.
</short>
<descr>
<p>
<var>DataChange</var> is used to perform actions needed when the linked
dataset for the control has been changed. In TDBCheckBox, this requires
setting the <var>State</var> property for the control. DataChange calls the
GetFieldCheckState method to get the value for the State property.
</p>
<p>
DataChange is assigned in the constructor as the <var>OnDataChange</var>
event handler in the internal <var>TFieldDataLink</var> instance for the
control. It is temporarily unassigned (when used) prior to calling
GetFieldCheckState, and reassigned prior to exit.
</p>
</descr>
<seealso>
<link id="TDBCheckBox.GetFieldCheckState"/>
<link id="TDBCheckBox.State"/>
<link id="TFieldDataLink.OnDataChange"/>
</seealso>
</element>
<element name="TDBCheckBox.DataChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBCheckBox.DoOnChange">
<short>Performs actions needed when the control is clicked.</short>
<descr>
<p>
<var>DoOnChange</var> is an overridden method in <var>TDBCheckBox</var>. It
ensures that the internal <var>TFieldDataLink</var> is notified of a change
to the control value.
</p>
<p>
If the OnDataChange event handler has been assigned for the field data link,
its <var>Edit</var>, <var>Modified</var>, and <var>UpdateRecord</var> methods
are called to store the new value for the control. If the linked dataset
cannot be edited, the <var>GetFieldCheckState</var> method is called to get
the checked state value stored to the <var>State</var> property.
</p>
<p>
The OnDataChange event handler in the data link is temporarily unassigned
prior to updating the field value. The handler is reassigned when the
actions have been completed.
</p>
<p>
DoOnChange calls the inherited method to signal the OnEditingDone and
OnChange event handlers in ancestor classes.
</p>
</descr>
<seealso>
<link id="TDBCheckBox.State"/>
<link id="TDBCheckBox.GetFieldCheckState"/>
<link id="TFieldDataLink.Edit"/>
<link id="TFieldDataLink.Modified"/>
<link id="#lcl.stdctrls.TButtonControl.DoOnChange">TButtonControl.DoOnChange</link>
<link id="#fcl.db.TDataLink.UpdateRecord">TDataLink.UpdateRecord</link>
</seealso>
</element>
<element name="TDBCheckBox.UpdateData">
<short>
<var>UpdateData</var> - examines the <var>State</var> to see whether it has
changed.
</short>
<descr>
<p>
<var>UpdateData</var> is a procedure used to update the linked dataset for
the control when the value in the <var>State</var> property has been changed.
</p>
<p>
When State contains <var>cbGrayed</var>, the <var>Field</var> in the linked
dataset is cleared. For other values, the Field data type determines whether
one of the values in <var>Checked</var>, <var>ValueChecked</var>, or
<var>ValueUnchecked</var> is used. If the Field is a <var>Boolean</var> data
type, the value in Checked is stored to the linked dataset. Otherwise, the
text for the field is updated using the value from <var>ValueChecked</var>
(when Checked is <b>True</b>) or <var>ValueUnchecked</var> (when Checked is
<b>False</b>).
</p>
<p>
UpdateData is used as the <var>OnUpdateData</var> event handler in the
internal <var>TFieldDataLink</var> instance for the class.
</p>
</descr>
<seealso>
<link id="TDBCheckBox.State"/>
<link id="TDBCheckBox.Checked"/>
<link id="TDBCheckBox.DataField"/>
<link id="TDBCheckBox.DataSource"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.OnUpdateData"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
</seealso>
</element>
<element name="TDBCheckBox.UpdateData.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBCheckBox.Notification">
<short>
Handles notification events for components used in the class instance.
</short>
<descr>
<p>
<var>Notification</var> is an overridden procedure in <var>TDBCheckBox</var>,
and calls the inherited method. Notification ensures that an assigned value
in <var>DataSource</var> is cleared (set to <b>Nil</b>) when the DataSource
component is destroyed.
</p>
</descr>
<seealso>
<link id="TDBCheckBox.DataSource"/>
<link id="#rtl.classes.TComponent.Notification">TComponent.Notification</link>
</seealso>
</element>
<element name="TDBCheckBox.Notification.AComponent">
<short>Component for the notification.</short>
</element>
<element name="TDBCheckBox.Notification.Operation">
<short>Operation for the notification.</short>
</element>
<element name="TDBCheckBox.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the constructor for <var>TDBCheckBox</var>, and calls
the inherited constructor on entry.
</p>
<p>
Create sets the default values for the ValueChecked and ValueUnchecked
properties to the corresponding strings returned from the BoolToStr. ValueChecked is set to '-1'. ValueUnchecked is set to '0'. Change the values
in ValueChecked and ValueUnchecked if other string representations are needed.
</p>
<p>
The default value for the State property is set to cbUnchecked.
</p>
<p>
Create allocates and configures the internal TFieldDataLink instance used to
link the data-aware control to its Field in the underlying DataSource. The
OnDataChange and OnUpdateData event handlers in the link are set to the
DataChange and UpdateData methods in the control.
</p>
</descr>
<seealso>
<link id="TDBCheckBox.State"/>
<link id="TDBCheckBox.ValueChecked"/>
<link id="TDBCheckBox.ValueUnchecked"/>
<link id="TDBCheckBox.DataChange"/>
<link id="TDBCheckBox.UpdateData"/>
<link id="TFieldDataLink"/>
<link id="#lcl.stdctrls.TCustomCheckBox.Create">TCustomCheckBox.Create</link>
<link id="#rtl.sysutils.BoolToStr">SysUtils.BoolToStr</link>
</seealso>
</element>
<element name="TDBCheckBox.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TDBCheckBox.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the destructor for <var>TDBCheckBox</var>. It frees
the internal field data link, and calls the inherited <var>Destroy</var>
method prior to exit.
</p>
</descr>
<seealso>
<link id="TFieldDataLink"/>
<link id="#lcl.controls.TWinControl.Destroy">TWinControl.Destroy</link>
</seealso>
</element>
<element name="TDBCheckBox.ExecuteAction">
<short>Implements support for TBasicAction in the data-aware control.
</short>
<descr>
<p>
<var>ExecuteAction</var> is an overridden <var>Boolean</var> function in
<var>TDBCheckBox</var>. It extends the method from the ancestor class to
include support for use of the internal <var>TFieldDataLink</var> to execute
the action.
</p>
<p>
<var>AAction</var> is the <var>TBasicAction</var> examined and potentially
executed in the method.
</p>
<p>
The return value is <b>True</b> when <var>AAction</var> is executed in in the
method.
</p>
<p>
ExecuteAction calls the inherited method. If AAction is not handled in the
ancestor class, the internal <var>TFieldDataLink</var> is used to execute the
action. No actions are performed in the method when the field data link has
not been assigned, or when the action is not supported for the data link.
</p>
<p>
Use <var>Action</var> to set the <var>TBasicAction</var> assigned to the
<var>ActionLink</var> for the control, and executed in the <var>Click</var>
method for the control.
</p>
</descr>
<seealso>
<link id="#fcl.db.TDataLink.ExecuteAction">TDataLink.ExecuteAction</link>
<link id="#fcl.db.TDataLink.UpdateAction">TDataLink.UpdateAction</link>
<link id="#lcl.controls.TControl.Action">TControl.Action</link>
<link id="#lcl.controls.TControl.Click">TControl.Click</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
<link id="#rtl.classes.TComponent.ExecuteAction">TComponent.ExecuteAction</link>
</seealso>
</element>
<element name="TDBCheckBox.ExecuteAction.Result">
<short><b>True</b> if the action was executed in the method.</short>
</element>
<element name="TDBCheckBox.ExecuteAction.AAction">
<short>Action examined an executed in the method.</short>
</element>
<element name="TDBCheckBox.UpdateAction">
<short>Updates the state for the specified action.</short>
<descr>
<p>
<var>UpdateAction</var> is overridden in <var>TDBCheckBox</var>, and checks
the action specified in <var>AAction</var> to ensure that the current control
is a target for the action.
</p>
<p>
UpdateAction calls the inherited method to determine if the control is a
target for the action. If it is not handled (or updated), the internal
<var>TFieldDataLink</var> instance calls its <var>UpdateAction</var> method.
The action is supported when the <var>DataSource</var> is the target for the
action.
</p>
<p>
No actions are performed in the method, and the return value is <b>False</b>,
when the field data link has not been assigned. The return value is
<b>True</b> when the action is supported for the control, and successfully
updated in the method.
</p>
</descr>
<seealso>
<link id="TDBCheckBox.DataSource"/>
<link id="#fcl.db.TDataLink.UpdateAction">TDataLink.UpdateAction</link>
<link id="#lcl.controls.TControl.Action">TControl.Action</link>
<link id="#rtl.classes.TComponent.UpdateAction">TComponent.UpdateAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TDBCheckBox.UpdateAction.Result">
<short>
<b>True</b> when the action is supported and updated in the method.
</short>
</element>
<element name="TDBCheckBox.UpdateAction.AAction">
<short>Action examined and updated in the method.</short>
</element>
<element link="#lcl.stdctrls.TButtonControl.Checked" name="TDBCheckBox.Checked"/>
<element name="TDBCheckBox.Field">
<short>
Provides access to the field definition for the data-aware control.
</short>
<descr>
<p>
<var>Field</var> is a read-only <var>TField</var> property which provides
access to the field definition to which the data-aware control is linked.
Read access for the property is redirected to the <var>Field</var> property
in the internal <var>TFieldDataLink</var> class instance.
</p>
<p>
Field can be used to access properties, methods, and events for the field
definition in the linked dataset. This includes the data type, field kind,
size, current value, display labels, key fields, lookup information,
constraints, etc. There are also properties which handle conversion of the
field value to different data types.
</p>
<p>
Use <var>DataField</var> to read or write the field name used for the
data-aware control. Use <var>DataSource</var> to specify the data source with
the dataset containing the specified field name.
</p>
</descr>
<seealso>
<link id="TDBCheckBox.DataField"/>
<link id="TDBCheckBox.DataSource"/>
<link id="TFieldDataLink"/>
<link id="#fcl.db.TField">TField</link>
</seealso>
</element>
<element link="#lcl.stdctrls.TCustomCheckBox.State" name="TDBCheckBox.State">
<descr>
<p>
See <link id="#lcl.stdctrls.TCheckBoxState">TCheckBoxState</link> for
possible values of <var>State</var>.
</p>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCheckBoxState">TCheckBoxState</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.Action" name="TDBCheckBox.Action"/>
<element link="#lcl.controls.TControl.Align" name="TDBCheckBox.Align"/>
<element name="TDBCheckBox.Alignment" link="#lcl.stdctrls.TCustomCheckBox.Alignment"/>
<element link="#lcl.stdctrls.TCustomCheckBox.AllowGrayed" name="TDBCheckBox.AllowGrayed"/>
<element link="#lcl.controls.TControl.Anchors" name="TDBCheckBox.Anchors"/>
<element link="#lcl.controls.TControl.AutoSize" name="TDBCheckBox.AutoSize"/>
<element link="#lcl.controls.TControl.BiDiMode" name="TDBCheckBox.BiDiMode"/>
<element link="#lcl.controls.TControl.BorderSpacing" name="TDBCheckBox.BorderSpacing"/>
<element name="TDBCheckBox.Caption">
<short>
Text displayed as the caption for the control.
</short>
<descr>
<p>
Gets the caption for the control as a text-string (<var>GetText</var>), or
stores the new caption (<var>SetText</var>). Updates an internal flag if the
caption is stored (<var>IsCaptionStored</var>).
</p>
<p>
By default, the <var>Caption</var> appears the same as the control
<var>Name</var> in the Object Inspector, and the developer needs to set it
explicitly to some new text.
</p>
<p>
The VCL implementation relies on the virtual <var>Get/SetTextBuf</var> to
exchange text between widgets and VCL. This means a lot of (unnecessary) text
copies.
</p>
<p>
The LCL uses strings for exchanging text (more efficient). To maintain VCL
compatibility, the virtual <var>RealGet/SetText</var> is introduced. These
functions interface with the LCLInterface.
</p>
<p>
The default <var>Get/SetTextBuf</var> implementation calls the
<var>RealGet/SetText</var>. As long as the <var>Get/SetTextBuf</var> isn't
overridden <var>Get/SetText</var> calls <var>RealGet/SetText</var> to avoid
PChar copying.
</p>
<p>
To keep things optimal, LCL implementations should always override
RealGet/SetText. Get/SetTextBuf is only kept for compatibility.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Caption">TControl.Caption</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.Color" name="TDBCheckBox.Color"/>
<element link="#lcl.controls.TControl.Constraints" name="TDBCheckBox.Constraints"/>
<element name="TDBCheckBox.DataField">
<short>
The name (as a string) of the field with which the check box is to be
associated.
</short>
<descr>
<p>
<var>DataField</var> is a <var>String</var> property which specifies the name
of the field in the linked dataset where the value for the data-aware control
is stored. Read and write access to the property value is redirected to the
<var>FieldName</var> property in the internal <var>TFieldDataLink</var>
instance used in the class.
</p>
<p>
The field can use either a <var>Boolean</var> or a <var>String</var> data
type. For a String field type, use either the <var>ValueChecked</var> or
<var>ValueUnchecked</var> property to define the value stored in the dataset
for the corresponding control <var>State</var>.
</p>
<p>
Use <var>DataSource</var> to specify the linked dataset for the data-aware
control.
</p>
<p>
Use <var>Checked</var> to read or write the control state (and the value for
the field) as a Boolean data type.
</p>
</descr>
<seealso>
<link id="TDBCheckBox.State"/>
<link id="TDBCheckBox.Checked"/>
<link id="TDBCheckBox.DataSource"/>
<link id="TDBCheckBox.ValueChecked"/>
<link id="TDBCheckBox.ValueUnchecked"/>
<link id="TFieldDataLink.FieldName"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
</seealso>
</element>
<element name="TDBCheckBox.DataSource">
<short>
Provides access to the dataset with content for the control.
</short>
<descr>
<p>
<var>DataSource</var> is a <var>TDataSource</var> property which provides
access to the content for the data-aware control. DataSource is used in
conjunction with the
<var>Field</var> property to determine the dataset and field definition used
when reading the value for the control.
</p>
<p>
Read and write access to the property value is redirected to the DataSource
property in the internal <var>TFieldDataLink</var> instance used in the
control. Assigning a new value at run-time to the property causes the
<var>ChangeDataSource</var> routine to be called to apply the value to the
internal TFieldDataLink instance.
</p>
<p>
Use the <var>DataField</var> property to specify the field name accessed in
the linked dataset.
</p>
</descr>
<seealso/>
</element>
<element link="#lcl.controls.TWinControl.DoubleBuffered" name="TDBCheckBox.DoubleBuffered"/>
<element link="#lcl.controls.TControl.DragCursor" name="TDBCheckBox.DragCursor"/>
<element link="#lcl.controls.TControl.DragKind" name="TDBCheckBox.DragKind"/>
<element link="#lcl.controls.TControl.DragMode" name="TDBCheckBox.DragMode"/>
<element link="#lcl.controls.TControl.Enabled" name="TDBCheckBox.Enabled"/>
<element link="#lcl.controls.TControl.Font" name="TDBCheckBox.Font"/>
<element link="#lcl.controls.TControl.Hint" name="TDBCheckBox.Hint"/>
<element link="#lcl.stdctrls.TButtonControl.OnChange" name="TDBCheckBox.OnChange"/>
<element link="#lcl.controls.TControl.OnClick" name="TDBCheckBox.OnClick"/>
<element name="TDBCheckBox.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element link="#lcl.controls.TControl.OnDragDrop" name="TDBCheckBox.OnDragDrop"/>
<element link="#lcl.controls.TControl.OnDragOver" name="TDBCheckBox.OnDragOver"/>
<element link="#lcl.controls.TControl.OnEndDrag" name="TDBCheckBox.OnEndDrag"/>
<element link="#lcl.controls.TWinControl.OnEnter" name="TDBCheckBox.OnEnter"/>
<element link="#lcl.controls.TWinControl.OnExit" name="TDBCheckBox.OnExit"/>
<element link="#lcl.controls.TControl.OnMouseDown" name="TDBCheckBox.OnMouseDown"/>
<element link="#lcl.controls.TControl.OnMouseEnter" name="TDBCheckBox.OnMouseEnter"/>
<element link="#lcl.controls.TControl.OnMouseLeave" name="TDBCheckBox.OnMouseLeave"/>
<element link="#lcl.controls.TControl.OnMouseMove" name="TDBCheckBox.OnMouseMove"/>
<element link="#lcl.controls.TControl.OnMouseUp" name="TDBCheckBox.OnMouseUp"/>
<element link="#lcl.controls.TControl.OnMouseWheel" name="TDBCheckBox.OnMouseWheel"/>
<element link="#lcl.controls.TControl.OnMouseWheelDown" name="TDBCheckBox.OnMouseWheelDown"/>
<element link="#lcl.controls.TControl.OnMouseWheelUp" name="TDBCheckBox.OnMouseWheelUp"/>
<element link="#lcl.controls.TControl.OnStartDrag" name="TDBCheckBox.OnStartDrag"/>
<element link="#lcl.controls.TControl.ParentShowHint" name="TDBCheckBox.ParentShowHint"/>
<element link="#lcl.controls.TControl.ParentBiDiMode" name="TDBCheckBox.ParentBiDiMode"/>
<element link="#lcl.controls.TControl.ParentColor" name="TDBCheckBox.ParentColor"/>
<element link="#lcl.controls.TWinControl.ParentDoubleBuffered" name="TDBCheckBox.ParentDoubleBuffered"/>
<element link="#lcl.controls.TControl.ParentFont" name="TDBCheckBox.ParentFont"/>
<element link="#lcl.controls.TControl.ParentShowHint" name="TDBCheckBox.ParentShowHint"/>
<element link="#lcl.controls.TControl.PopupMenu" name="TDBCheckBox.PopupMenu"/>
<element name="TDBCheckBox.ReadOnly">
<short>
<var>ReadOnly</var> - if <b>True</b>, data may be read but not written or
modified (doesn't make much sense for a check-box unless the box is
<b>not</b> Enabled).
</short>
<descr/>
<seealso/>
</element>
<element link="#lcl.controls.TControl.ShowHint" name="TDBCheckBox.ShowHint"/>
<element link="#lcl.controls.TWinControl.TabOrder" name="TDBCheckBox.TabOrder"/>
<element link="#lcl.controls.TWinControl.TabStop" name="TDBCheckBox.TabStop"/>
<element name="TDBCheckBox.ValueChecked">
<short>
String representation for the check box value when the control is in its
checked state.
</short>
<descr>
<p>
<var>ValueChecked</var> is a <var>String</var> property with the value for
the control when its State property contains the value cbChecked (or Checked
is set to <b>True</b>). It is the string representation for the boolean
value, like: 'True', '1', or -1'.
</p>
<p>
The default value for the property is assigned in the constructor, and
contains the value returned from BoolToStr(True). Changing the value for the
property causes the DataChange method to be called. This updates the control
State after the new property value has been assigned to its member.
</p>
<p>
ValueChecked is not written using the LCL resource streaming mechanism if a
non-default value has not been explicitly assigned to the property.
</p>
<p>
ValueChecked is used in the GetFieldCheckState method when the control is
linked to a field that is not a Boolean field type. It provides the value
which is compared to the field value to determine the checked State for the
control.
</p>
<p>
ValueChecked is also used in the UpdateData method when the control is linked
to field that is not a Boolean field type. It provides the value that is
stored in the field when the Checked property is <b>True</b> (State is
cbChecked).
</p>
<p>
Use ValueUnchecked to specify the string used for the unchecked state in the
control.
</p>
</descr>
<version>
Modified in version 3.0 to include the storage specifier for the property
value.
</version>
<seealso>
<link id="TDBCheckBox.Create"/>
<link id="TDBCheckBox.State"/>
<link id="TDBCheckBox.GetFieldCheckState"/>
<link id="TDBCheckBox.DataChange"/>
<link id="TDBCheckBox.UpdateData"/>
<link id="TDBCheckBox.ValueUnchecked"/>
<link id="#rtl.sysutils.BoolToStr">SysUtils.BoolToStr</link>
<link id="#rtl.sysutils.TrueBoolStrs">SysUtils.TrueBoolStrs</link>
</seealso>
</element>
<element name="TDBCheckBox.ValueUnchecked">
<short>
String representation for the check box value when the control is in its
unchecked state.
</short>
<descr>
<p>
<var>ValueUnchecked</var> is a <var>String</var> property with the value for
the control when its State property contains the value cbUnchecked (or
Checked is set to <b>False</b>). It is the string representation for the
boolean value, like: 'False' or '0'.
</p>
<p>
The default value for the property is assigned in the constructor, and
contains the value returned from BoolToStr(False). Changing the value for the
property causes the DataChange method to be called. This updates the control
State after the new property value has been assigned to its member.
</p>
<p>
ValueUnchecked is not written using the LCL resource streaming mechanism if a
non-default value has not been explicitly assigned to the property.
</p>
<p>
ValueUnchecked is used in the GetFieldCheckState method when the control is
linked to a field that is not a Boolean field type. It provides the value
which is compared to the field value to determine the checked State for the
control.
</p>
<p>
ValueUnchecked is also used in the UpdateData method when the control is
linked to field that is not a Boolean field type. It provides the value that
is stored in the field when the Checked property is <b>False</b> (State is
cbUnchecked).
</p>
<remark>
The property value is not included in the LCL resource streaming mechanism if
a non-default value has not been explicitly assigned to the property.
</remark>
<p>
Use ValueChecked to specify the string used for the checked state in the
control.
</p>
</descr>
<version>
Modified in version 3.0 to include the storage specifier for the property
value.
</version>
<seealso>
<link id="TDBCheckBox.Create"/>
<link id="TDBCheckBox.State"/>
<link id="TDBCheckBox.GetFieldCheckState"/>
<link id="TDBCheckBox.DataChange"/>
<link id="TDBCheckBox.UpdateData"/>
<link id="TDBCheckBox.ValueChecked"/>
<link id="#rtl.sysutils.BoolToStr">SysUtils.BoolToStr</link>
<link id="#rtl.sysutils.TrueBoolStrs">SysUtils.TrueBoolStrs</link>
</seealso>
</element>
<element name="TDBCheckBox.Visible">
<short>
Indicates if the control is visible on its parent.
</short>
<descr>
<p>
The Visible property represents the ability to see a visual control. If
Visible is <b>True</b> the control is shown, otherwise it is hidden. Calling
Show sets, among others, Visible to <b>True</b>. Setting Visible to
<b>False</b> is equivalent to calling Hide method.
</p>
<remark>
The Visible property does not depend on control's parent visibility. Use
IsVisible method to consider this and get real visibility.
</remark>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Visible">TControl.Visible</link>
</seealso>
</element>
<element name="TCustomDBComboBox">
<short>
<var>TCustomDBComboBox</var> is a data-aware combo-box for displaying
information from a database.
</short>
<descr>
<p>
<var>TCustomDBComboBox</var> is a <var>TCustomComboBox</var> descendant which
specifies a data-aware combo-box control used to display and edit values in a
database table. TCustomDBComboBox extends the ancestor class to provide
<var>DataField</var>, <var>DataSource</var>, and <var>Field</var> properties
needed to control access to the field in a linked dataset.
</p>
<p>
Methods are provided which enable the database features for the control, and
maintain the interaction between the control and the underlying dataset.
Internally, a <var>TFieldDataLink</var> class instance is used to maintain
the association between the control and it data source and field.
</p>
<p>
TCustomDBComboBox is used as the ancestor for the <var>TDBComboBox</var> and
<var>TDBLookupComboBox</var> controls. Do not create instances of
TCustomDBComboBox; use one of the descendent classes.
</p>
</descr>
<seealso>
<link id="TDBComboBox"/>
<link id="TDBLookupComboBox"/>
<link id="#lcl.stdctrls.TCustomComboBox">TCustomComboBox</link>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
</seealso>
</element>
<element name="TCustomDBComboBox.FDataLink"/>
<element name="TCustomDBComboBox.FDetectedEvents"/>
<element name="TCustomDBComboBox.GetDataField">
<short>Gets the value for the DataField property.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomDBComboBox.GetDataField.Result">
<short>Value for the DataField property.</short>
</element>
<element name="TCustomDBComboBox.GetDataSource">
<short>Gets the value for the DataSource property.</short>
<descr>
<p>
<var>GetDataSource</var> is a <var>TDataSource</var> function used to get the
value for the <var>DataSource</var> property.
</p>
</descr>
<seealso>
<link id="TCustomDBComboBox.DataSource"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
</seealso>
</element>
<element name="TCustomDBComboBox.GetDataSource.Result">
<short>Value for the DataSource property.</short>
</element>
<element name="TCustomDBComboBox.GetField">
<short>Gets the value for the Field property.</short>
<descr>
<p>
<var>GetField</var> is a <var>TField</var> function used to get the value for
the
<var>Field</var> property.
</p>
</descr>
<seealso>
<link id="TCustomDBComboBox.Field"/>
<link id="#fcl.db.TField">TField</link>
</seealso>
</element>
<element name="TCustomDBComboBox.GetField.Result">
<short>Value for the Field property.</short>
</element>
<element name="TCustomDBComboBox.GetReadOnly">
<short>Gets the value for the ReadOnly property.</short>
<descr/>
<seealso>
<link id="TCustomDBComboBox.ReadOnly"/>
</seealso>
</element>
<element name="TCustomDBComboBox.GetReadOnly.Result">
<short>Value for the ReadOnly property.</short>
</element>
<element name="TCustomDBComboBox.SetDataField">
<short>Sets the value for the DataField property.</short>
<descr/>
<seealso>
<link id="TCustomDBComboBox.DataField"/>
</seealso>
</element>
<element name="TCustomDBComboBox.SetDataField.AValue">
<short>New value for the DataField property.</short>
</element>
<element name="TCustomDBComboBox.SetDataSource">
<short>Sets the value for the DataSource property.</short>
<descr/>
<seealso>
<link id="TCustomDBComboBox.DataSource"/>
</seealso>
</element>
<element name="TCustomDBComboBox.SetDataSource.AValue">
<short>New value for the DataSource property.</short>
</element>
<element name="TCustomDBComboBox.SetReadOnly">
<short>Sets the value for the ReadOnly property.</short>
<descr/>
<seealso>
<link id="TCustomDBComboBox.ReadOnly"/>
</seealso>
</element>
<element name="TCustomDBComboBox.SetReadOnly.AValue">
<short>New value for the ReadOnly property.</short>
</element>
<element name="TCustomDBComboBox.CMGetDataLink">
<short>
Implements the message to get the data link for the control.
</short>
<descr/>
<seealso/>
</element>
<element name="TCustomDBComboBox.CMGetDataLink.Message">
<short>Control message updated in the the method.</short>
</element>
<element name="TCustomDBComboBox.DoEdit">
<short>
Performs LCL deferred edit messages for events detected in the control.
</short>
<descr/>
<seealso/>
</element>
<element name="TCustomDBComboBox.DoEdit.Result">
<short><b>True</b> if the field was edited in the linked data set.</short>
</element>
<element name="TCustomDBComboBox.DoOnCloseUp">
<short>Performs actions to close the drop down for the combo-box.</short>
<descr/>
<seealso>
<link id="TCustomDBComboBox.CloseUp"/>
<link id="TCustomComboBox.OnCloseUp"/>
<link id="TCustomDBComboBox.Text"/>
<link id="TCustomComboBox.AutoSelect"/>
<link id="TCustomComboBox.AutoSelected"/>
<link id="TCustomComboBox.SelectAll"/>
<link id="TCustomComboBox.SelText"/>
</seealso>
</element>
<element name="TCustomDBComboBox.DoOnSelect">
<short>Calls Select to trigger the OnSelect event handler.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomDBComboBox.DoOnChange">
<short>Calls Change to trigger the OnChange event handler.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomDBComboBox.LMDeferredEdit">
<short>Implements the LCL message for a deferred edit.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomDBComboBox.LMDeferredEdit.Message">
<short>Message handled in the method.</short>
</element>
<element name="TCustomDBComboBox.DetectedEvents">
<short>Deferred messages pending for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomDBComboBox.CloseUp">
<short>
Sets deferred events when the drop down for the combo-box is closed.
</short>
<descr/>
<seealso/>
</element>
<element name="TCustomDBComboBox.Select">
<short>Checks for the DBCBEVENT_SELECT message in the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomDBComboBox.DataChange">
<short>
<var>DataChange</var> - updates any changes in text.
</short>
<descr>
<p>
<var>DataChange</var> is an abstract virtual method in
<var>TCustomDBComboBox</var>. It must be implemented in a descendent class to
perform the actions needed for the data-aware control.
</p>
</descr>
</element>
<element name="TCustomDBComboBox.DoMouseWheel">
<short>Checks for mouse wheel events in the control.</short>
<descr/>
<seealso/>
</element>
<element name="TCustomDBComboBox.DoMouseWheel.Shift">
<short>Shift state for the mouse wheel event.</short>
</element>
<element name="TCustomDBComboBox.DoMouseWheel.WheelDelta">
<short>Number of clicks that the mouse wheel was moved.</short>
</element>
<element name="TCustomDBComboBox.DoMouseWheel.MousePos">
<short>Mouse cursor position for the mouse wheel event.</short>
</element>
<element name="TCustomDBComboBox.Notification" link="#lcl.controls.TControl.Notification"/>
<element name="TCustomDBComboBox.Change">
<short>
<var>Change</var> -if there has been a change to the data the link must be
notified.
</short>
<descr>
<p>
<var>Change</var> is an overridden method in <var>TCustomDBComboBox</var>. It
ensures that the internal data link for the control is notified when the
value for the control is changed. This includes posting the DBCBEVENT_CHANGE
deferred event message to the handle for the control.
</p>
<remark>
Change does not call the inherited method directly.
</remark>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomComboBox.Change">TCustomComboBox.Change</link>
</seealso>
</element>
<element name="TCustomDBComboBox.KeyDown">
<short>Performs actions needed to apply the key down event.</short>
<descr>
<p>
<var>KeyDown</var> is an overridden method in <var>TCustomDBComboBox</var>,
and calls the inherited method on entry. It ensures that a virtual key which
affects the datasource state is applied to the control. KeyDown handles the
following virtual key codes:
</p>
<dl>
<dt>VK_ESCAPE</dt>
<dd>
Editing is cancelled. Calls the Cancel method in the linked dataset when the
datasource is in an edit state. Calls the Reset method for the data link if
the datasource is not being edited. Calls SelectAll to re-select content in
the control. Sets Key to VK_UNKNOWN after applying the original virtual key
code.
</dd>
</dl>
</descr>
<seealso>
<link id="TFieldDataLink.Reset"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
<link id="#fcl.db.TDataSet.Cancel">TDataSet.Cancel</link>
<link id="#lcl.stdctrls.TCustomComboBox.KeyDown">TCustomComboBox.KeyDown</link>
</seealso>
</element>
<element name="TCustomDBComboBox.KeyDown.Key">
<short>Virtual key code handled in the method.</short>
</element>
<element name="TCustomDBComboBox.KeyDown.Shift">
<short>Key modifier handled in the method.</short>
</element>
<element name="TCustomDBComboBox.UpdateData">
<short>
<var>UpdateData</var> - implements any pending changes in the data.</short>
<descr>
<p>
<var>UpdateData</var> is an abstract virtual method in
<var>TCustomDBComboBox</var>. It must be implemented in descendent classes,
like TDBComboBox or TDBLookComboBox, to perform any actions needed to update
the value stored in the Field for the control.
</p>
</descr>
<seealso>
<link id="TDBComboBox.UpdateData"/>
<link id="TDBLookUpComboBox.UpdateData"/>
</seealso>
</element>
<element name="TCustomDBComboBox.UpdateRecord">
<short>
Updates the record in the linked dataset with the value for the control.
</short>
<descr>
<p>
<var>UpdateRecord</var> is a procedure used to update the record in the
linked dataset with the value for the control. UpdateRecord uses the internal
<var>TFieldDataLink</var> instance to checking the editing state for the
control. When both <var>Editing</var> and <var>IsModified</var> are
<b>True</b>, the <var>UpdateRecord</var> method in the data link is called.
No actions are performed in the method if either condition is not met.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Editing"/>
<link id="#fcl.db.TDataLink.UpdateRecord">TDataLink.UpdateRecord</link>
</seealso>
</element>
<element name="TCustomDBComboBox.WndProc">
<short>Handles cut, copy and paste window messages for the control.
</short>
<descr>
<p>
<var>WndProc</var> is an overridden method in <var>TCustomDBComboBox</var>.
WndProc ensures that LCL Cut, Copy, and Paste window messages are applied
when both the control and the dataset can be modified. WndProc uses the
internal <var>TFieldDataLink</var> instance to examine the value in
<var>CanModify</var>. When it is <b>True</b>, the inherited method is called.
Otherwise, the Message result is set to 1 to prevent calling the default
window process.
</p>
<p>
The inherited method is called for LCL window messages other than Cut, Copy,
and Paste.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.CanModify"/>
<link id="#lcl.controls.TWinControl.WndProc">TWinControl.WndProc</link>
</seealso>
</element>
<element name="TCustomDBComboBox.WndProc.Message">
<short>LCL window message examined in the method.</short>
</element>
<element name="TCustomDBComboBox.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 allocates and configures the
internal <var>TFieldDataLink</var> instance used in the control. Its
<var>OnDataChange</var> and <var>OnUpdateData</var> event handlers are set to
the <var>DataChange</var> and
<var>UpdateData</var> methods (respectively). Create sets the value used in
<var>ControlStyle</var>.
</p>
</descr>
<seealso>
<link id="TCustomDBComboBox.DataChange"/>
<link id="TCustomDBComboBox.UpdateData"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="TFieldDataLink.OnUpdateData"/>
<link id="#lcl.controls.TControl.ControlStyle">TControl.ControlStyle</link>
</seealso>
</element>
<element name="TCustomDBComboBox.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TCustomDBComboBox.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance.
Destroy ensures that the internal <var>TFieldDataLink</var> instance for the
class is freed prior to calling the inherited destructor.
</p>
</descr>
<seealso>
<link id="TFieldDataLink"/>
<link id="#lcl.stdctrls.TCustomComboBox.Destroy">TCustomComboBox.Destroy</link>
</seealso>
</element>
<element name="TCustomDBComboBox.ExecuteAction">
<short>Provides support for TBasicAction in the control.</short>
<descr>
<p>
<var>ExecuteAction</var> is an overridden method in
<var>TCustomDBComboBox</var>. It calls the inherited method, and when the
action is not handled in the ancestor, executes <var>AAction</var> using the
<var>ExecuteAction</var> method in the internal <var>TFieldDataLink</var>
instance in the class.
</p>
<p>
The return value is <b>True</b> if the action was executed in the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.ExecuteAction">TComponent.ExecuteAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TCustomDBComboBox.ExecuteAction.AAction">
<short>Action examined and executed in the method.</short>
</element>
<element name="TCustomDBComboBox.ExecuteAction.Result">
<short><b>True</b> if the action was executed in the method.</short>
</element>
<element name="TCustomDBComboBox.UpdateAction">
<short>
Updates the specified action to reflect the current state in the linked
dataset.
</short>
<descr>
<p>
<var>UpdateAction</var> is an overridden <var>Boolean</var> function in
<var>TDBEdit</var>. UpdateAction is called when the <var>Application</var>
enters an idle state to ensure that the action reflects the current state for
a linked dataset.
</p>
<p>
<var>AAction</var> is the <var>TBasicAction</var> updated in the method.
</p>
<p>
UpdateAction calls the inherited method, and when the internal dataset link
has been assigned, executes its UpdateAction method. The return value is
<b>True</b> when AAction is updated using either the inherited method, or the
method in the linked dataset. The return value is <b>False</b> when AAction
could not be updated in the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
<link id="#fcl.db.TDataLink.UpdateAction">TDataLink.UpdateAction</link>
<link id="#rtl.classes.TComponent.UpdateAction">TComponent.UpdateAction</link>
</seealso>
</element>
<element name="TCustomDBComboBox.UpdateAction.AAction">
<short>Action examined and updated in the method.</short>
</element>
<element name="TCustomDBComboBox.UpdateAction.Result">
<short><b>True</b> when the action was updated in the method.</short>
</element>
<element name="TCustomDBComboBox.EditingDone">
<short>
Updates data through the link, then calls inherited <var>EditingDone</var>.
</short>
<descr>
<p>
<var>EditingDone</var> is an overridden method used to perform actions needed
when the control has finished editing its value. EditingDone calls
<var>UpdateRecord</var> to post the modified control value to the Field in
the linked dataset. EditingDone calls the inherited method to signal the
<var>OnEditingDone</var> event handler prior to exit.
</p>
<p>
EditingDone is called in the implementation of the CloseUp and KeyDown
methods.
</p>
</descr>
<seealso>
<link id="TCustomDBComboBox.UpdateRecord"/>
<link id="#lcl.stdctrls.TCustomComboBox.CloseUp">TCustomComboBox.CloseUp</link>
<link id="#lcl.stdctrls.TCustomComboBox.KeyDown">TCustomComboBox.KeyDown</link>
<link id="#lcl.controls.TControl.EditingDone">TControl.EditingDone</link>
</seealso>
</element>
<element name="TCustomDBComboBox.Field">
<short>
Contains the field definition from the linked dataset.
</short>
<descr>
<p>
<var>Field</var> is a read-only <var>TField</var> property which contains the
definition for the field in the linked dataset where the value for the
control is stored. Read access for the property value is redirected to the
Field property in the internal <var>TFieldDataLink</var> instance used in the
class.
</p>
<p>
The value in Field is updated when the <var>UpdateField</var> method in
TFieldDataLink is called after setting the <var>DataField</var> for the
control.
</p>
</descr>
<seealso>
<link id="TCustomDBComboBox.DataField"/>
<link id="TFieldDataLink.Field"/>
<link id="#fcl.db.TField">TField</link>
</seealso>
</element>
<element link="#lcl.stdctrls.TCustomComboBox.Text" name="TCustomDBComboBox.Text"/>
<element link="#lcl.stdctrls.TCustomComboBox.ItemIndex" name="TCustomDBComboBox.ItemIndex"/>
<element name="TCustomDBComboBox.DataField">
<short>
The name of the Field which provides the values displayed in the control.
</short>
<descr>
<p>
<var>DataField</var> is a <var>String</var> property which contains the name
for the field in the linked dataset where the value for the control is read
and written. Read and write access to the property value are redirected to
the <var>FieldName</var> property in the internal <var>TFieldDataLink</var>
instance for the control. Changing the value in DataField causes the value in
<var>Field</var> to be updated.
</p>
<p>
Set the value in <var>DataSource</var> to the component which provides access
to the dataset for the data-aware control.
</p>
</descr>
<seealso>
<link id="TCustomDBComboBox.DataSource"/>
<link id="TCustomDBComboBox.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.Field"/>
<link id="#fcl.db.TDataLink.Dataset">TDataLink.Dataset</link>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
</seealso>
</element>
<element name="TCustomDBComboBox.DataSource">
<short>Provides access to the dataset with content for the control.</short>
<descr>
<p>
<var>DataSource</var> is a <var>TDataSource</var> property which provides
access to the content for the data-aware control. DataSource is used in
conjunction with the
<var>Field</var> property to determine the dataset and field definition used
when reading the value for the control.
</p>
<p>
Read and write access to the property value is redirected to the DataSource
property in the internal <var>TFieldDataLink</var> instance used in the
control. Assigning a new value to the property causes the
<var>ChangeDataSource</var> routine to be called to apply the value to the
internal TFieldDataLink instance.
</p>
<p>
Use the <var>DataField</var> property to specify the field name accessed in
the linked dataset.
</p>
</descr>
<seealso>
<link id="TCustomDBComboBox.DataField"/>
<link id="TFieldDataLink.FieldName"/>
<link id="ChangeDataSource"/>
<link id="#fcl.db.TDataSource">TDataSource</link>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
</seealso>
</element>
<element name="TCustomDBComboBox.ReadOnly">
<short>
Indicates if the control is prevented from changing the field value in its
linked dataset.
</short>
<descr>
<p>
<var>ReadOnly</var> is a <var>Boolean</var> property which indicates if the
control cannot modify its <var>DataField</var> in the linked dataset. When
set to <b>True</b>, the underlying field value cannot be modified using the
control.
</p>
<p>
Read and write access for the property value are redirected to the ReadOnly
property in the TFieldDataLink instance used in the control.
</p>
<remark>
A value assigned to ReadOnly may be overridden by the Field definition from
the target database table.
</remark>
</descr>
<seealso>
<link id="TCustomDBComboBox.DataField"/>
<link id="TCustomDBComboBox.DataSource"/>
<link id="TCustomDBComboBox.Field"/>
<link id="TFieldDataLink.Field"/>
<link id="#fcl.db.TDataLink.ReadOnly">TDataLink.ReadOnly</link>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
</seealso>
</element>
<element name="TDBComboBox">
<short>
<var>TDBComboBox</var> is a data-aware version of <var>TComboBox</var> which
allows selection of a value from a list of entries into a database field.
</short>
<descr>
<p>
<var>TDBComboBox</var> has properties similar to <var>TComboBox</var> and
<var>TCustomComboBox</var>. It consists of an Edit Box which is the
Data-aware part of the component, and a drop-down list box.
</p>
<p>
In a typical application a user would be presented with the drop-down list,
would make a selection and then this would appear in the edit box and become
the data value for that cell in the database.
</p>
<p>
As an example, a list of countries might be presented, and the selected value
from the list would be used to populate the appropriate field ('Country') in
that record of the database.
</p>
</descr>
<seealso>
<link id="TCustomDBComboBox"/>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
</seealso>
</element>
<element name="TDBComboBox.DataChange">
<short>
<var>DataChange</var> - updates the text if it has changed.
</short>
<descr>
<p>
<var>DataChange</var> is an overridden method used to perform actions needed
when the value in the linked dataset has been changed. DataChange uses the
<var>Field</var> property from the data link (when assigned) to get the
current value stored in the <var>Text</var> property for the control. If
Field has not been assigned, or the dataset is not active, the value in Text
is set to an empty string <b>('')</b>.
</p>
<p>
DataChange is assigned as the <var>OnDataChange</var> event handler in the
internal <var>TFieldDataLink</var> instance used in the control.
</p>
</descr>
<seealso>
<link id="TCustomDBComboBox.Text"/>
<link id="TCustomDBComboBox.Field"/>
<link id="TCustomDBComboBox.DataChange"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="#fcl.db.TField">TField</link>
</seealso>
</element>
<element name="TDBComboBox.DataChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBComboBox.KeyPress">
<short>Applies standard keystrokes to the control.</short>
<descr>
<p>
<var>KeyPress</var> is an overridden method used to apply standard keystrokes
to the data-aware control. KeyPress calls the inherited method to process the
keystroke character in <var>Key</var>. If the key is not handled in the
ancestor, and is in the range #32..#255, it can be potentially applied to the
<var>Field</var> in the linked dataset. FieldCanAcceptKey, in the
implementation section, is called to to determine if the keystroke can be
used and applied to the field type. When valid for the field, Key is set to
#0 to suppress further processing of the keystroke.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Field"/>
<link id="#fcl.db.TField">TField</link>
<link id="#lcl.controls.TWinControl.KeyPress">TWinControl.KeyPress</link>
</seealso>
</element>
<element name="TDBComboBox.KeyPress.Key">
<short>Keystroke character examined in the method.</short>
</element>
<element name="TDBComboBox.UpdateData">
<short>
Applies the changed value for the control to the field in its linked dataset.
</short>
<descr>
<p>
<var>UpdateData</var> is an overridden method which implements the abstract
virtual method defined in <var>TCustomDBComboBox</var>. UpdateData is used to
applying pending changes in the control value to the field in the linked
dataset. The value in the Text property for the control is stored to the
Field defined in the internal TFieldDataLink instance in the class.
</p>
<p>
UpdateData is assigned as the OnUpdateData event handler in the internal
TFieldDataLink instance used in the control.
</p>
</descr>
<seealso>
<link id="TCustomDBComboBox.UpdateData"/>
<link id="TCustomDBComboBox.Text"/>
<link id="TFieldDataLink.OnUpdateData"/>
</seealso>
</element>
<element name="TDBComboBox.UpdateData.Sender">
<short>Object for the event notification.</short>
</element>
<element link="#lcl.controls.TControl.Align" name="TDBComboBox.Align"/>
<element link="#lcl.controls.TControl.Anchors" name="TDBComboBox.Anchors"/>
<element link="#lcl.stdctrls.TCustomComboBox.ArrowKeysTraverseList" name="TDBComboBox.ArrowKeysTraverseList"/>
<element link="#lcl.stdctrls.TCustomComboBox.AutoComplete" name="TDBComboBox.AutoComplete"/>
<element link="#lcl.stdctrls.TCustomComboBox.AutoCompleteText" name="TDBComboBox.AutoCompleteText"/>
<element name="TDBComboBox.AutoDropDown">
<short>
Indicates if the drop-down is automatically displayed when the control gets
the input focus.
</short>
<descr>
<p>
<var>AutoDropDown</var> indicates whether the drop-down list for the control
appears as soon as the control receives the input focus. When set to
<b>False</b>, the drop-down list appears when the downward triangular glyph
for the control is clicked. The default value for the property is
<b>False</b>.
</p>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomComboBox.AutoDropDown">TCustomComboBox.AutoDropDown</link>
</seealso>
</element>
<element link="#lcl.stdctrls.TCustomComboBox.AutoSelect" name="TDBComboBox.AutoSelect"/>
<element link="#lcl.controls.TControl.AutoSize" name="TDBComboBox.AutoSize"/>
<element link="#lcl.controls.TControl.BiDiMode" name="TDBComboBox.BiDiMode"/>
<element link="#lcl.controls.TControl.BorderSpacing" name="TDBComboBox.BorderSpacing"/>
<element link="#lcl.controls.TWinControl.BorderStyle" name="TDBComboBox.BorderStyle"/>
<element link="#lcl.stdctrls.TCustomComboBox.CharCase" name="TDBComboBox.CharCase"/>
<element link="#lcl.controls.TControl.Color" name="TDBComboBox.Color"/>
<element link="#lcl.controls.TControl.Constraints" name="TDBComboBox.Constraints"/>
<element link="#lcl.dbctrls.TCustomDBComboBox.DataField" name="TDBComboBox.DataField"/>
<element link="#lcl.dbctrls.TCustomDBComboBox.DataSource" name="TDBComboBox.DataSource"/>
<element link="#lcl.controls.TWinControl.DoubleBuffered" name="TDBComboBox.DoubleBuffered"/>
<element link="#lcl.controls.TControl.DragCursor" name="TDBComboBox.DragCursor"/>
<element link="#lcl.controls.TControl.DragKind" name="TDBComboBox.DragKind"/>
<element link="#lcl.controls.TControl.DragMode" name="TDBComboBox.DragMode"/>
<element link="#lcl.stdctrls.TCustomComboBox.DropDownCount" name="TDBComboBox.DropDownCount"/>
<element link="#lcl.controls.TControl.Enabled" name="TDBComboBox.Enabled"/>
<element link="#lcl.controls.TControl.Font" name="TDBComboBox.Font"/>
<element link="#lcl.stdctrls.TCustomComboBox.ItemHeight" name="TDBComboBox.ItemHeight"/>
<element link="#lcl.stdctrls.TCustomComboBox.Items" name="TDBComboBox.Items"/>
<element link="#lcl.stdctrls.TCustomComboBox.ItemWidth" name="TDBComboBox.ItemWidth"/>
<element name="TDBComboBox.MaxLength">
<short>
The maximum length for text entered in the edit box for the control.
</short>
<descr>
<p>
<var>MaxLength</var> is an <var>Integer</var> property which contains the
maximum length for a value entered in the Text for the control. It controls
the number of characters allowed in the edit box, but does not limit the
length of the value that can be directly assigned to Text. MaxLength is
passed to and read from the widgetset class when a handle has been assigned
for the control.
</p>
<p>
The default value for the property is -1 in TDBComboBox, and forces the
widgetset class to update its value for the property. Setting the value for
the property does not alter the existing value in Text.
</p>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomComboBox.MaxLength">TCustomComboBox.MaxLength</link>
</seealso>
</element>
<element link="#lcl.stdctrls.TCustomComboBox.OnChange" name="TDBComboBox.OnChange"/>
<element link="#lcl.controls.TControl.OnChangeBounds" name="TDBComboBox.OnChangeBounds"/>
<element link="#lcl.controls.TControl.OnClick" name="TDBComboBox.OnClick"/>
<element name="TDBComboBox.OnCloseUp" link="#lcl.stdctrls.TCustomComboBox.OnCloseUp"/>
<element name="TDBComboBox.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element link="#lcl.controls.TControl.OnDblClick" name="TDBComboBox.OnDblClick"/>
<element link="#lcl.controls.TControl.OnDragDrop" name="TDBComboBox.OnDragDrop"/>
<element link="#lcl.controls.TControl.OnDragOver" name="TDBComboBox.OnDragOver"/>
<element link="#lcl.stdctrls.TCustomComboBox.OnDrawItem" name="TDBComboBox.OnDrawItem"/>
<element link="#lcl.stdctrls.TCustomComboBox.OnDropDown" name="TDBComboBox.OnDropDown"/>
<element link="#lcl.controls.TControl.OnEditingDone" name="TDBComboBox.OnEditingDone"/>
<element link="#lcl.controls.TControl.OnEndDrag" name="TDBComboBox.OnEndDrag"/>
<element link="#lcl.controls.TWinControl.OnEnter" name="TDBComboBox.OnEnter"/>
<element link="#lcl.controls.TWinControl.OnExit" name="TDBComboBox.OnExit"/>
<element name="TDBComboBox.OnKeyDown">
<short>
Event handler signalled when a key is down while the control has focus.
</short>
<descr>
<p>
<var>OnKeyDown</var> differs from <link
id="#lcl.controls.TWinControl.OnKeyPress">OnKeyPress</link> in that the key
may have already been down when the control received focus; with
<var>OnKeyPress</var> the key needs to become pressed while the control has
focus.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.OnKeyDown">TWinControl.OnKeyDown</link>
</seealso>
</element>
<element name="TDBComboBox.OnKeyPress">
<short>
Event handler signalled when a key is pressed while the control has focus.
</short>
<descr>
<p>
<var>OnKeyPress</var> differs from <link
id="#lcl.controls.TWinControl.OnKeyDown">OnKeyDown</link> in that the key
needs to become pressed while the control has focus; with
<var>OnKeyDown</var> the key may have already been down when the control
received focus.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.OnKeyPress">TWinControl.OnKeyPress</link>
</seealso>
</element>
<element name="TDBComboBox.OnKeyUp">
<short>
Event handler signalled when when a key is released while the control has
focus.
</short>
<descr>
<p>
In <var>OnKeyUp</var>, the key may already have been up when the control
received focus, or a pressed key may become released during the time the
control has focus.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.OnKeyUp">TWinControl.OnKeyUp</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.OnMouseDown" name="TDBComboBox.OnMouseDown"/>
<element link="#lcl.controls.TControl.OnMouseEnter" name="TDBComboBox.OnMouseEnter"/>
<element link="#lcl.controls.TControl.OnMouseLeave" name="TDBComboBox.OnMouseLeave"/>
<element link="#lcl.controls.TControl.OnMouseMove" name="TDBComboBox.OnMouseMove"/>
<element link="#lcl.controls.TControl.OnMouseUp" name="TDBComboBox.OnMouseUp"/>
<element link="#lcl.controls.TControl.OnMouseWheel" name="TDBComboBox.OnMouseWheel"/>
<element link="#lcl.controls.TControl.OnMouseWheelDown" name="TDBComboBox.OnMouseWheelDown"/>
<element link="#lcl.controls.TControl.OnMouseWheelUp" name="TDBComboBox.OnMouseWheelUp"/>
<element link="#lcl.stdctrls.TCustomComboBox.OnSelect" name="TDBComboBox.OnSelect"/>
<element link="#lcl.controls.TControl.OnStartDrag" name="TDBComboBox.OnStartDrag"/>
<element link="#lcl.controls.TWinControl.OnUTF8KeyPress" name="TDBComboBox.OnUTF8KeyPress"/>
<element link="#lcl.controls.TControl.ParentBiDiMode" name="TDBComboBox.ParentBiDiMode"/>
<element link="#lcl.controls.TControl.ParentColor" name="TDBComboBox.ParentColor"/>
<element link="#lcl.controls.TWinControl.ParentDoubleBuffered" name="TDBComboBox.ParentDoubleBuffered"/>
<element link="#lcl.controls.TControl.ParentFont" name="TDBComboBox.ParentFont"/>
<element link="#lcl.controls.TControl.ParentShowHint" name="TDBComboBox.ParentShowHint"/>
<element link="#lcl.controls.TControl.PopupMenu" name="TDBComboBox.PopupMenu"/>
<element link="#lcl.dbctrls.TCustomDBComboBox.ReadOnly" name="TDBComboBox.ReadOnly"/>
<element link="#lcl.controls.TControl.ShowHint" name="TDBComboBox.ShowHint"/>
<element link="#lcl.stdctrls.TCustomComboBox.Sorted" name="TDBComboBox.Sorted"/>
<element link="#lcl.stdctrls.TCustomComboBox.Style" name="TDBComboBox.Style"/>
<element link="#lcl.controls.TWinControl.TabOrder" name="TDBComboBox.TabOrder"/>
<element link="#lcl.controls.TWinControl.TabStop" name="TDBComboBox.TabStop"/>
<element name="TDBComboBox.Visible">
<short>Indicates if the control is visible on its parent.</short>
<descr>
<p>
The Visible property represents the ability to see a visual control. If
Visible is <b>True</b> the control is shown, otherwise it is hidden. Calling
Show sets, among others, Visible to <b>True</b>. Setting Visible to
<b>False</b> is equivalent to calling Hide method.
</p>
<p>
The Visible property does not depend on control's parent visibility. Use
IsVisible method to consider this and get real visibility.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Visible">TControl.Visible</link>
</seealso>
</element>
<element name="TDBLookupComboBox">
<short>
<var>TDBLookupComboBox</var> is a data-aware combo-box for examining a lookup
table in a database.
</short>
<descr>
<p>
<var>TDBLookupComboBox</var> is a <var>TCustomDBComboBox</var> descendant
which implements a data-aware combo-box control that adds lookup capabilities
using values from a separate dataset. Like the ancestor class, the
<var>DataField</var> and <var>DataSource</var> properties are used to
identify the dataset and field where the selected value for the control is
stored. The <var>ListSource</var>, <var>KeyField</var>, and
<var>ListField</var> properties are added to define the dataset with the
values displayed and captured using the drop down for the combo-box control.
Internally, a <var>TDBLookUp</var> instance is used to perform lookup
operations for the control.
</p>
<p>
Other important properties used to manage the behavior and appearance of the
control include:
</p>
<ul>
<li>AutoComplete</li>
<li>AutoDropDown</li>
<li>AutoSelect</li>
<li>NullValueKey</li>
<li>EmptyValue</li>
<li>DisplayEmpty</li>
<li>ScrollListDataset</li>
</ul>
</descr>
<seealso>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
<link id="TCustomDBComboBox"/>
<link id="TDBLookup"/>
</seealso>
</element>
<element name="TDBLookupComboBox.DefineProperties">
<short>
Defines read and write routines for properties values in the class instance.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBLookupComboBox.DefineProperties.Filer">
<short>
TFiler instance used to read and write properties during component streaming.
</short>
</element>
<element name="TDBLookupComboBox.DoEdit">
<short>
Implements support for the "unbound" editing mode in the data-aware control.
</short>
<descr/>
<seealso>
<link id="TCustomDBComboBox.DoEdit"/>
</seealso>
</element>
<element name="TDBLookupComboBox.DoEdit.Result">
<short><b>True</b> if the field was edited in the linked data set.</short>
</element>
<element name="TDBLookupComboBox.DoAutoCompleteSelect">
<short>
Ensures the internal TDBLookup instance is updated when the control is used
in "unbound" mode.
</short>
<descr>
<p>
<var>DoAutoCompleteSelect</var> is an overridden method in
<var>TDBLookComboBox</var> which re-implements the virtual method from the
ancestor class. It does not call the inherited method.
</p>
<p>
DoAutoCompleteSelect ensures that the dataset for the <var>ListSource</var>
is re-positioned when the value in <var>ItemIndex</var> has been changed.
This includes calling the <var>UpdateData</var> method for the internal
<var>TDBLookup</var> instance when the control is used in "unbound" mode
(without a <var>DataSource</var> or <var>DataField</var>).
</p>
<p>
DoAutoCompleteSelect is called when the <var>KeyUp</var> method handles an
alphanumeric key entered while the auto-complete feature has been enabled in
<var>AutoCompleteText</var>.
</p>
</descr>
<seealso>
<link id="TDBLookupComboBox.UpdateData"/>
<link id="TDBLookup.UpdateData"/>
<link id="#lcl.stdctrls.TCustomComboBox.DoAutoCompleteSelect">TCustomComboBox.DoAutoCompleteSelect</link>
<link id="#lcl.stdctrls.TCustomComboBox.AutoCompleteText">TCustomComboBox.AutoCompleteText</link>
</seealso>
</element>
<element name="TDBLookupComboBox.IsUnbound">
<short>
Indicates if the control lacks a datasource or field name ("unbound" mode).
</short>
<descr/>
<seealso/>
</element>
<element name="TDBLookupComboBox.IsUnbound.Result">
<short>
<b>True</b> if either DataSource or DataField are not assigned in the field
data link.
</short>
</element>
<!-- visibility: private -->
<element name="TDBLookupComboBox.FLookup"/>
<element name="TDBLookupComboBox.ActiveChange"/>
<element name="TDBLookupComboBox.ActiveChange.Sender"/>
<element name="TDBLookupComboBox.GetDisplayEmpty"/>
<element name="TDBLookupComboBox.GetDisplayEmpty.Result"/>
<element name="TDBLookupComboBox.GetDropDownRows"/>
<element name="TDBLookupComboBox.GetDropDownRows.Result"/>
<element name="TDBLookupComboBox.GetEmptyValue"/>
<element name="TDBLookupComboBox.GetEmptyValue.Result"/>
<element name="TDBLookupComboBox.GetKeyField"/>
<element name="TDBLookupComboBox.GetKeyField.Result"/>
<element name="TDBLookupComboBox.GetKeyValue"/>
<element name="TDBLookupComboBox.GetKeyValue.Result"/>
<element name="TDBLookupComboBox.GetListField"/>
<element name="TDBLookupComboBox.GetListField.Result"/>
<element name="TDBLookupComboBox.GetListFieldIndex"/>
<element name="TDBLookupComboBox.GetListFieldIndex.Result"/>
<element name="TDBLookupComboBox.GetListSource"/>
<element name="TDBLookupComboBox.GetListSource.Result"/>
<element name="TDBLookupComboBox.GetLookupCache"/>
<element name="TDBLookupComboBox.GetLookupCache.Result"/>
<element name="TDBLookupComboBox.GetNullValueKey"/>
<element name="TDBLookupComboBox.GetNullValueKey.Result"/>
<element name="TDBLookupComboBox.GetScrollListDataset"/>
<element name="TDBLookupComboBox.GetScrollListDataset.Result"/>
<element name="TDBLookupComboBox.ReadDropDownCount"/>
<element name="TDBLookupComboBox.ReadDropDownCount.Reader"/>
<element name="TDBLookupComboBox.SetDropDownRows"/>
<element name="TDBLookupComboBox.SetDropDownRows.AValue"/>
<element name="TDBLookupComboBox.SetDisplayEmpty"/>
<element name="TDBLookupComboBox.SetDisplayEmpty.AValue"/>
<element name="TDBLookupComboBox.SetEmptyValue"/>
<element name="TDBLookupComboBox.SetEmptyValue.AValue"/>
<element name="TDBLookupComboBox.SetKeyField"/>
<element name="TDBLookupComboBox.SetKeyField.Value"/>
<element name="TDBLookupComboBox.SetKeyValue"/>
<element name="TDBLookupComboBox.SetKeyValue.Value"/>
<element name="TDBLookupComboBox.SetListField"/>
<element name="TDBLookupComboBox.SetListField.Value"/>
<element name="TDBLookupComboBox.SetListFieldIndex"/>
<element name="TDBLookupComboBox.SetListFieldIndex.Value"/>
<element name="TDBLookupComboBox.SetListSource"/>
<element name="TDBLookupComboBox.SetListSource.Value"/>
<element name="TDBLookupComboBox.SetLookupCache"/>
<element name="TDBLookupComboBox.SetLookupCache.Value"/>
<element name="TDBLookupComboBox.SetNullValueKey"/>
<element name="TDBLookupComboBox.SetNullValueKey.AValue"/>
<element name="TDBLookupComboBox.SetScrollListDataset"/>
<element name="TDBLookupComboBox.SetScrollListDataset.AValue"/>
<element name="TDBLookupComboBox.UpdateLookup"/>
<element name="TDBLookupComboBox.UpdateItemIndex"/>
<element name="TDBLookupComboBox.InitializeWnd">
<short>
Ensures that the lookup uses the address for the items defined in the control.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBLookupComboBox.DestroyWnd">
<short>
Updates the lookup with the address for the items in the control when the
control handle is freed.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBLookupComboBox.KeyDown">
<short>Handles the Null key shortcut in key down events.</short>
<descr>
<p>
<var>KeyDown</var> is an overridden method used to handle and apply virtual
key code messages (<b>WM_KEYDOWN</b>) received in the control. <var>Key</var>
and <var>Shift</var> contain the virtual key code and the
<b>Shift-Ctrl-Alt</b> modifiers for the message.
</p>
<p>
KeyDown ensures that the shortcut in <var>NullValueKey</var> is applied to
the <var>TDBLookup</var> and the <var>ItemIndex</var> for the control.
KeyDown calls the inherited method prior to exit.
</p>
</descr>
<seealso>
<link id="TDBLookUpComboBox.NullValueKey"/>
<link id="TCustomDBComboBox.KeyDown"/>
<link id="TCustomDBComboBox.ItemIndex"/>
<link id="TDBLookup"/>
</seealso>
</element>
<element name="TDBLookupComboBox.KeyDown.Key">
<short>Key examined in the method.</short>
</element>
<element name="TDBLookupComboBox.KeyDown.Shift">
<short>Modifier(s) for the key examined in the method.</short>
</element>
<element name="TDBLookupComboBox.UTF8KeyPress">
<short>Handles UTF-8 characters for the data-aware control.</short>
<descr>
<p>
<var>UTF8KeyPress</var> is an overridden method in
<var>TDBLookupComboBox</var>. UTF8KeyPress ensures that the value in
<var>Key</var> is cleared when the linked dataset cannot be modified, or the
control is being used in the "unbound" mode.
</p>
<p>
UTF8KeyPress calls the inherited method prior to exit.
</p>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomComboBox.UTF8KeyPress">TCustomComboBox.UTF8KeyPress</link>
</seealso>
</element>
<element name="TDBLookupComboBox.UTF8KeyPress.UTF8Key">
<short>UTF-8-encoded value examined in the method.</short>
</element>
<element name="TDBLookupComboBox.Loaded" link="#lcl.controls.TWinControl.Loaded"/>
<element name="TDBLookupComboBox.UpdateData">
<short>
<var>UpdateData</var> - copies the local data from the corresponding entry
from the lookup field.
</short>
<seealso>
<link id="TCustomDBComboBox.UpdateData"/>
</seealso>
</element>
<element name="TDBLookupComboBox.DataChange">
<short>
Updates the control when the value in the linked dataset has been
changed.</short>
<descr/>
<seealso/>
</element>
<element name="TDBLookupComboBox.DataChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBLookupComboBox.DoOnSelect">
<short>
Performs the OnSelect event handler when in drop-down list mode.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBLookupComboBox.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance.
Create calls the inherited constructor, and allocates resources for the
internal <var>TDBLookup</var> instance used in the class. The
<var>ActiveChange</var> method is assigned as the <var>OnActiveChange</var>
event handler in the internal <var>TFieldDataLink</var> instance used in the
class. Creates sets the default values for the <var>EmptyValue</var> and
<var>DisplayEmpty</var> properties.
</p>
</descr>
<seealso>
<link id="TDBLookupComboBox.DisplayEmpty"/>
<link id="TDBLookupComboBox.EmptyValue"/>
<link id="TDBLookUp"/>
<link id="TFieldDataLink.OnActiveChange"/>
<link id="#lcl.stdctrls.TCustomComboBox.Create">TCustomComboBox.Create</link>
</seealso>
</element>
<element name="TDBLookupComboBox.KeyValue">
<short>
Value for the key field in the lookup dataset at the position in ItemIndex.
</short>
<descr>
<p>
Read and write access for the property value is provided using methods in the
internal <var>TDBLookup</var> instance used in the class. Reading the value
calls the <var>GetKeyValue</var> method in TDBLookup. Writing the value calls
the <var>GetKeyIndex</var> method in TDBLookUp.
</p>
</descr>
<seealso/>
</element>
<element name="TDBLookupComboBox.DropDownCount">
<short>Deprecated. Use DropDownRows instead.</short>
<descr/>
<seealso>
<link id="TDBLookUpComboBox.DropDownRows"/>
<link id="#lcl.stdctrls.TCustomComboBox.DropDownCount">TCustomComboBox.DropDownCount</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.Align" name="TDBLookupComboBox.Align"/>
<element link="#lcl.controls.TControl.Anchors" name="TDBLookupComboBox.Anchors"/>
<element link="#lcl.stdctrls.TCustomComboBox.ArrowKeysTraverseList" name="TDBLookupComboBox.ArrowKeysTraverseList"/>
<element link="#lcl.stdctrls.TCustomComboBox.AutoComplete" name="TDBLookupComboBox.AutoComplete"/>
<element link="#lcl.stdctrls.TCustomComboBox.AutoDropDown" name="TDBLookupComboBox.AutoDropDown"/>
<element link="#lcl.stdctrls.TCustomComboBox.AutoSelect" name="TDBLookupComboBox.AutoSelect"/>
<element link="#lcl.controls.TControl.AutoSize" name="TDBLookupComboBox.AutoSize"/>
<element link="#lcl.controls.TControl.BiDIMode" name="TDBLookupComboBox.BiDiMode"/>
<element link="#lcl.controls.TControl.BorderSpacing" name="TDBLookupComboBox.BorderSpacing"/>
<element link="#lcl.controls.TWinControl.BorderStyle" name="TDBLookupComboBox.BorderStyle"/>
<element link="#lcl.stdctrls.TCustomComboBox.CharCase" name="TDBLookupComboBox.CharCase"/>
<element link="#lcl.controls.TControl.Color" name="TDBLookupComboBox.Color"/>
<element link="#lcl.controls.TControl.Constraints" name="TDBLookupComboBox.Constraints"/>
<element link="#lcl.dbctrls.TCustomDBComboBox.DataField" name="TDBLookupComboBox.DataField"/>
<element link="#lcl.dbctrls.TCustomDBComboBox.DataSource" name="TDBLookupComboBox.DataSource"/>
<element link="#lcl.controls.TWinControl.DoubleBuffered" name="TDBLookupComboBox.DoubleBuffered"/>
<element link="#lcl.controls.TControl.DragCursor" name="TDBLookupComboBox.DragCursor"/>
<element link="#lcl.controls.TControl.DragKind" name="TDBLookupComboBox.DragKind"/>
<element link="#lcl.controls.TControl.DragMode" name="TDBLookupComboBox.DragMode"/>
<element name="TDBLookupComboBox.DropDownRows">
<short>Number of rows displayed in the drop-down list for the control.</short>
<descr>
<p>
<var>DropDownRows</var> is the replacement for the deprecated
<var>DropDownCount</var> property. It is compatible with the name used in the
Delphi VCL. Read and write access to the property value are redirected to the
DropDownCount property in the ancestor class.
</p>
<p>
The default value for the property is <b>7</b> in
<var>TDBLookUpComboBox</var>.
</p>
</descr>
<seealso>
<link id="TDBLookupComboBox.DropDownCount"/>
<link id="#lcl.stdctrls.TCustomComboBox.DropDownCount">TCustomComboBox.DropDownCount</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.Enabled" name="TDBLookupComboBox.Enabled"/>
<element link="#lcl.controls.TControl.Font" name="TDBLookupComboBox.Font"/>
<element name="TDBLookupComboBox.KeyField">
<short>
<var>KeyField</var> the name of the field containing the key data.</short>
<descr>
<p>
<var>KeyField</var> is a <var>String</var> property which contains the name
of the field in the lookup dataset which corresponds to the
<var>DataField</var> in the linked dataset. Read and write access to the
property value are redirected to the <var>KeyField</var> property in the
internal <var>TDBLookup</var> instance used in the class. Setting a new value
for the property causes the internal field data link to be refreshed, and
potentially changes the value and the item index in the control.
</p>
<p>
Use <var>ListSource</var> to specify the component which provides access to
the lookup dataset.
</p>
<p>
Use <var>ListField</var> to specify the field with values displayed in the
drop-down for the combo-box control.
</p>
</descr>
<seealso>
<link id="TDBLookUpComboBox.ListSource"/>
<link id="TDBLookUpComboBox.ListField"/>
<link id="TCustomDBComboBox.ItemIndex"/>
<link id="TCustomDBComboBox.Text"/>
<link id="TDBLookup.KeyField"/>
<link id="TFieldDataLink"/>
</seealso>
</element>
<element name="TDBLookupComboBox.ListField">
<short>
<var>ListField</var> is the name of the field containing the list data
displayed in the control.
</short>
<descr>
<p>
<var>ListField</var> is a <var>String</var> property which contains the name
of the field in the lookup dataset with the values displayed in the drop-down
for the combo-box control. Read and write access for the property value are
redirected to the <var>ListField</var> in the internal <var>TDBLookup</var>
instance used in the class. Setting a new value for the property causes the
internal <var>TFieldDataLink</var> in the class to be refreshed, and results
in a change to the <var>ItemIndex</var> and the current value for the control.
</p>
<p>
Use <var>ListSource</var> to assign the component which provides access to
the lookup dataset for the control.
</p>
<p>
Use <var>KeyField</var> to specify the field in the lookup dataset stored in
<var>DataField</var> when an item is selected in the data-aware control.
</p>
<p>
Use <var>ListFieldIndex</var> to get the ordinal position in the lookup
dataset for current value in the control.
</p>
</descr>
<seealso/>
</element>
<element name="TDBLookupComboBox.ListFieldIndex">
<short>
<var>ListFieldIndex</var> - the index value of the field containing the list.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBLookupComboBox.ListSource">
<short>
<var>ListSource</var> the data source that contains the list.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBLookupComboBox.LookupCache">
<short>
Indicates if look-up items are cached in the field data link for the control.
</short>
<descr>
<p>
<var>LookupCache</var> is a <var>Boolean</var> property which indicates if
look-up items are cached in the field data link for the control. The property
value is re-directed to the <var>LookupCache</var> property in the internal
<var>TDBLookup</var> instance for the control. Changing the property to
<b>True</b> causes the value in <var>ItemIndex</var> to be updated to the
value in from the look-up cache.
</p>
</descr>
<seealso>
<link id="TDBLookUp.Initialize"/>
<link id="TDBLookUp.LookupCache"/>
<link id="#lcl.stdctrls.TCustomComboBox.Items">TCustomComboBox.Items</link>
<link id="#lcl.stdctrls.TCustomComboBox.ItemIndex">TCustomComboBox.ItemIndex</link>
</seealso>
</element>
<element name="TDBLookupComboBox.NullValueKey">
<short>
Keyboard shortcut which causes an empty value to be assigned to the field
value for the lookup control.
</short>
<descr>
<p>
<var>NullValueKey</var> is a <var>TShortCut</var> property which contains the
keystroke used to assign a Null value to the data-aware control. Read and
write access for the property value are redirected to the
<var>NullValueKey</var> property in the internal <var>TDBLookup</var>
instance used in the class.
</p>
<p>
NullValueKey is used in TDBLookup methods, and handled in the
<var>KeyDown</var> method for data-aware controls which support the feature.
The default value for the property is zero (0) and indicates that the
shortcut key is not used for the control.
</p>
</descr>
<seealso/>
</element>
<element name="TDBLookupComboBox.EmptyValue">
<short>
Value stored for the lookup control when a lookup value is not available.
</short>
<descr>
<p>
<var>EmptyValue</var> is a <var>String</var> property which contains the
value stored in the list of key values when no records are available in the
linked lookup dataset, or when the <var>NullValueKey</var> shortcut is
pressed.
</p>
<p>
Use <var>EmptyValue</var> to specify a KeyField value automatically added to
the <var>ControlItems</var> property when the linked lookup dataset contains
no records. No entry is added to Controlitems when the value in EmptyValue is
an empty string <b>('')</b>. The value in <var>DisplayEmpty</var> is used for
the <var>ListField displayed</var> in the control.
</p>
<p>
Use <var>DisplayEmpty</var> to specify the value displayed in the lookup
control when no records are available in the linked lookup dataset, or when
the NullValueKey shortcut is pressed.
</p>
</descr>
<seealso>
<link id="TDBLookup.DisplayEmpty"/>
<link id="TDBLookup.ControlItems"/>
<link id="TDBLookup.ListField"/>
<link id="TDBLookup.KeyField"/>
<link id="TDBLookup.NullValueKey"/>
</seealso>
<version>
The EmptyValue and DisplayEmpty properties were added in revision 62844, and
released in LCL version 2.0.8 and higher.
</version>
</element>
<element name="TDBLookupComboBox.DisplayEmpty">
<short>
Value displayed in the lookup control when a lookup value is not available.
</short>
<descr>
<p>
<var>DisplayEmpty</var> is a <var>String</var> property which contains the
value displayed in the lookup when no records are available in the linked
lookup dataset, or when the <var>NullValueKey</var> shortcut is pressed.
</p>
<p>
Use <var>EmptyValue</var> to specify a KeyField value automatically added to
the <var>ControlItems</var> property when the linked lookup dataset contains
no records. No entry is added to Controlitems when the value in EmptyValue is
an empty string <b>('')</b>. The value in <var>DisplayEmpty</var> is used for
the <var>ListField</var> displayed in the control.
</p>
<p>
Use <var>EmptyValue</var> to specify the value stored in the lookup when no
records are available in the linked lookup dataset, or when the NullValueKey
shortcut is pressed.
</p>
</descr>
<seealso>
<link id="TDBLookup.EmptyValue"/>
<link id="TDBLookup.ControlItems"/>
<link id="TDBLookup.ListField"/>
<link id="TDBLookup.KeyField"/>
<link id="TDBLookup.NullValueKey"/>
</seealso>
<version>
The EmptyValue and DisplayEmpty properties were added in revision 62844, and
released in LCL version 2.0.8 and higher.
</version>
</element>
<element link="#lcl.stdctrls.TCustomComboBox.OnChange" name="TDBLookupComboBox.OnChange"/>
<element link="#lcl.controls.TControl.OnChangeBounds" name="TDBLookupComboBox.OnChangeBounds"/>
<element link="#lcl.controls.TControl.OnClick" name="TDBLookupComboBox.OnClick"/>
<element link="#lcl.stdctrls.TCustomComboBox.OnCloseUp" name="TDBLookupComboBox.OnCloseUp"/>
<element name="TDBLookUpComboBox.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element link="#lcl.controls.TControl.OnDblClick" name="TDBLookupComboBox.OnDblClick"/>
<element link="#lcl.controls.TControl.OnDragDrop" name="TDBLookupComboBox.OnDragDrop"/>
<element link="#lcl.controls.TControl.OnDragOver" name="TDBLookupComboBox.OnDragOver"/>
<element link="#lcl.stdctrls.TCustomComboBox.OnDrawItem" name="TDBLookupComboBox.OnDrawItem"/>
<element link="#lcl.stdctrls.TCustomComboBox.OnDropDown" name="TDBLookupComboBox.OnDropDown"/>
<element link="#lcl.controls.TControl.OnEditingDone" name="TDBLookupComboBox.OnEditingDone"/>
<element link="#lcl.controls.TControl.OnEndDrag" name="TDBLookupComboBox.OnEndDrag"/>
<element link="#lcl.controls.TWinControl.OnEnter" name="TDBLookupComboBox.OnEnter"/>
<element link="#lcl.controls.TWinControl.OnExit" name="TDBLookupComboBox.OnExit"/>
<element link="#lcl.controls.TWinControl.OnKeyDown" name="TDBLookupComboBox.OnKeyDown"/>
<element link="#lcl.controls.TWinControl.OnKeyPress" name="TDBLookupComboBox.OnKeyPress"/>
<element link="#lcl.controls.TWinControl.OnKeyUp" name="TDBLookupComboBox.OnKeyUp"/>
<element link="#lcl.controls.TControl.OnMouseDown" name="TDBLookupComboBox.OnMouseDown"/>
<element link="#lcl.controls.TControl.OnMouseEnter" name="TDBLookupComboBox.OnMouseEnter"/>
<element link="#lcl.controls.TControl.OnMouseLeave" name="TDBLookupComboBox.OnMouseLeave"/>
<element link="#lcl.controls.TControl.OnMouseMove" name="TDBLookupComboBox.OnMouseMove"/>
<element link="#lcl.controls.TControl.OnMouseUp" name="TDBLookupComboBox.OnMouseUp"/>
<element link="#lcl.controls.TControl.OnMouseWheel" name="TDBLookupComboBox.OnMouseWheel"/>
<element link="#lcl.controls.TControl.OnMouseWheelDown" name="TDBLookupComboBox.OnMouseWheelDown"/>
<element link="#lcl.controls.TControl.OnMouseWheelUp" name="TDBLookupComboBox.OnMouseWheelUp"/>
<element link="#lcl.stdctrls.TCustomComboBox.OnSelect" name="TDBLookupComboBox.OnSelect"/>
<element link="#lcl.controls.TControl.OnStartDrag" name="TDBLookupComboBox.OnStartDrag"/>
<element name="TDBLookupComboBox.OnUTF8KeyPress" link="#lcl.controls.TWinControl.OnUTF8KeyPress"/>
<element name="TDBLookupComboBox.ParentBiDiMode" link="#lcl.controls.TControl.ParentBiDiMode"/>
<element link="#lcl.controls.TControl.ParentColor" name="TDBLookupComboBox.ParentColor"/>
<element link="#lcl.controls.TWinControl.ParentDoubleBuffered" name="TDBLookupComboBox.ParentDoubleBuffered"/>
<element link="#lcl.controls.TControl.ParentFont" name="TDBLookupComboBox.ParentFont"/>
<element link="#lcl.controls.TControl.ParentShowHint" name="TDBLookupComboBox.ParentShowHint"/>
<element link="#lcl.controls.TControl.PopupMenu" name="TDBLookupComboBox.PopupMenu"/>
<element link="#lcl.stdctrls.TCustomComboBox.ReadOnly" name="TDBLookupComboBox.ReadOnly"/>
<element name="TDBLookupComboBox.ScrollListDataset">
<short>
Indicates if the Dataset in ListSource can be scrolled when loading/locating
key and display values.
</short>
<descr>
<p>
<var>ScrollListDataset</var> is a <var>Boolean</var> property which indicates
if the linked lookup dataset can be scrolled when loading values from the
fields identified in KeyField and ListField. The value in ScrollListDataset
is used in the implementation of the <var>Initialize</var> and
<var>UpdateData</var> methods.
</p>
</descr>
<seealso>
<link id="TDBLookup.KeyField"/>
<link id="TDBLookup.ListField"/>
<link id="TDBLookup.ListSource"/>
<link id="TDBLookup.Initialize"/>
<link id="TDBLookup.UpdateData"/>
</seealso>
</element>
<element link="#lcl.controls.TControl.ShowHint" name="TDBLookupComboBox.ShowHint"/>
<element link="#lcl.stdctrls.TCustomComboBox.Sorted" name="TDBLookupComboBox.Sorted"/>
<element link="#lcl.stdctrls.TCustomComboBox.Style" name="TDBLookupComboBox.Style"/>
<element link="#lcl.controls.TWinControl.TabOrder" name="TDBLookupComboBox.TabOrder"/>
<element link="#lcl.controls.TWinControl.TabStop" name="TDBLookupComboBox.TabStop"/>
<element link="#lcl.controls.TControl.Visible" name="TDBLookupComboBox.Visible"/>
<element name="TDBMemo">
<short>
<var>TDBMemo</var> is a data-aware Memo box to process the multi-line text of
a single field in a dataset.
</short>
<descr>
<p>
<var>TDBMemo</var> is a <var>TCustomMemo</var> descendant which implements a
data-aware memo control. Like its ancestor, TDBMemo can be used to display or
edit multi-line textual content. It extends the ancestor class to provide
properties which define the datasource and field name with the value
maintained in the control. For situations where data-awareness is not needed,
use the TMemo control.
</p>
<p>
Internally, the control uses a <var>TFieldDataLink</var> to maintain an
association between the control and its datasource, dataset, and field.
</p>
<p>
Use <var>DataSource</var> to assign the component with the linked dataset for
the control.
</p>
<p>
Use <var>DataField</var> to specify the name of the field in the linked
dataset with the value for the control.
</p>
<p>
Use the <var>AutoDisplay</var> property to control whether the field content
is automatically displayed during record navigation in the linked dataset.
When AutoDisplay is set to <b>False</b>, the DisplayLabel for the Field is
shown in the control and it content must be loaded by calling the
<var>LoadMemo</var> method.
</p>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomMemo">TCustomMemo</link>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
</seealso>
</element>
<element name="TDBMemo.FDataLink"/>
<element name="TDBMemo.FAutoDisplay"/>
<element name="TDBMemo.FDBMemoFocused"/>
<element name="TDBMemo.FDBMemoLoaded"/>
<element name="TDBMemo.GetDataField">
<short>Gets the value for the DataField property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBMemo.GetDataField.Result">
<short>Value for the property.</short>
</element>
<element name="TDBMemo.GetDataSource">
<short>Gets the value for the DataSource property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBMemo.GetDataSource.Result">
<short>Value for the property.</short>
</element>
<element name="TDBMemo.GetField">
<short>Gets the value for the Field property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBMemo.GetField.Result">
<short>Value for the property.</short>
</element>
<element name="TDBMemo.GetReadOnly">
<short>Gets the value for the ReadOnly property.</short>
<descr/>
<seealso>
<link id="#lcl.stdctrls.TCustomEdit.GetReadOnly">TCustomEdit.GetReadOnly</link>
</seealso>
</element>
<element name="TDBMemo.GetReadOnly.Result">
<short>Value for the property.</short>
</element>
<element name="TDBMemo.SetAutoDisplay">
<short>Sets the value for the AutoDisplay property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBMemo.SetAutoDisplay.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBMemo.SetDataField">
<short>Sets the value for the DataField property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBMemo.SetDataField.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBMemo.SetDataSource">
<short>Sets the value for the DataSource property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBMemo.SetDataSource.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBMemo.CMGetDataLink">
<short>Implements the CM_GETDATALINK message for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TDBMemo.CMGetDataLink.Message">
<short>Message handled in the method.</short>
</element>
<element name="TDBMemo.GetReadOnly">
<short>Gets the value for the ReadOnly property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBMemo.GetReadOnly.Result">
<short>Value for the property.</short>
</element>
<element name="TDBMemo.SetReadOnly">
<short>Sets the value for the ReadOnly property.</short>
<descr/>
<seealso>
<link id="#lcl.stdctrls.TCustomEdit.SetReadOnly">TCustomEdit.SetReadOnly</link>
</seealso>
</element>
<element name="TDBMemo.SetReadOnly.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBMemo.DataChange">
<short>
<var>DataChange</var> - if Data changed, loads the new data into the
appropriate part of the Field.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBMemo.DataChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBMemo.Notification">
<short>
Handles the notification when a component is added or removed from the
control.
</short>
<descr>
<p>
<var>Notification</var> is an overridden method in <var>TDBMemo</var>. It
calls the inherited method on entry, and ensures that the
<var>DataSource</var> property is <b>Nil</b>'d when the component it is
removed from the class instance.
</p>
</descr>
<seealso>
<link id="TDBMemo.DataSource"/>
<link id="#lcl.controls.TControl.Notification">TControl.Notification</link>
</seealso>
</element>
<element name="TDBMemo.Notification.AComponent">
<short>Component for the notification.</short>
</element>
<element name="TDBMemo.Notification.Operation">
<short>Operation performed on / for the component.</short>
</element>
<element name="TDBMemo.UpdateData">
<short>
<var>UpdateData</var> - if data changed, copy new text via the datalink.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBMemo.UpdateData.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBMemo.Change">
<short>
Performs actions needed when the value for the control has been changed.
</short>
<descr>
<p>
<var>Change</var> is an overridden method used to perform actions needed when
the value for the control has been changed. Change ensures that the linked
dataset is notified by calling its <var>Modified</var> method. Change calls
the inherited method prior to exit to signal the <var>OnChange</var> event or
other handlers implemented in the ancestor class.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.Modified"/>
<link id="#lcl.stdctrls.TCustomEdit.Change">TCustomEdit.Change</link>
<link id="#lcl.stdctrls.TCustomEdit.OnChange">TCustomEdit.OnChange</link>
</seealso>
</element>
<element name="TDBMemo.KeyDown">
<short>Handles key down events in the data-aware control.</short>
<descr>
<p>
<var>KeyDown</var> is an overridden method used to handle key down events in
the control.
</p>
<p>
<var>Key</var> is the virtual key code examined and handled in the method.
<var>Shift</var> is the <b>Shift-Ctrl-Alt</b> modifier for the virtual key
code.
</p>
<p>
KeyDown calls the inherited method to handle the key down event in the method
form ancestor class. If Key is not already applied, it is checked for the
following values:
</p>
<dl>
<dt>VK_ESCAPE</dt>
<dd>
Editing is being cancelled. Calls the <var>Reset</var> method in the
<var>TFieldDataLink</var> instance used in the class. Call
<var>SelectAll</var> to re-select content in the control. Sets Key to
<b>VK_UNKNOWN</b> to indicate that it was handled in the method.
</dd>
<dt>VK_DELETE, VK_BACK</dt>
<dd>
Content is being removed in the control. If the <var>Field</var> in the
internal <var>TFieldDataLink</var> is not editable, the value in Key is set
<b>VK_UNKNOWN</b>.
</dd>
</dl>
<p>
For the macOS (Darwin) platform, additional virtual key codes are detected (and
discarded) if the contents of the field in the linked dataset cannot be
modified. These keys include:
</p>
<dl>
<dt>VK_0..VK_9</dt>
<dd>numeric characters not on the numeric keypad</dd>
<dt>VK_A..VK_Z</dt>
<dd>alphabetic characters</dd>
<dt>VK_SPACE</dt>
<dd>space character</dd>
<dt>VK_NUMPAD0..VK_NUMPAD9</dt>
<dd>numeric digits on the numeric keypad</dd>
<dt>VK_MULTIPLY, VK_DIVIDE, VK_ADD, VK_SUBTRACT</dt>
<dd>operators on the numeric keypad</dd>
<dt>VK_SEPARATOR, VK_DECIMAL </dt>
<dd>padded and non-padded Decimal separators</dd>
<dt>VK_OEM_1</dt>
<dd>';:' keycap on the US standard keyboard</dd>
<dt>VK_OEM_2</dt>
<dd>'/?' keycap on the US standard keyboard</dd>
<dt>VK_OEM_3</dt>
<dd>'`~' keycap on the US standard keyboard</dd>
<dt>VK_OEM_4</dt>
<dd>'[{' keycap on the US standard keyboard</dd>
<dt>VK_OEM_5</dt>
<dd>'\|' keycap on the US standard keyboard</dd>
<dt>VK_OEM_6</dt>
<dd>']}' keycap on the US standard keyboard</dd>
<dt>VK_OEM_7</dt>
<dd>
'&apos;&quot;' (Apostrophe and Quote) keycap on the US standard keyboard
</dd>
<dt>VK_OEM_8</dt>
<dd>miscellaneous character; varies by keyboard layout</dd>
</dl>
<p>
For these macOS-specific keys, the value in Key is set to 0 if the field cannot
be modified.
</p>
</descr>
<version>
Modified in LCL version 3.6 to handle additional data keys on the macOS
(Darwin) platform.
</version>
<seealso>
<link id="#lcl.controls.TWinControl.KeyDown">TWinControl.KeyDown</link>
</seealso>
</element>
<element name="TDBMemo.KeyDown.Key">
<short>Virtual key code examined in the method.</short>
</element>
<element name="TDBMemo.KeyDown.Shift">
<short>Sift modifier for the key code.</short>
</element>
<element link="#lcl.controls.TWinControl.KeyPress" name="TDBMemo.KeyPress"/>
<element name="TDBMemo.KeyPress.Key" link="#lcl.controls.TWinControl.KeyPress.Key"/>
<element link="#lcl.controls.TControl.WndProc" name="TDBMemo.WndProc"/>
<element link="#lcl.controls.TControl.WndProc.Message" name="TDBMemo.WndProc.Message"/>
<element name="TDBMemo.WSRegisterClass">
<short>
Registers the widgetset class created for new instances of the control.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBMemo.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for the class instance.
Create calls the inherited constructor, and allocates resources for the
internal <var>TFieldDataLink</var> instance used in the class. The
<var>DataChange</var> and <var>UpdateData</var> methods are assigned as the
<var>OnDataChange</var> and <var>OnUpdateData</var> event handlers in the
<var>TFieldDataLink</var> instance. Create sets the default values for the
<var>ControlStyle</var> and <var>AutoDisplay</var> properties.
</p>
</descr>
<seealso>
<link id="TDBMemo.DataChange"/>
<link id="TDBMemo.UpdateData"/>
<link id="TDBMemo.AutoDisplay"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="TFieldDataLink.OnUpdateData"/>
<link id="#lcl.stdctrls.TCustomMemo.Create">TCustomMemo.Create</link>
<link id="#lcl.controls.TControl.ControlStyle">TControl.ControlStyle</link>
</seealso>
</element>
<element name="TDBMemo.Create.TheOwner">
<short>Owner for the class instance.</short>
</element>
<element name="TDBMemo.Destroy">
<short>
<var>Destroy</var> - destructor for <var>TDBMemo</var>: frees datalinks then
calls inherited <var>Destroy</var>.
</short>
<descr/>
<seealso>
<link id="#lcl.stdctrls.TCustomMemo.Destroy">TCustomMemo.Destroy</link>
</seealso>
</element>
<element name="TDBMemo.EditingDone">
<short>Called when editing has been completed in the control.</short>
<descr>
<p>
<var>EditingDone</var> is an overridden method in <var>TDBMemo</var>. It is
called when the user has finished editing in the control, and ensures that
changes are applied to the field in the linked data set.
</p>
<p>
In TDBMemo, it calls the <var>UpdateRecord</var> method in the field data
link when it can be modified and has been placed in edit mode. The inherited
method is called to signal the <var>OnEditingDone</var> event handler (when
assigned).
</p>
<p>
If the field cannot be modified in the linked data set, or the data set is
not in Edit mode, the <var>Reset</var> method in the field data link is
called. This will signal the <var>OnDataChange</var> event handler (when
assigned), but the linked data set is not updated.
</p>
<p>
EditingDone is called from the KeyUpAfterInterface method when the VK_RETURN
key code is handled, and when the focus is changed to another control.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.CanModify"/>
<link id="TFieldDataLink.Editing"/>
<link id="TFieldDataLink.Reset"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="#fcl.db.TDataLink.UpdateRecord">TDataLink.UpdateRecord</link>
<link id="#lcl.stdctrls.TCustomEdit.EditingDone">TCustomEdit.EditingDone</link>
<link id="#lcl.controls.TControl.OnEditingDone">TControl.OnEditingDone</link>
</seealso>
</element>
<element name="TDBMemo.LoadMemo">
<short>
Loads the lines of text for the memo from the field in the linked data set.
</short>
<descr>
<p>
<var>LoadMemo</var> is a method used to load the text for the control from
the field in the linked data set. No actions are performed in the method if
the value for the memo has already been loaded, the field in the data link
has not been assigned, or the field does not use the TBlobField field type.
</p>
<p>
LoadMemo signals the <var>OnGetText</var> event handler (when assigned in
the field data link) to get the Text value for the blob field. If OnGetText has
not been assigned, the AsString value for the blob field is retrieved. The
retrieved value is stored to the Lines property when it differs from the
existing value in Lines.
</p>
<p>
If an <var>EInvalidOperation</var> exception occurs while getting the value
for the control, the exception is caught and the message is stored in the Lines
property.
</p>
<p>
LoadMemo is called when the value in <var>AutoDisplay</var> is changed to
<b>True</b>, when the <var>DataChange</var> method is called, and when the
<b>Enter</b> key is handled in the <var>KeyPress</var> method.
</p>
</descr>
<version>
Modified in LCL version 3.6 to update Lines when the field value differs from
the existing value in Lines.
</version>
<seealso>
<link id="TDBMemo.AutoDisplay"/>
<link id="TDBMemo.DataChange"/>
<link id="TDBMemo.KeyPress"/>
<link id="TFieldDataLink"/>
<link id="#lcl.stdctrls.TCustomMemo.Lines"/>
<link id="#fcl.db.TBlobField.IsBlob">TBlobField.IsBlob</link>
<link id="#fcl.db.TField.OnGetText">TField.OnGetText</link>
<link id="#fcl.db.TField.Text">TField.Text</link>
<link id="#fcl.db.TField.AsString">TField.AsString</link>
</seealso>
</element>
<element name="TDBMemo.ExecuteAction">
<short>Provides support for TBasicAction in the control.</short>
<descr>
<p>
<var>ExecuteAction</var> is an overridden method in <var>TDBMemo</var>. It
calls the inherited method, and when the action is not handled in the
ancestor, executes <var>AAction</var> using the <var>ExecuteAction</var>
method in the internal <var>TFieldDataLink</var> instance in the class.
</p>
<p>
The return value is <b>True</b> if the action was executed in the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.ExecuteAction">TComponent.ExecuteAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TDBMemo.ExecuteAction.Result">
<short><b>True</b> if the action was executed in the method.</short>
</element>
<element name="TDBMemo.ExecuteAction.AAction">
<short>Action examined and executed in the method.</short>
</element>
<element name="TDBMemo.UpdateAction">
<short>
Updates the specified action to reflect the current state in the linked
dataset.
</short>
<descr>
<p>
<var>UpdateAction</var> is an overridden <var>Boolean</var> function in
<var>TDBMemo</var>. UpdateAction is called when the <var>Application</var>
enters an idle state to ensure that the action reflects the current state for
a linked dataset.
</p>
<p>
<var>AAction</var> is the <var>TBasicAction</var> updated in the method.
</p>
<p>
UpdateAction calls the inherited method, and when the internal dataset link
has been assigned, executes its UpdateAction method. The return value is
<b>True</b> when AAction is updated using either the inherited method, or the
method in the linked dataset. The return value is <b>False</b> when AAction
could not be updated in the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
<link id="#rtl.classes.TComponent.UpdateAction">TComponent.UpdateAction</link>
<link id="#fcl.db.TDataLink.UpdateAction">TDataLink.UpdateAction</link>
</seealso>
</element>
<element name="TDBMemo.UpdateAction.Result">
<short><b>True</b> if the action was updated in the method.</short>
</element>
<element name="TDBMemo.UpdateAction.AAction">
<short>Action examined and updated in the method.</short>
</element>
<element name="TDBMemo.Field">
<short>
Provides access to the field definition for the data-aware control.
</short>
<descr>
<p>
<var>Field</var> is a read-only <var>TField</var> property which provides
access to the field definition to which the data-aware control is linked.
Read access for the property is redirected to the Field property in the
internal TFieldDataLink class instance. The value in Field is updated when a
new value is assigned to the Field in the TFieldDataLink instance.
</p>
<p>
Use <var>DataField</var> to read or write the field name used for the
data-aware control. Use <var>DataSource</var> to specify the component with
the dataset containing the specified field name.
</p>
</descr>
<seealso>
<link id="TDBMemo.DataField"/>
<link id="TDBMemo.DataSource"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="#fcl.db.TField">TField</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.Align" name="TDBMemo.Align"/>
<element link="#lcl.stdctrls.TCustomEdit.Alignment" name="TDBMemo.Alignment"/>
<element link="#lcl.controls.TControl.Anchors" name="TDBMemo.Anchors"/>
<element name="TDBMemo.AutoDisplay">
<short>
<var>AutoDisplay</var> - if <b>True</b>, automatically displays the data when
loaded from the linked dataset.
</short>
<descr>
<p>
<var>AutoDisplay</var> is a <var>Boolean</var> property which indicates if
the content in the control is automatically displayed when it is loaded from
the linked dataset. Changing the value in AutoDisplay causes the
<var>LoadMemo</var> method to be called to load the content for the control.
The default value for the property is
<b>True</b>.
</p>
<p>
AutoDisplay is used in the implementation of the <var>DataChange</var> method
called when the content dataset from the dataset has been updated.
</p>
</descr>
<seealso>
<link id="TDBMemo.DataChange"/>
<link id="TDBMemo.LoadMemo"/>
</seealso>
</element>
<element link="#lcl.controls.TControl.BiDIMode" name="TDBMemo.BiDiMode"/>
<element link="#lcl.controls.TControl.BorderSpacing" name="TDBMemo.BorderSpacing"/>
<element name="TDBMemo.BorderStyle" link="#lcl.controls.TWinControl.BorderStyle"/>
<element link="#lcl.stdctrls.TCustomEdit.CharCase" name="TDBMemo.CharCase"/>
<element link="#lcl.controls.TControl.Color" name="TDBMemo.Color"/>
<element link="#lcl.controls.TControl.Constraints" name="TDBMemo.Constraints"/>
<element name="TDBMemo.DataField">
<short>
The name of the field, as a string (i.e. cannot be referred to as an Index).
</short>
<descr>
<p>
<var>DataField</var> is a <var>String</var> property which contains the name
of the field in the linked dataset where the value for the control is stored.
Read and write access to the property value are redirected to the
<var>FieldName</var> property in the <var>TFieldDataLink</var> instance used
in the class. Changing the value in DataField causes the value in the
<var>Field</var> property to be updated.
</p>
<p>
Use <var>DataSource</var> to specify the component which provides access to
the linked dataset for the control.
</p>
</descr>
<seealso>
<link id="TDBMemo.DataSource"/>
<link id="TDBMemo.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
</seealso>
</element>
<element name="TDBMemo.DataSource">
<short>Provides access to the dataset with content for the control.
</short>
<descr>
<p>
<var>DataSource</var> is a <var>TDataSource</var> property which provides
access to the content for the data-aware control. DataSource is used in
conjunction with the <var>Field</var> property to determine the dataset and
field definition used when reading the value for the control.
</p>
<p>
Read and write access to the property value is redirected to the DataSource
property in the internal <var>TFieldDataLink</var> instance used in the
control. Assigning a new value to the property causes the
<var>ChangeDataSource</var> routine to be called to apply the value to the
internal TFieldDataLink instance.
</p>
<p>
Use the <var>DataField</var> property to specify the field name accessed in
the linked dataset.
</p>
</descr>
<seealso>
<link id="TDBMemo.DataField"/>
<link id="TFieldDataLink.FieldName"/>
<link id="ChangeDataSource"/>
<link id="#fcl.db.TDataSource">TDataSource</link>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
</seealso>
</element>
<element link="#lcl.controls.TWinControl.DoubleBuffered" name="TDBMemo.DoubleBuffered"/>
<element link="#lcl.controls.TControl.DragCursor" name="TDBMemo.DragCursor"/>
<element link="#lcl.controls.TControl.DragKind" name="TDBMemo.DragKind"/>
<element link="#lcl.controls.TControl.DragMode" name="TDBMemo.DragMode"/>
<element link="#lcl.controls.TControl.Enabled" name="TDBMemo.Enabled"/>
<element link="#lcl.controls.TControl.Font" name="TDBMemo.Font"/>
<element link="#lcl.stdctrls.TCustomEdit.MaxLength" name="TDBMemo.MaxLength"/>
<element link="#lcl.stdctrls.TCustomEdit.OnChange" name="TDBMemo.OnChange"/>
<element link="#lcl.controls.TControl.OnClick" name="TDBMemo.OnClick"/>
<element link="#lcl.controls.TControl.OnContextPopup" name="TDBMemo.OnContextPopup"/>
<element link="#lcl.controls.TControl.OnDblClick" name="TDBMemo.OnDblClick"/>
<element link="#lcl.controls.TControl.OnDragDrop" name="TDBMemo.OnDragDrop"/>
<element link="#lcl.controls.TControl.OnDragOver" name="TDBMemo.OnDragOver"/>
<element link="#lcl.controls.TControl.OnEditingDone" name="TDBMemo.OnEditingDone"/>
<element link="#lcl.controls.TControl.OnEndDrag" name="TDBMemo.OnEndDrag"/>
<element link="#lcl.controls.TWinControl.OnEnter" name="TDBMemo.OnEnter"/>
<element link="#lcl.controls.TWinControl.OnExit" name="TDBMemo.OnExit"/>
<element link="#lcl.controls.TWinControl.OnKeyDown" name="TDBMemo.OnKeyDown"/>
<element link="#lcl.controls.TWinControl.OnKeyPress" name="TDBMemo.OnKeyPress"/>
<element link="#lcl.controls.TWinControl.OnKeyUp" name="TDBMemo.OnKeyUp"/>
<element link="#lcl.controls.TControl.OnMouseDown" name="TDBMemo.OnMouseDown"/>
<element link="#lcl.controls.TControl.OnMouseEnter" name="TDBMemo.OnMouseEnter"/>
<element link="#lcl.controls.TControl.OnMouseLeave" name="TDBMemo.OnMouseLeave"/>
<element link="#lcl.controls.TControl.OnMouseMove" name="TDBMemo.OnMouseMove"/>
<element link="#lcl.controls.TControl.OnMouseUp" name="TDBMemo.OnMouseUp"/>
<element link="#lcl.controls.TControl.OnMouseWheel" name="TDBMemo.OnMouseWheel"/>
<element link="#lcl.controls.TControl.OnMouseWheelDown" name="TDBMemo.OnMouseWheelDown"/>
<element link="#lcl.controls.TControl.OnMouseWheelUp" name="TDBMemo.OnMouseWheelUp"/>
<element name="TDBMemo.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element link="#lcl.controls.TControl.OnStartDrag" name="TDBMemo.OnStartDrag"/>
<element link="#lcl.controls.TWinControl.OnUTF8KeyPress" name="TDBMemo.OnUTF8KeyPress"/>
<element link="#lcl.controls.TControl.ParentBiDiMode" name="TDBMemo.ParentBiDiMode"/>
<element link="#lcl.controls.TWinControl.ParentDoubleBuffered" name="TDBMemo.ParentDoubleBuffered"/>
<element link="#lcl.controls.TControl.ParentFont" name="TDBMemo.ParentFont"/>
<element link="#lcl.controls.TControl.ParentShowHint" name="TDBMemo.ParentShowHint"/>
<element link="#lcl.controls.TControl.PopupMenu" name="TDBMemo.PopupMenu"/>
<element name="TDBMemo.ReadOnly">
<short>
Indicates that the text in the control cannot be modified.
</short>
<descr>
<p>
<var>ReadOnly</var> is a <var>Boolean</var> property which indicates whether
the control is prevented from modifying its textual content. When set to
<b>False</b>, the control value can be edited.
</p>
<p>
Read and write access specifiers in TDBMemo are overridden, and to the
property value is redirected to the ReadOnly property in the TFieldDataLink
instance used in the class. Write access calls the inherited method prior to
updating the value in the field data link.
</p>
<remark>
A value assigned to ReadOnly may be overridden by the Field definition from
the target database table.
</remark>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomEdit.ReadOnly">TCustomEdit.ReadOnly</link>
<link id="#fcl.db.TDataLink.ReadOnly">TDataLink.ReadOnly</link>
</seealso>
</element>
<element link="#lcl.stdctrls.TCustomMemo.ScrollBars" name="TDBMemo.ScrollBars"/>
<element link="#lcl.controls.TControl.ShowHint" name="TDBMemo.ShowHint"/>
<element link="#lcl.controls.TWinControl.TabOrder" name="TDBMemo.TabOrder"/>
<element link="#lcl.controls.TWinControl.TabStop" name="TDBMemo.Tabstop"/>
<element link="#lcl.controls.TControl.Visible" name="TDBMemo.Visible"/>
<element link="#lcl.stdctrls.TCustomMemo.WantReturns" name="TDBMemo.WantReturns"/>
<element link="#lcl.stdctrls.TCustomMemo.WantTabs" name="TDBMemo.WantTabs"/>
<element link="#lcl.stdctrls.TCustomMemo.WordWrap" name="TDBMemo.WordWrap"/>
<element name="TDBGroupBox">
<short>
<var>TDBGroupBox</var> is a data-aware version of <var>TGroupBox,</var>
allowing a number of data-aware objects to be grouped together on a form.
</short>
<descr>
<p>
<var>TDBGroupBox</var> is a <var>TCustomGroupBox</var> descendant which
implements a data-aware container for visual controls. A typical use case
would involve using a database table where records contain one field which
defines the group box caption, while other fields provide the values for
additional data-aware controls.
</p>
<p>
Like other data-aware controls, TDBGroupBox contains both a
<var>DataSource</var> and a <var>DataField</var> property which provides
access to the linked dataset and the field with the caption for the control.
</p>
</descr>
<seealso>
<link id="#lcl.stdctrls.TCustomGroupBox">TCustomGroupBox</link>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
</seealso>
</element>
<element name="TDBGroupBox.FDataLink">
<short>
<var>FDataLink</var> - local variable storing the identity of the Field Data
Link.
</short>
</element>
<element name="TDBGroupBox.GetDataField">
<short>Gets the value for the DataField property.</short>
<descr/>
<seealso>
<link id="TDBGroupBox.DataField"/>
</seealso>
</element>
<element name="TDBGroupBox.GetDataField.Result">
<short>Value for the property.</short>
</element>
<element name="TDBGroupBox.GetDataSource">
<short>Gets the value for the DataSource property.</short>
<descr/>
<seealso>
<link id="TDBGroupBox.DataSource"/>
</seealso>
</element>
<element name="TDBGroupBox.GetDataSource.Result">
<short>Value for the property.</short>
</element>
<element name="TDBGroupBox.GetField">
<short>Gets the value for the Field property.</short>
<descr/>
<seealso>
<link id="TDBGroupBox.Field"/>
</seealso>
</element>
<element name="TDBGroupBox.GetField.Result">
<short>Value for the property.</short>
</element>
<element name="TDBGroupBox.SetDataField">
<short>Sets the value for the DataField property.</short>
<descr/>
<seealso>
<link id="TDBGroupBox.DataField"/>
</seealso>
</element>
<element name="TDBGroupBox.SetDataField.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBGroupBox.SetDataSource">
<short>Sets the value for the DataSource property.</short>
<descr/>
<seealso>
<link id="TDBGroupBox.DataSource"/>
</seealso>
</element>
<element name="TDBGroupBox.SetDataSource.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBGroupBox.CMGetDataLink">
<short>
<var>CMGetDataLink</var> implements the control message for finding the data
link.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBGroupBox.CMGetDataLink.Message">
<short>Message where the field data link is stored in the method.</short>
</element>
<element name="TDBGroupBox.DataChange">
<short>
Updates the value for the control when the linked dataset is changed.
</short>
<descr>
<p>
<var>DataChange</var> is a procedure used to update the value displayed for
the control when its linked dataset has been changed.
</p>
<p>
DataChange is used as the <var>OnDataChange</var> event handler in the
internal <var>TFieldDataLink</var> instance used in the class. It is called
after navigating to a different record in the linked dataset, or when the
value for the <var>DataField</var> has been changed in program code.
</p>
<p>
DataChange uses the <var>Field</var> definition (when assigned) to get the
value for the <var>Caption</var> in the control. When the Field has not been
assigned, the Caption is set to an empty string <b>('')</b>.
</p>
</descr>
<seealso>
<link id="TDBGroupBox.Caption"/>
<link id="TDBGroupBox.DataField"/>
<link id="TDBGroupBox.DataSource"/>
<link id="TDBGroupBox.Field"/>
<link id="TFieldDataLink"/>
</seealso>
</element>
<element name="TDBGroupBox.DataChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBGroupBox.Notification">
<short>
Handles a notification when a component is added to or removed from the
control.
</short>
<descr>
<p>
<var>Notification</var> is called whenever a child component is destroyed,
inserted or removed from the list of owned component. Components that were
requested to send a notification when they are freed ((with <link
id="TComponent.FreeNotification">FreeNotification</link>) will also call
<var>Notification</var> when they are freed.
</p>
<p>
The <var>AComponent</var> parameter specifies which component sends the
notification, and <var>Operation</var> specifies whether the component is
being inserted into or removed from the child component list, or whether it
is being destroyed.
</p>
<p>
Descendants of <var>TComponent</var> can use <link
id="TComponent.FreeNotification">FreeNotification</link> to request
notification of the destruction of another object. By overriding the
<var>Notification</var> method, they can do special processing (typically,
set a reference to this component to <var>Nil</var>) when this component is
destroyed. The <var>Notification</var> method is called quite often in the
streaming process, so speed should be a consideration when overriding this
method.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Notification">TControl.Notification</link>
</seealso>
</element>
<element name="TDBGroupBox.Notification.AComponent">
<short>Component for the notification event.</short>
</element>
<element name="TDBGroupBox.Notification.Operation">
<short>Operation for the notification event.</short>
</element>
<element name="TDBGroupBox.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the overridden constructor for <var>TDBGroupBox</var>.
It calls the inherited <var>Create</var> method, and allocates resources for
the internal <var>TFieldDataLink</var> used in the control. The current class
instance is assigned as the <var>Control</var> for the Field Data Link, and
the <var>DataChange</var> method is used as the <var>OnDataChange</var> event
handler.
</p>
</descr>
<seealso>
<link id="TDBGroupBox.DataChange"/>
<link id="TFieldDataLink"/>
<link id="TFieldDataLink.Control"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="#lcl.stdctrls.TCustomGroupBox.Create">TCustomGroupBox.Create</link>
</seealso>
</element>
<element name="TDBGroupBox.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TDBGroupBox.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for <var>TDBGroupBox</var>.
It frees resources allocated to the internal <var>TFieldDataLink</var>
instance used in the control, and calls the inherited <var>Destroy</var>
method prior to exit.
</p>
</descr>
<seealso>
<link id="TFieldDataLink"/>
<link id="#lcl.controls.TWinControl.Destroy">TWinControl.Destroy</link>
</seealso>
</element>
<element name="TDBGroupBox.ExecuteAction">
<short>Provides support for TBasicAction in the control.</short>
<descr>
<p>
<var>ExecuteAction</var> is an overridden method in <var>TDBGroupBox</var>.
It calls the inherited method, and when the action is not handled in the
ancestor, executes <var>AAction</var> using the <var>ExecuteAction</var>
method in the internal <var>TFieldDataLink</var> instance in the class.
</p>
<p>
The return value is <b>True</b> if the action was executed in the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.ExecuteAction">TComponent.ExecuteAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TDBGroupBox.ExecuteAction.Result">
<short><b>True</b> if the action was executed in the method.</short>
</element>
<element name="TDBGroupBox.ExecuteAction.AAction">
<short>Action examined and executed in the method.</short>
</element>
<element name="TDBGroupBox.UpdateAction">
<short>Updates the specified action to reflect the current state in the
linked dataset.
</short>
<descr>
<p>
<var>UpdateAction</var> is an overridden <var>Boolean</var> function in
<var>TDBGroupBox</var>. UpdateAction is called when the
<var>Application</var> enters an idle state to ensure that the action
reflects the current state for a linked dataset.
</p>
<p>
<var>AAction</var> is the <var>TBasicAction</var> updated in the method.
</p>
<p>
UpdateAction calls the inherited method, and when the internal dataset link
has been assigned, executes its UpdateAction method. The return value is
<b>True</b> when AAction is updated using either the inherited method, or the
method in the linked dataset. The return value is <b>False</b> when AAction
could not be updated in the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
<link id="#rtl.classes.TComponent.UpdateAction">TComponent.UpdateAction</link>
<link id="#fcl.db.TDataLink.UpdateAction">TDataLink.UpdateAction</link>
</seealso>
</element>
<element name="TDBGroupBox.UpdateAction.Result">
<short><b>True</b> if the action was updated in the method.</short>
</element>
<element name="TDBGroupBox.UpdateAction.AAction">
<short>Action examined and updated in the method.</short>
</element>
<element name="TDBGroupBox.Field">
<short>The <var>Field</var> to which the datalink is attached.</short>
<descr>
<p>
<var>Field</var> is a read-only <var>TField</var> property which contains the
field definition in the linked <var>DataSet</var> for the database column
represented by the <var>DataField</var> property. Field provides access to
the metadata for the database column, such as: field type, size, display
values, lookup settings and content, editing mask, et. al.
</p>
<p>
Read access to the property value is redirected to the <var>Field</var>
property in the internal <var>TFieldDataLink</var> instance used in the class.
</p>
<p>
The <var>DataSource</var> property contains the component which provides
access to the Dataset for the data-aware control.
</p>
</descr>
<seealso>
<link id="TDBGroupBox.DataSource"/>
<link id="TDBGroupBox.DataField"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.Align" name="TDBGroupBox.Align"/>
<element link="#lcl.controls.TControl.Anchors" name="TDBGroupBox.Anchors"/>
<element link="#lcl.controls.TControl.BiDiMode" name="TDBGroupBox.BiDiMode"/>
<element link="#lcl.controls.TControl.BorderSpacing" name="TDBGroupBox.BorderSpacing"/>
<element name="TDBGroupBox.Caption">
<short>
Text displayed as the caption for the control.
</short>
<descr>
<p>
Gets caption as a text string (<var>GetText</var>), or stores the new caption
(<var>SetText</var>). Sets an internal flag if the caption is stored
(<var>IsCaptionStored</var>).
</p>
<p>
By default, the <var>Caption</var> is the same as the control <var>Name</var>
in the Object Inspector. The developer needs to set it explicitly to some new
text.
</p>
<p>
The VCL implementation relies on the virtual <var>Get/SetTextBuf</var> to
exchange text between widgets and VCL. This means a lot of (unnecessary) text
copies.
</p>
<p>
The LCL uses strings for exchanging text (more efficient). To maintain VCL
compatibility, the virtual <var>RealGet/SetText</var> is introduced. These
functions interface with the LCLInterface.
</p>
<p>
The default <var>Get/SetTextBuf</var> implementation calls
<var>RealGet/SetText</var>. As long as the <var>Get/SetTextBuf</var> isn't
overridden <var>Get/SetText</var> calls <var>RealGet/SetText</var> to avoid
PChar copy operations.
</p>
<p>
For optimal usage, LCL implementations should always override
RealGet/SetText. Get/SetTextBuf is only kept for compatibility.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Caption">TControl.Caption</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.ClientHeight" name="TDBGroupBox.ClientHeight"/>
<element link="#lcl.controls.TControl.ClientWidth" name="TDBGroupBox.ClientWidth"/>
<element link="#lcl.controls.TControl.Color" name="TDBGroupBox.Color"/>
<element link="#lcl.controls.TControl.Constraints" name="TDBGroupBox.Constraints"/>
<element name="TDBGroupBox.Cursor" link="#lcl.controls.TControl.Cursor"/>
<element name="TDBGroupBox.DataField">
<short>Contains the name of the field with the value for the control.</short>
<descr>
<p>
<var>DataField</var> is a <var>String</var> property which contains the name
for the field in the linked dataset where the value for the control is read
and written. Read and write access to the property value are redirected to
the <var>FieldName</var> property in the internal <var>TFieldDataLink</var>
instance for the control. Changing the value in DataField causes the value in
<var>Field</var> to be updated.
</p>
<p>
Set the value in <var>DataSource</var> to the component which provides access
to the dataset for the data-aware control.
</p>
</descr>
<seealso>
<link id="TDBGroupBox.Field"/>
<link id="TDBGroupBox.DataSource"/>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.Field"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
</seealso>
</element>
<element name="TDBGroupBox.DataSource">
<short>Provides access to the dataset with content for the control.
</short>
<descr>
<p>
<var>DataSource</var> is a <var>TDataSource</var> property which provides
access to the content for the data-aware control. DataSource is used in
conjunction with the <var>Field</var> property to determine the dataset and
field definition used when reading the value for the control.
</p>
<p>
Read and write access to the property value is redirected to the DataSource
property in the internal <var>TFieldDataLink</var> instance used in the
control. Assigning a new value to the property causes the
<var>ChangeDataSource</var> routine to be called to apply the value to the
internal TFieldDataLink instance.
</p>
<p>
Use the <var>DataField</var> property to specify the field name accessed in
the linked dataset.
</p>
</descr>
<seealso>
<link id="TDBGroupBox.DataField"/>
<link id="TFieldDataLink.FieldName"/>
<link id="ChangeDataSource"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataSource">TDataSource</link>
</seealso>
</element>
<element link="#lcl.controls.TWinControl.DoubleBuffered" name="TDBGroupBox.DoubleBuffered"/>
<element link="#lcl.controls.TControl.DragCursor" name="TDBGroupBox.DragCursor"/>
<element link="#lcl.controls.TControl.DragKind" name="TDBGroupBox.DragKind"/>
<element link="#lcl.controls.TControl.DragMode" name="TDBGroupBox.DragMode"/>
<element link="#lcl.controls.TControl.Enabled" name="TDBGroupBox.Enabled"/>
<element link="#lcl.controls.TControl.Font" name="TDBGroupBox.Font"/>
<element link="#lcl.controls.TControl.OnClick" name="TDBGroupBox.OnClick"/>
<element name="TDBGroupBox.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element link="#lcl.controls.TControl.OnDblClick" name="TDBGroupBox.OnDblClick"/>
<element link="#lcl.controls.TControl.OnDragDrop" name="TDBGroupBox.OnDragDrop"/>
<element link="#lcl.controls.TControl.OnDragOver" name="TDBGroupBox.OnDragOver"/>
<element link="#lcl.controls.TControl.OnEndDrag" name="TDBGroupBox.OnEndDrag"/>
<element link="#lcl.controls.TWinControl.OnEnter" name="TDBGroupBox.OnEnter"/>
<element link="#lcl.controls.TWinControl.OnExit" name="TDBGroupBox.OnExit"/>
<element name="TDBGroupBox.OnKeyDown">
<short>
Event handler signalled when a key is down while the control has focus.
</short>
<descr>
<p>
<var>OnKeyDown</var> differs from <link
id="TDBGroupBox.OnKeyPress">OnKeyPress</link> in that the key may have
already been down when the control received focus; with <var>OnKeyPress</var>
the key needs to become pressed while the control has focus.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.OnKeyDown">TWinControl.OnKeyDown</link>
</seealso>
</element>
<element name="TDBGroupBox.OnKeyPress">
<short>
Event handler signalled when a key is being pressed while the control has
focus.
</short>
<descr>
<p>
<var>OnKeyPress</var> is an event controller signalled when a key is being
pressed while the control has focus.
</p>
<p>
Differs from <link id="TDBGroupBox.OnKeyDown">OnKeyDown</link> in that the
key needs to become pressed while the control has focus; with
<var>OnKeyDown</var> the key may have already been down when the control
received focus.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.OnKeyPress">TWinControl.OnKeyPress</link>
</seealso>
</element>
<element name="TDBGroupBox.OnKeyUp">
<short>
Event handler signalled when a key is up (not pressed) while the control has
focus.
</short>
<descr>
<p>
<var>OnKeyUp</var> is an event handler signalled when a key is up (not
pressed) while the control has focus.
</p>
<p>
The key may already have been up when the control received focus, or a
pressed key may become released during the time the control has focus.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.OnKeyUp">TWinControl.OnKeyUp</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.OnMouseDown" name="TDBGroupBox.OnMouseDown"/>
<element link="#lcl.controls.TControl.OnMouseEnter" name="TDBGroupBox.OnMouseEnter"/>
<element link="#lcl.controls.TControl.OnMouseLeave" name="TDBGroupBox.OnMouseLeave"/>
<element link="#lcl.controls.TControl.OnMouseMove" name="TDBGroupBox.OnMouseMove"/>
<element link="#lcl.controls.TControl.OnMouseUp" name="TDBGroupBox.OnMouseUp"/>
<element link="#lcl.controls.TControl.OnMouseWheel" name="TDBGroupBox.OnMouseWheel"/>
<element link="#lcl.controls.TControl.OnMouseWheelDown" name="TDBGroupBox.OnMouseWheelDown"/>
<element link="#lcl.controls.TControl.OnMouseWheelUp" name="TDBGroupBox.OnMouseWheelUp"/>
<element link="#lcl.controls.TControl.OnResize" name="TDBGroupBox.OnResize"/>
<element link="#lcl.controls.TControl.OnStartDrag" name="TDBGroupBox.OnStartDrag"/>
<element link="#lcl.controls.TWinControl.OnUTF8KeyPress" name="TDBGroupBox.OnUTF8KeyPress"/>
<element link="#lcl.controls.TControl.ParentBiDiMode" name="TDBGroupBox.ParentBiDiMode"/>
<element link="#lcl.controls.TControl.ParentColor" name="TDBGroupBox.ParentColor"/>
<element link="#lcl.controls.TWinControl.ParentDoubleBuffered" name="TDBGroupBox.ParentDoubleBuffered"/>
<element link="#lcl.controls.TControl.ParentFont" name="TDBGroupBox.ParentFont"/>
<element link="#lcl.controls.TControl.ParentShowHint" name="TDBGroupBox.ParentShowHint"/>
<element link="#lcl.controls.TControl.PopupMenu" name="TDBGroupBox.PopupMenu"/>
<element link="#lcl.controls.TControl.ShowHint" name="TDBGroupBox.ShowHint"/>
<element link="#lcl.controls.TWinControl.TabOrder" name="TDBGroupBox.TabOrder"/>
<element link="#lcl.controls.TWinControl.TabStop" name="TDBGroupBox.TabStop"/>
<element name="TDBGroupBox.Visible">
<short>
Indicates if the control is visible on its parent.
</short>
<descr>
<p>
The Visible property represents the ability to see a visual control. If
Visible is <b>True</b> the control is shown, otherwise it is hidden. Calling
Show sets, among others, Visible to <b>True</b>. Setting Visible to
<b>False</b> is equivalent to calling Hide method.
</p>
<remark>
The Visible property does not depend on control's parent visibility. Use
IsVisible method to consider this and get real visibility.
</remark>
</descr>
<seealso>
<link id="#lcl.controls.TControl.Visible">TControl.Visible</link>
</seealso>
</element>
<element name="TOnDBImageRead">
<short>
Specifies an event handler signalled to identify the graphic type for a
database image.
</short>
<descr>
<p>
<var>TOnDBImageRead</var> is the type used for the <var>OnDBImageRead</var>
property in <var>TDBImage</var>. It provides a mechanism for identifying the
graphic class needed to load image content in the specified stream. In
general, it is used when image data in S contains an additional header that
must be processed / handled prior to reading the raw image data.
</p>
</descr>
<seealso>
<link id="TDbImage.OnDbImageRead"/>
<link id="TDbImage.LoadPicture"/>
</seealso>
</element>
<element name="TOnDBImageRead.Sender">
<short>
Object (TDBImage) instance for the event notification.
</short>
</element>
<element name="TOnDBImageRead.S">
<short>
Stream instance with the image data examined in the event handler.
</short>
</element>
<element name="TOnDBImageRead.GraphExt">
<short>
Returns the file extension used for the graphic type, or an empty string when
not determined.
</short>
</element>
<element name="TOnDBImageWrite">
<short>
Event handler signalled when an image is written to the specified stream.
</short>
<descr>
<p>
<var>TOnDBImageWrite</var> is the type used for the <var>OnDbImageWrite</var>
property in <var>TDBImage</var>.
</p>
</descr>
<seealso>
<link id="TDbImage.OnDbImageWrite"/>
<link id="TDbImage.UpdateData"/>
</seealso>
</element>
<element name="TOnDBImageWrite.Sender">
<short>Object (TDBImage) for the event notification.</short>
</element>
<element name="TOnDBImageWrite.S">
<short>Stream instance where the image is stored.</short>
</element>
<element name="TOnDBImageWrite.GraphExt">
<short>File extension associated with the image data.</short>
</element>
<element name="TDBImage">
<short>
<var>TDBImage</var> - a data-aware Image box to display a single image from a
dataset.
</short>
<descr>
<p>
TDBImage is a TCustomImage descendant which implements a data-aware image
control.
TDBImage is used to retrieve or save a graphic image in a field in a dataset.
The field is generally a Binary Large Object (BLOB). The control allows use
of clipboard operations, like Copy/Cut/Paste to add or update the content in
the image.
</p>
<p>
If an application doesn't need the data-aware capabilities of TDBImage, use a
TImage control.
</p>
<p>
TDBImage, like most data-aware controls, provides DataSource and DataField
properties to connect the control to a dataset and field. Internally, it uses
a TFieldDataLink to maintain an association between the control and its
database-related configuration settings.
</p>
<p>
Use the AutoDisplay, AutoSize, Stretch, Proportional, and Transparent
properties to determine the display and sizing behavior for the graphic image.
</p>
</descr>
<seealso>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
</seealso>
</element>
<element name="TDBImage.FDataLink"/>
<element name="TDBImage.FAutoDisplay"/>
<element name="TDBImage.FOnDBImageRead"/>
<element name="TDBImage.FOnDBImageWrite"/>
<element name="TDBImage.FQuickDraw"/>
<element name="TDBImage.FPictureLoaded"/>
<element name="TDBImage.FUpdatingRecord"/>
<element name="TDBImage.FWriteHeader"/>
<element name="TDBImage.GetDataField">
<short>Gets the value for the DataField property.</short>
<descr>
<p>
Returns the FieldName property from the field data link.
</p>
</descr>
<seealso/>
</element>
<element name="TDBImage.GetDataField.Result">
<short>Field name with the data for the control.</short>
</element>
<element name="TDBImage.GetDataSource">
<short>Gets the value for the DataSource property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBImage.GetDataSource.Result">
<short>Value for the DataSource property.</short>
</element>
<element name="TDBImage.GetField">
<short>Gets the value for the Field property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBImage.GetField.Result">
<short>Value for the Field property.</short>
</element>
<element name="TDBImage.GetReadOnly">
<short>Gets the value for the ReadOnly property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBImage.GetReadOnly.Result">
<short>Value for the ReadOnly property.</short>
</element>
<element name="TDBImage.SetAutoDisplay">
<short>Sets the value for the AutoDisplay property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBImage.SetAutoDisplay.AValue">
<short>Value for the AutoDisplay property.</short>
</element>
<element name="TDBImage.SetDataField">
<short>Sets the value for the DataField property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBImage.SetDataField.AValue">
<short>New value for the DataField property.</short>
</element>
<element name="TDBImage.SetDataSource">
<short>Sets the value for the DataSource property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBImage.SetDataSource.AValue">
<short>New value for the DataSource property.</short>
</element>
<element name="TDBImage.SetReadOnly">
<short>Sets the value for the ReadOnly property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBImage.SetReadOnly.AValue">
<short>New value for the ReadOnly property.</short>
</element>
<element name="TDBImage.CMGetDataLink">
<short>Implements the CM_GETDATALINK message for the control.</short>
<descr/>
<seealso/>
</element>
<element name="TDBImage.CMGetDataLink.Message">
<short>Message for the handler.</short>
</element>
<element name="TDBImage.Notification">
<short>
Handles notifications when a component in the class instance is added or
removed.
</short>
<descr>
<p>
Notification is an overridden method in TDBImage used to handle the
notification received when a component for the control is added or removed.
It calls the inherited method on entry.
</p>
<p>
Notification ensures that the Datasource member is set to Nil when its
component is removed from the control. Needed when the data link for the
control has been assigned.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.Notification">TComponent.Notification</link>
</seealso>
</element>
<element name="TDBImage.Notification.AComponent">
<short>Component for the notification.</short>
</element>
<element name="TDBImage.Notification.Operation">
<short>Operation for the notification.</short>
</element>
<element name="TDBImage.DataChange">
<short>Performs actions needed when the content in the linked dataset has
been changed.
</short>
<descr>
<p>
<var>DataChange</var> is a procedure used to perform actions needed when the
content in the linked dataset has been changed. Such as when the record
position has changed when scrolling the dataset.
</p>
<p>
DataChange ensures that the <var>TGraphic</var> instance in
<var>Picture</var> is set to <b>Nil</b>. If <var>AutoDisplay</var> is set to
<b>True</b>, the graphic image is loaded by calling the
<var>LoadPicture</var> method.
</p>
<p>
DataChange is assigned as the <var>OnDataChange</var> event handler in the
internal <var>TFieldDataLink</var> instance used in the class.
</p>
</descr>
<seealso>
<link id="TDBImage.AutoDisplay"/>
<link id="TDBImage.LoadPicture"/>
<link id="TFieldDataLink.OnDataChange"/>
<link id="#lcl.extctrls.TCustomImage.Picture">TCustomImage.Picture</link>
<link id="#lcl.graphics.TPicture.Graphic">TPicture.Graphic</link>
</seealso>
</element>
<element name="TDBImage.DataChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBImage.UpdateData">
<short>
Performs actions needed to validate and store the content for the image
control.
</short>
<descr>
<p>
UpdateData is a procedure used to validate and store the content for the
image control.
</p>
<p>
UpdateData examines the Picture in the image control to ensure that it has
been assigned, and contains image content. The Field in the linked dataset is
cleared if either condition is <b>False</b>, and no additional actions are
performed in the method.
</p>
<p>
Otherwise, a BLOB stream is created and used to write the image content to
the field in the linked dataset. The OnDBImageWrite event handler is
signalled (when assigned) to write a custom image header to the BLOB stream.
If OnDBImageWrite is not used, and WriteHeader is <b>True</b>, the file
extension for the graphic format is written to the BLOB stream. Finally, the
content for the bitmap graphic is written to the BLOB stream.
</p>
<p>
UpdateData is assigned as the OnUpdateData event handler in the internal
TFieldDataLink instance used in the control.
</p>
</descr>
<seealso>
<link id="TDBImage.Field"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.OnUpdateData"/>
</seealso>
</element>
<element name="TDBImage.UpdateData.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBImage.PictureChanged">
<short>
Performs actions needed when the Picture property in the image control has
been changed.
</short>
<descr>
<p>
PictureChanged is an overridden method in TDBImage, and calls the inherited
method. PictureChanged ensures that the Change method is called if it has not
already been executed.
</p>
<p>
PictureChanged is assigned as the OnChange event handler for the TPicture
instance in the Picture property.
</p>
</descr>
<seealso>
<link id="#lcl.extctrls.TCustomImage.PictureChanged">TCustomImage.PictureChanged</link>
<link id="#lcl.graphics.TPicture.OnChange">TPicture.OnChange</link>
</seealso>
</element>
<element name="TDBImage.PictureChanged.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBImage.WSRegisterClass">
<short>Register the component class with the widgetset.</short>
<descr>
<p>
<var>WSRegisterClass</var> is a class method used to register the component
class with the widgetset.
</p>
<p>
It is overridden in <var>TDBImage</var> to ensure that the class is
registered only once. No actions are performed in the method if the class has
already been registered with the widgetset. It calls the inherited method to
register ancestor image classes.
</p>
<p>
TDBImage calls <var>RegisterPropertyToSkip</var> to exclude the
<var>Picture</var> property during LCL component streaming. TDBImage loads
its Picture data from the data set, and not from an LFM resource. Picture was
removed in Lazarus version 0.9.29.
</p>
</descr>
<seealso>
<link id="#lcl.extctrls.TCustomImage.WSRegisterClass">TCustomImage.WSRegisterClass</link>
<link id="#lcl.extctrls.TCustomImage.Picture">TCustomImage.Picture</link>
<link id="#lcl.lresources.RegisterPropertyToSkip">RegisterPropertyToSkip</link>
</seealso>
</element>
<element name="TDBImage.DoCopyToClipboard">
<short>Implements the clipboard Copy (Ctrl+C) command.</short>
<descr>
<p>
<var>DoCopyToClipboard</var> is a procedure used to implement the clipboard
<b>Copy</b> (<b>Ctrl+C</b>) command. DoCopyToClipboard assigns the
<var>Picture</var> in the control to the <var>Clipboard</var> for the
application.
</p>
<p>
For the Windows platform, the <var>TBitmap</var> format is expected in
Picture. For all other platforms, the <var>TPortableNetworkGraphic</var>
format is expected. DoCopyToClipboard calls the <var>AddFormat</var> method
in Clipboard when needed. If Picture uses a <var>Graphic</var> format other
than expected, it is written to a memory stream and loaded into the Clipboard
using the newly registered graphic format.
</p>
</descr>
<seealso>
<link id="#lcl.extctrls.TCustomImage.Picture">TCustomImage.Picture</link>
<link id="#lcl.clipbrd.TClipboard.AddFormat">TClipboard.AddFormat</link>
<link id="#lcl.clipbrd.TClipboard">TClipboard</link>
<link id="#lcl.graphics.TGraphic">TGraphic</link>
<link id="#lcl.graphics.TBitmap">TBitmap</link>
<link id="#lcl.graphics.TPortableNetworkGraphic">TPortableNetworkGraphic</link>
</seealso>
</element>
<element name="TDBImage.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.
</p>
<p>
Create allocates resources for the internal <var>TFieldDataLink</var>
instance used in the class, and configures the data link. The
<var>DataChange</var> and <var>UpdateData</var> methods are used as the
<var>OnDataChange</var> and <var>OnUpdateData</var> event handlers in the
data link.
</p>
<p>
Create sets the default value for the following properties:
</p>
<dl>
<dt>ControlStyle</dt>
<dd>Includes csReplicatable in the existing style for the control.</dd>
<dt>AutoDisplay</dt>
<dd>Set to <b>True</b>.</dd>
<dt>QuickDraw</dt>
<dd>Set to <b>True</b>.</dd>
<dt>WriteHeader</dt>
<dd>Set to <b>True</b>.</dd>
</dl>
</descr>
<seealso>
<link id="#lcl.extctrls.TCustomImage.Create">TCustomImage.Create</link>
</seealso>
</element>
<element name="TDBImage.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TDBImage.Destroy">
<short>Destructor for the class instance.</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance.
Destroy ensures that resources allocated to the internal
<var>TFieldDataLink</var> instance is freed, and calls the inherited
destructor prior to exiting from the method.
</p>
</descr>
<seealso>
<link id="#lcl.extctrls.TCustomImage.Destroy">TCustomImage.Destroy</link>
</seealso>
</element>
<element name="TDBImage.ExecuteAction">
<short>Provides support for TBasicAction in the control.</short>
<descr>
<p>
<var>ExecuteAction</var> is an overridden method in <var>TDBImge</var>. It
calls the inherited method, and when the action is not handled in the
ancestor, executes <var>AAction</var> using the <var>ExecuteAction</var>
method in the internal <var>TFieldDataLink</var> instance in the class.
</p>
<p>
The return value is <b>True</b> if the action was executed in the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.ExecuteAction">TComponent.ExecuteAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TDBImage.ExecuteAction.Result">
<short><b>True</b> if the action was executed in the method.</short>
</element>
<element name="TDBImage.ExecuteAction.AAction">
<short>Action examined and executed in the method.</short>
</element>
<element name="TDBImage.UpdateAction">
<short>Updates the specified action to reflect the current state in the
linked dataset.
</short>
<descr>
<p>
<var>UpdateAction</var> is an overridden <var>Boolean</var> function in
<var>TDBImage</var>. UpdateAction is called when the <var>Application</var>
enters an idle state to ensure that the action reflects the current state for
a linked dataset.
</p>
<p>
<var>AAction</var> is the <var>TBasicAction</var> updated in the method.
</p>
<p>
UpdateAction calls the inherited method, and when the internal dataset link
has been assigned, executes its UpdateAction method. The return value is
<b>True</b> when AAction is updated using either the inherited method, or the
method in the linked dataset. The return value is <b>False</b> when AAction
could not be updated in the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
<link id="#rtl.classes.TComponent.UpdateAction">TComponent.UpdateAction</link>
<link id="#fcl.db.TDataLink.UpdateAction">TDataLink.UpdateAction</link>
</seealso>
</element>
<element name="TDBImage.UpdateAction.Result">
<short><b>True</b> if the action was updated in the method.</short>
</element>
<element name="TDBImage.UpdateAction.AAction">
<short>Action examined and updated in the method.</short>
</element>
<element name="TDBImage.Field">
<short>
Definition for the field in the linked dataset where the control value is
stored.</short>
<descr>
<p>
<var>Field</var> is a read-only <var>TField</var> property which provides
access to the field definition to which the data-aware control is linked.
Read access for the property is redirected to the Field property in the
internal TFieldDataLink class instance. The value in Field is updated when a
new value is assigned to the Field in the TFieldDataLink instance.
</p>
<p>
Use <var>DataField</var> to read or write the field name used for the
data-aware control. Use <var>DataSource</var> to specify the component with
the dataset containing the specified field name.
</p>
</descr>
<seealso>
<link id="TDBImage.DataField"/>
<link id="TDBImage.DataSource"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="#fcl.db.TField">TField</link>
</seealso>
</element>
<element name="TDBImage.Change">
<short>Notifies the linked dataset when the value in the control is changed.
</short>
<descr>
<p>
<var>Change</var> is a procedure used to notify the linked dataset in
<var>DataSource</var> when the image in the control has been changed. Change
calls the <var>Modified</var> method in the internal
<var>TFieldDataLink</var> instance used in the class. This results in the
<var>UpdateData</var> method being called to post the new value to the field
in the dataset.
</p>
</descr>
<seealso>
<link id="TDBImage.UpdateData"/>
<link id="TDBImage.DataField"/>
<link id="TDBImage.DataSource"/>
<link id="TFieldDataLink.Modified"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
</seealso>
</element>
<element name="TDBImage.LoadPicture">
<short>
Loads the graphic content for the control from a field in the linked dataset.
</short>
<descr>
<p>
<var>LoadPicture</var> is a procedure used to load the graphic content into
the image control from the field in the linked dataset. <var>DataField</var>
contains the field name with the value for the control. <var>DataSource</var>
is the component which provides access to the dataset with the specified
field name.
</p>
<p>
LoadPicture uses the internal <var>TFieldDataLink</var> in the class instance
to access the dataset and the field definition used in the operation. The
Field is assigned to the <var>Picture</var> in the control when it is not
already in use. If the Field is a <b>BLOB</b> field type, a <b>BLOB</b>
stream is created and used to load the content in Picture.
</p>
<p>
LoadPicture uses the <var>OnDBImageRead</var> event handler (when assigned)
to identify and load the graphic header and content for the image. When
OnDBImageRead is implemented, it is assumed that a known graphic type is
processed in its entirety in the handler. Otherwise, an invalid graphic type
is returned and the remainder of the stream content is the graphic image
data. In particular, returning an invalid graphic class while the stream
contains an image header will not work.
</p>
<p>
If OnDBImageRead is not used, the <var>ReadImageHeader</var> method is called
and the content for the graphic type is read and assigned to the Picture in
the control.
</p>
<p>
LoadPicture is called when the value in the <var>AutoDisplay</var> property
is changed to <b>True</b>, and from the implementation of the
<var>DataChange</var> method.
</p>
<p>
Use <var>PictureLoaded</var> to determine if LoadPicture has already been
called for the current record in the linked dataset.
</p>
</descr>
<seealso>
<link id="TDBImage.AutoDisplay"/>
<link id="TDBImage.PictureLoaded"/>
<link id="TDBImage.DataChange"/>
<link id="TDBImage.Field"/>
<link id="TDBImage.DataField"/>
<link id="TDBImage.DataSource"/>
<link id="TDBImage.OnDBImageRead"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#lcl.extctrls.TCustomImage.Picture">TCustomImage.Picture</link>
<link id="#lcl.graphics.TPicture.Graphic">TPicture.Graphic</link>
</seealso>
</element>
<element name="TDBImage.CopyToClipboard">
<short>
Performs actions needed for the Clipboard Copy (Ctrl+C) command.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBImage.CutToClipboard">
<short>Performs actions needed for the Clipboard Cut (Ctrl+C) command.</short>
<descr/>
<seealso/>
</element>
<element name="TDBImage.PasteFromClipboard">
<short>
Performs actions needed for the Clipboard Paste (Ctrl+V) command.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBImage.PictureLoaded">
<short>
Indicates if the graphic content for the data-aware control has been loaded
from its linked dataset.
</short>
<descr/>
<seealso/>
</element>
<element link="#lcl.controls.TControl.Align" name="TDBImage.Align"/>
<element link="#lcl.controls.TControl.Anchors" name="TDBImage.Anchors"/>
<element link="#lcl.extctrls.TCustomImage.AntiAliasingMode" name="TDBImage.AntiAliasingMode"/>
<element name="TDBImage.AutoDisplay">
<short>
<var>AutoDisplay</var> - if <b>True</b>, automatically displays when focus is
given.
</short>
<descr>
<p>
<var>AutoDisplay</var> is a <var>Boolean</var> property which indicates if
the graphic content for the control is automatically displayed when values
become available in the linked dataset. AutoDisplay is used in the
implementation of the <var>DataChange</var> method to determine if
<var>LoadPicture</var> is called.
</p>
<p>
Setting the property to <b>True</b> calls the LoadPicture method to retrieve
the graphic content from the field in <var>DataField</var>.
</p>
<p>
The default value for the property is <b>True</b>.
</p>
</descr>
<seealso>
<link id="TDBImage.LoadPicture"/>
<link id="TDBImage.DataChange"/>
<link id="TDBImage.Field"/>
<link id="TDBImage.DataField"/>
<link id="TDBImage.DataSource"/>
<link id="TFieldDataLink"/>
</seealso>
</element>
<element name="TDBImage.AutoSize" link="#lcl.controls.TControl.AutoSize"/>
<element link="#lcl.controls.TControl.BorderSpacing" name="TDBImage.BorderSpacing"/>
<element link="#lcl.extctrls.TCustomImage.Center" name="TDBImage.Center"/>
<element link="#lcl.controls.TControl.Constraints" name="TDBImage.Constraints"/>
<element name="TDBImage.DataField">
<short>Contains the name of the field with the value for the control.</short>
<descr>
<p>
<var>DataField</var> is a <var>String</var> property which contains the name
for the field in the linked dataset where the value for the control is read
and written. Read and write access to the property value are redirected to
the <var>FieldName</var> property in the internal <var>TFieldDataLink</var>
instance for the control. Changing the value in DataField causes the value in
<var>Field</var> to be updated.
</p>
<p>
Set the value in <var>DataSource</var> to the component which provides access
to the dataset for the data-aware control.
</p>
<p>
Graphic content read from DataField is stored in the Picture property for
display and editing using the control.
</p>
</descr>
<seealso>
<link id="TDBImage.Field"/>
<link id="TDBImage.DataSource"/>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.Field"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
<link id="#lcl.extctrls.TCustomImage.Picture">TCustomImage.Picture</link>
</seealso>
</element>
<element name="TDBImage.DataSource">
<short>
Provides access to the dataset with content for the control.
</short>
<descr>
<p>
<var>DataSource</var> is a <var>TDataSource</var> property which provides
access to the content for the data-aware control. DataSource is used in
conjunction with the <var>Field</var> property to determine the dataset and
field definition used when reading the value for the control.
</p>
<p>
Read and write access to the property value is redirected to the DataSource
property in the internal <var>TFieldDataLink</var> instance used in the
control. Assigning a new value to the property causes the
<var>ChangeDataSource</var> routine to be called to apply the value to the
internal TFieldDataLink instance.
</p>
<p>
Use the <var>DataField</var> property to specify the field name accessed in
the linked dataset.
</p>
</descr>
<seealso>
<link id="#fcl.db.TDataSource">TDataSource</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.DragCursor" name="TDBImage.DragCursor"/>
<element link="#lcl.controls.TControl.DragKind" name="TDBImage.DragKind"/>
<element link="#lcl.controls.TControl.DragMode" name="TDBImage.DragMode"/>
<element name="TDBImage.KeepOriginXWhenClipped" link="#lcl.extctrls.TCustomImage.KeepOriginXWhenClipped"/>
<element name="TDBImage.KeepOriginYWhenClipped" link="#lcl.extctrls.TCustomImage.KeepOriginYWhenClipped"/>
<element name="TDBImage.OnClick" link="#lcl.controls.TControl.OnClick"/>
<element name="TDBImage.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element name="TDBImage.OnDblClick" link="#lcl.controls.TControl.OnDblClick"/>
<element name="TDBImage.OnDBImageRead">
<short>Event to read a custom header from image stream.</short>
<descr>
<p>
By default, the <var>TDbImage</var> component expects a header at the start
of the image stream. This helps to efficiently identify the image format
contained in the data stream. On writing, the header is controlled by the
<var>WriteHeader</var> property or the <var>OnDbImageWrite</var> event
handler.
</p>
<p>
When loading image data which was created by external applications, the data
stream may not have a header or the header is not a format identifier that
the <var>TDbImage</var> component would recognize.
</p>
<p>
In this case, the <var>OnDbImageRead</var> event can be used to identify the
image format in the data stream. In the <var>GraphExt</var> parameter it must
return a format identifier corresponding to the registered image format. This
format identifier could e.g. be read from the data stream provided in the
<var>s</var> parameter. On return, the data stream should start with the raw
image data.
</p>
<p>
If the <var>OnDbImageRead</var> handler was not implemented or if it returns
an invalid format identifier, the <var>TDbImage</var> component will try to
load the image by checking the data stream content. This means that it is not
necessary to write an <var>OnDbImageRead</var> event handler for the most
common image formats, For example: jpg, png, gif or bmp.
</p>
<p>
The <var>TDbImage</var> component will be able to identify the image format
even if the data stream doesn't have a header for those TGraphic registered
classes that implement the IsStreamFormatSupported method.
</p>
</descr>
</element>
<element name="TDBImage.OnDBImageWrite">
<short>Event to write a custom header into image stream.</short>
<descr>
<p>
Use <var>OnDBImageWrite</var> to write a custom header in the image stream.
This header could be "decoded" in the handler for the
<var>OnDbImageRead</var> event when loading. The header will be followed by
the image raw data.
</p>
<p>
By default, <var>TDbImage</var> will write an image header in order to
efficiently identify the image format when loading. This behavior is
controlled by the <var>WriteHeader</var> property. If your database will be
shared with external applications that do not support this, it is important
to not write an image header. This could be achieved by writing an empty
handler for <var>OnDbImageWrite</var>. Note that an empty handler has the
same effect as setting WriteHeader to <b>False</b>.
</p>
<p>
<var>OnDbImageWrite</var> has precedence over the <var>WriteHeader</var>
property.
</p>
</descr>
</element>
<element link="#lcl.controls.TControl.PopupMenu" name="TDBImage.PopupMenu"/>
<element link="#lcl.controls.TControl.OnDragDrop" name="TDBImage.OnDragDrop"/>
<element link="#lcl.controls.TControl.OnDragOver" name="TDBImage.OnDragOver"/>
<element link="#lcl.controls.TControl.OnEndDrag" name="TDBImage.OnEndDrag"/>
<element link="#lcl.controls.TControl.OnMouseDown" name="TDBImage.OnMouseDown"/>
<element link="#lcl.controls.TControl.OnMouseEnter" name="TDBImage.OnMouseEnter"/>
<element link="#lcl.controls.TControl.OnMouseLeave" name="TDBImage.OnMouseLeave"/>
<element link="#lcl.controls.TControl.OnMouseMove" name="TDBImage.OnMouseMove"/>
<element link="#lcl.controls.TControl.OnMouseUp" name="TDBImage.OnMouseUp"/>
<element name="TDBImage.OnMouseWheel" link="#lcl.controls.TControl.OnMouseWheel"/>
<element name="TDBImage.OnMouseWheelDown" link="#lcl.controls.TControl.OnMouseWheelDown"/>
<element name="TDBImage.OnMouseWheelUp" link="#lcl.controls.TControl.OnMouseWheelUp"/>
<element name="TDBImage.OnResize" link="#lcl.controls.TControl.OnResize"/>
<element link="#lcl.controls.TControl.OnStartDrag" name="TDBImage.OnStartDrag"/>
<element link="#lcl.controls.TControl.ParentShowHint" name="TDBImage.ParentShowHint"/>
<element link="#lcl.extctrls.TCustomImage.Proportional" name="TDBImage.Proportional"/>
<element name="TDBImage.QuickDraw">
<short>
<var>QuickDraw</var> - if <b>True</b>, quick drawing is implemented.
</short>
<descr>
<p>
QuickDraw is a Boolean property which indicates if QuickDraw is enabled for
the platform or OS. The default value for the property is <b>True</b>.
</p>
<remark>
QuickDraw is not used in the current LCL implementation.
</remark>
</descr>
<seealso/>
</element>
<element name="TDBImage.ReadOnly">
<short>
Indicates if the control cannot modify the image in the field for the linked
dataset.
</short>
<descr>
<p>
<var>ReadOnly</var> is a <var>Boolean</var> property which indicates if the
control cannot modify its <var>DataField</var> in the linked dataset. When
set to <b>True</b>, the underlying field value cannot be modified using the
control.
</p>
<p>
Read and write access for the property value are redirected to the ReadOnly
property in the TFieldDataLink instance used in the control.
</p>
<remark>
A value assigned to ReadOnly may be overridden by the Field definition in the
target database table.
</remark>
</descr>
<seealso>
<link id="TDBImage.DataField"/>
<link id="TDBImage.DataSource"/>
<link id="TDBImage.Field"/>
<link id="#fcl.db.TDataLink.ReadOnly">TDataLink.ReadOnly</link>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.ShowHint" name="TDBImage.ShowHint"/>
<element link="#lcl.extctrls.TCustomImage.Stretch" name="TDBImage.Stretch"/>
<element name="TDBImage.StretchInEnabled" link="#lcl.extctrls.TCustomImage.StretchInEnabled"/>
<element name="TDBImage.StretchOutEnabled" link="#lcl.extctrls.TCustomImage.StretchOutEnabled"/>
<element link="#lcl.extctrls.TCustomImage.Transparent" name="TDBImage.Transparent"/>
<element name="TDBImage.Visible" link="#lcl.controls.TControl.Visible"/>
<element name="TDBImage.WriteHeader">
<short>Write a header in the image stream.</short>
<descr>
<p>
The <var>WriteHeader</var> property controls whether or not a header will be
written to the image stream. By default a header will be written. This helps
to efficiently identify the image format when loading. The writing of a
header in the image stream could be a problem if the database will be shared
with external applications that do not expect a header in the image stream.
In this case, set WriteHeader value to <b>False</b> in order to skip the
header writing.
</p>
<p>
The default value is <b>True</b>.
</p>
<p>
Note: The <var>WriteHeader</var> value is ignored if the
<var>OnDbImageWrite</var> event is implemented.
</p>
</descr>
</element>
<element name="TDBCalendar">
<short>
<var>TDBCalendar</var> - a data-aware version of <var>TCalendar</var>, for
selecting a date to store in a database field.
</short>
<descr>
<p>
<var>TDBCalendar</var> is a <var>TCalendar</var> descendant which implements
a data-aware calendar control used to select a date and store its value in a
database field. <var>TDBCalendar</var>, like its ancestor, displays a
calendar which can be used to navigate through years, months, and days to
select the Date value for the control. When Date has been assigned, it is
stored in the field identified by the name in DataField.
</p>
<p>
Use Field to access the definition and metadata for the field where the Date
value is stored.
</p>
<p>
Use DataSource to assign the component with the dataset where the Date value
is stored.
</p>
<p>
Use DisplaySettings to control the visual appearance and content displayed on
the calendar control.
</p>
<p>
Use the OnYearChanged event to perform action required when the navigation
arrows in the calendar are used to change the year in the Date value.
</p>
<p>
Internally, a TFieldDataLink class instance is used to maintain the
association between the control, the datasource, and the field. In addition,
support for using standard actions is provided in the ExecuteAction and
UpdateAction methods.
</p>
<remark/>
</descr>
<seealso>
<link id="#lcl.calendar.TCalendar">TCalendar</link>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
</seealso>
</element>
<element name="TDBCalendar.FDataLink">
<short>
<var>FDataLink</var> is a local variable used to hold field information for
the linked dataset.
</short>
</element>
<element name="TDBCalendar.DataChange">
<short>
<var>DataChange</var> - if the link is active, transmit the changed data.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBCalendar.DataChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBCalendar.UpdateDate">
<short>
<var>UpdateDate</var> - implements any pending changes in the date selected.
</short>
</element>
<element name="TDBCalendar.UpdateData.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBCalendar.GetDataField">
<short>Gets the value for the DataField property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBCalendar.GetDataField.Result">
<short>Value for the property.</short>
</element>
<element name="TDBCalendar.GetDataSource">
<short>Gets the value for the DataSource property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBCalendar.GetDataSource.Result">
<short>Value for the property.</short>
</element>
<element name="TDBCalendar.GetField">
<short>Gets the value for the Field property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBCalendar.GetField.Result">
<short>Value for the property.</short>
</element>
<element name="TDBCalendar.GetReadOnly">
<short>Gets the value for the ReadOnly property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBCalendar.GetReadOnly.Result">
<short>Value for the property.</short>
</element>
<element name="TDBCalendar.SetReadOnly">
<short>Sets the value for the ReadOnly property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBCalendar.SetReadOnly.Value">
<short>New value for the property.</short>
</element>
<element name="TDBCalendar.SetDate">
<short>Sets the value for the Date property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBCalendar.SetDate.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCalendar.SetDataField">
<short>Sets the value for the DataField property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBCalendar.SetDataField.Value">
<short>New value for the property.</short>
</element>
<element name="TDBCalendar.SetDataSource">
<short>Sets the value for the DataSource property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBCalendar.SetDataSource.Value">
<short>New value for the property.</short>
</element>
<element name="TDBCalendar.UpdateDate">
<short>Updates the value in the Date property.</short>
<descr/>
<seealso/>
</element>
<element name="TDBCalendar.UpdateDate.AValue">
<short>Value assigned to the Date property.</short>
</element>
<element name="TDBCalendar.CMGetDataLink">
<short>
<var>CMGetDataLink</var> - control message method for getting the data link.
</short>
</element>
<element name="TDBCalendar.CMGetDataLink.Message">
<short>Implements the CM_GETDATALINK message for the control.</short>
</element>
<element name="TDBCalendar.Notification">
<short>
Handles the notification when a component on the control is added or removed.
</short>
<descr>
<p>
Notification is an overridden method in TDBCalendar. It ensures that the
DataSource is set to Nil when the component is freed.
</p>
</descr>
<seealso>
<link id="TDBCalendar.DataSource"/>
<link id="#lcl.controls.TControl.Notification">TControl.Notification</link>
</seealso>
</element>
<element name="TDBCalendar.Notification.AComponent">
<short>Component for the notification.</short>
</element>
<element name="TDBCalendar.Notification.Operation">
<short>Operation for the notification.</short>
</element>
<element name="TDBCalendar.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. Create allocates resources for the internal
<var>TFieldDataLink</var> instance used in the class. The
<var>DataChange</var> and <var>UpdateData</var> methods in the control are
assigned to the <var>OnDataChange</var> and <var>OnUpdateData</var> event
handlers in the TFieldDataLink instance.
</p>
</descr>
<seealso>
<link id="TFieldDataLink.OnDataChange"/>
<link id="TFieldDataLink.OnUpdateData"/>
<link id="#lcl.calendar.TCustomCalendar.Create">TCustomCalendar.Create</link>
</seealso>
</element>
<element name="TDBCalendar.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TDBCalendar.Destroy">
<short>
Destructor for the class instance.
</short>
<descr>
<p>
<var>Destroy</var> is the overridden destructor for the class instance.
Destroy frees resources allocated to the internal <var>TFieldDataLink</var>
instance in the class, and calls the inherited destructor.
</p>
</descr>
<seealso>
<link id="#lcl.controls.TWinControl.Destroy">TWinControl.Destroy</link>
</seealso>
</element>
<element name="TDBCalendar.EditingDone">
<short>
Performs actions needed when the user has finished editing.
</short>
<descr>
<p>
<var>EditingDone</var> is an overridden method in <var>TDBCalendar</var>. It
is used to perform actions needed when the user has finished editing using
the control. It occurs when the focus changes to another control, or when the
user selects another item using the mouse.
</p>
<p>
EditingDone extends the behavior from the ancestor class to update the linked
dataset by calling the <var>UpdateRecord</var> method in
<var>TFIeldDataLink</var> instance used in the class.
</p>
<p>
EditingDone calls the inherited method to signal the <var>OnEditingDone</var>
event handler (when assigned).
</p>
</descr>
<seealso>
<link id="#fcl.db.TDataLink.UpdateRecord">TDataLink.UpdateRecord</link>
<link id="#lcl.controls.TControl.EditingDone">TControl.EditingDone</link>
<link id="#lcl.controls.TControl.OnEditingDone">TControl.OnEditingDone</link>
</seealso>
</element>
<element name="TDBCalendar.ExecuteAction">
<short>Provides support for TBasicAction in the control.</short>
<descr>
<p>
<var>ExecuteAction</var> is an overridden method in <var>TDBCalendar</var>.
It calls the inherited method, and when the action is not handled in the
ancestor, executes <var>AAction</var> using the <var>ExecuteAction</var>
method in the internal <var>TFieldDataLink</var> instance in the class.
</p>
<p>
The return value is <b>True</b> if the action was executed in the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TComponent.ExecuteAction">TComponent.ExecuteAction</link>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
</seealso>
</element>
<element name="TDBCalendar.ExecuteAction.Result">
<short><b>True</b> if the action was executed in the method.</short>
</element>
<element name="TDBCalendar.ExecuteAction.AAction">
<short>Action examined and executed in the method.</short>
</element>
<element name="TDBCalendar.UpdateAction">
<short>
Updates the specified action to reflect the current state in the linked
dataset.
</short>
<descr>
<p>
<var>UpdateAction</var> is an overridden <var>Boolean</var> function in
<var>TDBCalendar</var>. UpdateAction is called when the
<var>Application</var> enters an idle state to ensure that the action
reflects the current state for a linked dataset.
</p>
<p>
<var>AAction</var> is the <var>TBasicAction</var> updated in the method.
</p>
<p>
UpdateAction calls the inherited method, and when the internal dataset link
has been assigned, executes its UpdateAction method. The return value is
<b>True</b> when AAction is updated using either the inherited method, or the
method in the linked dataset. The return value is <b>False</b> when AAction
could not be updated in the method.
</p>
</descr>
<seealso>
<link id="#rtl.classes.TBasicAction">TBasicAction</link>
<link id="#rtl.classes.TComponent.UpdateAction">TComponent.UpdateAction</link>
<link id="#fcl.db.TDataLink.UpdateAction">TDataLink.UpdateAction</link>
</seealso>
</element>
<element name="TDBCalendar.UpdateAction.Result">
<short><b>True</b> if the action was updated in the method.</short>
</element>
<element name="TDBCalendar.UpdateAction.AAction">
<short>Action examined and updated in the method.</short>
</element>
<element name="TDBCalendar.Field">
<short>
Provides access to the field definition for the data-aware control.
</short>
<descr>
<p>
<var>Field</var> is a read-only <var>TField</var> property which provides
access to the field definition to which the data-aware control is linked.
Read access for the property is redirected to the Field property in the
internal TFieldDataLink class instance. The value in Field is updated when a
new value is assigned to the Field in the TFieldDataLink instance.
</p>
<p>
Use <var>DataField</var> to read or write the field name used for the
data-aware control. Use <var>DataSource</var> to specify the data source with
the dataset containing the specified field name.
</p>
</descr>
<seealso>
<link id="TDBCalendar.DataField"/>
<link id="TDBCalendar.DataSource"/>
<link id="TFieldDataLink.Field"/>
<link id="TFieldDataLink.FieldName"/>
<link id="#fcl.db.TField">TField</link>
</seealso>
</element>
<element name="TDBCalendar.BorderSpacing" link="#lcl.controls.TControl.BorderSpacing"/>
<element name="TDBCalendar.Constraints" link="#lcl.controls.TControl.Constraints"/>
<element name="TDBCalendar.DataField">
<short>Contains the name of the field with the value for the control.</short>
<descr>
<p>
<var>DataField</var> is a <var>String</var> property which contains the name
for the field in the linked dataset where the value for the control is read
and written. Read and write access to the property value are redirected to
the <var>FieldName</var> property in the internal <var>TFieldDataLink</var>
instance for the control. Changing the value in DataField causes the value in
<var>Field</var> to be updated.
</p>
<p>
Set the value in <var>DataSource</var> to the component which provides access
to the dataset for the data-aware control.
</p>
</descr>
<seealso>
<link id="TDBCalendar.Field"/>
<link id="TDBCalendar.DataSource"/>
<link id="TFieldDataLink.FieldName"/>
<link id="TFieldDataLink.Field"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
</seealso>
</element>
<element name="TDBCalendar.DataSource">
<short>Provides access to the dataset with content for the control.
</short>
<descr>
<p>
<var>DataSource</var> is a <var>TDataSource</var> property which provides
access to the content for the data-aware control. DataSource is used in
conjunction with the <var>Field</var> property to determine the dataset and
field definition used when reading the value for the control.
</p>
<p>
Read and write access to the property value is redirected to the DataSource
property in the internal <var>TFieldDataLink</var> instance used in the
control. Assigning a new value to the property causes the
<var>ChangeDataSource</var> routine to be called to apply the value to the
internal TFieldDataLink instance.
</p>
<p>
Use the <var>DataField</var> property to specify the field name accessed in
the linked dataset.
</p>
</descr>
<seealso>
<link id="TDBCalendar.DataField"/>
<link id="TFieldDataLink.FieldName"/>
<link id="ChangeDataSource"/>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataSource">TDataSource</link>
</seealso>
</element>
<element name="TDBCalendar.Date">
<short>Date value for the control as a String type.</short>
<descr>
<p>
<var>Date</var> is a <var>String</var> property that represents the date/time
value for the control as a string data type. Write access is re-implemented
in TDBCalendar to call the DataChange method after setting the DateTime value
in the ancestor.
</p>
<p>
Use <var>DateTime</var> to access the value for the control as a
<var>TDateTime</var> value.
</p>
</descr>
<errors>
Raises an <var>EInvalidDate</var> exception in the ancestor class when an
invalid date value is assigned to Date.
</errors>
<seealso>
<link id="Calendar.TCustomCalendar.Date"/>
<link id="Calendar.TCustomCalendar.DateTime"/>
</seealso>
</element>
<element name="TDBCalendar.ReadOnly">
<short>
Indicates if the control cannot modify the field in the linked dataset.
</short>
<descr>
<p>
<var>ReadOnly</var> is a <var>Boolean</var> property which indicates if the
control cannot modify its <var>DataField</var> in the linked dataset. When
set to <b>True</b>, the underlying field value cannot be modified using the
control.
</p>
<p>
Read and write access for the property value are redirected to the ReadOnly
property in the TFieldDataLink instance used in the control.
</p>
<remark>
A value assigned to ReadOnly may be overridden by the Field definition from
the target database table.
</remark>
</descr>
<seealso>
<link id="TDBCalendar.DataField"/>
<link id="TDBCalendar.DataSource"/>
<link id="TDBCalendar.Field"/>
<link id="TFieldDataLink.Field"/>
<link id="#fcl.db.TDataLink.ReadOnly">TDataLink.ReadOnly</link>
<link id="#fcl.db.TDataLink.DataSource">TDataLink.DataSource</link>
<link id="#fcl.db.TDataLink.DataSet">TDataLink.DataSet</link>
</seealso>
</element>
<element link="#LCL.Calendar.TCustomCalendar.DisplaySettings" name="TDBCalendar.DisplaySettings"/>
<element name="TDBCalendar.DoubleBuffered" link="#lcl.controls.TWinControl.DoubleBuffered"/>
<element link="#lcl.controls.TControl.DragCursor" name="TDBCalendar.DragCursor"/>
<element link="#lcl.controls.TControl.DragMode" name="TDBCalendar.DragMode"/>
<element name="TDBCalendar.ParentDoubleBuffered" link="#lcl.controls.TWinControl.ParentDoubleBuffered"/>
<element link="#lcl.controls.TControl.Visible" name="TDBCalendar.Visible"/>
<element link="#lcl.controls.TControl.OnClick" name="TDBCalendar.OnClick"/>
<element name="TDBCalendar.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element link="#lcl.controls.TControl.OnDragDrop" name="TDBCalendar.OnDragDrop"/>
<element link="#lcl.controls.TControl.OnDragOver" name="TDBCalendar.OnDragOver"/>
<element link="#lcl.controls.TControl.OnEndDrag" name="TDBCalendar.OnEndDrag"/>
<element link="#lcl.controls.TControl.OnMouseMove" name="TDBCalendar.OnMouseMove"/>
<element link="#lcl.controls.TControl.OnMouseDown" name="TDBCalendar.OnMouseDown"/>
<element link="#LCL.Calendar.TCustomCalendar.OnDayChanged" name="TDBCalendar.OnDayChanged"/>
<element link="#LCL.Calendar.TCustomCalendar.OnMonthChanged" name="TDBCalendar.OnMonthChanged"/>
<element link="#LCL.Calendar.TCustomCalendar.OnYearChanged" name="TDBCalendar.OnYearChanged"/>
<element link="#lcl.controls.TControl.OnStartDrag" name="TDBCalendar.OnStartDrag"/>
<element name="TDBNavGlyph">
<short>Not used in the current LCL version.</short>
<descr>Not used in the current LCL version</descr>
<seealso/>
</element>
<element name="TDBNavGlyph.ngEnabled">
<short>Not used in the current LCL version.</short>
</element>
<element name="TDBNavGlyph.ngDisabled">
<short>Not used in the current LCL version.</short>
</element>
<element name="TDBNavButtonType">
<short>TDBNavButtonType.</short>
<descr>
<p>
<var>TDBNavButtonType</var> is an enumerated type with values that represent
button types (and their corresponding glyphs) in a database navigation
control. TDBNavButtonType enumeration values are used when accessing the
<var>Buttons</var> and <var>Images</var> in <var>TDBCustomNavigator</var>,
and when accessing the default resource names in
<var>DBNavButtonResourceName</var>.
</p>
</descr>
<seealso>
<link id="TDBCustomNavigator.Buttons"/>
<link id="TDBCustomNavigator.Images"/>
<link id="DBNavButtonResourceName"/>
</seealso>
</element>
<element name="TDBNavButtonType.nbFirst">
<short>
Represents the First button used to navigate to the beginning of a dataset.
</short>
</element>
<element name="TDBNavButtonType.nbPrior">
<short>
Represents the Prior button used to navigate to the previous record in a
dataset.
</short>
</element>
<element name="TDBNavButtonType.nbNext">
<short>
Represents the Next button used to navigate to the next record in a dataset.
</short>
</element>
<element name="TDBNavButtonType.nbLast">
<short>
Represents the Last button used to navigate to the last record in a dataset.
</short>
</element>
<element name="TDBNavButtonType.nbInsert">
<short>
Represents the Insert button used to create a new record in a dataset.
</short>
</element>
<element name="TDBNavButtonType.nbDelete">
<short>
Represents the Delete button used to delete the current record in a dataset.
</short>
</element>
<element name="TDBNavButtonType.nbEdit">
<short>
Represents the Edit button used to enable edit mode for the current record in
a dataset.
</short>
</element>
<element name="TDBNavButtonType.nbPost">
<short>
Represents the Post button used to apply pending changes to a record in a
dataset.
</short>
</element>
<element name="TDBNavButtonType.nbCancel">
<short>
Represents the Cancel button used to cancel pending updates to a dataset.
</short>
</element>
<element name="TDBNavButtonType.nbRefresh">
<short>
Represents the Refresh button used to refresh the records in a dataset.
</short>
</element>
<element name="TDBNavButtonSet">
<short>Stores TDBNavButtonType enumeration values.</short>
<descr>
<p>
<var>TDBNavButtonSet</var> is a set type used to store zero or more values
from the <var>TDBNavButtonType</var> enumeration. TDBNavButtonSet is the type
used to implement the <var>VisibleButtons</var> property in
<var>TDBCustomNavigator</var>.
</p>
</descr>
<seealso>
<link id="TDBNavButtonType"/>
<link id="TDBCustomNavigator.VisibleButtons"/>
</seealso>
</element>
<element name="TDBNavButtonStyle">
<short>Controls the appearance and behavior of a navigator button.</short>
<descr>
<p>
<var>TDBNavButtonStyle</var> is an set type used to store information which
controls the appearance and behavior for a button on a navigation control.
TDBNavButtonStyle is the type used to implement the <var>NavStyle</var>
property in
<var>TDBNavButton</var>.
</p>
<remark>
These style options are not used in the current implementation of the LCL.
</remark>
</descr>
<seealso>
<link id="TDBNavButton.NavStyle"/>
</seealso>
</element>
<element name="TDBNavButtonStyle.nsAllowTimer">
<short>
Enables use of a timer for the operation performed by a navigator button.
</short>
</element>
<element name="TDBNavButtonStyle.nsFocusRect">
<short>Allows the button to be drawn with a focus rectangle.</short>
</element>
<element name="TDBNavButtonDirection">
<short>
Represents the orientation for buttons on a TDBNavigator control.
</short>
<descr>
<p>
<var>TDBNavButtonDirection</var> is an enumerated type with values that
control the orientation for buttons on a database navigation control.
TDBNavButtonDirection is the type used to implement the <var>Direction</var>
property in
<var>TDBCustomNavigator</var>.
</p>
</descr>
<seealso>
<link id="TDBCustomNavigator.Direction"/>
</seealso>
</element>
<element name="TDBNavButtonDirection.nbdHorizontal">
<short>Buttons are displayed horizontally (in a row).</short>
</element>
<element name="TDBNavButtonDirection.nbdVertical">
<short>Buttons are displayed vertically (in a column).</short>
</element>
<element name="TDBNavigatorOption">
<short>Represents options available on a TDBNavigator control.</short>
<descr/>
<seealso/>
</element>
<element name="TDBNavigatorOption.navFocusableButtons">
<short>Navigator has focusable buttons.</short>
</element>
<element name="TDBNavigatorOptions">
<short>Set type used to store values from TDBNavigatorOption.</short>
<descr/>
<seealso/>
</element>
<element name="TNavigateBtn">
<short>Alias to the TDBNavButtonType type.</short>
<descr>
<p>
<var>TNavigateBtn</var> is an alias for the <var>TDBNavButtonType</var> type.
TNavigateBtn is provided to maintain Delphi compatibility.
</p>
</descr>
<seealso>
<link id="TDBNavButtonType"/>
</seealso>
</element>
<element name="TDBNavClickEvent">
<short>
Specifies an event handler used to handle click events in a database
navigation control.
</short>
<descr>
<p>
<var>TDBNavClickEvent</var> is an object procedure type which specifies an
event handler signalled for click events in a database navigation control.
TDBNavClickEvent is the type used to implement the <var>OnClick</var> and
<var>BeforeAction</var> events in <var>TDBCustomNavigator</var>.
</p>
<p>
Applications must implement and assign an object procedure using the
signature for the handler to respond to the event notification.
</p>
</descr>
<seealso>
<link id="TDBCustomNavigator.OnClick"/>
<link id="TDBCustomNavigator.BeforeAction"/>
</seealso>
</element>
<element name="TDBNavClickEvent.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBNavClickEvent.Button">
<short>Navigator button for the click event.</short>
</element>
<element name="DefaultDBNavigatorButtons">
<short>
Set with the default buttons displayed on a TDBNavigator control.
</short>
<descr>
<p>
<var>DefaultDBNavigatorButtons</var> is an array constant which contains the
default buttons available in a database navigation control.
DefaultDBNavigatorButtons contain values from the <var>TDBNavButtonType</var>
enumeration in the order they are displayed on a
<var>TDBCustomNavigator</var> control.
</p>
<p>
DefaultDBNavigatorButtons is used as the default value for the
<var>VisibleButtons</var> property in TDBCustomNavigator.
</p>
</descr>
<seealso>
<link id="TDBCustomNavigator.VisibleButtons"/>
</seealso>
</element>
<element name="DBNavButtonResourceName">
<short>
Default resource names for the buttons displayed in TDBCustomNavigator.
</short>
<descr>
<p>
<var>DBNavButtonResourceName</var> is an array constant which contains the
resource names used for the buttons displayed in a database navigator
control. Elements in the array contain a <var>String</var> with the name
assigned to <var>TDBNavButton</var> instances created in a
<var>TDBCustomNavigator</var> control. The element also represents the
default glyph displayed on the button when the <var>Images</var> property has
not been populated for the navigator control.
</p>
<p>
Each of the String elements in the array can be accessed using a
<var>TDBNavButtonType</var> index value.
</p>
</descr>
<seealso>
<link id="TDBCustomNavigator.Buttons"/>
<link id="TDBCustomNavigator.Images"/>
<link id="TDBNavButton"/>
<link id="TDBNavButton.Index"/>
<link id="TDBNavButtonType"/>
<link id="#rtl.classes.TComponent.Name">TComponent.Name</link>
</seealso>
</element>
<element name="TDBCustomNavigator">
<short>
<var>TDBCustomNavigator</var> is the base class for <var>TDBNavigator</var>,
a tool for navigating through the records of a dataset.
</short>
<descr>
<p>
<var>TDBCustomNavigator</var> is the parent class for
<var>TDBNavigator</var>, an advanced tool for navigating through datasets
generated by a query sent to the database. Most of the important properties
are defined here in this base class.
</p>
<p>
It consists of a series of tool buttons used to perform navigation and
maintenance for records in the linked dataset. For example:
</p>
<dl>
<dt>Navigation</dt>
<dd>
<b>First</b>,
<b>Prior</b>,
<b>Next</b> or
<b>Last</b>
</dd>
<dt>Maintenance</dt>
<dd>
<b>Insert</b>,
<b>Delete</b>,
<b>Edit</b>,
<b>Post</b>,
<b>Cancel</b> or
<b>Refresh</b>
</dd>
</dl>
<p>
Use the <var>VisibleButtons</var> property to specify which of the Buttons
can be displayed in the control.
</p>
<p>
If used in conjunction with a data-aware controls, it controls which record
is displayed, the position of the record selection cursor, and the initiation
of changes to the dataset and ultimately the database.
</p>
<p>
Most of the functionality for the toolbar is built into the control, The
programmer can specify actions to be associated with individual buttons using
the <var>OnClick</var> event handler. It includes an argument can be sent
with the index value of the button clicked, and the procedure chooses which
action to call dependent on the button index.
</p>
<p>
The <var>DataSource</var> property must be assigned to link to the dataset
for the control.
</p>
</descr>
<seealso>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
<link id="TDBNavigator"/>
</seealso>
</element>
<element name="TDBCustomNavigator.FBeforeAction"/>
<element name="TDBCustomNavigator.FDataLink"/>
<element name="TDBCustomNavigator.FDirection"/>
<element name="TDBCustomNavigator.FOnNavClick"/>
<element name="TDBCustomNavigator.FVisibleButtons"/>
<element name="TDBCustomNavigator.FDefaultHints"/>
<element name="TDBCustomNavigator.FHints"/>
<element name="TDBCustomNavigator.FUpdateButtonsLock"/>
<element name="TDBCustomNavigator.FOriginalHints"/>
<element name="TDBCustomNavigator.FOptions"/>
<element name="TDBCustomNavigator.FFlat"/>
<element name="TDBCustomNavigator.FConfirmDelete"/>
<element name="TDBCustomNavigator.FUpdateButtonsNeeded"/>
<element name="TDBCustomNavigator.FShowButtonHints"/>
<element name="TDBCustomNavigator.FImages"/>
<element name="TDBCustomNavigator.FImageChangeLink"/>
<element name="TDBCustomNavigator.DefaultHintsChanged">
<short>
Performs actions needed when the values in the default hints have changed.
</short>
<descr>
<p>
Used as the OnChange event handler for the TStringList used in UpdateHints.
</p>
</descr>
</element>
<element name="TDBCustomNavigator.DefaultHintsChanged.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBCustomNavigator.GetDataSource">
<short>Gets the value for the DataSource property.</short>
</element>
<element name="TDBCustomNavigator.GetDataSource.Result">
<short>Value for the property.</short>
</element>
<element name="TDBCustomNavigator.GetHints">
<short>Gets the value for the Hints property.</short>
</element>
<element name="TDBCustomNavigator.GetHints.Result">
<short>Value for the property.</short>
</element>
<element name="TDBCustomNavigator.SetDataSource">
<short>Sets the value for the DataSource property.</short>
</element>
<element name="TDBCustomNavigator.SetDataSource.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCustomNavigator.SetDirection">
<short>Sets the value for the Direction property.</short>
</element>
<element name="TDBCustomNavigator.SetDirection.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCustomNavigator.SetFlat">
<short>Sets the value for the Flat property.</short>
</element>
<element name="TDBCustomNavigator.SetFlat.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCustomNavigator.SetHints">
<short>Sets the value for the Hints property.</short>
</element>
<element name="TDBCustomNavigator.SetHints.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCustomNavigator.SetImages">
<short>Sets the value for the Images property.</short>
</element>
<element name="TDBCustomNavigator.SetImages.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCustomNavigator.SetOptions">
<short>Sets the value for the Options property.</short>
</element>
<element name="TDBCustomNavigator.SetOptions.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCustomNavigator.SetShowButtonHints">
<short>Sets the value for the ShowButtonHints property.</short>
</element>
<element name="TDBCustomNavigator.SetShowButtonHints.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCustomNavigator.SetVisibleButtons">
<short>Sets the value for the VisibleButtons property.</short>
</element>
<element name="TDBCustomNavigator.SetVisibleButtons.AValue">
<short>New value for the property.</short>
</element>
<element name="TDBCustomNavigator.CMGetDataLink">
<short>Handles the CM_GETDATALINK message for the control.</short>
</element>
<element name="TDBCustomNavigator.CMGetDataLink.Message">
<short>Message handled in the method.</short>
</element>
<element name="TDBCustomNavigator.ImageListChange">
<short>
Implements the OnChange event handler for the TChangeLink instance in the
class.
</short>
</element>
<element name="TDBCustomNavigator.ImageListChange.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBCustomNavigator.Buttons">
<short>The list of Buttons included in the navigator tool.</short>
<descr>
<p>
<var>Buttons</var> is a member which contains an array of
<var>TDBNavButton</var> instances available in the control. Values in Buttons
are accessed using an <var>TDBNavButtonType</var> index value. TDBNavButton
elements in the array are created and destroyed to reflect the current state
of the linked dataset in the DataSource property. The elements in the array
are updated in the <var>DataChanged</var>, <var>EditingChanged</var>, and
<var>ActiveChange</var> methods to use the <var>Enabled</var> and
<var>Visible</var> settings needed for the dataset state.
</p>
<p>
Use <var>FocusableButtons</var> to access the Buttons which can be focused in
the control.
</p>
<p>
Use <var>VisibleButtons</var> to specify the Buttons which can be displayed
on the control.
</p>
</descr>
<seealso/>
</element>
<element name="TDBCustomNavigator.FocusableButtons">
<short>Contains the focusable button for the DB navigator control.</short>
<descr>
<p>
<var>FocusableButtons</var> is a member with an array of
<var>TDBNavFocusableButton</var> instances for the control. The buttons are
freed and created in the <var>UpdateButtons</var> method as needed, and
contains a button for each of the values in the <var>VisibleButtons</var>
property. Buttons in the array are accessed using the enumeration values in
<var>TDBNavButtonType</var>.
</p>
</descr>
<seealso>
<link id="TDBCustomNavigator.UpdateButtons"/>
<link id="TDBCustomNavigator.VisibleButtons"/>
<link id="TDBCustomNavigator.ActiveChanged"/>
<link id="TDBNavButtonType"/>
</seealso>
</element>
<element name="TDBCustomNavigator.DataChanged">
<short>
<var>DataChanged</var> - update status of all the buttons to reflect new data.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.EditingChanged">
<short>
<var>EditingChanged</var> - the status of the buttons is set to
<var>CanModify</var>.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.ActiveChanged">
<short>
<var>ActiveChanged</var> - if datalink is active, calls
<var>DataChanged</var> and
<var>EditingChanged</var>.
</short>
<descr/>
<seealso>
<link id="#lcl.DBCtrls.TDBCustomNavigator.DataChanged">DataChanged</link>
<link id="#lcl.DBCtrls.TDBCustomNavigator.EditingChanged">EditingChanged</link>
</seealso>
</element>
<element name="TDBCustomNavigator.Loaded" link="#lcl.extctrls.TCustomPanel.Loaded"/>
<element name="TDBCustomNavigator.Notification"
link="#lcl.controls.TControl.Notification"/>
<element name="TDBCustomNavigator.Notification.AComponent"/>
<element name="TDBCustomNavigator.Notification.Operation"/>
<element name="TDBCustomNavigator.UpdateButtons">
<short>
<var>UpdateButtons</var> - if the position of the buttons need to be changed,
does this, then updates the status of the buttons (see
<var>ActiveChanged</var>).
</short>
<descr/>
<seealso>
<link id="#LCL.DBCtrls.TDBCustomNavigator.ActiveChanged">ActiveChanged</link>
</seealso>
</element>
<element name="TDBCustomNavigator.UpdateHints">
<short>
<var>UpdateHints</var> - reloads the default hints and modifies any that have
been changed.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.HintsChanged">
<short>
<var>HintsChanged</var> - calls <var>UpdateHints</var>.
</short>
<descr/>
<seealso>
<link id="#lcl.DBCtrls.TDBCustomNavigator.UpdateHints">UpdateHints</link>
</seealso>
</element>
<element name="TDBCustomNavigator.HintsChanged.Sender">
<short>Object for the event notification.</short>
</element>
<element name="TDBCustomNavigator.ButtonClickHandler">
<short>
<var>ButtonClickHandler</var> - performs <var>BtnClick</var> for the
appropriate button.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.ButtonClickHandler.Sender">
<short>Object for the event notification.</short>
</element>
<element link="#lcl.controls.TControl.GetControlClassDefaultSize" name="TDBCustomNavigator.GetControlClassDefaultSize"/>
<element name="TDBCustomNavigator.GetControlClassDefaultSize.Result">
<short>Default size for new instances of the class.</short>
</element>
<element name="TDBCustomNavigator.BeginUpdateButtons">
<short>
<var>BeginUpdateButtons</var> - locks the buttons before updating them.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.EndUpdateButtons">
<short>
<var>EndUpdateButtons</var> - unlocks each button in turn and updates it if
needed.
</short>
<descr/>
<errors/>
<seealso/>
</element>
<element name="TDBCustomNavigator.SetEnabled">
<short>Sets the value for the Enabled property.</short>
<descr/>
<seealso>
<link id="#lcl.controls.TControl.Enabled">TControl.Enabled</link>
</seealso>
</element>
<element name="TDBCustomNavigator.SetEnabled.Value">
<short>New value for the Enabled property.</short>
</element>
<element name="TDBCustomNavigator.Create">
<short>
<var>Create</var> - constructor for <var>TDBCustomNavigator</var>: locks the
buttons, calls inherited <var>Create</var>, sets default size, style, forms
datalinks, initializes hints, updates the buttons.
</short>
<descr/>
<seealso>
<link id="#LCL.ExtCtrls.TCustomPanel.Create">TCustomPanel.Create</link>
</seealso>
</element>
<element name="TDBCustomNavigator.Create.TheOwner">
<short>Owner of the class instance.</short>
</element>
<element name="TDBCustomNavigator.Destroy">
<short>
<var>Destroy</var> - destructor for <var>TDBCustomNavigator</var>: frees
datalinks and hints, then calls inherited <var>Destroy</var>.
</short>
<descr/>
<seealso>
<link id="#lcl.controls.TCustomControl.Destroy">TCustomControl.Destroy</link>
</seealso>
</element>
<element name="TDBCustomNavigator.BtnClick">
<short>
<var>BtnClick</var> - procedure to respond to button clicks, and select an
action from a list according to the value of the <var>Index</var> of the
clicked button.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.BtnClick.Index">
<short>
Ordinal position for the button clicked on the navigator control.
</short>
</element>
<element name="TDBCustomNavigator.VisibleButtonCount">
<short>Number of visible buttons on the control.</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.VisibleButtonCount.Result">
<short>Number of visible buttons on the control.</short>
</element>
<element name="TDBCustomNavigator.BeforeAction">
<short>
<var>BeforeAction</var> - code to be executed before an action is performed.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.ConfirmDelete">
<short>Indicates if the user is asked to confirm a record deletion.
</short>
<descr>
<p>
When set to <b>True</b>, a dialog is displayed to ask for confirmation of the
Delete request.
</p>
</descr>
<seealso/>
</element>
<element name="TDBCustomNavigator.DataSource">
<short>
The Data Source to which the control must be linked in order to function.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.Direction">
<short>
Contains the orientation for buttons displayed on the control: horizontal or
vertical.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.Flat">
<short>
<var>Flat</var> - if <b>True</b>, buttons have no 3-D effect.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.Hints">
<short>A list of hints to be shown if the mouse hovers over a button.</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.Options">
<short>Options enabled for the navigator.</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.OnClick">
<short>The action to be taken when a navigator button is clicked.</short>
<descr/>
<seealso>
<link id="#lcl.controls.TControl.OnClick">TControl.OnClick</link>
</seealso>
</element>
<element name="TDBCustomNavigator.VisibleButtons">
<short>
The set of visible buttons (some of them can be suppressed if their function
appears redundant).
</short>
<descr>
<p>
The VisibleButtons entry in the Object Inspector can be used to set whether
or not a particular button is to be visible.
</p>
</descr>
<seealso/>
</element>
<element name="TDBCustomNavigator.ShowButtonHints">
<short>
Controls whether button hints are displayed for the control.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBCustomNavigator.Images">
<short>
Contains the images available for display on the navigator buttons.
</short>
<descr>
<p>
<var>Images</var> is a <var>TCustomImageList</var> property which contains
the images available for use as glyphs on the navigator buttons. Bitmaps
stored in Images should be in the order defined in the
<var>TDBNavButtonType</var> enumeration. The enumeration values are used as
the image index. When Images has not been assigned, the default glyphs in LCL
are used for the purpose.
</p>
<p>
Setting a new value for Images causes the <var>TChangeLink</var> instance in
the class to be notified; existing Images are unregistered, and new Images
(if any) are registered. <var>UpdateButtons</var> is called to apply image
indexes and event handlers to the <var>Buttons</var> in the control.
</p>
</descr>
<seealso>
<link id="TDBCustomNavigator.Buttons"/>
<link id="TDBCustomNavigator.UpdateButtons"/>
<link id="TDBCustomNavigator.VisibleButtons"/>
<link id="TDBCustomNavigator.FocusableButtons"/>
<link id="TDBNavButtonType"/>
<link id="#lcl.imglist.TCustomImageList">TCustomImageList</link>
<link id="#lcl.imglist.TChangeLink">TChangeLink</link>
<link id="#lcl.imglist.LCLGlyphs">LCLGlyphs</link>
</seealso>
</element>
<element name="TDBNavButton">
<short>
<var>TDBNavButton</var> implements a <var>SpeedButton</var> displayed on a
<var>TDBNavigator</var> control.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBNavButton.FIndex"/>
<element name="TDBNavButton.FNavStyle"/>
<element name="TDBNavButton.Destroy" link="#lcl.buttons.TCustomSpeedButton.Destroy"/>
<element name="TDBNavButton.NavStyle">
<short>
Set with the style values for the navigator button.
</short>
<descr>
<p>
NavStyle is a <var>TDBNavButtonStyle</var> property which contains the style
values used for the navigator button. It contains zero or more values
representing the features enabled for the button. See TDBNavButtonStyle for
more information about the values in the set type and their meanings.
</p>
<p>
NavStyle is used in the <var>TDBCustomNavigator.UpdateButtons</var> method to
enable the timer used for Previous (nbPrior) and Next (nbNext) buttons.
</p>
</descr>
<seealso>
<link id="TDBCustomNavigator.UpdateButtons"/>
<link id="TDBNavButtonStyle"/>
</seealso>
</element>
<element name="TDBNavButton.Index">
<short>
<var>Index</var> - the value from the enumerated type that specifies which
button is being selected.
</short>
<descr>
<p>Button may be one of the following: nbFirst, nbPrior, nbNext, nbLast,
nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh.
</p>
</descr>
<seealso/>
</element>
<element name="TDBNavFocusableButton">
<short>Implements a button used on a database navigator control.</short>
<descr>
<p>
<var>TDBNavFocusableButton</var> is a <var>TBitBtn</var> descendant which
implements a button that can receive focus in a database navigator control.
TDBNavFocusableButton is the type maintained in the
<var>FocusableButtons</var> member in <var>TDBCustomNavigator</var>.
</p>
</descr>
<seealso>
<link id="TDBCustomNavigator.FocusableButtons"/>
</seealso>
</element>
<element name="TDBNavFocusableButton.FIndex"/>
<element name="TDBNavFocusableButton.FNavStyle"/>
<element name="TDBNavFocusableButton.NavStyle">
<short>
Contains styles and options that are enabled for the DB navigator button.
</short>
<descr>
<p>
<var>NavStyle</var> is a <var>TDBNavButtonStyle</var> property with the set
of style or options enabled for the focusable DB navigator button. Its values
may be updated in the <var>TDBCustomNavigator.UpdateButtons</var> method.
</p>
</descr>
<seealso>
<link id="TDBNavButtonStyle"/>
<link id="TDBCustomNavigator.UpdateButtons"/>
</seealso>
</element>
<element name="TDBNavFocusableButton.Index">
<short>Indicates the navigation button type for the button.</short>
<descr>
<p>
<var>Index</var> is an <var>TDBNavButtonType</var> value which indicates both
the navigation button type for the button, and its ordinal position in the
Buttons displayed for a <var>TDBCustomNavigator</var> or
<var>TDBNavigator</var> control. The value for the property is assigned when
the button is created in the <var>UpdateButtons</var> for the
<var>TDBCustomNavigator</var> control.
</p>
</descr>
<seealso>
<link id="TDBNavButtonType"/>
<link id="TDBCustomNavigator.UpdateButtons"/>
</seealso>
</element>
<element name="TDBNavDataLink">
<short>
<var>TDBNavDataLink</var> - provides a link between a Database Navigator and
a DataSet.
</short>
<descr>
<p>
<var>TDBNavDataLink</var> is a <var>TDataLink</var> descendant used to
maintain an association between a database navigator control, and a
datasource with a dataset. It provides additional methods called when values
assigned to the data link have been changed. An internal member is maintained
with the <var>TDBCustomNavigator</var> control for the association.
</p>
</descr>
<seealso>
<link id="TDBCustomNavigator"/>
<link id="#fcl.db.TDataLink">TDataLink</link>
</seealso>
</element>
<element name="TDBNavDataLink.FNavigator"/>
<element name="TDBNavDataLink.EditingChanged">
<short>
<var>EditingChanged</var> - method to process a change in the
<var>Editing</var> property of the navigator.
</short>
<descr/>
<seealso/>
</element>
<element name="TDBNavDataLink.DataSetChanged">
<short>
<var>DataSetChanged</var> - method to process a change in the data set
attached to the navigator.
</short>
<descr>
<p>
<var>DataSetChanged</var> is an overridden procedure in
<var>TDBNavDataLink</var> which ensures that the <var>DataChanged</var>
method in the internal <var>TDBCustomNavigator</var> control is called when
the value in <var>DataSet</var> has been changed.
</p>
<remark>
ActiveChanged does not call the inherited method.
</remark>
</descr>
<seealso/>
</element>
<element name="TDBNavDataLink.ActiveChanged">
<short>
<var>ActiveChanged</var> - method to process a change in the
<var>Active</var> property of the navigator.
</short>
<descr>
<p>
<var>ActiveChanged</var> is an overridden procedure in
<var>TDBNavDataLink</var> used to ensure that the Navigator control is
updated when the value for the <var>Active</var> property has been changed.
</p>
<remark>
ActiveChanged does not call the inherited method.
</remark>
</descr>
<seealso>
<link id="TDBCustomNavigator.ActiveChanged"/>
<link id="#fcl.db.TDataLink.Active">TDataLink.Active</link>
</seealso>
</element>
<element name="TDBNavDataLink.Create">
<short>Constructor for the class instance.</short>
<descr>
<p>
<var>Create</var> is the constructor for the class instance, and calls the
inherited constructor. Create assigns the value in <var>TheNavigator</var> to
an internal member used in the class instance. It also sets the value in the
<var>VisualControl</var> property to <b>True</b>.
</p>
</descr>
<seealso>
<link id="TDBCustomNavigator"/>
<link id="#fcl.db.TDataLink">TDataLink</link>
</seealso>
</element>
<element name="TDBNavDataLink.Create.TheNavigator">
<short>TDBCustomNavigator control for the data link.</short>
</element>
<element name="TDBNavigator">
<short>
<var>TDBNavigator</var> - a data-aware Button-Bar to facilitate navigating
between records of a dataset.
</short>
<descr>
<p>
<var>TDBNavigator</var> is a tool used to navigate local datasets in a
response to a query sent to the database. It consists of a series of tool
buttons used to perform navigation and maintenance for records in the linked
dataset.
</p>
<p>
For example:
</p>
<dl>
<dt>Navigation</dt>
<dd>
<b>First</b>, <b>Prior</b>, <b>Next</b> or <b>Last</b>
</dd>
<dt>Maintenance</dt>
<dd>
<b>Insert</b>, <b>Delete</b>, <b>Edit</b>, <b>Post</b>, <b>Cancel</b> or
<b>Refresh</b>
</dd>
</dl>
<p>
Use the <var>VisibleButtons</var> property to specify which of the Buttons
can be displayed in the control.
</p>
<p>
If used in conjunction with a data-aware controls, it controls which record
is displayed, the position of the record selection cursor, and the initiation
of changes to the dataset and ultimately the database.
</p>
<p>
Most of the functionality of the toolbar is already built-in to the control,
but if the programmer needs to specify actions to be associated with
individual buttons, there is a procedure <var>BtnClick</var> to which an
argument can be sent with the index value of the button clicked, and the
procedure chooses which action to call dependent on the button index.
</p>
<p>
The <var>DataSource</var> property must be assigned to link to the dataset
for the control.
</p>
</descr>
<seealso>
<link id="HowToUseDataAwareControls">How To Use Data-aware Controls</link>
<link id="TDBCustomNavigator"/>
</seealso>
</element>
<element link="#lcl.extctrls.TCustomPanel.Align" name="TDBNavigator.Align"/>
<element link="#lcl.extctrls.TCustomPanel.Alignment" name="TDBNavigator.Alignment"/>
<element link="#lcl.controls.TControl.Anchors" name="TDBNavigator.Anchors"/>
<element link="#lcl.controls.TControl.AutoSize" name="TDBNavigator.AutoSize"/>
<element link="#lcl.controls.TControl.BiDIMode" name="TDBNavigator.BiDiMode"/>
<element link="#lcl.dbctrls.TDBCustomNavigator.BeforeAction" name="TDBNavigator.BeforeAction"/>
<element link="#lcl.extctrls.TCustomPanel.BevelInner" name="TDBNavigator.BevelInner"/>
<element link="#lcl.extctrls.TCustomPanel.BevelOuter" name="TDBNavigator.BevelOuter"/>
<element link="#lcl.extctrls.TCustomPanel.BevelWidth" name="TDBNavigator.BevelWidth"/>
<element link="#lcl.controls.TControl.BorderSpacing" name="TDBNavigator.BorderSpacing"/>
<element link="#lcl.controls.TWinControl.BorderStyle" name="TDBNavigator.BorderStyle"/>
<element link="#lcl.controls.TWinControl.BorderWidth" name="TDBNavigator.BorderWidth"/>
<element link="#lcl.controls.TControl.Caption" name="TDBNavigator.Caption"/>
<element link="#lcl.controls.TWinControl.ChildSizing" name="TDBNavigator.ChildSizing"/>
<element link="#lcl.controls.TControl.ClientHeight" name="TDBNavigator.ClientHeight"/>
<element link="#lcl.controls.TControl.ClientWidth" name="TDBNavigator.ClientWidth"/>
<element name="TDBNavigator.Color">
<short>Contains the background color for the control.</short>
<descr>
<p>
<var>Color</var> is a <var>TColor</var> property with the background color
for the control. The default value for the property is
<var>clBackground</var> in <var>TDBNavigator</var>.
</p>
<p>
If the color is clDefault, the value will need to be resolved using the
GetDefaultColor method. Convenience routines which obtain the color by
resolving clDefault and ParentColor are also provided in
TControl.GetColorResolvingParent and TControl.GetRGBColorResolvingParent.
</p>
</descr>
<seealso>
<link id="#lcl.extctrls.TCustomPanel.Color">TCustomPanel.Color</link>
<link id="#lcl.controls.TControl.ParentColor">TControl.ParentColor</link>
<link id="#lcl.controls.TControl.GetDefaultColor">TControl.GetDefaultColor</link>
<link id="#lcl.controls.TControl.GetColorResolvingParent">TControl.GetColorResolvingParent</link>
<link id="#lcl.controls.TControl.GetRGBColorResolvingParent">TControl.GetRGBColorResolvingParent</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.Constraints" name="TDBNavigator.Constraints"/>
<element link="#lcl.dbctrls.TDBCustomNavigator.ConfirmDelete" name="TDBNavigator.ConfirmDelete"/>
<element link="#lcl.dbctrls.TDBCustomNavigator.DataSource" name="TDBNavigator.DataSource"/>
<element link="#lcl.dbctrls.TDBCustomNavigator.Direction" name="TDBNavigator.Direction"/>
<element link="#lcl.controls.TWinControl.DoubleBuffered" name="TDBNavigator.DoubleBuffered"/>
<element link="#lcl.controls.TControl.DragCursor" name="TDBNavigator.DragCursor"/>
<element link="#lcl.controls.TControl.DragMode" name="TDBNavigator.DragMode"/>
<element link="#lcl.controls.TControl.Enabled" name="TDBNavigator.Enabled"/>
<element link="#lcl.dbctrls.TDBCustomNavigator.Flat" name="TDBNavigator.Flat"/>
<element link="#lcl.controls.TControl.Font" name="TDBNavigator.Font"/>
<element link="#lcl.dbctrls.TDBCustomNavigator.Hints" name="TDBNavigator.Hints"/>
<element link="#lcl.dbctrls.TDBCustomNavigator.OnClick" name="TDBNavigator.OnClick"/>
<element name="TDBNavigator.OnContextPopup" link="#lcl.controls.TControl.OnContextPopup"/>
<element link="#lcl.controls.TControl.OnDblClick" name="TDBNavigator.OnDblClick"/>
<element link="#lcl.controls.TControl.OnDragDrop" name="TDBNavigator.OnDragDrop"/>
<element link="#lcl.controls.TControl.OnDragOver" name="TDBNavigator.OnDragOver"/>
<element link="#lcl.controls.TControl.OnEndDrag" name="TDBNavigator.OnEndDrag"/>
<element link="#lcl.controls.TWinControl.OnEnter" name="TDBNavigator.OnEnter"/>
<element link="#lcl.controls.TWinControl.OnExit" name="TDBNavigator.OnExit"/>
<element link="#lcl.controls.TControl.OnMouseDown" name="TDBNavigator.OnMouseDown"/>
<element link="#lcl.controls.TControl.OnMouseEnter" name="TDBNavigator.OnMouseEnter"/>
<element link="#lcl.controls.TControl.OnMouseLeave" name="TDBNavigator.OnMouseLeave"/>
<element link="#lcl.controls.TControl.OnMouseMove" name="TDBNavigator.OnMouseMove"/>
<element link="#lcl.controls.TControl.OnMouseUp" name="TDBNavigator.OnMouseUp"/>
<element link="#lcl.controls.TControl.OnMouseWheel" name="TDBNavigator.OnMouseWheel"/>
<element link="#lcl.controls.TControl.OnMouseWheelDown" name="TDBNavigator.OnMouseWheelDown"/>
<element link="#lcl.controls.TControl.OnMouseWheelUp" name="TDBNavigator.OnMouseWheelUp"/>
<element link="#lcl.controls.TControl.OnResize" name="TDBNavigator.OnResize"/>
<element link="#lcl.controls.TControl.OnStartDrag" name="TDBNavigator.OnStartDrag"/>
<element link="#lcl.dbctrls.TDBCustomNavigator.Options" name="TDBNavigator.Options"/>
<element link="#lcl.controls.TControl.ParentBiDiMode" name="TDBNavigator.ParentBiDiMode"/>
<element link="#lcl.controls.TControl.ParentColor" name="TDBNavigator.ParentColor"/>
<element link="#lcl.controls.TWinControl.ParentDoubleBuffered" name="TDBNavigator.ParentDoubleBuffered"/>
<element link="#lcl.controls.TControl.ParentFont" name="TDBNavigator.ParentFont"/>
<element link="#lcl.controls.TControl.ParentShowHint" name="TDBNavigator.ParentShowHint"/>
<element link="#lcl.controls.TControl.PopupMenu" name="TDBNavigator.PopupMenu"/>
<element link="#lcl.controls.TControl.ShowHint" name="TDBNavigator.ShowHint"/>
<element link="#lcl.controls.TWinControl.TabOrder" name="TDBNavigator.TabOrder"/>
<element name="TDBNavigator.TabStop">
<short>Enables or disables navigation using the Tab key.</short>
<descr>
<p>
The default value for the property is <b>False</b> in TDBNavigator.
</p>
</descr>
<seealso>
<link id="#lcl.extctrls.TCustomPanel.TabStop">TCustomPanel.TabStop</link>
</seealso>
</element>
<element link="#lcl.controls.TControl.Visible" name="TDBNavigator.Visible"/>
<element link="#lcl.dbctrls.TDBCustomNavigator.VisibleButtons" name="TDBNavigator.VisibleButtons"/>
<element link="#lcl.dbctrls.TDBCustomNavigator.Images" name="TDBNavigator.Images"/>
<element name="ChangeDataSource">
<short>
Performs actions needed when the datasource in a control with the specified
data link is changed.
</short>
<descr>
<p>
<var>ChangeDataSource</var> ensures that free notification messages are
performed for the datasource in <var>Link</var> and the control in
<var>AControl</var>. The value in <var>NewDataSource</var> is assigned to the
DataSource property in Link.
</p>
</descr>
<seealso>
<link id="TDataLink.DataSource"/>
</seealso>
</element>
<element name="ChangeDataSource.AControl">
<short>Control notified in the routine.</short>
</element>
<element name="ChangeDataSource.Link">
<short>Data link updated in the method.</short>
</element>
<element name="ChangeDataSource.NewDataSource">
<short>Datasource assigned to the data link in the method.</short>
</element>
<element name="Register">
<short>Registers components in the unit for use in the Lazarus IDE.</short>
<descr>
<p>
<var>Register</var> is a procedure used to register components in the
<file>dbctrls.pp</file> unit for use in the Lazarus IDE. Register adds the
following components to the 'Data Controls' tab:
</p>
<ul>
<li>TDBNavigator</li>
<li>TDBText</li>
<li>TDBEdit</li>
<li>TDBMemo</li>
<li>TDBImage</li>
<li>TDBListBox</li>
<li>TDBLookupListBox</li>
<li>TDBComboBox</li>
<li>TDBLookupComboBox</li>
<li>TDBCheckBox</li>
<li>TDBRadioGroup</li>
<li>TDBCalendar</li>
<li>TDBGroupBox</li>
</ul>
<p>
Register calls the <var>RegisterField</var> routine for each of the database
field types in DefaultFieldClasses, as well as the TIntegerField type.
</p>
</descr>
<seealso>
<link id="#fcl.db.DefaultFieldClasses">DefaultFieldClasses</link>
</seealso>
</element>
<topic name="HowToUseDataAwareControls">
<short>
<var>HowToUseDataAwareControls</var> - Hints for accessing databases.
</short>
<descr>
<p>
<var>HowToUseDataAwareControls</var> - Hints for accessing databases. A set
of Data-Aware components is provided, to make it easier to access information
held in databases.
</p>
<p>
Before using Data-Aware components, it is necessary to make a connection with
a database, and this should be done either using a TSQLConnection or a TDbf
component, depending on the type of database that is being used. In any case,
the components for connection with the database need to be found in
$Lazdir/components/sqldb/, $Lazdir/components/tdbf/ or whatever other source
is appropriate. They need to be added using the <var>Components</var> Menu
Item of the IDE, and compiled ready for adding. The IDE needs to be re-built
to include the new components.
</p>
<p>
To make the connection with the database: first place a <var>DataBase</var>
Connection on the Form (invisible at run-time, so put it anywhere
convenient); set its properties to connect the user (with name and password)
to the appropriate server, database and table (the connection component
should deal with all the user-authentication issues, opening and closing the
database etc). Then put on a <var>TDataSource</var> from the Data Access tab
of the Component Palette, and perhaps items such as
<var>TSQLTransaction</var> and <var>TSQLQuery</var>, depending on the
particular database you are using. The various database components need to be
linked to each other, for example by setting the <var>Transaction</var>
property of a database connector to the appropriate transaction component,
and linking the <var>DataBase</var> property of the Transaction component
back to the database connector; link the DataSource's <var>DataSet</var>
property to the appropriate SQLQuery or other set of data, and its
Transaction property to the transaction component.
</p>
<p>
Each data-aware control (on the Data Controls tab of the Component Palette)
has the usual set of properties to determine its shape and size, position,
color and font, etc. But there are also special properties to define the data
to be displayed or modified. These include the <var>DataSource</var> property
which must be set to link to the defined set of data, and often a
<var>Field</var> component to determine which of the columns in the database
is to be displayed.
</p>
<p>
Most of the components operate on a single Row or record of the database, but
the <var>TDBGrid</var> is capable of displaying and operating on multiple
rows and columns, in a <var>StringGrid</var> format, allowing the user to get
an overview of what is in the database. The DBGrid will display the contents
of the DataSet even at design time, provided the various components are
enabled or rendered active; this allows the designer to ensure that all the
connections to the database have been correctly made.
</p>
<p>
The <var>TDBNavigator</var> component is used in conjunction with the
Data-Aware components. It consists of a series of buttons to allow browsing
through the DataSet, displaying the first, previous, next or last record (or
Row), inserting or deleting records, committing the changes back to the
database or refreshing the DataSet from the database.
</p>
<p>
The way database programming works is typically as follows:
</p>
<ul>
<li>
a database is opened for access by the user (Database Connection)
</li>
<li>
a command is issued (e.g. by <var>TSQLQuery</var>) to select or extract some
or all of the records which are then stored locally in the <var>DataSet</var>
</li>
<li>
the contents of the <var>DataSet</var> are acted on by the Data-Aware
components, displaying one Row or record at a time from selected Columns, or
perhaps the whole DataSet in a <var>DBGrid</var>, editing records, inserting
or deleting records, or using the data to perform statistical tests or
calculations
</li>
<li>
at intervals usually prescribed by the user (sometimes after every change,
sometimes after a whole series of changes), the contents of the local DataSet
are sent back to the database, causing an update of the database's contents.
This process is referred to as 'Commit' or 'Post' or sometimes as 'Update'
</li>
</ul>
<p>
The programmer can determine which events are associated with a Commit action
by supplying suitable event handlers for <var>OnClick</var>,
<var>OnChange</var>, <var>OnFinishedEdit</var> etc.
</p>
<p>
The following table shows the approximate correspondence between conventional
and data-aware control classes:
</p>
<table>
<tr>
<td>Standard Control</td>
<td>Data-Aware Control</td>
<td>Comment</td>
</tr>
<tr>
<td>TCalendar</td>
<td>TDBCalendar</td>
<td>Select a date from pop-up calendar</td>
</tr>
<tr>
<td>TCheckBox</td>
<td>TDBCheckBox</td>
<td>Check a box to show an option has been selected</td>
</tr>
<tr>
<td>TComboBox</td>
<td>TDBComboBox</td>
<td>
Select an option from a list and return it (or some custom text) in the main
edit box
</td>
</tr>
<tr>
<td>TEdit</td>
<td>TDBEdit</td>
<td>Single-line text editing box</td>
</tr>
<tr>
<td>TGroupBox</td>
<td>TDBGroupBox</td>
<td>A container for several related controls</td>
</tr>
<tr>
<td>TImage</td>
<td>TDBImage</td>
<td>A Picture</td>
</tr>
<tr>
<td>TListBox</td>
<td>TDBListBox</td>
<td>A list of string items</td>
</tr>
<tr>
<td>TMemo</td>
<td>TDBMemo</td>
<td>Multiple-line text editing box</td>
</tr>
<tr>
<td>TRadioGroup</td>
<td>TDBRadioGroup</td>
<td>
A group of mutually exclusive Radio Buttons; only one at a time may be
checked and selected. Please note that there is no data-aware equivalent of
the singular TRadioButton control.
</td>
</tr>
<tr>
<td>TText</td>
<td>TDBText</td>
<td>A simple text-string, usually read-only</td>
</tr>
<tr>
<td>TStringGrid</td>
<td>TDBGrid</td>
<td>A grid to display information in Rows and Columns</td>
</tr>
</table>
<p>
Standard controls can be used to display information from a database, but
they lack the direct link with the DataSet and its navigation aids. The
programmer must write explicit code to extract data from the DataSet and put
it in the standard control.
</p>
</descr>
</topic>
</module>
<!-- DbCtrls -->
</package>
</fpdoc-descriptions>