Please enable JavaScript to view this site.

 

Navigation: Appendices > Q++Studio > XML Identifiers > Internal Data Structures > Implementation > List

THolidaysDisplay — XML implementation

Scroll Prev Up Next More

This topic covers the implementation details of THolidaysDisplay.

 

Scope: cpHolidaysDisplay.pas; class derived from TBtnEditProperty. Prepared from the curated implementation supplied for this review on 2 October 2026.

 

This property combines the THolidaysDisplayOptions record with additional per-list members. default_vals=true invokes property-level ResetToDefaults; false reads the record plus the extra members.

 

The v2 property-level IsDefault and ResetToDefaults methods are included below. They differ from the record methods; keep the two scopes distinct.

 

Notation and shared helper rules: Reading this reference.

 

Property-level default profile (v2 source)

 

ResetToDefaults and IsDefault are now supplied and reproduced in this topic. default_vals=true calls the property-level reset and skips the ordinary per-list reading branch. The reset first calls the record’s ResetToDefaults, then assigns the additional symbol/abbreviation layout settings.

 

This is not a complete reconstruction of the property constructor. ResetToDefaults does not assign IgnoreHolidaysStartingOn, FontsForBold or FontsForItalics, although IsDefault examines these members (the font checks apply when DisplayHolidayName is true). Their existing values therefore matter. The reset sets HolSetWingdingSeparator to one space; the constructor later sets this property-level separator to an empty string. Do not substitute deletion or default_vals=true for a targeted field edit.

 

XML identity and composition

 

Literal rec_type values emitted within these routines: THolidaysDisplayOptions. Nested values may belong to child wrappers rather than this owner itself; the attribute entries below give their exact locations.

 

Inherited implementation: TBtnEditProperty. Follow it when the ordered behavior invokes inherited methods; inherited fields are not repeated as locally owned fields.

 

Structures used directly by this XML implementation:

 

THolidaysDisplayOptions

 

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.

 

{s + '-holidays'}/default_vals

 

XML representation: The text of the default_vals element.

 

Reading: Reads the element into UseDefaultVals when for each iqhl from qhlA through qhlU; the record node exists. Before this read, UseDefaultVals is set to false.

 

Writing: Stores the literal text “true” when for each iqhl from qhlA through qhlU; IsDefault (iqhl, hdOptions[iqhl]).

 

Writing: Stores the literal text “false” when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]).

 

{s + '-holidays'}/IgnoreHolidaysStartingOn

 

XML representation: The text of the IgnoreHolidaysStartingOn element.

 

Reading: Reads the element into IgnoreHolidaysStartingOn[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores the numeric value of IgnoreHolidaysStartingOn[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); IgnoreHolidaysStartingOn[iqhl] is not 999999.

 

{s + '-holidays'}/HolSetWingdingContentType

 

XML representation: The text of the HolSetWingdingContentType element.

 

Reading: Reads the element into buffInt when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false. The subsequent conversion is shown in Implementation.

 

Writing: Stores the numeric value of HolSetWingdingContentType[iqhl] (see the value table below) when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); HolSetWingdingContentType[iqhl] is not hwtSymbols (0).

 

{s + '-holidays'}/SymbolLayoutOption

 

XML representation: The text of the SymbolLayoutOption element.

 

Reading: Reads the element into buffInt when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false. The subsequent conversion is shown in Implementation.

 

Writing: Stores the numeric value of SymbolLayoutOption[iqhl] (see the value table below) when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); SymbolLayoutOption[iqhl] is not hsaNone (0).

 

{s + '-holidays'}/SymbolLayoutTopHeavy

 

XML representation: The text of the SymbolLayoutTopHeavy element.

 

Reading: Reads the element into SymbolLayoutTopHeavy[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores true or false according to SymbolLayoutTopHeavy[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); SymbolLayoutTopHeavy[iqhl] is not true.

 

{s + '-holidays'}/BreakSymbolsString

 

XML representation: The text of the BreakSymbolsString element.

 

Reading: Reads the element into BreakSymbolsString[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores true or false according to BreakSymbolsString[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); BreakSymbolsString[iqhl] is not false.

 

{s + '-holidays'}/SymbolBreakOffset

 

XML representation: The text of the SymbolBreakOffset element.

 

Reading: Reads the element into SymbolBreakOffset[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores the numeric value of SymbolBreakOffset[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); SymbolBreakOffset[iqhl] is not 0.

 

{s + '-holidays'}/SymbolMaxWidth

 

XML representation: The text of the SymbolMaxWidth element.

 

Reading: Reads the element into SymbolMaxWidth[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores the numeric value of SymbolMaxWidth[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); SymbolMaxWidth[iqhl] is not 1.

 

{s + '-holidays'}/SeparatorUsesSymbolFont

 

XML representation: The text of the SeparatorUsesSymbolFont element.

 

Reading: Reads the element into SeparatorUsesSymbolFont[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores true or false according to SeparatorUsesSymbolFont[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); SeparatorUsesSymbolFont[iqhl] is not false.

 

{s + '-holidays'}/UseQuarkFileFont

 

XML representation: The text of the UseQuarkFileFont element.

 

Reading: Reads the element into UseQuarkFileFont[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores true or false according to UseQuarkFileFont[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); UseQuarkFileFont[iqhl] is not false.

 

{s + '-holidays'}/AbbrevLayoutOption

 

XML representation: The text of the AbbrevLayoutOption element.

 

Reading: Reads the element into buffInt when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false. The subsequent conversion is shown in Implementation.

 

Writing: Stores the numeric value of AbbrevLayoutOption[iqhl] (see the value table below) when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); AbbrevLayoutOption[iqhl] is not hsaNone (0).

 

{s + '-holidays'}/AbbrevLayoutTopHeavy

 

XML representation: The text of the AbbrevLayoutTopHeavy element.

 

Reading: Reads the element into AbbrevLayoutTopHeavy[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores true or false according to AbbrevLayoutTopHeavy[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); AbbrevLayoutTopHeavy[iqhl] is not true.

 

{s + '-holidays'}/BreakAbbrevsString

 

XML representation: The text of the BreakAbbrevsString element.

 

Reading: Reads the element into BreakAbbrevsString[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores true or false according to BreakAbbrevsString[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); BreakAbbrevsString[iqhl] is not false.

 

{s + '-holidays'}/AbbrevBreakOffset

 

XML representation: The text of the AbbrevBreakOffset element.

 

Reading: Reads the element into AbbrevBreakOffset[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores the numeric value of AbbrevBreakOffset[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); AbbrevBreakOffset[iqhl] is not 0.

 

{s + '-holidays'}/AbbrevMaxWidth

 

XML representation: The text of the AbbrevMaxWidth element.

 

Reading: Reads the element into AbbrevMaxWidth[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores the numeric value of AbbrevMaxWidth[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); AbbrevMaxWidth[iqhl] is not 1.

 

{s + '-holidays'}/NoDupHolNames

 

XML representation: The text of the NoDupHolNames element.

 

Reading: Reads the element into NoDupHolNames[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores true or false according to NoDupHolNames[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); hdOptions[iqhl].DisplayHolidayName is true; NoDupHolNames[iqhl] is true.

 

{s + '-holidays'}/HolSetWingdingSeparator

 

XML representation: The text of the HolSetWingdingSeparator element.

 

Reading: Reads the element into HolSetWingdingSeparator[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores HolSetWingdingSeparator[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); hdOptions[iqhl].HolSetWingdingPosition is not hwpDoNotShow (0); HolSetWingdingSeparator[iqhl] is not “ ”.

 

{s + '-holidays'}/HolSetWingdingLeftWrapper

 

XML representation: The text of the HolSetWingdingLeftWrapper element.

 

Reading: Reads the element into HolSetWingdingLeftWrapper[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores HolSetWingdingLeftWrapper[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); hdOptions[iqhl].HolSetWingdingPosition is not hwpDoNotShow (0); HolSetWingdingLeftWrapper[iqhl] is not empty.

 

{s + '-holidays'}/HolSetWingdingRightWrapper

 

XML representation: The text of the HolSetWingdingRightWrapper element.

 

Reading: Reads the element into HolSetWingdingRightWrapper[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores HolSetWingdingRightWrapper[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); hdOptions[iqhl].HolSetWingdingPosition is not hwpDoNotShow (0); HolSetWingdingRightWrapper[iqhl] is not empty.

 

{s + '-holidays'}/FontForBold

 

XML representation: The text of the FontForBold element.

 

Reading: Reads the element into FontsForBold[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores FontsForBold[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); FontsForBold[iqhl] is not empty.

 

{s + '-holidays'}/FontForItalics

 

XML representation: The text of the FontForItalics element.

 

Reading: Reads the element into FontsForItalics[iqhl] when for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false.

 

Writing: Stores FontsForItalics[iqhl] when for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl]); FontsForItalics[iqhl] is not empty.

 

{s + '-holidays'}/@rec_type

 

XML representation: The rec_type attribute.

 

Writing: Stores the literal text “THolidaysDisplayOptions” when for each iqhl from qhlA through qhlU.

 

Nested records and repeated elements

 

Operation

XML location

When it is processed

Read aPropValue.hdOptions[iqhl]

{s + '-holidays'}

for each iqhl from qhlA through qhlU; the record node exists; UseDefaultVals is false

Write hdOptions[iqhl]

{s + '-holidays'}

for each iqhl from qhlA through qhlU; the following is false: IsDefault (iqhl, hdOptions[iqhl])

 

Initialization and reset values

 

THolidaysDisplay.Create

 

Setting or temporary variable

Initial value

When it is assigned

PropName

“Holidays Display Options”

Always

Required

1

Always

PropValue

Default (TSL_PropValue)

Always

PropValue.hdOptions[qhl].HolSetWingdingPosition

hwpDoNotShow (0)

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].HolSetWingdingLeftWrapper[qhl]

an empty string

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].HolSetWingdingRightWrapper[qhl]

an empty string

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].HolSetWingdingSeparator[qhl]

“ ”

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].DisplayHolidayName

True

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].ChangeWingdingSize

false

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].NewWingdingSize

80

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].AbbrevSort

false

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].AbbrevSep

an empty string

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].AbbrevSortType

hstNone (0)

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].AbbrevSortFilter

an empty string

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].DoNotSplitAbbrevs

false

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].SymbolsSep

an empty string

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].SymbolsSortType

hsstNone (0)

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].SymbolsSortFilter

an empty string

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl].SymbolFont

IniSettings.DefaultHolidayFont

for each qhl from qhlA through qhlU; UseIniSettingsInPropertyConstructor is true

PropValue.hdOptions[qhl].SymbolFont

an empty string

for each qhl from qhlA through qhlU; UseIniSettingsInPropertyConstructor is false

IgnoreHolidaysStartingOn[qhl]

999999

for each qhl from qhlA through qhlU

HolSetWingdingContentType[qhl]

hwtSymbols (0)

for each qhl from qhlA through qhlU

SymbolLayoutOption[qhl]

hsaNone (0)

for each qhl from qhlA through qhlU

BreakSymbolsString[qhl]

false

for each qhl from qhlA through qhlU

SymbolLayoutTopHeavy[qhl]

true

for each qhl from qhlA through qhlU

SymbolBreakOffset[qhl]

0

for each qhl from qhlA through qhlU

SymbolMaxWidth[qhl]

1

for each qhl from qhlA through qhlU

SeparatorUsesSymbolFont[qhl]

false

for each qhl from qhlA through qhlU

UseQuarkFileFont[qhl]

false

for each qhl from qhlA through qhlU

NoDupHolNames[qhl]

false

for each qhl from qhlA through qhlU

HolSetWingdingSeparator[qhl]

an empty string

for each qhl from qhlA through qhlU

HolSetWingdingLeftWrapper[qhl]

an empty string

for each qhl from qhlA through qhlU

HolSetWingdingRightWrapper[qhl]

an empty string

for each qhl from qhlA through qhlU

FontsForBold[qhl]

an empty string

for each qhl from qhlA through qhlU

FontsForItalics[qhl]

an empty string

for each qhl from qhlA through qhlU

AbbrevLayoutOption[qhl]

hsaNone (0)

for each qhl from qhlA through qhlU

AbbrevLayoutTopHeavy[qhl]

true

for each qhl from qhlA through qhlU

BreakAbbrevsString[qhl]

false

for each qhl from qhlA through qhlU

AbbrevBreakOffset[qhl]

0

for each qhl from qhlA through qhlU

AbbrevMaxWidth[qhl]

1

for each qhl from qhlA through qhlU

PropValue.hdOptions[qhl]

IniSettings.HolidaysDisplay.DataValue.hdOptions[qhl]

UseIniSettingsInPropertyConstructor is true; self is not IniSettings.HolidaysDisplay; for each qhl from qhlA through qhlU

DataValue

PropValue

Always

 

This routine also calls inherited Create; self.FillDisplayValue. See Implementation for their order and any conditional calls.

 

THolidaysDisplay.ResetToDefaults

 

Setting or temporary variable

Initial value

When it is assigned

NoDupHolNames[qhl]

false

Always

HolSetWingdingContentType[qhl]

hwtSymbols (0)

Always

HolSetWingdingSeparator[qhl]

“ ”

Always

HolSetWingdingLeftWrapper[qhl]

an empty string

Always

HolSetWingdingRightWrapper[qhl]

an empty string

Always

SymbolLayoutOption[qhl]

hsaNone (0)

Always

BreakSymbolsString[qhl]

false

Always

SymbolLayoutTopHeavy[qhl]

true

Always

SymbolBreakOffset[qhl]

0

Always

SymbolMaxWidth[qhl]

1

Always

SeparatorUsesSymbolFont[qhl]

false

Always

UseQuarkFileFont[qhl]

false

Always

NoDupHolNames[qhl]

false

Always

AbbrevLayoutOption[qhl]

hsaNone (0)

Always

AbbrevLayoutTopHeavy[qhl]

true

Always

BreakAbbrevsString[qhl]

false

Always

AbbrevBreakOffset[qhl]

0

Always

AbbrevMaxWidth[qhl]

1

Always

 

This routine also calls hdOptions.ResetToDefaults. See Implementation for their order and any conditional calls.

 

Value namespaces used by this implementation

 

These are declared Pascal ordinal values. Use the ordinal only where the field serializer actually writes ord(...), an integer cast or an equivalent value. Set-marker strings and local option lists have their own representation; sentinel members in an enum are not automatically legal XML choices.

 

THolidaySymbolAbbrevLayoutOption

 

Ordinal

Declared member

0

hsaNone

1

hsaBreakEquallyIfTooLong

2

hsaMaxNumPerLine

 

THolidaysSetWingdingPosition

 

Ordinal

Declared member

0

hwpDoNotShow

1

hwpLeft

2

hwpRight

 

TqHolList

 

Ordinal

Declared member

0

qhlA

1

qhlE

2

qhlI

3

qhlO

4

qhlU

5

qhlNone

6

qhlInsert

7

qhlXtra

 

THolSortType

 

Ordinal

Declared member

0

hstNone

1

hstFilter

2

hstAlpha

3

hstNoDupesNoSort

 

THolSymbolSortType

 

Ordinal

Declared member

0

hsstNone

1

hsstFilter

2

hsstNoDuplicates

3

hsstNoDuplicatesExceptsAsterisks

 

THolSetWingdingContentType

 

Ordinal

Declared member

0

hwtSymbols

1

hwtAbbrevs

2

hwtSymbolsThenAbbrevs

3

hwtAbbrevsThenSymbols

 

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

IgnoreHolidaysStartingOn

array [qhlA..qhlU] of integer

member

HolSetWingdingContentType

array [qhlA..qhlU] of THolSetWingdingContentType

member

SymbolLayoutOption

array [qhlA..qhlU] of THolidaySymbolAbbrevLayoutOption

member

SymbolLayoutTopHeavy

array [qhlA..qhlU] of Boolean

member

BreakSymbolsString

array [qhlA..qhlU] of Boolean

member

SymbolBreakOffset

array [qhlA..qhlU] of integer

member

SymbolMaxWidth

array [qhlA..qhlU] of integer

member

SeparatorUsesSymbolFont

array [qhlA..qhlU] of Boolean

member

UseQuarkFileFont

array [qhlA..qhlU] of Boolean

member

NoDupHolNames

array [qhlA..qhlU] of Boolean

member

HolSetWingdingSeparator

array [qhlA..qhlU] of string

member

HolSetWingdingLeftWrapper

array [qhlA..qhlU] of string

member

HolSetWingdingRightWrapper

array [qhlA..qhlU] of string

member

FontsForBold

array [qhlA..qhlU] of string

member

FontsForItalics

array [qhlA..qhlU] of string

member

AbbrevLayoutOption

array [qhlA..qhlU] of THolidaySymbolAbbrevLayoutOption

member

AbbrevLayoutTopHeavy

array [qhlA..qhlU] of Boolean

member

BreakAbbrevsString

array [qhlA..qhlU] of Boolean

member

AbbrevBreakOffset

array [qhlA..qhlU] of integer

member

AbbrevMaxWidth

array [qhlA..qhlU] of integer

member

 

Implementation details

 

The Implementation toggle contains only THolidaysDisplay methods. Initializers and helpers belonging to other types are identified separately below. Shared XML-helper limitations are explained in Reading this reference.

 

Implementation