This topic covers the implementation details of TComboProperty.
Scope: cComboProperty.pas; class derived from TSL_Property. Prepared from the curated implementation supplied for this review on 2 October 2026.
ComboChoice is an integer selection index. The constructor receives both the ordered Choices list and DefVal; their definitions are not included here. DisplayValue is written from Choices[ComboChoice] and is not imported. Do not infer all legal indices from the examples.
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.
ComboChoice
XML representation: The text of the ComboChoice element.
Reading: Converts the stored text to a number and assigns it to aPropValue.ComboChoice when the record node exists.
Writing: Stores the text representation of DataValue.ComboChoice whenever the writer reaches this field.
DisplayValue
XML representation: The text of the DisplayValue element.
Writing: Stores Choices[DataValue.ComboChoice] 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
TComboProperty.CreateInit
Setting or temporary variable |
Initial value |
When it is assigned |
Choices |
TStringList.Create |
Always |
PropValue.PropertyType |
ptCombo |
Always |
PropValue.ComboChoice |
DefVal |
Always |
DataValue |
PropValue |
Always |
This routine also calls inherited Create; Choices.Assign(ComboChoices); 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 |
Choices |
TStringList |
member |
peComboValueIN |
integer |
member |
The Implementation toggle contains only TComboProperty methods. Initializers and helpers belonging to other types are identified separately below. Shared XML-helper limitations are explained in Reading this reference.