Das sollte bei "Property" in der
OH stehen und das gibt es schon sehr sehr lange. (in den Objekten und Interfaces)
Nur bei Records wurde es erst später eingeführt. Genauso, wie es Class- und Record-Helper erst seit einer Weile gibt.
Index ist einfach ein Integer-Parameter, den man an den Getter und Setter weitergeben kann.
Delphi-Quellcode:
[class] function DerGetter([ArrayParameter: ParamTyp; ...] [IndexParameter: Integer]): ResultTyp; [static;] [overload;] [virtual|dynamic; [abstract;]] [override;]
[class] procedure DerSetter([ArrayParameter: ParamTyp; ...] [IndexParameter: Integer; ] Value: ResultTyp); [static;] [overload;] [virtual|dynamic; [abstract;]] [override;]
// Array-Property
[class] property DerName[ArrayParameter: ParamTyp; ...]: ResultTyp [index IndexParameter] [read DerGetter] [write DerSetter] [default];
// normales Propery
[class] property DerName: ResultTyp [index IndexParameter] [read DerGetter] [write DerSetter] [default DerStandardwert];
// [...] = das darin Eingeschlossene ist optional
// außer um den "ArrayParameter" drumrum, da sind wirklich die Zeichen [ und ] gemeint
Nur beim "default" muß man aufpassen, da es bei Array-Property das Property als Standard-Property deklariert .... siehe TStrings (
SL.Strings[123] = SL[123]
)
und bei normalen Properties die Serialisierung steuert ... also den Wert, welchen z.B. die
VCL nicht in der
DFM speichert.
Virtual, dynamic, abstract, override und natürlich auch das protected nicht bei Records, da diese keine Vererbung besitzen.