![]() |
AV bei Verwendung eines TPictures in meiner Komponente
Hi,
ich habe mir eine neue Komponente erstellt. Diese enthält im Objektinspektor wiederum eine Klasse die ein TPicture als property enthält. Noch läuft alles ohne Probleme, lade ich aber ein Bild in diese Eigenschaft und klicke auf eine andere Eigenschaften oder irgendwo anders aus die Form, bekomme ich folgende AV: Zitat:
Zitat:
Hier mein Code: HTMLUtils.pas (enthält Klasse und Definitionen die auch in anderen Komponenten verwendet werden sollen):
Delphi-Quellcode:
DivLayer.pas (Die eigentliche Komponente):
...
type THTMLBackground = class(TComponent) private fBackgroundImage: TPicture; //Variable für das Bild fBackgroundColor: TColor; fBackgroundPosition: THTMLBackgroundPosition; fBackgroundPositionInPixels: Integer; fBackgroundRepeat: THTMLBackgroundRepeat; published property BackgroundImage: TPicture read fBackgroundImage write fBackgroundImage; //und die Eigenschaft für den OI property BackgroundColor: TColor read fBackgroundColor write fBackgroundColor; property BackgroundPosition: THTMLBackgroundPosition read fBackgroundPosition write fBackgroundPosition; property BackgroundPositionInPixels: Integer read fBackgroundPositionInPixels write fBackgroundPositionInPixels; property BackgroundRepeat: THTMLBackgroundRepeat read fBackgroundRepeat write fBackgroundRepeat; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; ... ... { THTMLBackground implementation } constructor THTMLBackground.Create(AOwner: TComponent); begin inherited Create(AOwner); fBackgroundImage := TPicture.Create; //Bild wird erstellt fBackgroundColor := clNone; fBackgroundPosition := [hbpLeft]; fBackgroundPositionInPixels := 0; fBackgroundRepeat := hbrRepeat; end; destructor THTMLBackground.Destroy; begin fBackgroundImage.Free; //Bild wird freigegeben inherited Destroy; end;
Delphi-Quellcode:
Hat jemand eine Idee?
type
TDivLayer = class(TCustomPanel) private fBorders: THTMLBorder; fBackground: THTMLBackground; procedure SetBorders(Value: THTMLBorder); procedure SetBackground(Value: THTMLBackground); published property Borders: THTMLBorder read fBorders write SetBorders; property Background: THTMLBackground read fBackground write SetBackground; //Klasse wird als Eigenschaft deklariert constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; ... { TDivLayer implementation } constructor TDivLayer.Create(AOwner: TComponent); begin inherited Create(AOwner); fBorders := THTMLBorder.Create(Self); fBackground := THTMLBackground.Create(Self); //Klasse wird erstellt end; destructor TDivLayer.Destroy; begin fBorders.Free; fbackground.Free; // und freigegeben... inherited Destroy; end; |
Re: AV bei Verwendung eines TPictures in meiner Komponente
Zitat:
|
Re: AV bei Verwendung eines TPictures in meiner Komponente
Liste der Anhänge anzeigen (Anzahl: 1)
Da hätte ich selbst draufkommen müssen :wall:
Danke :thumb: Warum sieht eigentlich die Eigenschaft der Klasse im Objektinspektor so komisch aus (siehe Anhang)? |
Re: AV bei Verwendung eines TPictures in meiner Komponente
Die Eigenschaft Background von TDivLayer sollte nicht schreibbar sein. Dann sollte es richtig aussehen. Und ich glaube es sollte reichen THTMLBackground von TPersistent abzuleiten und nicht von TComponent.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz