Specyfikatory składowania


Opcjonalne dyrektywy stored, default i nodefault nazywane są specyfikatorami składowania (storage). Nie mają one wpływu na zachowanie programu, ale nadzorują sposób, w jaki Delphi utrzymuje informację o typach w czasie wykonania programu (RTTI). Specyfikatory składowania determinują czy Delphi zachowuje wartości opublikowanych właściwości w plikach formularzy (.DFM).

Dyrektywa stored poprzedza wartość logiczną True lub False, nazwę pola typu Boolean, lub nazwę bezparametrowej metody zwracającej wartość Boolean. Przykład:

property Name: TComponentName read FName write SetName stored False;

Jeśli właściwość nie ma dyrektywy stored, jest traktowana jak gdyby wyspecyfikowano stored True.

Dyrektywa default musi poprzedzać stałą typu takiego jak właściwość. Przykład:

property Tag: Longint read FTag write FTag default 0;

Aby pokryć odziedziczoną właściwość default, bez specyfikowania nowej, należy użyć dyrektywy nodefault. Dyrektywy default i nodefault są utrzymywane tylko dla typów porządkowych i zbiorowych o ograniczonym od dołu i góry typie bazowym o porządkowych wartościach między 0 i 31. Jeśli deklaracja właściwości nie zawiera default ani nodefault, jest traktowana jakby wyspecyfikowano nodefault.

Kiedy Delphi zachowuje stan komponentu, sprawdza specyfikatory składowania opublikowanych właściwości komponentu. Jeśli bieżąca wartość właściwości jest różna od domyślnej (lub jeśli domyślnej nie ma) i specyfikator stored jest True, wtedy wartość właściwości jest zachowywana. W przeciwnym wypadku wartość właściwości nie jest zachowywana.

Uwaga! Specyfikatory składowania nie są utrzymywane dla właściwości tablicowych. Dyrektywa default ma inne znaczenie kiedy jest użyta w deklaracji właściwości tablicowej.