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
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
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.
Partager