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
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
Bonjour
Essaye
Ce Code marche avec moi 10/10
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
Bonjour
J'ai mis ton code derrière un bouton
J'ai cette erreur de syntaxe suivante
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
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
Bonjour
Quand tu dis printform c.a.d le control printform
du msdn
je n'ai pas trouvé aussi comment maximiser la fenetre du printformle composant PrintForm se trouve sous l'onglet Visual Basic PowerPacks de la Boîte à outils.
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
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 TryIci mon impression se fait de droite à gauche
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
Pour ce qui veulent imprimer de gauche à droite, il faut jouer sur la valeur de XPos et Fmt.FormatFlags = StringFormatFlags.DirectionLeftToRight
bonne chance à tous
Bonjour
Jean-Luc80 si le code marche tu doit mettre Résolut
Sinon on essaye de t'aider
Partager