This topic covers the implementation details of THolidaysDisplayOptions.
Scope: TypeDefinitions.pas; record. Prepared from the curated implementation supplied for this review on 2 October 2026.
This record controls holiday names, wingding/symbol placement and abbreviation/symbol sorting. ResetToDefaults and IsDefault are specified below. Property-level THolidaysDisplay contains additional members; the record alone is not its complete schema.
Several string properties wrap fixed Char arrays. Storage declarations and accessors are included; precise truncation and escaping behavior depend on StringToArray/ArrayToString, which were not supplied.
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.
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.
XML representation: The text of the HolSetWingdingPosition element.
Initial value: hwpDoNotShow (0) (THolidaysDisplayOptions.ResetToDefaults).
Reading: Reads the element into buffInt when the record node exists. The subsequent conversion is shown in Implementation.
Writing: Stores the numeric value of HolSetWingdingPosition (see the value table below) when HolSetWingdingPosition is not hwpDoNotShow (0).
XML representation: The text of the DisplayHolidayName element.
Initial value: True (THolidaysDisplayOptions.ResetToDefaults).
Reading: Reads the element into DisplayHolidayName when the record node exists. Before this read, DisplayHolidayName is set to True.
Writing: Stores true or false according to DisplayHolidayName when DisplayHolidayName is not True.
XML representation: The text of the ChangeWingdingSize element.
Initial value: false (THolidaysDisplayOptions.ResetToDefaults).
Reading: Reads the element into ChangeWingdingSize when the record node exists. Before this read, ChangeWingdingSize is set to false.
Writing: Stores true or false according to ChangeWingdingSize when HolSetWingdingPosition is not hwpDoNotShow (0); ChangeWingdingSize is not false.
XML representation: The text of the NewWingdingSize element.
Initial value: 80 (THolidaysDisplayOptions.ResetToDefaults).
Reading: Reads the element into NewWingdingSize when the record node exists. Before this read, NewWingdingSize is set to 80.
Writing: Stores the text representation of NewWingdingSize when HolSetWingdingPosition is not hwpDoNotShow (0); ChangeWingdingSize is not false; NewWingdingSize is not 80.
XML representation: The text of the AbbrevSort element.
Initial value: false (THolidaysDisplayOptions.ResetToDefaults).
Reading: Reads the element into AbbrevSort when the record node exists. Before this read, AbbrevSort is set to false.
Writing: Stores true or false according to false when AbbrevSort is not false.
XML representation: The text of the DoNotSplitAbbrevs element.
Initial value: false (THolidaysDisplayOptions.ResetToDefaults).
Reading: Reads the element into DoNotSplitAbbrevs when the record node exists. Before this read, DoNotSplitAbbrevs is set to false.
Writing: Stores true or false according to DoNotSplitAbbrevs when DoNotSplitAbbrevs is not false.
XML representation: The text of the AbbrevSep element.
Initial value: an empty string (THolidaysDisplayOptions.ResetToDefaults).
Reading: Reads the element into AbbrevSep when the record node exists.
Writing: Stores AbbrevSep when AbbrevSep is not empty.
XML representation: The text of the AbbrevSortType element.
Initial value: hstNone (0) (THolidaysDisplayOptions.ResetToDefaults).
Reading: Reads the element into buffInt when the record node exists. The subsequent conversion is shown in Implementation.
Writing: Stores the numeric value of AbbrevSortType (see the value table below) when AbbrevSortType is not hstNone (0).
XML representation: The text of the AbbrevSortFilter element.
Initial value: an empty string (THolidaysDisplayOptions.ResetToDefaults).
Reading: Reads the element into AbbrevSortFilter when the record node exists.
Writing: Stores AbbrevSortFilter when AbbrevSortType is not hstNone (0); AbbrevSortFilter is not empty.
XML representation: The text of the SymbolsSep element.
Initial value: an empty string (THolidaysDisplayOptions.ResetToDefaults).
Reading: Reads the element into SymbolsSep when the record node exists.
Writing: Stores SymbolsSep when SymbolsSep is not empty.
XML representation: The text of the SymbolsSortType element.
Initial value: hsstNone (0) (THolidaysDisplayOptions.ResetToDefaults).
Reading: Reads the element into buffInt when the record node exists. The subsequent conversion is shown in Implementation.
Writing: Stores the numeric value of SymbolsSortType (see the value table below) when SymbolsSortType is not hsstNone (0).
XML representation: The text of the SymbolsSortFilter element.
Initial value: an empty string (THolidaysDisplayOptions.ResetToDefaults).
Reading: Reads the element into SymbolsSortFilter when the record node exists.
Writing: Stores SymbolsSortFilter when SymbolsSortType is not hsstNone (0); SymbolsSortFilter is not empty.
XML representation: The text of the SymbolFont element.
Initial value: an empty string (THolidaysDisplayOptions.ResetToDefaults).
Reading: Reads the element into SymbolFont when the record node exists.
Writing: Stores SymbolFont when SymbolsSortType is not hsstNone (0); SymbolFont is not empty.
Setting or temporary variable
|
Initial value
|
When it is assigned
|
HolSetWingdingPosition
|
hwpDoNotShow (0)
|
Always
|
DisplayHolidayName
|
True
|
Always
|
ChangeWingdingSize
|
false
|
Always
|
NewWingdingSize
|
80
|
Always
|
AbbrevSort
|
false
|
Always
|
AbbrevSep
|
an empty string
|
Always
|
AbbrevSortType
|
hstNone (0)
|
Always
|
AbbrevSortFilter
|
an empty string
|
Always
|
DoNotSplitAbbrevs
|
false
|
Always
|
SymbolsSep
|
an empty string
|
Always
|
SymbolsSortType
|
hsstNone (0)
|
Always
|
SymbolsSortFilter
|
an empty string
|
Always
|
SymbolFont
|
an empty string
|
Always
|
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.
Ordinal
|
Declared member
|
0
|
hwpDoNotShow
|
1
|
hwpLeft
|
2
|
hwpRight
|
Ordinal
|
Declared member
|
0
|
hstNone
|
1
|
hstFilter
|
2
|
hstAlpha
|
3
|
hstNoDupesNoSort
|
Ordinal
|
Declared member
|
0
|
hsstNone
|
1
|
hsstFilter
|
2
|
hsstNoDuplicates
|
3
|
hsstNoDuplicatesExceptsAsterisks
|
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
|
DisplayHolidayName
|
Boolean
|
member
|
HolSetWingdingPosition
|
THolidaysSetWingdingPosition
|
member
|
FHolSetWingdingLeftWrapper_OLD
|
array [1..5] of Char
|
member
|
FHolSetWingdingRightWrapper_OLD
|
array [1..5] of Char
|
member
|
FHolSetWingdingSeparator_OLD
|
array [1..5] of Char
|
member
|
ChangeWingdingSize
|
Boolean
|
member
|
NewWingdingSize
|
integer
|
member
|
AbbrevSort
|
Boolean
|
member
|
FAbbrevSep
|
array [1..7] of Char
|
member
|
AbbrevSortType
|
THolAbbrevSortType
|
member
|
FAbbrevSortFilter
|
array [1..120] of Char
|
member
|
FSymbolsSep
|
array [1..7] of Char
|
member
|
SymbolsSortType
|
THolSymbolSortType
|
member
|
FSymbolsSortFilter
|
array [1..60] of Char
|
member
|
FSymbolFont
|
array [1..50] of Char
|
member
|
DoNotSplitAbbrevs
|
Boolean
|
member
|
HolSetWingdingLeftWrapper_OLD
|
string
|
property/accessor
|
HolSetWingdingRightWrapper_OLD
|
string
|
property/accessor
|
HolSetWingdingSeparator_OLD
|
string
|
property/accessor
|
AbbrevSep
|
string
|
property/accessor
|
AbbrevSortFilter
|
string
|
property/accessor
|
SymbolsSep
|
string
|
property/accessor
|
SymbolsSortFilter
|
string
|
property/accessor
|
SymbolFont
|
string
|
property/accessor
|
The Implementation toggle contains only THolidaysDisplayOptions methods. Initializers and helpers belonging to other types are identified separately below. Shared XML-helper limitations are explained in Reading this reference.
Declaration reproduces this record’s complete declaration from the supplied source, including its fields, properties and method signatures.
Declaration
// TypeDefinitions.pas — THolidaysDisplayOptions
THolidaysDisplayOptions = Record
DisplayHolidayName : Boolean;
HolSetWingdingPosition : THolidaysSetWingdingPosition; // 2
FHolSetWingdingLeftWrapper_OLD: array[1..5] of Char;
FHolSetWingdingRightWrapper_OLD: array[1..5] of Char;
FHolSetWingdingSeparator_OLD: array[1..5] of Char;
ChangeWingdingSize : Boolean;
NewWingdingSize : integer; // 22/2/2002
// 3-aug-2002
AbbrevSort : Boolean;
FAbbrevSep : array[1..7] of Char;
// 28-aug-2002
AbbrevSortType : THolAbbrevSortType;
FAbbrevSortFilter : array[1..120] of Char;
FSymbolsSep : array [1..7] of Char;
SymbolsSortType : THolSymbolSortType;
FSymbolsSortFilter : array[1..60] of Char;
FSymbolFont : array[1..50] of Char;
// 10-mar-2003
DoNotSplitAbbrevs : Boolean;
procedure ResetToDefaults;
private
function GetHolSetWingdingLeftWrapper_OLD: string;
function GetHolSetWingdingRightWrapper_OLD: string;
function GetHolSetWingdingSeparator_OLD: string;
function GetAbbrevSep: string;
function GetAbbrevSortFilter: string;
function GetSymbolsSep: string;
function GetSymbolsSortFilter: string;
function GetSymbolFont: string;
procedure SetHolSetWingdingLeftWrapper_OLD(const Value: string);
procedure SetHolSetWingdingRightWrapper_OLD(const Value: string);
procedure SetHolSetWingdingSeparator_OLD(const Value: string);
procedure SetAbbrevSep(const Value: string);
procedure SetAbbrevSortFilter(const Value: string);
procedure SetSymbolsSep(const Value: string);
procedure SetSymbolsSortFilter(const Value: string);
procedure SetSymbolFont(const Value: string);
public
function IsDefault: boolean;
procedure ReadFromXML(const node: TXmlNode);
procedure SaveToXML(const node : TXmlNode);
property HolSetWingdingLeftWrapper_OLD: string read
GetHolSetWingdingLeftWrapper_OLD write SetHolSetWingdingLeftWrapper_OLD;
property HolSetWingdingRightWrapper_OLD: string read
GetHolSetWingdingRightWrapper_OLD write SetHolSetWingdingRightWrapper_OLD;
property HolSetWingdingSeparator_OLD: string read
GetHolSetWingdingSeparator_OLD write SetHolSetWingdingSeparator_OLD;
property AbbrevSep: string read GetAbbrevSep write SetAbbrevSep;
property AbbrevSortFilter: string read GetAbbrevSortFilter write SetAbbrevSortFilter;
property SymbolsSep: string read GetSymbolsSep write SetSymbolsSep;
property SymbolsSortFilter: string read GetSymbolsSortFilter write SetSymbolsSortFilter;
property SymbolFont: string read GetSymbolFont write SetSymbolFont;
end;
|
Implementation
// TypeDefinitions.pas — THolidaysDisplayOptions.GetHolSetWingdingLeftWrapper_OLD
function THolidaysDisplayOptions.GetHolSetWingdingLeftWrapper_OLD: string;
begin
result := ArrayToString(FHolSetWingdingLeftWrapper_OLD);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.GetHolSetWingdingRightWrapper_OLD
function THolidaysDisplayOptions.GetHolSetWingdingRightWrapper_OLD: string;
begin
result := ArrayToString(FHolSetWingdingRightWrapper_OLD);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.GetHolSetWingdingSeparator_OLD
function THolidaysDisplayOptions.GetHolSetWingdingSeparator_OLD: string;
begin
result := ArrayToString(FHolSetWingdingSeparator_OLD);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.GetAbbrevSep
function THolidaysDisplayOptions.GetAbbrevSep: string;
begin
result := ArrayToString(FAbbrevSep);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.GetAbbrevSortFilter
function THolidaysDisplayOptions.GetAbbrevSortFilter: string;
begin
result := ArrayToString(FAbbrevSortFilter);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.GetSymbolsSep
function THolidaysDisplayOptions.GetSymbolsSep: string;
begin
result := ArrayToString(FSymbolsSep);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.GetSymbolsSortFilter
function THolidaysDisplayOptions.GetSymbolsSortFilter: string;
begin
result := ArrayToString(FSymbolsSortFilter);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.GetSymbolFont
function THolidaysDisplayOptions.GetSymbolFont: string;
begin
result := ArrayToString(FSymbolFont);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.IsDefault
function THolidaysDisplayOptions.IsDefault: boolean;
begin
result := DisplayHolidayName;
result := result and (HolSetWingdingPosition = hwpDoNotShow); // hwpLeft, hwpRight, hwpDoNotShow
if HolSetWingdingPosition <> hwpDoNotShow then
begin
result := result and (ChangeWingdingSize = false);
if ChangeWingdingSize
then result := result and (NewWingdingSize = 80);
end;
result := result and (AbbrevSort = false);
result := result and (AbbrevSep = '');
result := result and (AbbrevSortType = hstNone);
if AbbrevSortType <> hstNone then
begin
result := result and (AbbrevSortFilter = '');
end;
result := result and (DoNotSplitAbbrevs = false);
result := result and (SymbolsSep = '');
result := result and (SymbolsSortType = hsstNone);
if SymbolsSortType <> hsstNone then
begin
result := result and (SymbolsSortFilter = '');
result := result and (SymbolFont = '');
end;
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.ReadFromXML
procedure THolidaysDisplayOptions.ReadFromXML(const node: TXmlNode);
var
buffInt : integer;
s : string;
begin
if node = nil
then exit;
buffInt := ord(hwpDoNotShow); ReadNodeValue(node, 'HolSetWingdingPosition', buffInt); HolSetWingdingPosition := THolidaysSetWingdingPosition(buffInt);
DisplayHolidayName := True; ReadNodeValue(node, 'DisplayHolidayName', DisplayHolidayName);
ChangeWingdingSize := false; ReadNodeValue(node, 'ChangeWingdingSize', ChangeWingdingSize);
NewWingdingSize := 80; ReadNodeValue(node, 'NewWingdingSize', NewWingdingSize); // new case
AbbrevSort := false; ReadNodeValue(node, 'AbbrevSort', AbbrevSort);
DoNotSplitAbbrevs := false; ReadNodeValue(node, 'DoNotSplitAbbrevs', DoNotSplitAbbrevs);
s := ''; ReadNodeValue(node, 'AbbrevSep', s); AbbrevSep := s;
buffInt := ord(hstNone); ReadNodeValue(node, 'AbbrevSortType', buffInt); AbbrevSortType := THolAbbrevSortType(buffInt);
s := ''; ReadNodeValue(node, 'AbbrevSortFilter', s); AbbrevSortFilter := s;
s := ''; ReadNodeValue(node, 'SymbolsSep', s); SymbolsSep := s;
buffInt := ord(hsstNone); ReadNodeValue(node, 'SymbolsSortType', buffInt); SymbolsSortType := THolSymbolSortType(buffInt);
s := ''; ReadNodeValue(node, 'SymbolsSortFilter', s); SymbolsSortFilter := s;
s := ''; ReadNodeValue(node, 'SymbolFont', s); SymbolFont := s;
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.ResetToDefaults
procedure THolidaysDisplayOptions.ResetToDefaults;
begin
// hwpLeft, hwpRight, hwpDoNotShow
HolSetWingdingPosition := hwpDoNotShow;
DisplayHolidayName := True;
ChangeWingdingSize := false;
NewWingdingSize := 80;
AbbrevSort := false;
AbbrevSep := '';
AbbrevSortType := hstNone;
AbbrevSortFilter := '';
DoNotSplitAbbrevs := false;
SymbolsSep := '';
SymbolsSortType := hsstNone;
SymbolsSortFilter := '';
SymbolFont := '';
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.SaveToXML
procedure THolidaysDisplayOptions.SaveToXML(const node : TXmlNode);
var
node2 : TXmlNode;
begin
// done as part of THolidaysDisplay.SaveToXML()
// HolSetWingdingPosition: 2
// NewWingdingSize: 22/2/2002
// // 3-aug-2002
// // 28-aug-2002
// // 10-mar-2003
if (DisplayHolidayName <> True) then
begin
node2 := node.AddChild('DisplayHolidayName');
node2.text := BoolToString(DisplayHolidayName);
end;
if (HolSetWingdingPosition <> hwpDoNotShow) then
begin
node2 := node.AddChild('HolSetWingdingPosition');
node2.text := IntToStr(Ord(HolSetWingdingPosition));
if (ChangeWingdingSize <> false) then
begin
node2 := node.AddChild('ChangeWingdingSize');
node2.text := BoolToString(ChangeWingdingSize);
if (NewWingdingSize <> 80) then
begin
node2 := node.AddChild('NewWingdingSize');
node2.text := NewWingdingSize.toString;
end;
end;
end;
if (AbbrevSort <> false) then
begin
node2 := node.AddChild('AbbrevSort');
node2.text := BoolToString(false);
end;
if (DoNotSplitAbbrevs <> false) then
begin
node2 := node.AddChild('DoNotSplitAbbrevs');
node2.text := BoolToString(DoNotSplitAbbrevs);
end;
if (AbbrevSep <> '') then
begin
node2 := node.AddChild('AbbrevSep');
node2.text := AbbrevSep;
end;
if (AbbrevSortType <> hstNone) then
begin
node2 := node.AddChild('AbbrevSortType');
node2.text := IntToStr(Ord(AbbrevSortType));
if (AbbrevSortFilter <> '') then
begin
node2 := node.AddChild('AbbrevSortFilter');
node2.text := AbbrevSortFilter;
end;
end;
if (SymbolsSep <> '') then
begin
node2 := node.AddChild('SymbolsSep');
node2.text := SymbolsSep;
end;
if (SymbolsSortType <> hsstNone) then
begin
node2 := node.AddChild('SymbolsSortType');
node2.text := IntToStr(Ord(SymbolsSortType));
if (SymbolsSortFilter <> '') then
begin
node2 := node.AddChild('SymbolsSortFilter');
node2.text := SymbolsSortFilter;
end;
if (SymbolFont <> '') then
begin
node2 := node.AddChild('SymbolFont');
node2.text := SymbolFont;
end;
end;
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.SetHolSetWingdingLeftWrapper_OLD
procedure THolidaysDisplayOptions.SetHolSetWingdingLeftWrapper_OLD(const Value:
string);
begin
StringToArray(Value, FHolSetWingdingLeftWrapper_OLD);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.SetHolSetWingdingRightWrapper_OLD
procedure THolidaysDisplayOptions.SetHolSetWingdingRightWrapper_OLD(const
Value: string);
begin
StringToArray(Value, FHolSetWingdingRightWrapper_OLD);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.SetHolSetWingdingSeparator_OLD
procedure THolidaysDisplayOptions.SetHolSetWingdingSeparator_OLD(const Value:
string);
begin
StringToArray(Value, FHolSetWingdingSeparator_OLD);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.SetAbbrevSep
procedure THolidaysDisplayOptions.SetAbbrevSep(const Value: string);
begin
StringToArray(Value, FAbbrevSep);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.SetAbbrevSortFilter
procedure THolidaysDisplayOptions.SetAbbrevSortFilter(const Value: string);
begin
StringToArray(Value, FAbbrevSortFilter);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.SetSymbolsSep
procedure THolidaysDisplayOptions.SetSymbolsSep(const Value: string);
begin
StringToArray(Value, FSymbolsSep);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.SetSymbolsSortFilter
procedure THolidaysDisplayOptions.SetSymbolsSortFilter(const Value: string);
begin
StringToArray(Value, FSymbolsSortFilter);
end;
// TypeDefinitions.pas — THolidaysDisplayOptions.SetSymbolFont
procedure THolidaysDisplayOptions.SetSymbolFont(const Value: string);
begin
StringToArray(Value, FSymbolFont);
end;
|