TVirtualProperty = class
private
FSomeData:string;
protected
function GetSomeData:string;virtual;
procedure SetSomeData(const value:string);virtual;
public
property SomeData:string read GetSomeData write SetSomeData;
end;
TSubClass = class(TVirtualProperty)
protected
function GetSomeData:string;override;
procedure SetSomeData(const value:string);override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
vp:TVirtualProperty;
begin
vp:=tsubclass.Create;
try
vp.SomeData:='Follow me';
showmessage(vp.SomeData);
finally
vp.Free;
end;
end;
{ TVirtualProperty }
function TVirtualProperty.GetSomeData: string;
begin
result:=FSomeData;
end;
procedure TVirtualProperty.SetSomeData(const value: string);
begin
FSomeData:=value;
end;
{ TSubClass }
function TSubClass.GetSomeData: string;
begin
result:= inherited GetSomeData;
end;
procedure TSubClass.SetSomeData(const value: string);
begin
// inherited;
if (someData= value) then exit;
inherited SetSomeData(value);
end;
end.