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

Composants FMX Delphi Discussion :

Fast report FMX événement detaildata.beforeprint


Sujet :

Composants FMX Delphi

  1. #1
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    520
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 520
    Points : 543
    Points
    543
    Par défaut Fast report FMX événement detaildata.beforeprint
    Bonjour tout le monde,

    Sur QuickReport, j'avais l'habitude d'intercepter l'évènement beforeprint du detailband pour modifier dynamiquement certains éléments du rapport (couleur de texte par exemple)

    Sur le designer de Fast report, l'onglet "Events" est désactivé et je ne parviens pas à trouver l'évènement en question via le code.
    Sur le forum Fast report on m'a dit que cette fonctionnalité (basique à mon sens) n'était pas implémentée dans la version embarcadero mais uniquement dans les versions payantes.
    Est-ce possible selon-vous?
    7 fois à terre, 8 fois debout

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Franchement, depuis tes derniers posts dans cette rubrique , tu commences a me faire perdre confiance

    J'avais testé rapidement fastreport mais pas dans les détails ! Effectivement dans la version FastReport fournie les évents ne sont pas implémentés (la partie scripts si on parle en Rave) mais logiquement on doit pouvoir le faire au runtime certainement dans l'event FrxDBDataset.onNext avec quelque chose du genre frxReport.FindObject('quelquechose') pour obtenir l'objet puis pour pouvoir changer les propriétés de ce dernier
    (cette partie ressemblant plus a du Rave que a du Quickreport)

    sans conviction quelque chose comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     m : TfrxComponent;
     begin
      m := frxReport1.FindObject('monLabel') as TfrxComponent;
      if Assigned(m) then
         M.Font.Color:=clred;
    end;
    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 confirmé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    520
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 520
    Points : 543
    Points
    543
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Franchement, depuis tes derniers posts dans cette rubrique , tu commences a me faire perdre confiance
    Désolé
    A priori, la partie script n'est effectivement pas implémentée pour la version embarcadero. Je n'avais pas compris que c'était ça le "scripting". Je pensais qu'il s'agissait d'un système de batch et d'automatisation. Pour moi l'accès aux évènements était une fonctionnalité basique, forcément incluse!

    J'ai bien compris ton exemple, et c'est exactement ce que j'essaie de faire. Le problème, c'est que la couleur de police dépend de la valeur affichée.
    Lorsque je récupère le composant dans ReportBeforePrint ou ailleurs, il ne contient pas encore la valeur du dataset.
    J'ai essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     m : TfrxDetailBand;
     begin
      m := TfrxDetailBand(frxReport1.FindObject('detailband1'));
     m.onbeforeprint:=maProcedure;
    end;
    et bien, ça ne compile pas car il attend une valeur chaine pour l'évènement
    J'ai essayé de lui donner le nom de la procédure sous forme de chaine, mais j'ai une violation d'accès à l'exécution. Logique puisque la procédure n'existe pas dans la partie script.

    Je crois que je vais devoir acheter la version payante
    D'après Embarcadero Firemonkey est une techno stable et mature,mais plus j'avance et moins j'y crois. J'ai trouvé plusieurs anomalies qui apparemment n'existaient pas dans XE2 et en plus, le support indique qu'il n'y aura plus d'update pour XE3 et qu'il faut passer à XE4. D'après quelques posts que j'ai lu, ce serait encore pire, avec de nombreuses régressions.
    J'avais quitté BDS2006 pour Visual studio, je crois que je vais pas tarder à y retourner...
    7 fois à terre, 8 fois debout

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour ,

    j'ai fait un test rapide et cela fonctionne , le hic c'est que tu es parti sur un DetailBand .

    habitué à Rave et sa gestion des rvDataset voici comment j'ai procédé
    mon état est une simple liste de table avec un code+un libellé en ordre alpha sur le code

    1° test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm19.frxDBDataset1Next(Sender: TObject);
    var a : TfrxComponent;
    begin
      a:=frxReport1.FindComponent('Code') as TFrxComponent;
      if assigned(a)  then
        a.Font.Color:=colorbox1.Color  // ici bien sur je force simplement la couleur , mais je pense qu'il est possible d'obtenir une valeur du dataset pour ensuite faire un test 
      else showmessage('unassigned')  ;
    end;
    obtenir la valeur (condition couleur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm19.frxDBDataset1Next(Sender: TObject);
    var a : TfrxComponent;
    begin
      a:=frxReport1.FindComponent('Code') as TFrxComponent;
      if assigned(a)  then
       begin
        if frxdbdataset1.DataSet.FieldByName('CODE_UTILISATION').AsString>'F'
           then a.Font.Color:=colorbox1.Color
           else a.font.Color:=ColorBox2.color;
       end
      else showmessage('unassigned')  ;
    end;
    Bon , j'ai utilisé des colorbox car j'ai des soucis avec les couleurs FMX à ma grande honte j'ai toujours pas intégré dans ma caboche l'équivalent des clxxxxx

    [Edit] ça y est j'ai trouvé pour les couleurs TAlphacolorRec.xxxxxx bien que certaine passe mal avec fastreport (ou alors j'ai de mauvais yeux , 4 avec mes lunettes) azure est invisible

    nota :
    if frxdbdataset1.DataSet.FieldByName('CODE_UTILISATION').AsString>'F'
    peut être remplacé par
    if frxdbdataset1.value['CODE_UTILISATION']>'F'
    attention à la gestion des alias cependant

    petite note supplémentaire ne pas oublier aussi l'évent OnFirst du frxDBDataset
    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

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    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 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour ,

    une autre manière de faire plus "fastreport" et qui fonctionne , utiliser la partie Highlighting (voir chapitre 4 du manuel : Formatting, highlight)

    toujours pour mon exemple , cela donnerait :

    Condition : <value>>'F'
    et changer la couleur de la font

    avantage : la preview fonctionne correctement en mode design

    donc le Scripting et les events sont désactivés dans la version 'Embarcadero' de FastReport mais la partie Formatting et highilight est totalement fonctionnelle . je renvoie au manuel pour plus d'informations
    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

Discussions similaires

  1. Fast report FMX changer la couleur d'un tfrxmemoview
    Par Higgins dans le forum Composants FMX
    Réponses: 2
    Dernier message: 07/09/2013, 08h39
  2. code barre- fast report
    Par delf12 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 19/07/2010, 20h25
  3. [Fast Report 4] Traduction dynamique
    Par VLDG dans le forum Autres outils décisionnels
    Réponses: 1
    Dernier message: 07/11/2008, 19h22
  4. [Fast Report] Passage de paramètre
    Par VLDG dans le forum Composants VCL
    Réponses: 0
    Dernier message: 10/04/2008, 18h37
  5. Rendez-vous Firebird automne 2007 avec Fast Reports
    Par makowski dans le forum Contribuez
    Réponses: 1
    Dernier message: 25/09/2007, 14h23

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