我在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
而不是TBitmap
。 TPicture
组件附带对流的支持以及一个设计器。