Image présente à la conception et absente à la compilation
Salut à tous,
Je suis entrain de réaliser un composant dérivé de TSCrollBox. Dans le TCollectionItem j'utilise un TImage qui est censé afficher une image dans le TScrollBox.
Quand je pose mon composant sur une fiche, lors de la conception l'image sélectionnée dans le TImage apparait bien mais lors de la compilation elle disparait.
Je ne vois pas d'ou cela vient.
Ps : En réalité j'utilise un composant FSpectrumImage dérivé du TImage. Mais le problème persiste avec un vrai TImage (J'ai testé ;) ).
unit SpectrumLine;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, Forms, SpectrumImage,Graphics;
type
TSpectrumLine = class;
TSpectrumLineCnt = class;
TSpectrumImageLine=class;
{TSpectrumImageLine}
TSpectrumImageLine=class(TCollectionItem)
protected
FSpectrumImage:TSpectrumImage; //Composant dérivé du TImage
public
constructor Create(ACollection: TCollection); override;
destructor Destroy; override;
published
property SpectrumImage : TSpectrumImage Read FSpectrumImage Write FSpectrumImage nodefault;
end;
{TSpectrumLineCnt}
TSpectrumLineCnt = class(TOwnedCollection)
protected
function GetItem(Index: integer): TSpectrumImageLine;
procedure SetItem(Index: integer; Value: TSpectrumImageLine);
public
constructor Create(AOwner: TSpectrumLine);
function Add: TSpectrumImageLine;
property Items[Index: integer]: TSpectrumImageLine Read GetItem Write SetItem;
end;
{TSpectrumLine}
TSpectrumLine = class(TScrollBox)
private
FSpectrumLineCnt:TSpectrumLineCnt;
fCanvas: TControlCanvas;
protected
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property SpectrumImages : TSpectrumLineCnt Read FSpectrumLineCnt Write FSpectrumLineCnt nodefault;
end;
Var
FSpectrumLine:TSpectrumLine;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('TestImageMusic', [TSpectrumLine]);
end;
{TSpectrumLine}
constructor TSpectrumLine.Create(AOwner: TComponent);
Begin
Inherited;
Parent := TWinControl(AOwner);
fcanvas:=TControlCanvas.Create;
fCanvas.Control:=Self;
FSpectrumLine:=Self;
FSpectrumLineCnt := TSpectrumLineCnt.Create(Self);
End;
Destructor TSpectrumLine.Destroy;
Begin
fcanvas.Free;
FSpectrumLineCnt.Clear;
FSpectrumLineCnt.Free;
Inherited;
End;
{TSpectrumLineCnt}
constructor TSpectrumLineCnt.Create(AOwner: TSpectrumLine);
begin
inherited Create(AOwner,TSpectrumImageLine);
end;
function TSpectrumLineCnt.Add:TSpectrumImageLine;
begin
Result := TSpectrumImageLine(inherited Add);
end;
function TSpectrumLineCnt.GetItem(Index: integer): TSpectrumImageLine;
begin
Result := TSpectrumImageLine(inherited Items[Index]);
end;
procedure TSpectrumLineCnt.SetItem(Index: integer; Value: TSpectrumImageLine);
begin
inherited SetItem(Index, Value);
end;
{TSpectrumImageLine}
constructor TSpectrumImageLine.Create(ACollection: TCollection);
begin
inherited Create(ACollection);
FSpectrumImage:=TSpectrumImage.Create(FSpectrumLine);
With FSpectrumImage Do
Begin
Parent:=FSpectrumLine;
Top:=Round(0.1*FSpectrumLine.Top);
Height:=Round(0.9*FSpectrumLine.Height);
End;
end;
destructor TSpectrumImageLine.Destroy;
begin
FSpectrumImage.Free;
inherited Destroy;
end;
Please Help Me
Merci