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

C++Builder Discussion :

[BCB 6] Imprimer deux StringGrid sur un QuickReport


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Avatar de Wachter
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 404
    Points : 734
    Points
    734
    Par défaut [BCB 6] Imprimer deux StringGrid sur un QuickReport
    Bonjour,

    J'ai un problème avec l'impression de deux StringGrid sur QReport : je n'obtiens pas le résultat souhaité. De plus, je n'ai pas bien compris l'utilisation de la propriété BandType de QRBand (rbTitle, rbSummary, etc.). Du coup, je ne parviens pas à afficher les titres des champs de la 1re StringGrid, puis son contenu, ensuite les titres des champs de la 2e StringGrid et enfin son contenu. Voici le résultat recherché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Nom     Prénom
    Alain   Dupont
    Fabrice Dollet
    
    Numéro  CP    Pays
    778     98000 Pays1
    879     75432 Pays2
    654     56897 Pays3
    Sur Form1, j'ai deux StringGrid et un bouton pour lancer l'impression. Et sur Form2, j'ai un QReport sur lequel j'ai mis deux QRBand. QRBand1 contient deux QRLabel et QRBand2 en contient trois.

    Voici le code que j'utilise :
    Code C++ : 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
    bool TForm1::Reporter()
    {
      if (index > Form1->StringGrid1->RowCount && index > Form1->StringGrid2->RowCount)
      {
            index = 1;
    return false;
      }
      else
      {
         if (index <= Form1->StringGrid1->RowCount)
         {
           Form2->QRLabel1->Caption = Form1->StringGrid1->Cells[0][index];
           Form2->QRLabel2->Caption = Form1->StringGrid1->Cells[1][index];
         }
     
         if (index <= Form1->StringGrid2->RowCount)
         {
           Form2->QRLabel3->Caption = Form1->StringGrid2->Cells[0][index];
           Form2->QRLabel4->Caption = Form1->StringGrid2->Cells[1][index];
           Form2->QRLabel5->Caption = Form1->StringGrid2->Cells[2][index];
         }
         index++;
     
        return true;
      }
     
    }
     
    void __fastcall TForm2::QuickRep1NeedData(TObject *Sender, bool &MoreData)
    {
      MoreData = Form1->Reporter();
    }
    Je vous remercie d'avance pour votre aide.
    Code parrain certification Voltaire : NTMPH759

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Bonsoir,

    On voit le résultat attendu mais quel est le résultat actuel ?
    Index est une variable de Form1 ? Une variable globale ?
    Quand est-elle initialisée ?
    Car actuellement, je doute que l'impression puisse fonctionner plus d'une fois si cette variable n'est pas remise à 0.

    Bonne soirée.

  3. #3
    Membre éclairé
    Avatar de Wachter
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 404
    Points : 734
    Points
    734
    Par défaut
    Oui, index est une variable globale initialisée à 1 dans TForm1::FormCreate. J'ai mis deux bandes rbDetail ; je crois que le problème vient de là.
    Code parrain certification Voltaire : NTMPH759

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Concernant le type des QRBand, il y a toutes les informations nécessaires dans l'aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    BandType	Description
    rbTitle	Imprimé sur la première page de l'état après l'en-tête de page.
    rbPageHeader	Imprimé en haut de chaque page. L'impression sur la première page peut être désactivée avec la propriété Options.
    rbDetail	Imprimé une seule fois pour chaque enregistrement / ligne dans l'ensemble de données connecté.
    rbPageFooter	Imprimé en bas de chaque page. L'impression sur la dernière page peut être désactivée avec la propriété Options.
    rbSummary	Imprimé après toutes les bandes détail et pieds de groupe potentiels à la fin de l'état.
    rbSubDetail	Réservé pour le composant TQRSubDetail. Ne précisez pas ce type de bande manuellement.
    rbColumnHeader	Imprimé en haut de chaque colonne sur chaque page d'un état multicolonne. Imprimé une seule fois après l'en-tête de page dans un état à colonne unique.
    rbGroupFooter	Bande de pied pour les composants TQRGroup ou TQRSubDetail. Imprimé après chaque rupture de groupe ou après l'impression de toutes les bandes détail pour le composant TQRSubDetail.
    rbGroupHeader	Bande d'en-tête pour les composants TQRGroup ou TQRSubDetail. Imprimé avant toutes les bandes détail d'un groupe donné ou du composant TQRSubDetail.
    rbOverlay	Inclus pour des raisons de compatibilité avec la version 1 de QuickReport. N'utilisez pas ce type de bande.
    rbChild	Réservé pour le composant TQRChildBand. Ne précisez pas ce type de bande manuellement.
    Les entêtes devraient aller dans un QRGroup.
    Je pense qu'il faut une bande de type détail pour afficher les lignes.

    QRGroup : Entête de la 1ère grille
    QRBand : Valeur de la 1ère grille
    QRGroup : Entête de la 2ème grille
    QRBand : Valeur de la 2ème grille

    Dans tous les cas, pour pouvoir t'aider, il faudrait savoir à quoi ressemble le résultat final.

  5. #5
    Membre éclairé
    Avatar de Wachter
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 404
    Points : 734
    Points
    734
    Par défaut
    QRGroup : Entête de la 1ère grille
    QRBand : Valeur de la 1ère grille
    QRGroup : Entête de la 2ème grille
    QRBand : Valeur de la 2ème grille
    Du moment que je mets QRBand1 en rbDetail, je ne pourrai pas aligner les QRElement que tu proposes. J'ai ceci en fait :
    Group Header (QRGroup1)
    Group Header (QRGroup2)
    Detail (QRBand2)
    Detail (QRBand1)
    Voici le résultat final recherché :
    Nom : QReport.png
Affichages : 293
Taille : 12,9 Ko
    Code parrain certification Voltaire : NTMPH759

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Bonjour,

    Du moment que je mets QRBand1 en rbDetail, je ne pourrai pas aligner les QRElement que tu proposes.
    Je ne comprends pas.
    J'ai un vieux projet ou c'est exactement ce que j'ai fait. Tout dépend de ce que l'on met comme composant dedans.
    Je ne peux plus faire de test, mon C++Builder 6 n'arrive plus à compiler à cause d'un problème de lieur mais voici une capture d'écran d'un exemple simple.

    Le tout est découpé en 4 parties dont un groupe (le titre des colonnes) et un détail (1ère ligne de données).

    Nom : exemple.png
Affichages : 293
Taille : 8,9 Ko

    Ai-je mal compris ?

Discussions similaires

  1. [BCB 6] Imprimer deux StringGrid sur un QuickReport
    Par Wachter dans le forum QuickReport
    Réponses: 5
    Dernier message: 23/03/2015, 08h15
  2. [XL-2010] Comment imprimer deux feuilles (sheets) sur la même page ?
    Par verredewhisky dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/02/2013, 21h33
  3. [WD-2010] Le filigrane est imprimé une lettre sur deux !
    Par talvins dans le forum Word
    Réponses: 7
    Dernier message: 13/11/2012, 20h40
  4. Imprimer deux formulaires QuickReport à la suite
    Par vitch8 dans le forum Composants VCL
    Réponses: 8
    Dernier message: 05/11/2012, 10h51
  5. [XL-2003] Imprimer deux graphes séparés sur la même page
    Par coklin dans le forum Excel
    Réponses: 3
    Dernier message: 14/12/2009, 10h25

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