Utilisateur anonyme
-
22 déc. 2007 à 11:11
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
23 déc. 2007 à 06:20
Salut à tous,
Il y a quelques temps j'ai été confronté à un problème. Je voulais faire un composant dans lequel j'utilisais un TPicture. En run-time il n'y a pas de soucis. Mais en Design-Time, je ne voyais rien.
Hormis le coté très intéressant, la solution proposée me laisse perplexe d'autant plus que si on ne veut pas utiliser un TImage mais un TPicture, la solution devient crade.
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 22 déc. 2007 à 15:58
Bonjour
Quelques questions en passant. Je suppose que ton composant était intégré à un paquet; comment était l'option d'utilisation de ce paquet ? Seulement en conception, Seulement en execution ou Conception et Execution ?
Utilisais tu un format perso d'image (PNG,GIF,...) ? Au quel cas avais tu bien enregistrer ton format au moyen d'un RegisterFileFormat ?
P.S. Un peu plus de précision sur ton composant pourrait nous aider à y voir plus clair.
Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
type
TExemple = class(TCustomPanel)
private
FPicture:TPicture;
Procedure SetPicture(Value:TPicture);
protected
Procedure Paint;Override;
public
constructor Create(AOwner:TComponent); override;
destructor Destroy; override;
published
Property Picture:TPicture Read fPicture Write SetPicture;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Exemples', [TExemple]);
end;
constructor TExemple.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
Parent := TWinControl(AOwner);
fPicture:=TPicture.Create;
end;
destructor TExemple.Destroy;
begin
fPicture.Free; //<---- Là il faut le mettre : c'est pour Cirec
inherited;
end;
Procedure TExemple.SetPicture(Value:TPicture);
Begin
If Assigned(Self) Then
fPicture.Assign(Value);
End;
Procedure TExemple.Paint;
Var
Rect:TRect;
Begin
Inherited;
If Assigned(Self) Then
Begin
Rect:=Self.ClientRect;
Self.Canvas.StretchDraw(Rect,fPicture.Graphic);
End;
End;
end.
Javais du merdouiller un truc dans les options : car là ca fonctionne. Semble bizarre cette histoire : à l'époque j'avais demandé à FLo de jeter un oeil et il avait conlut que le TImage n'était pas mis dans le dfm.
Désolé du dérangement. En meme temps ca permet aux gens de savoir comment on implante le glyph ou le Picture comme dans un TImage, dans un composant.