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 VCL Delphi Discussion :

[Quick report] Problème de lignes de séparation des colonnes dans une bande détail


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 31
    Points : 41
    Points
    41
    Par défaut [Quick report] Problème de lignes de séparation des colonnes dans une bande détail
    Bonjour,
    j'ai un état quick report avec delphi7 dans lequel il faut que je dessine des lignes verticales pour séparer les champs de la bande rbdetail (affichage en tableau). J'ai positionné des qrshape avec la propriété shape à qrsvertline. J'ai des champs plus long que mes colonnes affichés sur plusieures lignes avec la propriété autostrech. La bande rbdetail a donc une hauteur variable et je n'arrive pas à adapter la hauteur des lignes verticales à la hauteur de la bande. Si je leur affecte une grande hauteur, le pied de groupe et le pied de page s'imprime correctement par dessus ces lignes en les masquant mais elles réapparaissent en bas de la page, dans les marges de la page. Il n'est pas possible de jouer avec la marge inférieure car l'état peut être imprimé sur différentes imprimantes.
    Dans un tel cas comment procédez-vous? Existe-t-il un objet que je n'ai pas vu qui gèrerait tout ça? Sinon est-il possible d'obtenir la hauteur de la bande avant l'impression et d'affecter cette valeur à la hauteur des lignes verticales? Ou faut-il essayer de positionner le pied de page une fois que l'imprimante a été choisie par l'utilisateur?

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    dans le onbefore de la bande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
         QRShape.SIZE.Top := 0;
         QRShape.SIZE.Height := QrBand1.Size.Height;
    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 31
    Points : 41
    Points
    41
    Par défaut
    Merci pour ta réponse.
    Cela me donne malheureusement la hauteur initiale de la bande, mais ca ne prend pas en compte les retours à la ligne effectués par l'autostretch des QrDbRichText. Il manque de la hauteur sur toutes les lignes concernées!

    Une autre idée?

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    est-ce que tes shapes sont bien créés en dernier
    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 du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 31
    Points : 41
    Points
    41
    Par défaut
    Même avec une shape rajoutée en dernier l'effet est le même.
    J'ai essayé aussi de calculer la hauteur de bande avec le dbRichtext.height puis le dbrichtext.size.height, mais que ce soit beforeprint ou afterprint cela ne prend pas en compte la hauteur rajoutée par les sauts de ligne.

  6. #6
    Membre régulier Avatar de newbie57
    Inscrit en
    Juin 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juin 2005
    Messages : 124
    Points : 92
    Points
    92
    Par défaut
    Bonjour,

    Comme gibbe j'ai exactement le même problème avec la hauteur de mes QRShapes dans ma bande (QRSubDetail) et comme gibbe, la hauteur de mes Shapes ne change pas en fonction des retours à la ligne de ma QRDBText

    J'ai essayé de voir tous les evenements possibles de ma QRSubDetail / QRDBText.. mais aucune valeur ne change durant la création de mon report.

    Par ordre chronologique les evenements suivants se déclenchent:
    - QRSubDetailBeforePrint
    - QRDBTextPrint
    - QRSubDetailAfterPrint
    puis ça recommence en fonction du nombre d'enregistrements dans ma Bdd.

    Comment faites-vous pour que cela fonctionne chez vous?

    PS: Pour info, j'ai BDS2006, QR4.0 et j'utilise un preview personnalisé.

    Merci pour votre aide

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    je ne sais pas si j'ai été clair

    par dernier je ne voulais pas dire au moment du dessin du quickrep mais qu'il fallait faire en sorte que ceux-ci soit les derniers a être dessinés
    (mettre en arrière plan)
    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

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 31
    Points : 41
    Points
    41
    Par défaut
    Merci pour l'idée. En arrière plan ou pas ça ne fait pas de différence.

    Après des heures de recherche j'ai enfin trouvé une solution:
    La seule propriété qui change est la propriété expanded de la bande détail. Si la bande est normale expanded vaut 0, si la bande est redimensionnée à cause de l'autostretch d'un composant enfant elle prend la valeur de la nouvelle hauteur de la bande. Malheureusement cette propriété n'est pas à jour beforeprint, elle est seulement disponible afterprint. J'ai donc rempli un tableau de valeurs dans le afterprint qui se rempli quand j'appelle le prepare du quickreport (J'en profite aussi pour récupérer à la fin du prepare la propriété qrspagenumber d'un QRsysdata qui me donne le nombre total de page de l'état et qui permet ensuite d'afficher sur chaque page "Page N°/Nb pages"). Dans le beforeprint j'affecte la hauteur de chaque ligne avec la valeur mémorisée dans mon tableau soit max(qrbanddetail.height,round(qrbanddetail.Expanded)). La fonction max fait partie de l'unité math qu'il faut rajouter dans le uses. La hauteur à modifier est la proprieté height de la Qrshape (et pas qrshape.size.height).

    Le tour est joué, ca marche!
    Merci à tous.


  9. #9
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    Citation Envoyé par gibbe Voir le message
    Le tour est joué, ca marche!
    Merci à tous.

    il ne faut pas utiliser le smiley résolu (), mais cliquer sur le bouton résolu en bas à gauche pour marquer la discussion comme telle

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

Discussions similaires

  1. [XL-2003] Problème de décalage des colonnes dans une listbox
    Par -Naek- dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/05/2009, 20h06
  2. Selectionner des colonnes dans une ligne pour le copier
    Par lilp1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/05/2009, 17h00
  3. Réponses: 1
    Dernier message: 22/12/2008, 11h09
  4. [Reporting] ordre des colonnes dans une sortie de proc freq
    Par PhYx dans le forum ODS et reporting
    Réponses: 2
    Dernier message: 22/07/2008, 18h04
  5. Regrouper des colonnes dans une ligne
    Par aturlan dans le forum Access
    Réponses: 1
    Dernier message: 11/01/2006, 21h05

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