Voici le code necessaire pour imprimer une msFlexGrid avec VB.net. Cela n'imprime pas de tableau mais les valeurs qu'il contient c'est a dire que vous ne verez pas de lignes qui separent les colonnes et les lignes. Ce code est base sur un exemple de tableau qui contient 3 colonnes: identification, description et value. Pour l'activer il vous faudra creer un bouton d'impression cmdPrint. Ce code support l'impression sur plusieurs pages si votre tableau le necessite.
C'est tout ce qu'il y a dire, je pense que le code se comprend assez facilement en le lisant calmement, vous l'adapterer sans probleme a votre projet.
PS j'ai ajouter ce code parce que je n'ai rien trouvé sur internet a ce sujet donc je pense que ca peut interesser certaines personnes. Bonne prog
Source / Exemple :
Imports System.Drawing.Printing 'a placer au debut du code, avant d'ouvrir la class
Private Sub cmdPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdPrint.Click
printFont = New Font("Arial", 10)
Dim printDoc As PrintDocument
printDoc = New PrintDocument
AddHandler printDoc.PrintPage, AddressOf Me.printDoc_PrintPage
printDoc.Print()
End Sub
Dim count As Integer = 1 'number of the line
Dim p As Short = 0
Private Sub printDoc_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)
Dim lpp As Single = 0 'number of lines per page
Dim yPos As Single = 0
Dim line As String
Dim leftMargin As Single = e.MarginBounds.Left
Dim topMargin As Single = e.MarginBounds.Top
'On Error GoTo ErrorHandler
'calcul the number of line per page
'Height of the page/height of the font
lpp = e.MarginBounds.Height / printFont.GetHeight(e.Graphics)
yPos = topMargin - 100
e.Graphics.DrawString("Entete de l'impression", New Font("Arial", 14, FontStyle.Underline), Brushes.Black, leftMargin, yPos, New StringFormat)
yPos = topMargin - 30
e.Graphics.DrawString("IDENTIFICATION", printFont, Brushes.Black, 0.5 * leftMargin, yPos, New StringFormat)
e.Graphics.DrawString("DESCRIPTION", printFont, Brushes.Black, 2.5 * leftMargin, yPos, New StringFormat)
e.Graphics.DrawString("VALUE", printFont, Brushes.Black, 6 * leftMargin, yPos, New StringFormat)
yPos = topMargin
'read one line of the dataGrid, the 1st line of the page
If p = 0 Then
line = msFlexGridConfig.get_TextMatrix(p + 1, 1)
Else
line = msFlexGridConfig.get_TextMatrix(p, 1)
End If
'loop writing each line
While (count < lpp And line <> Nothing And (count + p < msFlexGridConfig.Rows()))
yPos = yPos + printFont.GetHeight(e.Graphics)
'write the 1 column
e.Graphics.DrawString(line, printFont, Brushes.Black, 0.5 * leftMargin, yPos, New StringFormat)
'write the 2 column
line = msFlexGridConfig.get_TextMatrix(count + p, 2)
e.Graphics.DrawString(line, printFont, Brushes.Black, 2.5 * leftMargin, yPos, New StringFormat)
'write the 3 column
line = msFlexGridConfig.get_TextMatrix(count + p, 3)
e.Graphics.DrawString(line, printFont, Brushes.Black, 6 * leftMargin, yPos, New StringFormat)
count = count + 1
If (count + p < msFlexGridConfig.Rows()) Then '((count < lpp) And (count < msFlexGridConfig.Rows())) Then
line = msFlexGridConfig.get_TextMatrix(count + p, 1)
Else
line = Nothing
End If
End While
'if there are still lines in the dataGrid
If (line <> Nothing) Then
p = count
count = 0
yPos = topMargin
e.HasMorePages = True
Else
e.HasMorePages = False
Exit Sub
End If
'ErrorHandler:
' MsgBox("Error printing data to printer.", MsgBoxStyle.ApplicationModal + MsgBoxStyle.Critical, MMain.APP_NAME)
' Exit Sub
End Sub
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.