假设我现在写了一个组件类TCom,属性对象中包含子类TPer,请问怎样在改变TPer中的属性值时,同时变更TCom中的某个属性值(也就是改变起父类的属性值)?现将组件简化如下:TPer = class(TPersistent)
private
FTop: Integer;
procedure SetTop(Value: Integer);
published
property Top: Integer read FTop write FTop;
end;TCom = class(TComponent)
private
FTop: Integer;
FPer: TPer;
public
constructor Create(AOwner: TComponent);override;
published
property Persistent read FPer write FPer;
end;{TPer}procedure TPer.SetTop(Value);
begin
FTop:= Value;
//我就是想在这里添加对TCom.FTop属性的赋值,但是TPer没有拥有者属性,无法定位到TCom上,而且设计阶段也没有TCom的实例,请问我该怎么写?end;
private
FTop: Integer;
procedure SetTop(Value: Integer);
published
property Top: Integer read FTop write FTop;
end;TCom = class(TComponent)
private
FTop: Integer;
FPer: TPer;
public
constructor Create(AOwner: TComponent);override;
published
property Persistent read FPer write FPer;
end;{TPer}procedure TPer.SetTop(Value);
begin
FTop:= Value;
//我就是想在这里添加对TCom.FTop属性的赋值,但是TPer没有拥有者属性,无法定位到TCom上,而且设计阶段也没有TCom的实例,请问我该怎么写?end;
constructor Create(AOwner: TComponent);virtual;
然后加一个FOwner的私有属性?我看TComponent类就是这样挂上拥有类的。
private
FTop: Integer;
procedure SetTop(Value: Integer);
public //改这里就可以访问了
property Top: Integer read FTop write FTop;
end;TCom = class(TComponent)
private
FTop: Integer;
FPer: TPer;
public
constructor Create(AOwner: TComponent);override;
published
property Persistent read FPer write FPer;
end;