Q:  How do I share Get/Set methods between fields?

A:

unit ushared;

interface

type
  TFoo = class
  private
    fStuff: array[1..3] of integer;
  public
    procedure SetStuff(ArrayIndex, NewValue: integer);
    function GetStuff(ArrayIndex: integer): integer;
  published
    property x: integer index 1 read GetStuff write SetStuff;
    property y: integer index 2 read GetStuff write SetStuff;
    property z: integer index 3 read GetStuff write SetStuff;
  end;

implementation

procedure TFoo.SetStuff(ArrayIndex, NewValue: integer);
begin
  fStuff[ArrayIndex] := NewValue;
end;

function TFoo.GetStuff(ArrayIndex: integer): integer;
begin
  result := fStuff[ArrayIndex];
end;

end.