我在Delphi 7中创建了一个已发布的TBitmap属性。我可以在设计时由编辑器设置其值,如果我记得编辑器,则可以看到正确的图片。但是,当我保存,关闭并重新打开表单时,TBitmap属性为空。什么不见​​了?
我知道有加载的虚拟方法。但是我应该怎么做呢?

TCustomComponent = class ( TComponent )
  private
    fBitmap : TBitmap;

  protected
    procedure loaded; override;
    procedure setBitmap( bitmap_ : TBitmap );

  public
    constructor create( owner_ : TComponent ); override;
    destructor destroy; override;

  published
    property bitmap : TBitmap read fBitmap write setBitmap;

end;

procedure TCustomComponent.loaded;
begin
  inherited loaded;
  // ???
end;

procedure TCustomComponent.setBitmap( bitmap_ : TBitmap );
begin
  fBitmap.assign( bitmap_ );
end;

constructor TCustomComponent.create( owner_ : TComponent );
begin
  inherited create( owner_ );
  fBitmap := TBitmap.create;
end;

destructor TCustomComponent.destroy;
begin
  fBitmap.free;
  inherited destroy;
end;

最佳答案

我认为,处理此问题的常规方法是对已发布的属性使用TPicture而不是TBitmapTPicture组件附带对流的支持以及一个设计器。

07-24 09:31