Impression, comment faire un saut de page ?
Bonjour,
J'arrive à imprimer (papier) mais j'ai deux problèmes :
-1- Comment effectuer un sauf de page (ascii 10)
-2- Comment in fine décharger l'objet graphique ?
Voici mon code :
Code:
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
|
Option Explicit On
Public Class Form1
Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListBox1.Items.Clear() ' chargement
ListBox1.Items.Add("Maître Corbeau sur un arbre perché")
ListBox1.Items.Add("Tenait don son bec un fromage")
ListBox1.Items.Add("Maître Renard par l'odeur alléchée")
ListBox1.Items.Add("Lui tint à peu près ce langage")
ListBox1.Items.Add("Eh bonjour Monsieur du Corbeau")
ListBox1.Items.Add("Que vous êtes jolie, que vous me semblez beau")
End Sub
Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim i As Integer
Dim ligne As String = ""
For i = 0 To 2 'ListBox1.Items.Count - 1
ligne = ligne & ListBox1.Items(i) & vbCrLf
Next i
'
' SAUT DE PAGE ?
'
For i = 3 To ListBox1.Items.Count - 1
ligne = ligne & ListBox1.Items(i) & vbCrLf
Next i
e.Graphics.DrawString(ligne, New Font("Courier New", 12, FontStyle.Regular), Brushes.Black, 10, 10)
End Sub
Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' bouton : impression
PrintDocument1.Print()
PrintDocument1.Dispose()
' DECHARGEMENT DE E = Graphics.DrawString ???
End Sub |
Merci beaucoup, cordialement.
.
saut de page dans un listbox,jean de lafontaine
bonjour
pour imprimer et faire un saut de page dans un listbox ,d'apres Jean de LaFontaine Fabuliste et poete du 17eme siecle ,heritier d'Esope le grec ,Ibn Muqquaffa l'arabe et de l'Indien Bidpai.....
code:
Code:
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
|
Option Explicit On
Public Class Form1
Dim totalPages As Integer = 3
Dim numPage As Integer = 1
'2 variables pour "decouper" le ListBox en 2 morceaux
'car tu en as decide ainsi mais tu peux le decouper autrement
Dim str1 As String = ""
Dim str2 As String = ""
Dim str3 As String = ""
Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListBox1.Items.Clear() ' chargement
ListBox1.Items.Add("Maître Corbeau sur un arbre perché")
ListBox1.Items.Add("Tenait don son bec un fromage")
ListBox1.Items.Add("Maître Renard par l'odeur alléchée")
ListBox1.Items.Add("Lui tint à peu près ce langage")
ListBox1.Items.Add("Eh bonjour Monsieur du Corbeau")
ListBox1.Items.Add("Que vous êtes joli, que vous me semblez beau")
ListBox1.Items.Add("Sans mentir, si votre ramage se rapporte à votre plumage,")
ListBox1.Items.Add("Vous êtes le phénix des hôtes de ces bois")
ListBox1.Items.Add("A ces mots le corbeau ne se sent pas de joie")
ListBox1.Items.Add("Et pour montrer sa belle voix")
ListBox1.Items.Add("Il ouvre un large bec laisse tomber sa proie")
ListBox1.Items.Add("Le renard s'en saisit et dit: Mon bon Monsieur, Apprenez que tout flatteur")
ListBox1.Items.Add("Vit aux dépens de celui qui l'écoute")
End Sub
' Quand (HasMorePages=True) l'ogre PrintPage se presente ici
' on lui donne en le trompant le plat approprie suivant numero de page
Private Function obtientTexte(ByVal texteCourant As String, ByVal objPage As Integer) As String
If objPage = 1 Then
For i As Integer = 0 To 2
texteCourant = texteCourant + Me.ListBox1.Items(i) & vbCrLf
Next
ElseIf objPage = 2 Then
For i As Integer = 3 To 6
texteCourant = texteCourant + Me.ListBox1.Items(i) & vbCrLf
Next
ElseIf objPage = 3 Then
For i As Integer = 7 To Me.ListBox1.Items.Count - 1
texteCourant = texteCourant + Me.ListBox1.Items(i) & vbCrLf
Next
End If
Return texteCourant
End Function
Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim xPosPage As Single = e.MarginBounds.Left
Dim yPosPage As Single = e.MarginBounds.Top
Dim TexteAimprimer As String = ""
TexteAimprimer = obtientTexte(TexteAimprimer, numPage)
e.Graphics.DrawString(TexteAimprimer, Me.ListBox1.Font, Brushes.Black, xPosPage, yPosPage)
numPage = numPage + 1
' si HasMorePages=true l'evenement est redeclenche à chaque fois(boucle)
' et imprime ce qu'il trouve sur son passage
' Test pour derniere page
e.HasMorePages = (numPage <= totalPages)
End Sub
Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' bouton : impression
PrintDocument1.Print()
'PrintDocument1.Dispose()
End Sub
End Class |
bon code.............