This topic covers the implementation details of TCheckBoxProperty.
Scope: cCheckBoxProperty.pas; class derived from TSL_Property. Prepared from the curated implementation supplied for this review on 2 October 2026.
Choice is the imported boolean; DisplayValue is an exported label and is not read back. The A/B captions are supplied by the constructor’s caller. Subclass-specific defaults appear in the initialization table, including AllowGridSplit and IgnoreSidedness=false.
Notation and shared helper rules: Reading this reference.
No literal rec_type value is emitted directly by the selected routines. A property envelope, an inherited writer or a delegated record can supply its identifying attributes.
Inherited implementation: TSL_Property. Follow it when the ordered behavior invokes inherited methods; inherited fields are not repeated as locally owned fields.
Exact XML fields and attributes
The paths below start at this record or property node. A slash identifies a child element; @ identifies an attribute. Curly braces mark a variable index or expression, not literal XML text. Initial values describe initialization; they do not establish what an omitted individual element does. The Implementation toggle below contains the supplied routines for exact branch order and conversions.
Choice
XML representation: The text of the Choice element.
Reading: Converts the stored text to a boolean and assigns it to aPropValue.Choice when the record node exists.
Writing: Stores true or false according to DataValue.Choice whenever the writer reaches this field.
DisplayValue
XML representation: The text of the DisplayValue element.
Writing: Stores DisplayValue whenever the writer reaches this field.
Import: This routine does not read this field. See the inherited or enclosing implementation where applicable.
Initialization and reset values
TCheckBoxProperty.CreateInit
Setting or temporary variable |
Initial value |
When it is assigned |
ChoiceA |
A |
Always |
ChoiceB |
B |
Always |
PropValue.PropertyType |
ptAorB |
Always |
PropValue.Choice |
True |
Always |
PropValue.Choice |
True |
self is TFlowDirection |
PropValue.Choice |
false |
the following is false: self is TFlowDirection; self is TAllowGridSplit |
PropValue.Choice |
false |
the following is false: self is TFlowDirection; the following is false: self is TAllowGridSplit; self is TIgnoreSidedness |
PropValue.Choice |
IniSettings.UseExtraPrecision |
the following is false: self is TFlowDirection; the following is false: self is TAllowGridSplit; the following is false: self is TIgnoreSidedness; self is TExtraPrecision; UseIniSettingsInPropertyConstructor is true |
PropValue.Choice |
false |
the following is false: self is TFlowDirection; the following is false: self is TAllowGridSplit; the following is false: self is TIgnoreSidedness; self is TExtraPrecision; UseIniSettingsInPropertyConstructor is false |
DataValue |
PropValue |
Always |
This routine also calls inherited Create; self.FillPropEditor; self.FillDisplayValue. See Implementation for their order and any conditional calls.
Storage declarations relevant to interpretation
These are in-memory member and property types, not a list of mandatory XML children. They retain array bounds, fixed buffers and selector types. The field reference above defines what is actually serialized.
Name |
Declared type / bounds |
Kind |
ChoiceA |
string |
member |
ChoiceB |
string |
member |
peTrueFalseValueIN |
integer |
member |
The Implementation toggle contains only TCheckBoxProperty methods. Initializers and helpers belonging to other types are identified separately below. Shared XML-helper limitations are explained in Reading this reference.