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

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

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

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

-->
<fpdoc-descriptions>
<package name="lcl">
<!--
====================================================================
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 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.stdctrls.TCustomLabel.OptimalFill" name="TDBText.OptimalFill"/>
<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 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 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 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="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 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.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 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 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 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 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="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 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.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 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 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 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.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 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 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 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 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="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.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 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 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.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 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 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 link="#lcl.controls.TControl.ParentShowHint" name="TDBImage.ParentShowHint"/>
<element link="#lcl.controls.TControl.PopupMenu" name="TDBImage.PopupMenu"/>
<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="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.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 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.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 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 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>
