IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Images - Mémos : affichages LazReport [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 206
    Points : 179
    Points
    179
    Par défaut Images - Mémos : affichages LazReport
    Bonjour,

    Dans la continuité de la discussion relancée le 06/01, j'ai repris la construction d'un rapport intégrant des une image et un champ Mémo par fiche générée à partir d'une base SQLIte3 ( Lazarus 1.0.14 W32 sous W7). A l'aide de Fortes Report j'ai réussi à intégrer une image dans la page de titre du rapport et un mémo pour le champ mémo de chaque fiche mais je bloque toujours pour les images et ce, malgré la réponse très argumentée de Selzig (peut-être un des effets de l'âge et aussi le fait d'être un amateur).
    Mon problème est un peu différent de l'hypothèse de départ de Selzig (les images sont partie intégrante de la base SQlite). En effet, dans mon cas j'ai simplement stocké dans un champ texte de la base de donnée une chaine de caractère faisant référence au nom de l'image et aussi au mémo associé à cette image. Dans le formulaire de saisie (visualisation) de la base ce champ permet :
    a)- l'affichage de l'image dans un "Timage",
    b)- l'affichage du texte dans le Tmemo associé.
    Les images et le contenu des champs mémo sont stockés dans un sous-répertoire spécifique de la base de donnée dont sont appelés par code et cela marche bien dans le formulaire et le Mémo avec Fortes Report.
    Par exemple si ma base de données est stockée dans le répertoire D:\Mabase01, je stocke une image et le champ mémo associé dans le répertoire D:\Mabase01\stockinfo\ sous le nom Mafiche01a.jpg une seconde image relative à la même fiche sera stockée sous le nom Mafiche01b.jpg et le texte du mémo associé aux deux images sera stocké sous le nom MaFiche01.Txt.
    J'appelle ensuite par code les 3 fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    affichimag1 := DirEd_Base.Text  + '\StockInfo\' + DBNominfo.Text + 'a.jpg'; //DBNominfo est le Dbedit contenant le nom générique image et memo  et associé au champ NomInfo de la table ;
    affichimag2 := DirEd_Base.Text  + '\StockInfo\' + DBNominfo.Text + 'b.jpg';
    affichmemo := DirEd_Base.Text  + '\StockInfo\' + DBNominfo.Text + '.Txt';
    Le champ "NomInfo" de la base ne contiendra que 'Mafiche01' et la suite du code servira à afficher les 2 images et le mémo associé sur la fiche du formulaire ce qui fonctionne bien.
    Mes images et mémo ne sont donc pas intégrés à la base mais sont appelés par elle.
    Mon intention est de faire apparaître ces 2 images et le contenu du mémo associé dans la fiche LazReport (ou à la limite dans Fortes Report sachant que pour Fortes Report c'est OK pour le contenu du mémo).
    Avez vous des suggestions.

    Merci

    R.O.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Bonjour ,

    j'utiliserais l'event OnNext du frDBDataSet

    et quelques petites astuces glanées avec rave et fastreport

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.frDBDataSet1Next(Sender: TObject);  
    var m : TfrPictureView; // declarer un objet 
     begin
      m := frxReport1.FindObject('Picture1') as TfrPictureView; // récuperer l'objet image du report 
      if Assigned(m) then // si trouvé 
         M.picture.loadFromfile(<nomimageselondb>);  // charger l'image 
    end;
    sauf que je ne suis pas sur des classes TfrPictureView
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 206
    Points : 179
    Points
    179
    Par défaut Images et LazReport ou Fortes Report - une solution
    Bonjour à tous et tout particulièrement à Nullose qui a persévéré à vouloir me proposer une solution à mon problème - voir aussi discussion lancée le 27/12/2013).
    J'ai finit (après bien des déboires) par trouver une solution à mon problème d'affichage d'une image dans une fiche rapport d'une base de données.
    Je rappelle que mes images ne sont pas stockées en tant que telles dans la base mais qu'un champ de la base renferme le nom du fichier image , ce nom étant en partie commun à deux images et à un commentaire qui leur est associé, il est complété par des extensions (voir le code ci-après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    affichimag1 := DirEd_Base.Text  + '\StockInfo\' + DBNominfo.Text + 'a.jpg'; //DBNominfo est le Dbedit contenant le nom générique image et memo  et associé au champ NomInfo de la table ;
    affichimag2 := DirEd_Base.Text  + '\StockInfo\' + DBNominfo.Text + 'b.jpg';
    affichmemo := DirEd_Base.Text  + '\StockInfo\' + DBNominfo.Text + '.Txt';
    Pour pouvoir afficher (Fortes Report) les deux images j'ai, dans la page "détails" du rapport qui est destinée à traiter les divers enregistrements de la base, un champ database Texte qui fait référence au nom stocké (le nom du champ est codTromb et j'appelle les images (Jpeg) à partir de l'affichage de ce champs en utilisant de façon transitoire le "presse-papiers" de Windows.
    Le code est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    procedure TForm_RpFortes.RLDBTrombBeforePrint(Sender: TObject;
      var OutputText: string; var PrintIt: boolean);
      Var fichTromb   : String ;
      Var fichImgJ, fichimgActu : String ;
      Var JPGj, JPGActu  : TjpegImage ;
    begin
       OutputText := Form_Ecole.DBCodTromb.Text ;
     
       if  Outputtext = '' then  //affichage fichier Memo
         Begin
            fichimgJ := Form_Ecole.DirEd_Base.Text + '\Trombine\00_Avatara.jpg' ; //Identification image jeune
            fichimgActu :=  Form_Ecole.DirEd_Base.Text + '\Trombine\00_Avatarb.jpg' ; //identification image actuelle
          End
          Else
          Begin
            fichimgJ :=  Form_Ecole.DirEd_Base.Text + '\Trombine\' + OutputText + 'a.Jpg' ;
            fichimgActu := Form_Ecole.DirEd_Base.Text + '\Trombine\' + OutputText + 'b.Jpg' ;
         End;
          // processus d'affichage des photos
        PrintIt := False ;
        jpgJ := TJpegImage.Create ;
        JpgJ.LoadFromFile(FichImgJ);
        ClipBoard.Assign(jpgJ);
        RLImgJ.picture.assign(jpgJ) ;
        JpgJ.Free ;
        Clipboard.Clear ;
        jpgActu := TJpegImage.Create ;
        JpgActu.LoadFromFile(FichImgActu);
        ClipBoard.Assign(jpgActu);
        RLImgACtu.picture.assign(jpgActu) ;
        JpgActu.Free ;
        Clipboard.Clear ;
    end;
    Bien sur Graphics et ClipBrd figurent dans les "Uses".
    dans les propriétés e l'image la propriété Scaled est mise à True pour ajuster l'image à la taille qui lui est destinée dans l'édition.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Upload] upload d'images et affichage du lien
    Par loopback dans le forum Langage
    Réponses: 6
    Dernier message: 31/05/2007, 21h55
  2. [Conception] Images: Téléchargement, affichage, suppression - Comment Faire ?
    Par mathieu7497 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/12/2006, 11h27
  3. [Access/C#] Comment en importer des images pour affichage ?
    Par don_hakim dans le forum Accès aux données
    Réponses: 1
    Dernier message: 26/08/2006, 09h24
  4. Réponses: 6
    Dernier message: 20/01/2006, 10h18
  5. [MySQL] Stockage d'images et affichage
    Par jh0483 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 06/10/2005, 14h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo