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

Rave Discussion :

Ligne en fin de page (qui n'est pas la fin de l'état)


Sujet :

Rave

  1. #1
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut Ligne en fin de page (qui n'est pas la fin de l'état)
    Bonjour à tous

    Grâce aux conseils avisés de SergioMaster, mon état avance à pas de géant. J'ai maintenant des petits problèmes de mise en forme. Voici l'état :

    Nom : Facture.PNG
Affichages : 186
Taille : 63,2 Ko
    Le bon 01030940 ne tient pas en totalité sur la page. J'ai suivi plusieurs pistes pour faire apparaître un trait sous la dernière ligne (par une région de différents types, ou pas un événement dans le programme) mais sans succès. Et je n'ai pas mieux réussi à ajouter un trait sur la page suivant avant de terminer l'impression du bon. Et je ne trouve pas cette fin de page très propre.

    Une idée ?

    Merci d'avance

    PS : le numéro de facture et les en-têtes de colonne ne posent pas de problème
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  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 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    à mon avis il y a plusieurs solutions voici celle que je propose :

    mettre une ligne horizontale au bas de la ligne détail et gérer son affichage dans l'évènement BeforePrint de la bande.
    Reste donc à faire la détection ! je me suis inspiré de ce Post

    à tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var MyPage : TRavePage;
         MyHLine : TRaveHLine;
    begin
    MyPage := RvProject1.ProjMan.FindRaveComponent('MonEtat.Page1',nil) AS TRavePage;
    myHLine := RvProject1.ProjMan.FindRaveComponent('LigneBas',MyPage) AS TRaveHLine;
    if Assigned(MyHLine) then
      myRaveData.Visible:=Self.Top+(Self.Height*2)>region1.Height; // la prochaine ligne est hors région
    unités nécessaires rvcsStd,rvclass,rvcsBars,rvcsData, RvcsDraw
    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 JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Je patauge un peu dans la gadoue. A en croire le code dans ta réponse, SergioMaster, comme il y a la ligne var c'est dans le programme qu'il faut codifier. Or tu parles d'un événement BeforePrint de la bande et là, l'ordre var est inconnu.....à moins que je ne me sois planté dans le rédaction du code, et comme l'aide de Rave est particulièrement "absente", je ne vois pas comment procéder. Faut dire que c'est la première fois que je rentre dans ce truc !!
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  4. #4
    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 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Détrompe-toi (dit l'éléphant), ce n'est pas la première fois que tu trempes dans le truc.

    Si tu te rappelles j'ai une certaine aversion pour le RaveScripting donc le code proposé est bien sûr à mettre dans le programme

    dans l'évènement BeforePrint de la bande.
    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
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Oui, SergioMaster, j'ai bien vu "BeforePrint de la bande". J'ai cherché dans les événements du RVDataSetConnection : pas de tel événement. Alors je suppose que ce doit être dans le RVSystem, parce que sinon, il n'y a pas d'autre événement portant ce nom. Confirmes-tu cela ?

    A part ça, tes indications pour l'état sont brillantes comme tu as pu le constater ! Merci encore
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  6. #6
    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 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Quand je disais que j'étais rouillé je mélange allégrement Quickreport à Rave
    peut être sur un RvDataSetConnection OnValidateRow ?
    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

  7. #7
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Ben non, comme je l'ai écrit plus haut, le seul endroit où j'ai trouvé un OnBeforePrint est RvSystem. Et comme je ne sais pas vraiment comment il réagit, je suis perplexe. Cela peut très bien être un BeforePrint d'avant toute écriture, et après plus rien. Je vais faire un test, mais si tu as une (
    à mon avis il y a plusieurs solutions
    ) autre solution, je suis preneur !
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  8. #8
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Dans le OnvalidateRow, j'ai tapé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var RvPage : TRavePage;
          RvBand1 : TRaveBand;
    begin
        RVPage := rvProject1.ProjMan.FindRaveComponent('Etat.Page1',nil) AS TRavePage;
        RvBand1 := rvproject1.ProjMan.FindRaveComponent('Bande1', RvPage) AS TRaveBand;
    puis j'ai essayé

    pour voir ce qui était disponible et j'ai eu :
    mais après je ne vois pas comment l'utiliser ?????
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  9. #9
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Trouvé !.... Mais rendons à César ce qui lui appartient.

    La piste de SergioMaster est à la fois bonne et mauvaise, mais plus bonne que mauvaise. Mauvaise parce qu'il n'y a pas de BeforePrint. Excellente parce qu'elle amène à un calcul de hauteur. Voici comment j'ai résolu :

    Dans le OnFirst du RvDataSetConnection je cherche la position de la ligne horizontale mise en bas de la bande DataBande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // je passe sur les ordres de départ pour initialiser
     
    for xj := 0 TO RvDataBande.ChildCount -1 do
             if RvDataBande.Child[xj].Name = 'HLigne_du_Bas' then
                xi := xj;
    xi est déclaré private. Ceci évite de recalculer xi pour chaque enregistrement.

    Dans le onValidaterow il ne me reste plus qu'à codifier ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var RvRegion : TRvRegion;
         RVPage : TRVPage;
    begin
     
       RVPage := rvProject1.ProjMan.FindRaveComponent('MonEtat.Page1',nil) AS TRavePage
       RvRegion := rvproject1.ProjMan.FindRaveComponent('Region1', RvPage) AS TRaveRegion;
     
       if (RvDataBande.PageBottom + RvDataBande.Height) > RvRegion.Height then
          RvDataBande.Child[xi7].Visible := true
       else
          RvDataBande.Child[xi7].Visible := false;
     
    end;
    Merci SergioMaster de m'avoir mis sur la piste ...... (à peine rouillée )
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  10. #10
    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 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Bonjour et tant mieux
    Citation Envoyé par JP.NUAGE Voir le message
    La piste de SergioMaster est à la fois bonne et mauvaise, mais plus bonne que mauvaise. Mauvaise parce qu'il n'y a pas de BeforePrint. Excellente parce qu'elle amène à un calcul de hauteur.
    comme je l'ai écrit j'ai mélangé allégrement mes souvenirs entre quickreport (qui a le beforeprint) fastreport (qui en a un aussi mais en interne) et le RaveScripting (que je n'ai jamais apprécié)

    Par contre, je ne comprend pas le besoin de ces variables x... AMHA inutiles

    je pensais qu'il ne s'agissait que d'imprimer une ligne horizontale en bas d'une ligne détail en arrivant en fin de région, là, à moins qu'il y ait autre chose comme des reports de totaux de fin de page j'ai l'impression que l'on a affaire à une childband de la bande détail juste pour la ligne ?

    Tel que je le pensais j'aurais juste ajouté une ligne horizontale (invisible par défaut) en bas de ma bande détail (comme indiqué dans le post #2).
    Dans le post #2 c'est juste le OnBeforePrint (référence à quickreport) qu'il fallait remplacer par un RVDataset.OnValidateRow
    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

  11. #11
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Les xi sont initialisés à l'ouverture de l'état pour pouvoir être utilisés après et afficher ou pas des datatext. Quant à la ligne horizontale, c'est exactement ce que tu dis que j'ai fait, mais il n'y a pas d'option pour mettre un datatext invisible par défaut, ou alors je ne l'ai pas trouvé, mais peut-être dans QuickReport
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  12. #12
    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 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    c'est qu'il me fait douter le bougre effectivement visible n'est pas dans les possibilités d'un TRvHline mais sa propriété LineStyle si et changer de psSolid à psClear ça fait la même chose

    mais "brisons là", je ne vais pas relancer D7 à chaque fois et me lancer à faire un programme test plus précis j'ai des casseroles (beaucoup) sur le feu et, comme c'est résolu ....
    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

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/07/2011, 19h50
  2. Réponses: 3
    Dernier message: 23/06/2011, 16h47
  3. Réponses: 15
    Dernier message: 09/08/2009, 19h56
  4. [Toutes versions] Supprimer le texte qui n'est pas entre deux lignes
    Par vibos dans le forum VBA Word
    Réponses: 11
    Dernier message: 11/06/2009, 23h44
  5. Réponses: 3
    Dernier message: 10/12/2008, 12h38

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