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

Windows Forms Discussion :

[VB.NET][2.0] Aperçu avant impression OK, mais 1re page seulement s'imprime de là


Sujet :

Windows Forms

  1. #1
    Membre expert
    Avatar de annedeblois
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2005
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 485
    Points : 3 218
    Points
    3 218
    Par défaut [VB.NET][2.0] Aperçu avant impression OK, mais 1re page seulement s'imprime de là
    Bonjour,

    Après avoir créé une classe dérivée de PrintDocument, je désire tester la possibilité d'aperçu avant impression. En faisant le code suivant:

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            Dim prnPreviewDialogMachinTruc As New PrintPreviewDialog
            Dim monRapport As New MaClasseImpression
            prnPreviewMachinTruc.Document = monRapport
            prnPreviewMachinTruc.ShowDialog()

    J'obtiens un magnifique aperçu avant impression, qui me montre toutes les pages à imprimer. C'est super, quoi! Seulement, lorsque je clique sur le bouton d'impression situé au coin supérieur gauche, ça n'imprime que la page 1 (et je ne puis choisir l'imprimante, mais ça... si c'est conçu comme ça... au pis aller c'est moins prioritaire).

    Y a-t-il des trucs que je dois préciser dans les propriétés de monRapport? Si oui, lesquelles? D'avance, merci beaucoup!
    Anne, citoyenne canadienne
    Informaticienne, altiste et radioamateur... bref, originale
    Lire les règles...
    Un petit rappel: Je ne réponds à aucune question technique posée par MP

  2. #2
    Membre actif
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Points : 252
    Points
    252
    Par défaut
    J'avais eu le même problème mais j'avais fait une erreur de programmation parce que quand tu imprimes depuis le preview, il reconstruit tout.
    Je suppose que tu utilises une variable pour savoir si tu dois changer de page ou pas et savoir s'il te reste des pages à imprimer, non ?
    Vérifie si à la fin du preview cette ou ces variables sont bien réinitialisés.
    Enfin moi c'est le problème que j'avais eu, après c'est peut-être voire même certainement autre chose.

  3. #3
    Membre expert
    Avatar de annedeblois
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2005
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 485
    Points : 3 218
    Points
    3 218
    Par défaut
    Beh., j'sais pas trop.. j'ai ceci à la fin de la procédure OnPrintPage (dans laquelle je mets tous mes éléments graphiques):

    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                If (Me.currentPage < Me.totalPages) Then
                    e.HasMorePages = True
                    Me.currentPage = Me.currentPage + 1 ' On incrémente le compteur
                Else
                    e.HasMorePages = False
                End If

    Si tu dis que tout est reconstruit, normalement mon constructeur (re)fait les connexions à la base de données et refait les éléments graphiques... (EDIT - et il interroge la BDD pour savoir combien d'enregistrement, afin de savoir combien de page imprimer) Enfin! il ne m'a jamais renvoyé d'exception concernant une connexion ratée à la BDD ou des données vides pour les images.

    Anne, un peu confuse...

    P.S.: À moins que le clic du petit bouton ne fasse que rappeler la procédure OnPrintPage (mais là encore j'aurais des tas d'erreurs pour cause de DataSet pas initialisé, et la page 1 ne se serait certainement pas imprimée avec des données).
    Anne, citoyenne canadienne
    Informaticienne, altiste et radioamateur... bref, originale
    Lire les règles...
    Un petit rappel: Je ne réponds à aucune question technique posée par MP

  4. #4
    Membre actif
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Points : 252
    Points
    252
    Par défaut
    Non pardon, je voulais effectivement dire qu' OnPrintPage est rappelé de nouveau.

    J'entendais pas recontruit les éléments que tu imprimais.

    Globalement si je reprends ton code, lorsque l'utilisateur clique sur le bouton impression, OnPrintPage est appelé et l'aperçu de l'impression est affiché, n'est-ce pas ?
    La variable currentPage s'est incrémentée et une fois que l'aperçu est affichée, cette variables vaut le nombre de page totales.
    Par contre, une fois l'aperçu affiché, l'utilisateur lorsqu'il clique sur Imprimer, OnPrintPage est de nouveau appelé, alors que ta variable currentPage est égale au nombre de page totales.
    Donc selon moi essaye:

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If (Me.currentPage < Me.totalPages) Then
                    e.HasMorePages = True
                    Me.currentPage = Me.currentPage + 1 ' On incrémente le compteur
                Else
                    e.HasMorePages = False
                    Me.currentPage = 0
                End If

    Enfin là comme ça je pense à ça.
    Tiens moi au courant.

  5. #5
    Membre expert
    Avatar de annedeblois
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2005
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 485
    Points : 3 218
    Points
    3 218
    Par défaut
    Ah! tiens donc, j'avais oublié ce détail. J'essaie cela tout de suite!!!

    (edit - et pardon, je crois avoir mal compris)
    Anne, citoyenne canadienne
    Informaticienne, altiste et radioamateur... bref, originale
    Lire les règles...
    Un petit rappel: Je ne réponds à aucune question technique posée par MP

  6. #6
    Membre expert
    Avatar de annedeblois
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Août 2005
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 485
    Points : 3 218
    Points
    3 218
    Par défaut
    En mettant le Me.currentPage à 0, .NET s'est cabré en me disant qu'aucune rangée de valeur -1 n'est possible dans la table de la BDD, c'est que j'avais mis une correspondance nombreRangees = me.currentPage -1 plus haut dans mon code. Alors, en corrigeant le code comme ceci:

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If (Me.currentPage < Me.totalPages) Then
                    e.HasMorePages = True
                    Me.currentPage = Me.currentPage + 1 ' On incrémente le compteur
                Else
                    e.HasMorePages = False
                    Me.currentPage = 1
                End If

    ...ç'a fonctionné nickel!!



    Anne, citoyenne canadienne
    Informaticienne, altiste et radioamateur... bref, originale
    Lire les règles...
    Un petit rappel: Je ne réponds à aucune question technique posée par MP

  7. #7
    Membre actif
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Points : 252
    Points
    252
    Par défaut
    Oh bah je suis bien content

    A bientôt

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

Discussions similaires

  1. Concepteur RAVE sous DELPHI 7 : aperçu avant impression
    Par tarbala dans le forum Composants VCL
    Réponses: 4
    Dernier message: 01/06/2020, 00h37
  2. Aperçu avant impression d'un TRichEdit
    Par PoOky dans le forum Composants VCL
    Réponses: 2
    Dernier message: 31/01/2016, 23h19
  3. Réponses: 6
    Dernier message: 04/10/2005, 20h18
  4. Aperçu avant impression
    Par Zebulon777 dans le forum Access
    Réponses: 18
    Dernier message: 15/09/2005, 10h46
  5. [Débutante] Aperçu avant impression d'un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 09/07/2004, 09h52

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