type
TMode = (MODE1, MODE2);
TBaseClass = class
private
FP: Integer;
protected
property P: Integer read FP write FP;
public
end;
TDerivedClass1 = class(TBaseClass)
public
property P;
end;
TDerivedClass2 = class(TBaseClass)
private
FOtherP: Integer;
function GetP(AMode: TMode): Integer;
procedure SetP(AMode: TMode; AValue: Integer);
public
property P1: Integer index MODE1 read GetP write SetP;
property P2: Integer index MODE2 read GetP write SetP;
end;
function TDerivedClass2.GetP(AMode: TMode): Integer;
begin
case AMode of
MODE1: Result := inherited P;
MODE2: Result := FOtherP;
end;
end;
procedure TDerivedClass2.SetP(AMode: TMode; AValue: Integer);
begin
case AMode of
MODE1: inherited P := AValue;
MODE2: FOtherP := AValue;
end;
end;