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

Delphi Discussion :

Comment créer dynamiquement un filigrane dans 1 état FastReport et delphi 10


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2019
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juillet 2019
    Messages : 38
    Par défaut Comment créer dynamiquement un filigrane dans 1 état FastReport et delphi 10
    Salut à tous.
    Je dois créer un état où les pages ont des filigranes. L'utilisateur final désire modifier ces filigranes périodiquement.
    J'utilise fastreport 5 et delphi 10. La licence de fastreport que j'ai ne donne pas la possibilité à l'utilisateur final de modifier l'état à domicile.
    Je tiens offrir cette possibilité de créer ces filigranes par mon application pour chaque état concerné.
    Je bute.

    Voici le code de mes tentatives :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Var
      Page: TfrxReportPage;
    begin
     Page:= TfrxReportPage.Create(frxReport1);
     Page.BackPicture.LoadFromFile('c:\Gicl_Pro\Images\Photo\photo.jpg');
    end;
    Quelqu'un a-t-il une idée?

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 635
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Sérieusement, ce code ne correspond à rien, vous créez une nouvelle page alors que la page se doit d'être existante.

    Je n'ai jamais travaillé sur les filigranes et, comme j'ai une version enregistrée, je laisse la main du design aux utilisateurs. Mais lors de mes premières approches de fastreport (version Delphi de base donc) j'avais pu remarquer que cela fonctionnait un peu comme Rave quand on voulait faire des modifications "hors version enregistrée".

    Donc le principe serait de :
    Charger le fichier fr (si besoin)
    et trouver la/les pages à modifier (pas créer une nouvelle page)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var aPage : TFrxReportPage;
        i : Integer;
    begin
    if opendialog1.execute then
     begin
      for i:=1 to frxreport1.PagesCount-1 do
       begin
        aPage:=TFrxReportPage(frxreport1.Pages[i]);
        if not Apage.BackPicture.isEmpty then  // ou tout autre test
           aPage.BackPicture.LoadFromFile(Opendialog1.FileName);
       end;
     end;
    dans ce code mon état se compose de plusieurs types de pages, seule la première a un filigrane

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Si ces filigranes sont du texte, le plus simple serait d'ajouter un champ texte et de le lier à une variable (menu Report -> Variables).

    Ensuite pas code sur l'événement OnGetValue pour une variable nommée Watermark :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TForm1.Report1GetValue(const VarName: string; var Value: Variant);
    begin
      if SameText(VarName, 'Watermark') then
        Value := 'Confidentiel';
    end;
    Le seul truc ennuyeux est qu'il n'est pas possible d'appliquer une transparence au texte

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 635
    Billets dans le blog
    65
    Par défaut
    Bonjour,
    Citation Envoyé par Andnotor Voir le message
    Si ces filigranes sont du texte, le plus simple serait d'ajouter un champ texte et de le lier à une variable (menu Report -> Variables).
    Selon la demande de delphiketou, LoadFromFile('c:\Gicl_Pro\Images\Photo\photo.jpg') ce n'est pas le cas.
    Le seul truc ennuyeux est qu'il n'est pas possible d'appliquer une transparence au texte
    Du coup tu me fais douter, pas sur le filigrane en tant que telle mais sur cette "transparence" J'ai un cas qu'il faut que je migre (de rave à fastreport) il va falloir que je me penche là-dessus

    [Edit] Ouf ! Ce devait être pour un Halloween en retard
    Nom : Capture.PNG
Affichages : 773
Taille : 14,0 Ko
    à moins que tu veuilles parler de la couche Alpha du texte ? Auquel cas il "suffit" de ne pas utiliser les couleurs prédéfinies et d'indiquer la couleur en Hexa i.e.
    Nom : Capture.PNG
Affichages : 758
Taille : 24,4 Ko
    (c'est la version FMX de fastReport, je ne sais si la version VCL est en AlphaColor ou en simple RGB ... À vérifier)

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Je ne parlais pas du remplissage d'un objet texte (qui peut être None) mais bien de la (semi-)transparence de l'objet lui-même, une propriété Opacity.

    Citation Envoyé par SergioMaster Voir le message
    à moins que tu veuilles parler de la couche Alpha du texte ? Auquel cas il "suffit" de ne pas utiliser les couleurs prédéfinies et d'indiquer la couleur en Hexa
    Ce qui n'est pas possible en VCL (v6.2.1 par Get-It).

    Par contre la couche alpha d'un png est correctement traitée. Le mieux dans le cas d'un filigrane "image" serait donc de l'insérer par code dans l'événement OnEndDoc (il sera ainsi par dessus le texte et les images) :
    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
    procedure TForm1.frxReport1EndDoc(Sender: TObject);
    var
      P :TfrxReportPage;
      i :integer;
     
    begin
      with frxReport1 do
      begin
        Preview.Lock;
     
        try
          for i := 0 to PreviewPages.Count -1 do
          begin
            P := TfrxReportPage(PreviewPages.Page[i]);
     
            with TfrxPictureView.Create(P) do
            begin
              Align  := baClient;
              Center := TRUE;
              Picture.LoadFromFile('Demo.png');
            end;
     
            PreviewPages.ModifyPage(i, P);
          end;
     
        finally
          Preview.UnLock;
        end;
      end;
    end;

    Nom : FastReport.jpg
Affichages : 702
Taille : 23,7 Ko

  6. #6
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2019
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Juillet 2019
    Messages : 38
    Par défaut
    Bonjour chers amis de Delphi.

    Tard vaut mieux que jamais.-> Mon post vient un peu tard...

    Mais je tiens à remercier tous pour l'assistance. Surtout ALWEBER, ça a marché 5 sur 5.
    Merci.

    Excusez moi pour la digression ; comment et pourquoi clôturer une discussion? A qui cela revient ?

  7. #7
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 542
    Billets dans le blog
    10
    Par défaut
    J'aurai peut être fait un code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm1.FormActivate(Sender: TObject);
    var
      Page1: TfrxReportPage ;
    begin
      Page1:= TfrxReportPage(frxReport1.FindObject('Page1'));
      Page1.BackPicture.LoadFromFile('i2.bmp');
      frxReport1.PrepareReport(true)   ;
      frxReport1.ShowPreparedReport ;
    end;
    note : Filigrane est un mot masculin ...

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 635
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par ALWEBER Voir le message
    note : Filigrane est un mot masculin ...
    bien vu, une fôte que mon correcteur automatique (Language tool) n'a pas signalé.

    Pour le code, oui bien sûr le tien est plus simple, en fait je voulais :
    1. Voir s'il était possible d'utiliser des filigranes différents en fonction des pages OK
    2. Tester quelques conditions (je n'ai reporté que Apage.BackPicture.isEmpty) OK
    3. Faire des enchainements de pages avec données Non Fait


    Pour en revenir aux couleurs, la version fastreport VCL que j'ai testé (5.2 pro) n'aime pas du tout la couche Alpha qu'en est-il de la dernière version ? Aucune idée mais j'ai plus l'impression que c'est un problème VCL que FastReport sensu-stricto

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/12/2009, 19h41
  2. [Hibernate] Comment créer dynamiquement un fetching plan
    Par mauvais_karma dans le forum Hibernate
    Réponses: 15
    Dernier message: 08/08/2005, 09h40
  3. [.NET][CR] Comment afficher une image blob dans un état ?
    Par moucrack dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 25/06/2005, 13h49
  4. Comment créer un champs " BOOLEAN " dans ACCESS ?
    Par Didier100 dans le forum Bases de données
    Réponses: 3
    Dernier message: 21/10/2004, 11h15

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