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

VB.NET Discussion :

Impression de plusieurs pages


Sujet :

VB.NET

  1. #1
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut Impression de plusieurs pages
    Bonjour A tous,

    Le sujet en question a déjà fait l'objet de discussion sur ce forum (j'en suis d'ailleurs l'un des auteurs...), et si je me permets de revenir à la charge c'est que j'ai vraiment du mal à faire ce que je souhaite.

    Ma problématique est simple = Comment imprimer sur plusieurs page en ne cliquant que sur un seul bouton.

    J'ai trouvé sur le fichier d'aide fourni avec ce VB le code suivant:
    Code : 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
     
    Private Sub printButton_Click(sender As Object, e As EventArgs)
        Try
            ' Assumes the default printer.
            Dim pd As New PrintDocument()
            AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
            pd.Print()
        Catch ex As Exception
            MessageBox.Show("An error occurred while printing", _
                ex.ToString())
        End Try
    End Sub    
     
    ' Specifies what happens when the PrintPage event is raised.
    Private Sub pd_PrintPage(sender As Object, ev As PrintPageEventArgs)
        ' Draw a picture.
        ev.Graphics.DrawImage(Image.FromFile("C:\My Folder\MyFile.bmp"), _
            ev.Graphics.VisibleClipBounds)
     
        ' Indicate that this is the last page to print.
        ev.HasMorePages = False
    End Sub
    Cela à l'air simple mais pourtant j'ai un petit souci.
    si je modifie le code ci-dessus et que je rajoute une nouvelle image seule la dernière est imprimée.
    L'un des exemples est le suivant:
    Code : 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
    Private Sub printButton_Click(sender As Object, e As EventArgs)
        Try
            ' Assumes the default printer.
            Dim pd As New PrintDocument()
            AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
            pd.Print()
        Catch ex As Exception
            MessageBox.Show("An error occurred while printing", _
                ex.ToString())
        End Try
    End Sub    
     
    ' Specifies what happens when the PrintPage event is raised.
    Private Sub pd_PrintPage(sender As Object, ev As PrintPageEventArgs)
        ' Draw a picture.
        ev.Graphics.DrawImage(Image.FromFile("C:\My Folder\MyFile1.bmp"), _
            ev.Graphics.VisibleClipBounds)
    ev.Graphics.DrawImage(Image.FromFile("C:\My Folder\MyFile2.bmp"), _
            ev.Graphics.VisibleClipBounds)
     
        ' Indicate that this is the last page to print.
        ev.HasMorePages = False
    End Sub
    POURQUOI????

    Si quelqu'un peut m'aider ça serait vraiment sympa.
    Sinon, si je ne parviens pas à faire quelque chose de correcte alors j'emploierai le système "D", à savoir lancer plusieurs PrintPage (Printpage1, PrintPage2...).
    Mais cela me dérange car si je fais ceci je ne comprendrai pas mon erreur.

    Merci à tous ceux qui m'aiderons.

    Salutations.
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  2. #2
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    en l'occurence, il faut gérer l'impression multi page puisque le programme ne peut pas deviner. La dans ton code tu lui dit deux dessiner deux images sur le même emplacement puis d'imprimer donc la dernière image forcément.
    Pour imprimer tes deux images, il faudrait utiliser des variables de gestion genre une variable globale MaxPage et une variable Statique PageEnCours.

  3. #3
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Effectivement on m'a déjà dit ceci.
    Il faut donc que je dises à mon programme que le max de page à imprimer est "x" et que tant que le nombre de page en cours est inférieur au max de page on continue l'impression mais sur une autre page.
    Ce que je ne comprends pas c'est comment dire à mon programme que telle chose doit être imprimée sur la page 1 ou la page 2 etc.

    Je en sais pas si je suis assez clair...
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  4. #4
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    en le gérant avec une variable statique et un select case. Je reprends un exemple comme ton code

    Code : 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
    33
    34
    35
    36
    37
    38
    39
    Imports System.Drawing.Printing
     
    Public Class Form1
     
        Private MaxPage As Integer
     
        Private Sub printButton_Click(ByVal sender As Object, ByVal e As EventArgs)
            Try
                ' Assumes the default printer.
                Dim pd As New Printing.PrintDocument()
                AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
                pd.Print()
            Catch ex As Exception
                MessageBox.Show("An error occurred while printing", _
                    ex.ToString())
            End Try
        End Sub
     
     
        Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As PrintPageEventArgs)
     
            Static PageEnCours As Integer
            PageEnCours += 1
            Select Case PageEnCours
                Case 1
                    ev.Graphics.DrawImage(Image.FromFile("C:\My Folder\MyFile1.bmp"), _
            ev.Graphics.VisibleClipBounds)
                    ev.HasMorePages = True
     
                Case 2
                    ev.Graphics.DrawImage(Image.FromFile("C:\My Folder\MyFile2.bmp"), _
            ev.Graphics.VisibleClipBounds)
                    ev.HasMorePages = False
     
            End Select
     
        End Sub
     
    End Class
    Bien sur la c'est hyper statique, on pourrait faire un code plus compact avec une boucle et un tableau d'image, imaginer des impressions composites, etc..
    Mais l'esprit est la

  5. #5
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Ok là ça marche et je pense avoir compris l'idée.
    J'ai juste une petite question pour bien comprendre le code et le réutiliser intelligemment:

    Que signifie += 1 dans la ligne PageEnCours += 1 et comment est-il géré par le programme.

    Encore merci pour ton aide.

    Sincères Salutations
    Charles-Elie
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  6. #6
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    ca signifie, incrément de la variable de 1 ce qui permet de gerer la page en cours d'impression quand il y a plusieurs pages à imprimer et que ce n'est pas une impression de type listing

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

Discussions similaires

  1. [AC-2007] Impression sur plusieurs pages
    Par Chris 81 dans le forum VBA Access
    Réponses: 0
    Dernier message: 28/04/2009, 10h00
  2. Impression sur plusieurs page Objet ocument)
    Par totoprog dans le forum ASP.NET
    Réponses: 1
    Dernier message: 19/04/2009, 18h18
  3. [D7 et Quickreport 3] Impression sur plusieurs pages
    Par Moine dans le forum Débuter
    Réponses: 3
    Dernier message: 13/12/2007, 12h01
  4. Impression de plusieurs pages
    Par okocha113 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/04/2007, 16h17
  5. Pb d'impression sur plusieurs pages d'un JGraph
    Par StephG31 dans le forum 2D
    Réponses: 1
    Dernier message: 15/06/2006, 10h23

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