2016-05-11 9 views
0

Ich habe eine veröffentlichte TBitmap-Eigenschaft in Delphi 7 erstellt. Ich kann den Wert vom Editor in der Entwurfszeit einstellen und wenn ich den Editor zurückrufe, kann ich das richtige Bild sehen. Aber wenn ich das Formular speichern, schließen und erneut öffnen, ist die TBitmap-Eigenschaft leer. Was fehlt? Ich weiß, dass es die geladene virtuelle Methode gibt. Aber was soll ich damit machen?Wie kann ich eine veröffentlichte TBitmap-Eigenschaft von DFM streamen?

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; 
+1

Machen Sie die Eigenschaft 'TPicture' Streaming-Unterstützung haben –

+0

Vielen Dank David! Dein Vorschlag hat mein Problem gelöst! –

Antwort

2

Ich glaube, dass die herkömmliche Art und Weise damit zu umgehen ist TPicture statt TBitmap für veröffentlichten Eigenschaften zu verwenden. Die Komponente TPicture unterstützt Streaming und einen Designer.