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 :

Aperçu avant impression [Débutant]


Sujet :

VB.NET

  1. #1
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    303
    Détails du profil
    Informations personnelles :
    Âge : 70

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2004
    Messages : 303
    Points : 130
    Points
    130
    Par défaut Aperçu avant impression
    Bonsoir
    j'utilise PrintForm pour prévisualiser un form
    Hors à l'ouverture je trouve la fenêtre plutôt petite
    Peut-on définir sa taille ou l'ouvrir en plein écran sans avoir à cliquer sur le bouton Maximize
    Merci

  2. #2
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Bonjour

    Essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     Dim MonDoc As New Printing.PrintDocument
                '----------------- Apercu avant impression ------------------------------
                Dim ppd As New PrintPreviewDialog
                AddHandler MonDoc.PrintPage, AddressOf MonDoc_PrintPage
                ppd.Document = MonDoc
                ppd.WindowState = FormWindowState.Maximized ' Pour maximiser la fenetre
                ppd.TopMost = True
                ppd.PrintPreviewControl.Zoom = 1.1 ' Pour agrandir un peu l'affichage
                
                If ppd.ShowDialog = Windows.Forms.DialogResult.OK Then
                    MonDoc.Print()
                End If
    Ce Code marche avec moi 10/10

  3. #3
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    303
    Détails du profil
    Informations personnelles :
    Âge : 70

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2004
    Messages : 303
    Points : 130
    Points
    130
    Par défaut
    Bonjour
    J'ai mis ton code derrière un bouton
    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
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
     
            Dim MonDoc As New Printing.PrintDocument
            '----------------- Apercu avant impression ------------------------------
            Dim ppd As New PrintPreviewDialog
            AddHandler MonDoc.PrintPage, AddressOf mondoc_printpage
            ppd.Document = MonDoc
            ppd.WindowState = FormWindowState.Maximized ' Pour maximiser la fenetre
            ppd.TopMost = True
            ppd.PrintPreviewControl.Zoom = 1.1 ' Pour agrandir un peu l'affichage
     
            If ppd.ShowDialog = Windows.Forms.DialogResult.OK Then
                MonDoc.Print()
            End If
        End Sub
    J'ai cette erreur de syntaxe suivante
    L'opérande 'AddressOf' doit être le nom d'une méthode (sans parenthèses).
    à cette ligne " AddressOf mondoc_printpage"
    mondoc_printpage est une procédure ?
    Merci de ton aide
    Sinon quand je supprime cette ligne la prévisu est bien au maxi mais avec rien dedans

  4. #4
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Bonjour

    Quand tu dis printform c.a.d le control printform
    du msdn
    le composant PrintForm se trouve sous l'onglet Visual Basic PowerPacks de la Boîte à outils.
    je n'ai pas trouvé aussi comment maximiser la fenetre du printform


    ce que t'as proposé jetlibre c'est le composant printpreview dialog
    sans utiliser le composant printform

    il faut lui fournir la sub qui "copie" la form


    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
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim ppd As New PrintPreviewDialog
            'document à imprimer
            Dim doc As New PrintDocument
            'nom pour le gestionnaire d'imprimante
            doc.DocumentName = "MaForm"
            'abonnement à l'événement PrintPage
            AddHandler doc.PrintPage, AddressOf Impression
            'paramètres de page
            Dim ps As New PageSettings
            'ici en paysage pour l'exemple
            ps.Landscape = True
            doc.DefaultPageSettings = ps
            'indique à la prévisualisation le document à montrer
            ppd.Document = doc
            'previsualisation plein écran
            ppd.WindowState = FormWindowState.Maximized
            'imprssion si ok
            If ppd.ShowDialog = Windows.Forms.DialogResult.OK Then
                ppd.Document.Print()
            End If
        End Sub
     
     
     
        Private Sub Impression(ByVal sender As Object, ByVal e As PrintPageEventArgs)
            'déclaration du nouveau bitmap
            Dim b As New Bitmap(Me.Width, Me.Height)
            'dessin du formulaire sur le bitmap
            Me.DrawToBitmap(b, Me.Bounds)
            'dessin avec Graphics 
            e.Graphics.DrawImage(b, 0, 0, b.Width, b.Height)
            'indique qu'il n'y a qu'une page à imprimer
            e.HasMorePages = False
        End Sub

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Bonjour
    voici mon code qui fonctionne parfaitement. A toi de faire quelques modifications pour l'adapter a ton application.

    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
       Private Sub BtnImprimer_Click(sender As Object, e As EventArgs) Handles BtnImprimer.Click
            Try
                Dim MonDoc As New Printing.PrintDocument
                '----------------- Apercu avant impression ------------------------------
                Dim ppd As New PrintPreviewDialog
                AddHandler MonDoc.PrintPage, AddressOf MonDoc_PrintPage
                ppd.Document = MonDoc
                ppd.WindowState = FormWindowState.Maximized
                ppd.TopMost = True
                ppd.PrintPreviewControl.Zoom = 1.1
                '-------------------------- impression si ok ----------------------------
                If ppd.ShowDialog = Windows.Forms.DialogResult.OK Then
                    MonDoc.Print()
                End If
                '------------------------------------------------------------------------
                FrmPrint2.Show()
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    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
      Private Sub MonDoc_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
     
            Dim Police As New Font("Arial", 12) 'choix caractère et taille de la police
            Dim PoliceGras As New Font("Arial", 14, FontStyle.Bold)
            Dim PoliceGras1 As New Font("Arial", 28, FontStyle.Bold)
            Dim PoliceGras2 As New Font("Arial", 12, FontStyle.Bold)
            Dim XPos As Single = e.MarginBounds.Left  'Positionnement colonnes
            Dim YPos As Single = e.MarginBounds.Top ' Positionnement lignes
            Dim ChaineImpr, ChaineImpr1 As String
            Dim MyGraphics As Graphics = e.Graphics
     
            Try
                '----------------------- Impression de l'image ( Taille de l'image est 150 X 200 Pixels ) -------------------------------
                Dim Picture As New Bitmap(Me.PictureBox1.Image)
                MyGraphics.DrawImage(Picture, e.MarginBounds.Left / 3.0F, e.MarginBounds.Top / 3.0F)
                '------------------------------------------------------------------------------
                Dim SautLigne As Single = MyGraphics.MeasureString("X", PoliceGras).Height
                ChaineImpr = "Fiche de Renseignement " 'Titre
                ChaineImpr1 = FormatDateTime$(Now, DateFormat.ShortDate) 'Date du jour
                MyGraphics.DrawString(ChaineImpr, PoliceGras1, Brushes.Red, XPos + 250, YPos + 30) 'Position de la date
                YPos = YPos + SautLigne * 1.0F
                MyGraphics.DrawString(ChaineImpr1, Police, Brushes.Black, XPos + 570, YPos - 80)
                YPos = YPos + SautLigne * 7.0F
                '------------------------------------------------------------------------------
                Dim w As Single = CType(e.MarginBounds.Right, Single) 'Pour ce qui imprime en Arabe c.a.d de droite à gauche
                MyGraphics.TranslateTransform(w, 0.0)
               e.Graphics.PageUnit = GraphicsUnit.Display
                e.PageSettings.Margins = New Printing.Margins(2.0, 1.5, 1.5, 1.5)
                '------------------------------------------------------------------------------
     
                Dim Fmt As StringFormat = New StringFormat(StringFormatFlags.DirectionRightToLeft)
                Fmt.SetDigitSubstitution(New Globalization.CultureInfo("Ar").LCID, StringDigitSubstitute.National)
                Fmt.FormatFlags = StringFormatFlags.DirectionRightToLeft
                Fmt.Alignment = StringAlignment.Near
     
                '---------------------------------------ok-------------------------------------------------
               ChaineImpr = "CIN: " & Me.TXTCIN.Text & "  /  " & "CNRPS: " & Me.TXTCNRPS.Text & "  /  " & "N° Assurance: " & Me.TXTMutuel.Text & "
                Dim XPosArabic As Single = XPos - MyGraphics.MeasureString(ChaineImpr, Police).Width
                MyGraphics.DrawString(ChaineImpr, PoliceGras, Brushes.Black, XPos - 55, YPos, Fmt)
                YPos = YPos + SautLigne * 1.5F
                '-------------------------------------ok---------------------------------------------------
               ChaineImpr = "Nom et Prénom : " & Me.TXTNom.Text & "   " & Me.TXTPreNom.Text
                'MyGraphics.DrawString(ChaineImpr, Police, Brushes.Black, XPosArabic, YPos, Fmt)
                MyGraphics.DrawString(ChaineImpr, PoliceGras, Brushes.Black, XPos - 55, YPos, Fmt)
                YPos = YPos + SautLigne * 2.5F
                '----------------------------------------ok------------------------------------------------
                ChaineImpr = "Date et Lieu de naissance : " & Me.TXTDateNais.Text & " -- " & Me.TXTLieuNais.Text
               MyGraphics.DrawString(ChaineImpr, Police, Brushes.Black, XPos - 55, YPos, Fmt)
                YPos = YPos + SautLigne * 1.5F
               '----------------------------------------------------------------------------------------
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
     
        End Sub
    Ici mon impression se fait de droite à gauche

    Pour ce qui veulent imprimer de gauche à droite, il faut jouer sur la valeur de XPos et Fmt.FormatFlags = StringFormatFlags.DirectionLeftToRight

    bonne chance à tous

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Bonjour

    Jean-Luc80 si le code marche tu doit mettre Résolut

    Sinon on essaye de t'aider

  7. #7
    Membre habitué
    Inscrit en
    Mai 2004
    Messages
    303
    Détails du profil
    Informations personnelles :
    Âge : 70

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2004
    Messages : 303
    Points : 130
    Points
    130
    Par défaut
    Bonjour
    Ce code est parfait pour ce que je veux faire
    Merci beaucoup
    Par contre j'ai un souci avec l'impression de l'image
    Celle-ci s'imprime dans sa taille réelle alors que je voudrais la réduire
    En effet ayant des photos de taille différente, les plus grandes occupent trop de place et cachent le texte
    Peut on réduire en conservant les proportions (Comme la propriété SizeMode ZOOM)
    Merci d'avance

  8. #8
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Salut Jean-Luc80

    Pour moi la première fois j'ai trouvé le même problème que toi (Taille d'image dépasse parfois la taille de la feuille) et la seule solution que j'ai trouvé c'est de réduire la taille de l'image à 150 x 200 Pixels après le scannage soit avec le PhotoShop ou bien par Micro-soft Office Picture Manager de Windows. C'est pour cela que j'ai inséré le commentaire suivant dans mon code pour que le lecteur le comprend.

    '-------- Impression de l'image ( Taille de l'image est 150 X 200 Pixels ) -------

    Peut être qu'il y a d'autres solutions pour imprimer l'image sans recourt à modifier sa taille d'origine, je l'espère le reconnaitre moi aussi.

+ 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