Właściwości tablicowe są właściowściami indeksowanymi. Mogą one reprezentować elementy listy, kontrolki-dzieci, piksele bitmapy.
Deklaracja właściwości tablicowej zawiera listę parametrów specyfikującą nazwy i typy indeksów. Przykład:
property Objects[Index: Integer]: TObject read GetObject write SetObject; property Pixels[X, Y: Integer]: TColor read GetPixel write SetPixel; property Values[const Name: string]: string read GetValue write SetValue;
Format parametrów indeksowych jest taki sam jak w listach parametrów procedur i funkcji, poza deklaracjami parametrów zamkniętych w nawiasach kwadratowych zamiast okrągłych. Odmiennie niż w tablicach, które mogą używać tylko indeksów o typie porządkowym, właściwości tablicowe zezwalają na indeksy dowolnego typu.
Dla właściwości tablicowych, specyfikatory dostępu powinny zawierać raczej metody niż pola. Metoda w specyfikatorze read musi być funkcją, która pobiera parametry w ilości i o typach jak w wymienionych w liście parametrów indeksowych właściwości, w takiej samej kolejności. Typ zwracanej wartości tej funkcji musi być identyczny jak typ właściwości. Metoda w specyfikatorze write musi być procedurą, która pobiera parametry w ilości i o typach jak w wymienionych w liście parametrów indeksowych właściwości, w takiej samej kolejności, plus dodatkowa wartość lub stała tego samego typu co właściwość.
Przykład metod-specyfikatorów dostępu:
function GetObject(Index: Integer): TObject; function GetPixel(X, Y: Integer): TColor; function GetValue(const Name: string): string; procedure SetObject(Index: Integer; Value: TObject); procedure SetPixel(X, Y: Integer; Value: TColor); procedure SetValue(const Name, Value: string);
Elementy właściwości tablicowej udostępniane są poprzez indeksowanie identyfikatora właściwości podobnie, jakby to była zwykła tablica. Przykładowo, instrukcje:
if Collection.Objects[0] = nil then Exit; Canvas.Pixels[10, 20] := clRed; Params.Values['PATH'] := 'C:\DELPHI\BIN';
są równoważne z instrukcjami:
if Collection.GetObject(0) = nil then Exit; Canvas.SetPixel(10, 20, clRed); Params.SetValue('PATH', 'C:\DELPHI\BIN');
Definicja właściwości tablicowej może poprzedzać dyrektywę default, w którym to przypadku właściwość tablicowa staje się domyślną właściwością klasy. Przykład:
type TStringArray = class public property Strings[Index: Integer]: string ...; default; ... end;
Jeśli klasa ma domyślną właściwość, można uzyskiwać dostęp do niej z pominięciem identyfikatora domyślnej właściwości w odwołaniu. Poniższe zapisy są równoważne.
object.property[index]; object[index];
Przykładowo, wg wcześniej zamieszczonej deklaracji, zapis:
StringArray.Strings[7];
może byc skrócony do postaci:
StringArray[7];
Klasa może mieć tylko jedną domyślną właściwość, której typy potomne nie mogą zmieniać ani ukrywać.