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


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    à mes temps perdus
    Inscrit en
    Février 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : à mes temps perdus
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 66
    Points : 47
    Points
    47
    Par défaut Impression multi pages
    Bonjour à tous

    Je cherche à faire un impression multi pages.
    j'arrive à afficher un en-tête, un pied de page et un contenu ( entre les deux )
    je désire afficher des données ( via un Reader Mysql ) dans ce conteneur.

    j'ai donc testé un truc dans le style :

    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
        Private Sub PrintTest2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            PrintDocument1.DefaultPageSettings.Landscape = True
            NumPage = 0
            CentrageGrpBox()
        End Sub
        Private Sub CentrageGrpBox()
            '  MsgBox("on centre")
            GroupBox1.Top = (Me.Height - GroupBox1.Height) \ 2
            GroupBox1.Left = (Me.Width - GroupBox1.Width) \ 2
            GroupBox1.Location = New Point(GroupBox1.Left)
        End Sub
     
     
        Dim iLefmargin As Integer
        Dim iTopmargin As Integer
        Dim LargPage As Integer
        Dim HautPage As Integer
        Dim NumPage As Integer
        Dim NbreTotalPage As Integer
        Dim LeTitre As String = "Le Titre ici "
        Dim LaDate As String = DateTime.Now.ToString("dd/MM/yyyy")
        Dim LaSem As String = "Semaine " & "14 " & "Année " & "2021"
        Dim MaxHautCont As Integer
        Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
     
            Try
                iLefmargin = e.MarginBounds.Left
                iTopmargin = e.MarginBounds.Top
                LargPage = e.PageSettings.PaperSize.Width
                HautPage = e.PageSettings.PaperSize.Height
     
                Dim StfTitre As StringFormat = New StringFormat()
                StfTitre.LineAlignment = StringAlignment.Center
                StfTitre.Alignment = StringAlignment.Near
     
                Dim StfSem As StringFormat = New StringFormat()
                StfSem.LineAlignment = StringAlignment.Center
                StfSem.Alignment = StringAlignment.Center
     
                Dim StfDate As StringFormat = New StringFormat()
                StfDate.LineAlignment = StringAlignment.Center
                StfDate.Alignment = StringAlignment.Far
     
                Dim FontTitre As Font = New Font("Arial", 15, FontStyle.Bold, GraphicsUnit.Point)
                Dim FontSem As Font = New Font("Arial", 15, FontStyle.Bold, GraphicsUnit.Point)
                Dim FontDate As Font = New Font("Arial", 10, FontStyle.Bold, GraphicsUnit.Point)
     
                Dim RectEntete As RectangleF = New RectangleF(5, e.PageBounds.Top + 5, e.PageBounds.Width - 10, 30)
                Dim RectPied As RectangleF = New RectangleF(5, e.PageBounds.Height - 35, e.PageBounds.Width - 10, 30)
     
                'en-tête 
                e.Graphics.DrawRectangle(Pens.Black, Rectangle.Round(RectEntete))
                e.Graphics.DrawString(LeTitre, FontTitre, Brushes.Black, RectEntete, StfTitre)
                e.Graphics.DrawString(LaSem, FontTitre, Brushes.Black, RectEntete, StfSem)
                e.Graphics.DrawString(LaDate, FontDate, Brushes.Black, RectEntete, StfDate)
     
                'Contenu
                Dim Result As String
                Dim FontCont As Font = New Font("Arial", 9, FontStyle.Bold, GraphicsUnit.Point)
                Dim Pos As Integer = 40
     
                For I = 1 To 25
                    Result = I
                    Dim RectCont As RectangleF = New RectangleF(50, Pos, 500, 30)
                    e.Graphics.DrawRectangle(Pens.Black, Rectangle.Round(RectCont))
                    e.Graphics.DrawString(Result, FontCont, Brushes.Black, RectCont, StfTitre)
                    Pos = Pos + 35
                Next I
     
                'Pied de page
                e.Graphics.DrawRectangle(Pens.Black, Rectangle.Round(RectPied))
                e.Graphics.DrawString("Page n°" & NumPage & " / " & NbreTotalPage, FontDate, Brushes.Black, RectPied, StfDate)
     
            Catch ex As Exception
                MsgBox("Erreur d'impression : " & ex.Message)
            End Try
     
        End Sub
    ce qui donne à l'affichage :

    Nom : Pour Forum Mutipage.png
Affichages : 124
Taille : 11,6 Ko

    ce que je désire faire c'est de charger la suite sur une page suivante, qui reprend l'en-tête, le pied de page ( avec le numéro de page genre "Page 1 / 5" ) et la suite des données ( ligne 22 / 23 etc )
    je sais qu'il faut utiliser e.HasMorePages mais je sais pas du tout comment l'utiliser.
    Si l'un de vous peut me donner une piste ou m'aider ça serait vraiment sympa.
    Merci par avance

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    quand on met e.HasMorePages à true et qu'on sort de la méthode qui gère l'event printpage celui ci est appelé de nouveau immédiatement pour la page suivante
    aussi il faut pouvoir gérer l'impression de toutes les pages au sein de la même méthode
    garder le numéro de page en cours et l'index des données en variable de classe est souvent la solution
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. [AC-2003] Impression état et fichier lié (multi pages)
    Par caro2552 dans le forum IHM
    Réponses: 0
    Dernier message: 27/10/2011, 14h06
  2. [CR 9] Impression multi documents : comment forcer la première page en page impaire ?
    Par fredfred dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 07/06/2011, 14h07
  3. Impression multi pages
    Par olibara dans le forum C#
    Réponses: 5
    Dernier message: 28/06/2009, 10h21
  4. [FLASH 8] Pb Impression multi pages
    Par cega68 dans le forum Flash
    Réponses: 1
    Dernier message: 29/09/2006, 21h29
  5. Impression multi pages
    Par nicolou dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/04/2006, 17h28

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