Один и тот же метод может использоваться для получения (установки) значений нескольких свойств одного типа. В этом случае каждому свойству назначается целочисленный индекс, который передается в метод чтения (записи) первым параметром.
Пример:
type TRectangle = class(TFigure) private FCoordinates: array[0..3] of Longint; function GetCoordinate(Index: Integer): Longint; procedure SetCoordinate(Index: Integer; Value: Longint); public property Left: Longint index 0 read GetCoordinate write SetCoordinate; property Top: Longint index 1 read GetCoordinate write SetCoordinate; property Right: Longint index 2 read GetCoordinate write SetCoordinate; property Bottom: Longint index 3 read GetCoordinate write SetCoordinate; property Coordinates[Index: Integer]: Longint read GetCoordinate write SetCoordinate; ... end;
Обращения к свойствам Left, Top, Right, Bottom и Coordinates заменяются компилятором на вызовы одного и того же метода GetCoordinate, но с разными значениями параметра Index:
Var Rectangle: TRectangle;...ShowMessage(inttostr(Rectangle.Left));//Эквивалентно:ShowMessage(inttostr(Rectangle.GetCoordinate(0))); ShowMessage(inttostr(Rectangle.Top));//Эквивалентно:ShowMessage(inttostr(Rectangle.GetCoordinate(1))); ShowMessage(inttostr(Rectangle.Right));//Эквивалентно:ShowMessage(inttostr(Rectangle.GetCoordinate(2))); ...