[LazReport] Affichage d'une image non liée à une base
Bonjour,
Je souhaite afficher une image dans un rapport créé avec LazReport. Cette image est au format JPEG et, si son nom et chemin d'accès est fixe et correspond à une variable String de nom ImgTransit, son contenu est choisi entre plusieurs alternatives par code en utilisant le presse-papiers, étape qui ne ne me pose pas de problèmes (vérification faite par visionnage de l'image résultant du choix).
Comme le contenu de l'image est variable, on ne peut pas utiliser l'outil TImage de LazReport mais on peut, selon la documentation, utiliser directement un Trectangle en utilisant la procédure :
Code:
procedure TF_FRap.frR_Synth1EnterRect(Memo: TStringList; View: TfrView);
.
J'ai, en me basant sur les exemples et notamment la base de données Mushrooms programmé l'instruction suivante :
Code:
1 2 3 4 5 6 7
| procedure TF_FRap.frR_Synth1EnterRect(Memo: TStringList; View: TfrView);
Var Mem_Str : TStringList ;
Var DirNomBase, Img_LogoEcol : String ;
Var ImgLogo1 : TJPEGImage ;
Var ImgTransit : String ;
Var LogoDefaut : String ;
begin |
// ..................
// PLusieurs lignes permettant d'affecter à la variable ImgTransit l'image adéquate
// ...........................
Code:
1 2 3 4 5 6 7 8 9 10 11
| With Tpicture.Create Do ImgLogo1.SaveToFile(ImgTRansit);
Mem_Str := TStringList.Create;
Mem_Str.AddStrings(ImgTransit);
if View.Name = 'LogoProm' then TFrPictureView(View).Picture.LoadFromFile(ImgTransit);
//LogoProm est le nom donné au rectangle devant afficher l'image
ClipBoard.Clear ;
Mem_Str.free ;
end; |
.
Ce code ne provoque pas d'erreur et la page du rapport s'affich.... mais aucune image ne s'affiche .
Pouvez-vous me donner la solution ?
Merci .
R.O.
LazReport- affichage d'une image
Bonjour,
Un examen beaucoup plus attentif de l'exemple "Database-Mushrooms" de JurrasickPork figurant dans les exemples associés à Lazarus m'a permis de trouver une solution à mon problème. Voir ci-après à toutes fins utiles :
1- C'est bien un Timage qu'il faut placer dans la bande et non un Trectangle
2- Lors de la construction du fichier .lrf il faut ouvrir l'inspecteur d'objets (ce qui n'est pas fait lors du double clic permettant d'accéder au fichier lrf) et renseigner certaines propriétés du Timage devant héberger l'image sauvée par code sous le chemin complet correspondant à la variable ImgTransit :
-- Donner un nom (Name : dans mon cas Img_Logo
-- passer l'option Streched à True cela permet de d'adapter l'image à charger à la taille du cadre devant la recevoir
-- Laisser Datafield vierge
-- Vérifier que Memo est (TfrMemoStrings) et Script (TfrScriptStrings).
3 - Coder le chargement de l'image dans la procédure OnEnterRectangle :
Code:
1 2 3 4
| With Tpicture.Create Do ImgLogo1.SaveToFile(ImgTRansit);
If View.Name = 'Img_Logo' then TFrPictureView(View).Picture.LoadFromFile(ImgTransit) ;
ClipBoard.Clear ; |
.
Cela permet d'afficher l'image choisie.