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 plusieurs pages


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 16
    Par défaut Impression plusieurs pages
    Bonsoir, je souhaite de l'aide car je voudrais gérer l'impression multipages pour mon appli. J'ai cherché et trouvé différentes choses sur internet notamment l'utilisation de la propriété e.hasmorepage mais j'avoue ne pas y comprendre grand chose.

    Quelqu'un pourrait-il me dire comment procéder et où introduire cette propriété dans 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
            Dim cmptBox As Single
            Dim Police1 As New Font("Book Antiqua", 10)
            Dim Police1G As New Font("Book Antiqua", 10, FontStyle.Bold)
            Dim Police2 As New Font("Book Antiqua", 12)
            Dim Police2G As New Font("Book Antiqua", 12, FontStyle.Bold)
            Dim YPos As Single = e.MarginBounds.Top
            Dim Longueur As Single
            Dim SautLigne As Single = e.Graphics.MeasureString("X", Police2G).Height
            Dim LigneParPages As Single = Int(e.MarginBounds.Height / SautLigne)
            Using MyGr As Graphics = e.Graphics
                Dim i As Single = 1
                Dim Str As String = ""
                Longueur = MyGr.MeasureString("NOM :", Police2G).Height + 10
                MyGr.DrawLine(Pens.Black, e.MarginBounds.Left, e.MarginBounds.Top, e.MarginBounds.Right, e.MarginBounds.Top)
                MyGr.DrawLine(Pens.Black, e.MarginBounds.Left, e.MarginBounds.Top + Longueur, e.MarginBounds.Right, e.MarginBounds.Top + Longueur)
                YPos = YPos + 5
                MyGr.DrawString("NOM :", Police2G, Brushes.Black, e.MarginBounds.Left, YPos)
                Longueur = MyGr.MeasureString("NOM :", Police2G).Width + e.MarginBounds.Left
                MyGr.DrawString(Renseignements.TextBox1.Text, Police2, Brushes.Black, Longueur + 5, YPos)
                MyGr.DrawString("Prénom :", Police2G, Brushes.Black, 500, YPos)
                Longueur = MyGr.MeasureString("Prénom :", Police2G).Width + 500
                MyGr.DrawString(Renseignements.TextBox2.Text, Police2, Brushes.Black, Longueur + 5, YPos)
                YPos = YPos + (SautLigne * 2.0F)
                MyGr.DrawString("Forfait :", Police1G, Brushes.Black, e.MarginBounds.Left, YPos)
                Longueur = MyGr.MeasureString("Forfait :", Police1G).Width + e.MarginBounds.Left
                MyGr.DrawString(Renseignements.ComboBox1.Text, Police1, Brushes.Black, Longueur + 5, YPos)
                MyGr.DrawString("Observations :", Police1G, Brushes.Black, 265, YPos)
                Longueur = MyGr.MeasureString("Observations :", Police1G).Width + 265
                MyGr.DrawString(Renseignements.TextBox8.Text.Replace(Chr(10), ", "), Police1, Brushes.Black, Longueur + 5, YPos)
                YPos = YPos + (SautLigne * 2.5F)
                Longueur = MyGr.MeasureString("* * * *   P R O G R A M M E   * * * *", Police2G).Width
                MyGr.DrawString("* * * *   P R O G R A M M E   * * * *", Police2G, Brushes.Black, (e.PageBounds.Right - Longueur) / 2, YPos)
                YPos = YPos + (SautLigne * 2.5F)
                Select Case TextBox1.Text
                    Case 1 : Str = "ère"
                    Case Else : Str = "ème"
                End Select
                MyGr.DrawString(TextBox1.Text & Str & " Période :       du                                                  au", Police1G, Brushes.Black, e.MarginBounds.Left, YPos)
                YPos = YPos + SautLigne
                If IsNumeric(TextBox2.Text) Then
                    Select Case TextBox2.Text
                        Case Is > 1
                            Longueur = MyGr.MeasureString(" ====>   X  " & TextBox2.Text & " semaines", Police1).Width + 5
                            MyGr.DrawString(" =====>   X  " & TextBox2.Text & " semaines", Police1, Brushes.Black, e.MarginBounds.Left + 35, YPos)
                            YPos = YPos + SautLigne
                        Case Else : TextBox2.Clear()
                    End Select
                End If
                For cmptBox = 0 To ListBox4.Items.Count - 1
                    Dim index As Integer = ListBox3.FindString(ListBox4.Items(cmptBox).ToString)
                    Dim StrSeance As String = "Séance n° " & i & " :   "
                    Str = ""
                    Str = Str & " + " & ListBox4.Items(cmptBox).ToString()
                    If index <> -1 Then
                        Str = Strings.Right(Str, Len(Str) - 3)
                        MyGr.DrawString(StrSeance & Str, Police1, Brushes.Black, e.MarginBounds.Left + 35, YPos)
                        YPos = YPos + SautLigne
                        Str = ""
                        i = i + 1
                    End If
                Next
            End Using
        End Sub
    Merci

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Dans PrintPage() :
    1. on traite la page N, N étant égal au nombre d'appel précédant à PrintPage +1 (au premier appel : N=1, aux appels suivants : N s'incrémente),
    2. on remplit le graphique de la page N et seulement de la page N, sans mettre le texte ou les graphiques qui seront dans la page N+1,
    3. on indique via hasMorePage si il y a une page N+1.
    Cela suppose donc de déterminer à la mano les ruptures de pages, par exemple en testant le ypos et de gérer la reprise de l'impression sur la page suivante en sachant où on s'est arrété dans la page précédente.

Discussions similaires

  1. Problème d'impression plusieurs pages
    Par Chris171717 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/01/2014, 16h43
  2. [XL-2007] Impression plusieurs pages en VBA
    Par slipk555 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/07/2011, 15h00
  3. Pb d'impression sur plusieurs pages d'un JGraph
    Par StephG31 dans le forum 2D
    Réponses: 1
    Dernier message: 15/06/2006, 10h23
  4. [Impression] Impression JPanel sur plusieurs pages
    Par Djulinho dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/06/2006, 17h29
  5. impression d'un blob sur plusieurs pages
    Par maamar1979 dans le forum Bases de données
    Réponses: 1
    Dernier message: 28/05/2006, 13h38

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