OVH Cloud OVH Cloud

Aperçu de données d'1 formulaire

8 réponses
Avatar
Stéphane L.
Bonjour,

Je suis sous VB .net 2003 Initiation.

J'ai 1 formulaire où j'ai des étiquettes (Label1 et Label2), des zones de
texte de remplis (dans TextBox1 et TextBox2), 1 petite image (dans
PictureBox1) et 1 menu fichier/imprimer.(MenuItem2)

J'aimerai faire 1 aperçu avant impression des données de ce formulaire.
J'ai bien remarqué les 4 contrôles disponibles :
PrintDialog1
PrintDocument1
PrintPreviewDialog1
PrintPreviewControl1

mais je vois pas comment faire (à part indiquer dans les propriétés de :
PrintDialog1 => Document=PrintDocument1
PrintPreviewControl1 => Document=PrintDocument1)

pour réussir à avoir l'aperçu des 2 textes des labels et textbox ainsi que
de l'image.

Merci d'avance pour votre aide

--
Cordialement,

Stéphane L

8 réponses

Avatar
Xavier Marion
Salut, Sous VB.Net tu ne peux pas imprimer directement une Form. Il faut que
tu te tape tous a la main ou avec Crystal Report.

je te colle un bout de code que j'ai fait pour imprimer une listView a
partir d'un objet PrintDocument sur l'évènement PrintPage.
par contre je suis desolé pour les commentaires c'est assez maigre.

en fait la methode print est appellé pour chaque pages. l'objet "e As
Drawing.Printing.PrintPageEventArgs" contient une propriétés HasMoreElement
a laquelle il faut affecté la valeur Vrai pour que l'evenement Print soit
exécuter une nouvelle fois. Sinon après c'est du dessin. Bon Courage j'ai
déjà du mal a comprendre ce que j'ai fait.
enfin si ca peut t'aider.

Xav.
__________________________________

'Méthode Utilisé une fois par page
'tu l'appelle dans l'évenement : Private Sub PP_PrintPage(sender As Object,
ev As PrintPageEventArgs)

Public Sub PrintListView(ByRef e As Drawing.Printing.PrintPageEventArgs,
ByVal Position As Drawing.Rectangle, ByVal Lst As ListView, Optional ByVal
NewPrint As Boolean = False, Optional ByVal RepeatFirstCol As Boolean =
False)
Static Cl, Ln As Integer
Dim LbTmp As New Label
Dim nbCol, LeftPos, TopPos As Integer
Dim It As ListViewItem

If NewPrint Then
Cl = 0
Ln = 0
End If


LeftPos = Position.Left
TopPos = Position.Top

'Colonne
If Cl = Lst.Columns.Count Then Cl = 0
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = Lst.Columns(0).Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(0).Width
End If
For I As Integer = Cl To Lst.Columns.Count - 1
LbTmp.Text = Lst.Columns(I).Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(I).Width
If I = Lst.Columns.Count - 1 Then
nbCol = I
Else
If LeftPos + Lst.Columns(I + 1).Width > Position.Width +
Position.Left Then
nbCol = I
Exit For
End If
End If
Next

'LIGNE
TopPos += LbTmp.Height

For J As Integer = Ln To Lst.Items.Count - 1
It = Lst.Items(J)
LeftPos = Position.Left
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = It.Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
End If
For I As Integer = Cl To nbCol
Dim Sb As ListViewItem.ListViewSubItem = It.SubItems(I)
LbTmp.Text = Sb.Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
If Not It.UseItemStyleForSubItems Then
LbTmp.BackColor = Sb.BackColor
LbTmp.ForeColor = Sb.ForeColor
LbTmp.Font = Sb.Font
Else
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = It.Font
End If

LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
Next
TopPos += LbTmp.Height
If J = Lst.Items.Count - 1 Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
End If
Else
If TopPos > Position.Top + Position.Height Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
Exit For
Else
e.HasMorePages = True
Ln = J + 1
Cl = 0
Exit For
End If
End If
End If
Next


End Sub

__________________________________

Public Sub PrintLabel(ByVal Lb As Label, ByVal E As
System.Drawing.Printing.PrintPageEventArgs)
Dim RecF As New RectangleF(Lb.Left, Lb.Top, Lb.Width, Lb.Height)

'BackGround
E.Graphics.FillRectangle(New SolidBrush(Lb.BackColor), RecF)

'Bordure
Select Case Lb.BorderStyle
Case BorderStyle.FixedSingle
E.Graphics.DrawRectangle(System.Drawing.Pens.Black, Lb.Left,
Lb.Top, Lb.Width, Lb.Height)
Case BorderStyle.Fixed3D
End Select

'TEXT
Dim F As New System.Drawing.StringFormat
Select Case Lb.TextAlign
Case ContentAlignment.BottomCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.MiddleCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.TopCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Near
End Select

E.Graphics.DrawString(Lb.Text, Lb.Font, New
SolidBrush(Lb.ForeColor), RecF, F)
End Sub
__________________________________






"Stéphane L." a écrit dans le message de news:
ORx%
Bonjour,

Je suis sous VB .net 2003 Initiation.

J'ai 1 formulaire où j'ai des étiquettes (Label1 et Label2), des zones de
texte de remplis (dans TextBox1 et TextBox2), 1 petite image (dans
PictureBox1) et 1 menu fichier/imprimer.(MenuItem2)

J'aimerai faire 1 aperçu avant impression des données de ce formulaire.
J'ai bien remarqué les 4 contrôles disponibles :
PrintDialog1
PrintDocument1
PrintPreviewDialog1
PrintPreviewControl1

mais je vois pas comment faire (à part indiquer dans les propriétés de :
PrintDialog1 => Document=PrintDocument1
PrintPreviewControl1 => Document=PrintDocument1)

pour réussir à avoir l'aperçu des 2 textes des labels et textbox ainsi que
de l'image.

Merci d'avance pour votre aide

--
Cordialement,

Stéphane L




Avatar
Xavier Marion
juste pour info

j'allais oublié l'objet : System.Windows.Forms.ControlPaint

il possède des méthodes qui te seront surement utiles.

++ Xav

"Stéphane L." a écrit dans le message de news:
ORx%
Bonjour,

Je suis sous VB .net 2003 Initiation.

J'ai 1 formulaire où j'ai des étiquettes (Label1 et Label2), des zones de
texte de remplis (dans TextBox1 et TextBox2), 1 petite image (dans
PictureBox1) et 1 menu fichier/imprimer.(MenuItem2)

J'aimerai faire 1 aperçu avant impression des données de ce formulaire.
J'ai bien remarqué les 4 contrôles disponibles :
PrintDialog1
PrintDocument1
PrintPreviewDialog1
PrintPreviewControl1

mais je vois pas comment faire (à part indiquer dans les propriétés de :
PrintDialog1 => Document=PrintDocument1
PrintPreviewControl1 => Document=PrintDocument1)

pour réussir à avoir l'aperçu des 2 textes des labels et textbox ainsi que
de l'image.

Merci d'avance pour votre aide

--
Cordialement,

Stéphane L




Avatar
Stéphane L.
Merci Xavier,

En effet, ça m'a l'air pas simple du tout, je vais regarder ça.

Stéphane

"Xavier Marion" a écrit dans le message de
news:
Salut, Sous VB.Net tu ne peux pas imprimer directement une Form. Il faut
que tu te tape tous a la main ou avec Crystal Report.

je te colle un bout de code que j'ai fait pour imprimer une listView a
partir d'un objet PrintDocument sur l'évènement PrintPage.
par contre je suis desolé pour les commentaires c'est assez maigre.

en fait la methode print est appellé pour chaque pages. l'objet "e As
Drawing.Printing.PrintPageEventArgs" contient une propriétés
HasMoreElement a laquelle il faut affecté la valeur Vrai pour que
l'evenement Print soit exécuter une nouvelle fois. Sinon après c'est du
dessin. Bon Courage j'ai déjà du mal a comprendre ce que j'ai fait.
enfin si ca peut t'aider.

Xav.
__________________________________

'Méthode Utilisé une fois par page
'tu l'appelle dans l'évenement : Private Sub PP_PrintPage(sender As
Object, ev As PrintPageEventArgs)

Public Sub PrintListView(ByRef e As Drawing.Printing.PrintPageEventArgs,
ByVal Position As Drawing.Rectangle, ByVal Lst As ListView, Optional ByVal
NewPrint As Boolean = False, Optional ByVal RepeatFirstCol As Boolean =
False)
Static Cl, Ln As Integer
Dim LbTmp As New Label
Dim nbCol, LeftPos, TopPos As Integer
Dim It As ListViewItem

If NewPrint Then
Cl = 0
Ln = 0
End If


LeftPos = Position.Left
TopPos = Position.Top

'Colonne
If Cl = Lst.Columns.Count Then Cl = 0
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = Lst.Columns(0).Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(0).Width
End If
For I As Integer = Cl To Lst.Columns.Count - 1
LbTmp.Text = Lst.Columns(I).Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(I).Width
If I = Lst.Columns.Count - 1 Then
nbCol = I
Else
If LeftPos + Lst.Columns(I + 1).Width > Position.Width +
Position.Left Then
nbCol = I
Exit For
End If
End If
Next

'LIGNE
TopPos += LbTmp.Height

For J As Integer = Ln To Lst.Items.Count - 1
It = Lst.Items(J)
LeftPos = Position.Left
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = It.Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
End If
For I As Integer = Cl To nbCol
Dim Sb As ListViewItem.ListViewSubItem = It.SubItems(I)
LbTmp.Text = Sb.Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
If Not It.UseItemStyleForSubItems Then
LbTmp.BackColor = Sb.BackColor
LbTmp.ForeColor = Sb.ForeColor
LbTmp.Font = Sb.Font
Else
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = It.Font
End If

LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
Next
TopPos += LbTmp.Height
If J = Lst.Items.Count - 1 Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
End If
Else
If TopPos > Position.Top + Position.Height Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
Exit For
Else
e.HasMorePages = True
Ln = J + 1
Cl = 0
Exit For
End If
End If
End If
Next


End Sub

__________________________________

Public Sub PrintLabel(ByVal Lb As Label, ByVal E As
System.Drawing.Printing.PrintPageEventArgs)
Dim RecF As New RectangleF(Lb.Left, Lb.Top, Lb.Width, Lb.Height)

'BackGround
E.Graphics.FillRectangle(New SolidBrush(Lb.BackColor), RecF)

'Bordure
Select Case Lb.BorderStyle
Case BorderStyle.FixedSingle
E.Graphics.DrawRectangle(System.Drawing.Pens.Black,
Lb.Left, Lb.Top, Lb.Width, Lb.Height)
Case BorderStyle.Fixed3D
End Select

'TEXT
Dim F As New System.Drawing.StringFormat
Select Case Lb.TextAlign
Case ContentAlignment.BottomCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.MiddleCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.TopCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Near
End Select

E.Graphics.DrawString(Lb.Text, Lb.Font, New
SolidBrush(Lb.ForeColor), RecF, F)
End Sub
__________________________________






"Stéphane L." a écrit dans le message de news:
ORx%
Bonjour,

Je suis sous VB .net 2003 Initiation.

J'ai 1 formulaire où j'ai des étiquettes (Label1 et Label2), des zones de
texte de remplis (dans TextBox1 et TextBox2), 1 petite image (dans
PictureBox1) et 1 menu fichier/imprimer.(MenuItem2)

J'aimerai faire 1 aperçu avant impression des données de ce formulaire.
J'ai bien remarqué les 4 contrôles disponibles :
PrintDialog1
PrintDocument1
PrintPreviewDialog1
PrintPreviewControl1

mais je vois pas comment faire (à part indiquer dans les propriétés de :
PrintDialog1 => Document=PrintDocument1
PrintPreviewControl1 => Document=PrintDocument1)

pour réussir à avoir l'aperçu des 2 textes des labels et textbox ainsi
que de l'image.

Merci d'avance pour votre aide

--
Cordialement,

Stéphane L









Avatar
Stéphane L.
Au sujet de Crystal Reports,

Savez-vous les différences (ou où je peux les trouver) entre les versions
Pro, Dev, ADV, ainsi que les différences entre la version 9 et la version
10.


Stéphane


"Xavier Marion" a écrit dans le message de
news:
Salut, Sous VB.Net tu ne peux pas imprimer directement une Form. Il faut
que tu te tape tous a la main ou avec Crystal Report.

je te colle un bout de code que j'ai fait pour imprimer une listView a
partir d'un objet PrintDocument sur l'évènement PrintPage.
par contre je suis desolé pour les commentaires c'est assez maigre.

en fait la methode print est appellé pour chaque pages. l'objet "e As
Drawing.Printing.PrintPageEventArgs" contient une propriétés
HasMoreElement a laquelle il faut affecté la valeur Vrai pour que
l'evenement Print soit exécuter une nouvelle fois. Sinon après c'est du
dessin. Bon Courage j'ai déjà du mal a comprendre ce que j'ai fait.
enfin si ca peut t'aider.

Xav.
__________________________________

'Méthode Utilisé une fois par page
'tu l'appelle dans l'évenement : Private Sub PP_PrintPage(sender As
Object, ev As PrintPageEventArgs)

Public Sub PrintListView(ByRef e As Drawing.Printing.PrintPageEventArgs,
ByVal Position As Drawing.Rectangle, ByVal Lst As ListView, Optional ByVal
NewPrint As Boolean = False, Optional ByVal RepeatFirstCol As Boolean =
False)
Static Cl, Ln As Integer
Dim LbTmp As New Label
Dim nbCol, LeftPos, TopPos As Integer
Dim It As ListViewItem

If NewPrint Then
Cl = 0
Ln = 0
End If


LeftPos = Position.Left
TopPos = Position.Top

'Colonne
If Cl = Lst.Columns.Count Then Cl = 0
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = Lst.Columns(0).Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(0).Width
End If
For I As Integer = Cl To Lst.Columns.Count - 1
LbTmp.Text = Lst.Columns(I).Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(I).Width
If I = Lst.Columns.Count - 1 Then
nbCol = I
Else
If LeftPos + Lst.Columns(I + 1).Width > Position.Width +
Position.Left Then
nbCol = I
Exit For
End If
End If
Next

'LIGNE
TopPos += LbTmp.Height

For J As Integer = Ln To Lst.Items.Count - 1
It = Lst.Items(J)
LeftPos = Position.Left
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = It.Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
End If
For I As Integer = Cl To nbCol
Dim Sb As ListViewItem.ListViewSubItem = It.SubItems(I)
LbTmp.Text = Sb.Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
If Not It.UseItemStyleForSubItems Then
LbTmp.BackColor = Sb.BackColor
LbTmp.ForeColor = Sb.ForeColor
LbTmp.Font = Sb.Font
Else
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = It.Font
End If

LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
Next
TopPos += LbTmp.Height
If J = Lst.Items.Count - 1 Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
End If
Else
If TopPos > Position.Top + Position.Height Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
Exit For
Else
e.HasMorePages = True
Ln = J + 1
Cl = 0
Exit For
End If
End If
End If
Next


End Sub

__________________________________

Public Sub PrintLabel(ByVal Lb As Label, ByVal E As
System.Drawing.Printing.PrintPageEventArgs)
Dim RecF As New RectangleF(Lb.Left, Lb.Top, Lb.Width, Lb.Height)

'BackGround
E.Graphics.FillRectangle(New SolidBrush(Lb.BackColor), RecF)

'Bordure
Select Case Lb.BorderStyle
Case BorderStyle.FixedSingle
E.Graphics.DrawRectangle(System.Drawing.Pens.Black,
Lb.Left, Lb.Top, Lb.Width, Lb.Height)
Case BorderStyle.Fixed3D
End Select

'TEXT
Dim F As New System.Drawing.StringFormat
Select Case Lb.TextAlign
Case ContentAlignment.BottomCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.MiddleCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.TopCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Near
End Select

E.Graphics.DrawString(Lb.Text, Lb.Font, New
SolidBrush(Lb.ForeColor), RecF, F)
End Sub
__________________________________






"Stéphane L." a écrit dans le message de news:
ORx%
Bonjour,

Je suis sous VB .net 2003 Initiation.

J'ai 1 formulaire où j'ai des étiquettes (Label1 et Label2), des zones de
texte de remplis (dans TextBox1 et TextBox2), 1 petite image (dans
PictureBox1) et 1 menu fichier/imprimer.(MenuItem2)

J'aimerai faire 1 aperçu avant impression des données de ce formulaire.
J'ai bien remarqué les 4 contrôles disponibles :
PrintDialog1
PrintDocument1
PrintPreviewDialog1
PrintPreviewControl1

mais je vois pas comment faire (à part indiquer dans les propriétés de :
PrintDialog1 => Document=PrintDocument1
PrintPreviewControl1 => Document=PrintDocument1)

pour réussir à avoir l'aperçu des 2 textes des labels et textbox ainsi
que de l'image.

Merci d'avance pour votre aide

--
Cordialement,

Stéphane L









Avatar
Xavier Marion
Salut,

je peux juste te dire ce que j'ai :

Visual Studio Edition Professionnel (vb.net, csharp, c++, j++, asp,
CrystalReport 9 pour visual studio)

@ +

xav


"Stéphane L." a écrit dans le message de news:

Au sujet de Crystal Reports,

Savez-vous les différences (ou où je peux les trouver) entre les versions
Pro, Dev, ADV, ainsi que les différences entre la version 9 et la version
10.


Stéphane


"Xavier Marion" a écrit dans le message de
news:
Salut, Sous VB.Net tu ne peux pas imprimer directement une Form. Il faut
que tu te tape tous a la main ou avec Crystal Report.

je te colle un bout de code que j'ai fait pour imprimer une listView a
partir d'un objet PrintDocument sur l'évènement PrintPage.
par contre je suis desolé pour les commentaires c'est assez maigre.

en fait la methode print est appellé pour chaque pages. l'objet "e As
Drawing.Printing.PrintPageEventArgs" contient une propriétés
HasMoreElement a laquelle il faut affecté la valeur Vrai pour que
l'evenement Print soit exécuter une nouvelle fois. Sinon après c'est du
dessin. Bon Courage j'ai déjà du mal a comprendre ce que j'ai fait.
enfin si ca peut t'aider.

Xav.
__________________________________

'Méthode Utilisé une fois par page
'tu l'appelle dans l'évenement : Private Sub PP_PrintPage(sender As
Object, ev As PrintPageEventArgs)

Public Sub PrintListView(ByRef e As Drawing.Printing.PrintPageEventArgs,
ByVal Position As Drawing.Rectangle, ByVal Lst As ListView, Optional
ByVal NewPrint As Boolean = False, Optional ByVal RepeatFirstCol As
Boolean = False)
Static Cl, Ln As Integer
Dim LbTmp As New Label
Dim nbCol, LeftPos, TopPos As Integer
Dim It As ListViewItem

If NewPrint Then
Cl = 0
Ln = 0
End If


LeftPos = Position.Left
TopPos = Position.Top

'Colonne
If Cl = Lst.Columns.Count Then Cl = 0
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = Lst.Columns(0).Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(0).Width
End If
For I As Integer = Cl To Lst.Columns.Count - 1
LbTmp.Text = Lst.Columns(I).Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(I).Width
If I = Lst.Columns.Count - 1 Then
nbCol = I
Else
If LeftPos + Lst.Columns(I + 1).Width > Position.Width +
Position.Left Then
nbCol = I
Exit For
End If
End If
Next

'LIGNE
TopPos += LbTmp.Height

For J As Integer = Ln To Lst.Items.Count - 1
It = Lst.Items(J)
LeftPos = Position.Left
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = It.Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
End If
For I As Integer = Cl To nbCol
Dim Sb As ListViewItem.ListViewSubItem = It.SubItems(I)
LbTmp.Text = Sb.Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
If Not It.UseItemStyleForSubItems Then
LbTmp.BackColor = Sb.BackColor
LbTmp.ForeColor = Sb.ForeColor
LbTmp.Font = Sb.Font
Else
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = It.Font
End If

LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
Next
TopPos += LbTmp.Height
If J = Lst.Items.Count - 1 Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
End If
Else
If TopPos > Position.Top + Position.Height Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
Exit For
Else
e.HasMorePages = True
Ln = J + 1
Cl = 0
Exit For
End If
End If
End If
Next


End Sub

__________________________________

Public Sub PrintLabel(ByVal Lb As Label, ByVal E As
System.Drawing.Printing.PrintPageEventArgs)
Dim RecF As New RectangleF(Lb.Left, Lb.Top, Lb.Width, Lb.Height)

'BackGround
E.Graphics.FillRectangle(New SolidBrush(Lb.BackColor), RecF)

'Bordure
Select Case Lb.BorderStyle
Case BorderStyle.FixedSingle
E.Graphics.DrawRectangle(System.Drawing.Pens.Black,
Lb.Left, Lb.Top, Lb.Width, Lb.Height)
Case BorderStyle.Fixed3D
End Select

'TEXT
Dim F As New System.Drawing.StringFormat
Select Case Lb.TextAlign
Case ContentAlignment.BottomCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.MiddleCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.TopCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Near
End Select

E.Graphics.DrawString(Lb.Text, Lb.Font, New
SolidBrush(Lb.ForeColor), RecF, F)
End Sub
__________________________________






"Stéphane L." a écrit dans le message de news:
ORx%
Bonjour,

Je suis sous VB .net 2003 Initiation.

J'ai 1 formulaire où j'ai des étiquettes (Label1 et Label2), des zones
de texte de remplis (dans TextBox1 et TextBox2), 1 petite image (dans
PictureBox1) et 1 menu fichier/imprimer.(MenuItem2)

J'aimerai faire 1 aperçu avant impression des données de ce formulaire.
J'ai bien remarqué les 4 contrôles disponibles :
PrintDialog1
PrintDocument1
PrintPreviewDialog1
PrintPreviewControl1

mais je vois pas comment faire (à part indiquer dans les propriétés de :
PrintDialog1 => Document=PrintDocument1
PrintPreviewControl1 => Document=PrintDocument1)

pour réussir à avoir l'aperçu des 2 textes des labels et textbox ainsi
que de l'image.

Merci d'avance pour votre aide

--
Cordialement,

Stéphane L














Avatar
Stéphane L.
Bonjour Xavier,

Juste au cas où :)...

En plus du bout de code que tu as fait pour imprimer une listView,
tu n'aurais pas non plus 1 bout de code pour imprimer 1 Textbox ?

Merci d'avance

Stéphane


"Xavier Marion" a écrit dans le message de
news:
Salut, Sous VB.Net tu ne peux pas imprimer directement une Form. Il faut
que tu te tape tous a la main ou avec Crystal Report.

je te colle un bout de code que j'ai fait pour imprimer une listView a
partir d'un objet PrintDocument sur l'évènement PrintPage.
par contre je suis desolé pour les commentaires c'est assez maigre.

en fait la methode print est appellé pour chaque pages. l'objet "e As
Drawing.Printing.PrintPageEventArgs" contient une propriétés
HasMoreElement a laquelle il faut affecté la valeur Vrai pour que
l'evenement Print soit exécuter une nouvelle fois. Sinon après c'est du
dessin. Bon Courage j'ai déjà du mal a comprendre ce que j'ai fait.
enfin si ca peut t'aider.

Xav.
__________________________________

'Méthode Utilisé une fois par page
'tu l'appelle dans l'évenement : Private Sub PP_PrintPage(sender As
Object, ev As PrintPageEventArgs)

Public Sub PrintListView(ByRef e As Drawing.Printing.PrintPageEventArgs,
ByVal Position As Drawing.Rectangle, ByVal Lst As ListView, Optional ByVal
NewPrint As Boolean = False, Optional ByVal RepeatFirstCol As Boolean =
False)
Static Cl, Ln As Integer
Dim LbTmp As New Label
Dim nbCol, LeftPos, TopPos As Integer
Dim It As ListViewItem

If NewPrint Then
Cl = 0
Ln = 0
End If


LeftPos = Position.Left
TopPos = Position.Top

'Colonne
If Cl = Lst.Columns.Count Then Cl = 0
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = Lst.Columns(0).Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(0).Width
End If
For I As Integer = Cl To Lst.Columns.Count - 1
LbTmp.Text = Lst.Columns(I).Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(I).Width
If I = Lst.Columns.Count - 1 Then
nbCol = I
Else
If LeftPos + Lst.Columns(I + 1).Width > Position.Width +
Position.Left Then
nbCol = I
Exit For
End If
End If
Next

'LIGNE
TopPos += LbTmp.Height

For J As Integer = Ln To Lst.Items.Count - 1
It = Lst.Items(J)
LeftPos = Position.Left
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = It.Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
End If
For I As Integer = Cl To nbCol
Dim Sb As ListViewItem.ListViewSubItem = It.SubItems(I)
LbTmp.Text = Sb.Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
If Not It.UseItemStyleForSubItems Then
LbTmp.BackColor = Sb.BackColor
LbTmp.ForeColor = Sb.ForeColor
LbTmp.Font = Sb.Font
Else
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = It.Font
End If

LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
Next
TopPos += LbTmp.Height
If J = Lst.Items.Count - 1 Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
End If
Else
If TopPos > Position.Top + Position.Height Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
Exit For
Else
e.HasMorePages = True
Ln = J + 1
Cl = 0
Exit For
End If
End If
End If
Next


End Sub

__________________________________

Public Sub PrintLabel(ByVal Lb As Label, ByVal E As
System.Drawing.Printing.PrintPageEventArgs)
Dim RecF As New RectangleF(Lb.Left, Lb.Top, Lb.Width, Lb.Height)

'BackGround
E.Graphics.FillRectangle(New SolidBrush(Lb.BackColor), RecF)

'Bordure
Select Case Lb.BorderStyle
Case BorderStyle.FixedSingle
E.Graphics.DrawRectangle(System.Drawing.Pens.Black,
Lb.Left, Lb.Top, Lb.Width, Lb.Height)
Case BorderStyle.Fixed3D
End Select

'TEXT
Dim F As New System.Drawing.StringFormat
Select Case Lb.TextAlign
Case ContentAlignment.BottomCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.MiddleCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.TopCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Near
End Select

E.Graphics.DrawString(Lb.Text, Lb.Font, New
SolidBrush(Lb.ForeColor), RecF, F)
End Sub
__________________________________






"Stéphane L." a écrit dans le message de news:
ORx%
Bonjour,

Je suis sous VB .net 2003 Initiation.

J'ai 1 formulaire où j'ai des étiquettes (Label1 et Label2), des zones de
texte de remplis (dans TextBox1 et TextBox2), 1 petite image (dans
PictureBox1) et 1 menu fichier/imprimer.(MenuItem2)

J'aimerai faire 1 aperçu avant impression des données de ce formulaire.
J'ai bien remarqué les 4 contrôles disponibles :
PrintDialog1
PrintDocument1
PrintPreviewDialog1
PrintPreviewControl1

mais je vois pas comment faire (à part indiquer dans les propriétés de :
PrintDialog1 => Document=PrintDocument1
PrintPreviewControl1 => Document=PrintDocument1)

pour réussir à avoir l'aperçu des 2 textes des labels et textbox ainsi
que de l'image.

Merci d'avance pour votre aide

--
Cordialement,

Stéphane L









Avatar
Xavier Marion
Salut ca ressemble beaucoup au code d'avant "PrintLabel" (ctrl + c , ctrl +
v ;)

_______________________
Public Sub PrintLabel(ByVal Tx As TextBox, ByVal E As
System.Drawing.Printing.PrintPageEventArgs)

Dim RecF As New RectangleF(Tx.Left, Tx.Top, Tx.Width, Tx.Height)

'BackGround

E.Graphics.FillRectangle(New SolidBrush(Tx.BackColor), RecF)

'Bordure

Select Case Tx.BorderStyle

Case BorderStyle.FixedSingle

E.Graphics.DrawRectangle(System.Drawing.Pens.Black, Tx.Left, Tx.Top,
Tx.Width, Tx.Height)

Case BorderStyle.Fixed3D

End Select

'TEXT

Dim F As New System.Drawing.StringFormat

Select Case Tx.TextAlign

Case HorizontalAlignment.Center

F.Alignment = StringAlignment.Center

F.LineAlignment = StringAlignment.Center

Case HorizontalAlignment.Left

F.Alignment = StringAlignment.Near

F.LineAlignment = StringAlignment.Center

Case HorizontalAlignment.Right

F.Alignment = StringAlignment.Far

F.LineAlignment = StringAlignment.Center

End Select

E.Graphics.DrawString(Tx.Text, Tx.Font, New SolidBrush(Tx.ForeColor), RecF,
F)

End Sub

_______________________



voila, je vais me coucher



++ xav







"Stéphane L." a écrit dans le message de news:
OV4$
Bonjour Xavier,

Juste au cas où :)...

En plus du bout de code que tu as fait pour imprimer une listView,
tu n'aurais pas non plus 1 bout de code pour imprimer 1 Textbox ?

Merci d'avance

Stéphane


"Xavier Marion" a écrit dans le message de
news:
Salut, Sous VB.Net tu ne peux pas imprimer directement une Form. Il faut
que tu te tape tous a la main ou avec Crystal Report.

je te colle un bout de code que j'ai fait pour imprimer une listView a
partir d'un objet PrintDocument sur l'évènement PrintPage.
par contre je suis desolé pour les commentaires c'est assez maigre.

en fait la methode print est appellé pour chaque pages. l'objet "e As
Drawing.Printing.PrintPageEventArgs" contient une propriétés
HasMoreElement a laquelle il faut affecté la valeur Vrai pour que
l'evenement Print soit exécuter une nouvelle fois. Sinon après c'est du
dessin. Bon Courage j'ai déjà du mal a comprendre ce que j'ai fait.
enfin si ca peut t'aider.

Xav.
__________________________________

'Méthode Utilisé une fois par page
'tu l'appelle dans l'évenement : Private Sub PP_PrintPage(sender As
Object, ev As PrintPageEventArgs)

Public Sub PrintListView(ByRef e As Drawing.Printing.PrintPageEventArgs,
ByVal Position As Drawing.Rectangle, ByVal Lst As ListView, Optional
ByVal NewPrint As Boolean = False, Optional ByVal RepeatFirstCol As
Boolean = False)
Static Cl, Ln As Integer
Dim LbTmp As New Label
Dim nbCol, LeftPos, TopPos As Integer
Dim It As ListViewItem

If NewPrint Then
Cl = 0
Ln = 0
End If


LeftPos = Position.Left
TopPos = Position.Top

'Colonne
If Cl = Lst.Columns.Count Then Cl = 0
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = Lst.Columns(0).Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(0).Width
End If
For I As Integer = Cl To Lst.Columns.Count - 1
LbTmp.Text = Lst.Columns(I).Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(I).Width
If I = Lst.Columns.Count - 1 Then
nbCol = I
Else
If LeftPos + Lst.Columns(I + 1).Width > Position.Width +
Position.Left Then
nbCol = I
Exit For
End If
End If
Next

'LIGNE
TopPos += LbTmp.Height

For J As Integer = Ln To Lst.Items.Count - 1
It = Lst.Items(J)
LeftPos = Position.Left
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = It.Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
End If
For I As Integer = Cl To nbCol
Dim Sb As ListViewItem.ListViewSubItem = It.SubItems(I)
LbTmp.Text = Sb.Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
If Not It.UseItemStyleForSubItems Then
LbTmp.BackColor = Sb.BackColor
LbTmp.ForeColor = Sb.ForeColor
LbTmp.Font = Sb.Font
Else
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = It.Font
End If

LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
Next
TopPos += LbTmp.Height
If J = Lst.Items.Count - 1 Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
End If
Else
If TopPos > Position.Top + Position.Height Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
Exit For
Else
e.HasMorePages = True
Ln = J + 1
Cl = 0
Exit For
End If
End If
End If
Next


End Sub

__________________________________

Public Sub PrintLabel(ByVal Lb As Label, ByVal E As
System.Drawing.Printing.PrintPageEventArgs)
Dim RecF As New RectangleF(Lb.Left, Lb.Top, Lb.Width, Lb.Height)

'BackGround
E.Graphics.FillRectangle(New SolidBrush(Lb.BackColor), RecF)

'Bordure
Select Case Lb.BorderStyle
Case BorderStyle.FixedSingle
E.Graphics.DrawRectangle(System.Drawing.Pens.Black,
Lb.Left, Lb.Top, Lb.Width, Lb.Height)
Case BorderStyle.Fixed3D
End Select

'TEXT
Dim F As New System.Drawing.StringFormat
Select Case Lb.TextAlign
Case ContentAlignment.BottomCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.MiddleCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.TopCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Near
End Select

E.Graphics.DrawString(Lb.Text, Lb.Font, New
SolidBrush(Lb.ForeColor), RecF, F)
End Sub
__________________________________






"Stéphane L." a écrit dans le message de news:
ORx%
Bonjour,

Je suis sous VB .net 2003 Initiation.

J'ai 1 formulaire où j'ai des étiquettes (Label1 et Label2), des zones
de texte de remplis (dans TextBox1 et TextBox2), 1 petite image (dans
PictureBox1) et 1 menu fichier/imprimer.(MenuItem2)

J'aimerai faire 1 aperçu avant impression des données de ce formulaire.
J'ai bien remarqué les 4 contrôles disponibles :
PrintDialog1
PrintDocument1
PrintPreviewDialog1
PrintPreviewControl1

mais je vois pas comment faire (à part indiquer dans les propriétés de :
PrintDialog1 => Document=PrintDocument1
PrintPreviewControl1 => Document=PrintDocument1)

pour réussir à avoir l'aperçu des 2 textes des labels et textbox ainsi
que de l'image.

Merci d'avance pour votre aide

--
Cordialement,

Stéphane L














Avatar
Stéphane L.
Re Merci et bonne nuit :)

Stéphane

"Xavier Marion" a écrit dans le message de
news: OS%
Salut ca ressemble beaucoup au code d'avant "PrintLabel" (ctrl + c , ctrl
+ v ;)

_______________________
Public Sub PrintLabel(ByVal Tx As TextBox, ByVal E As
System.Drawing.Printing.PrintPageEventArgs)

Dim RecF As New RectangleF(Tx.Left, Tx.Top, Tx.Width, Tx.Height)

'BackGround

E.Graphics.FillRectangle(New SolidBrush(Tx.BackColor), RecF)

'Bordure

Select Case Tx.BorderStyle

Case BorderStyle.FixedSingle

E.Graphics.DrawRectangle(System.Drawing.Pens.Black, Tx.Left, Tx.Top,
Tx.Width, Tx.Height)

Case BorderStyle.Fixed3D

End Select

'TEXT

Dim F As New System.Drawing.StringFormat

Select Case Tx.TextAlign

Case HorizontalAlignment.Center

F.Alignment = StringAlignment.Center

F.LineAlignment = StringAlignment.Center

Case HorizontalAlignment.Left

F.Alignment = StringAlignment.Near

F.LineAlignment = StringAlignment.Center

Case HorizontalAlignment.Right

F.Alignment = StringAlignment.Far

F.LineAlignment = StringAlignment.Center

End Select

E.Graphics.DrawString(Tx.Text, Tx.Font, New SolidBrush(Tx.ForeColor),
RecF, F)

End Sub

_______________________



voila, je vais me coucher



++ xav







"Stéphane L." a écrit dans le message de news:
OV4$
Bonjour Xavier,

Juste au cas où :)...

En plus du bout de code que tu as fait pour imprimer une listView,
tu n'aurais pas non plus 1 bout de code pour imprimer 1 Textbox ?

Merci d'avance

Stéphane


"Xavier Marion" a écrit dans le message de
news:
Salut, Sous VB.Net tu ne peux pas imprimer directement une Form. Il faut
que tu te tape tous a la main ou avec Crystal Report.

je te colle un bout de code que j'ai fait pour imprimer une listView a
partir d'un objet PrintDocument sur l'évènement PrintPage.
par contre je suis desolé pour les commentaires c'est assez maigre.

en fait la methode print est appellé pour chaque pages. l'objet "e As
Drawing.Printing.PrintPageEventArgs" contient une propriétés
HasMoreElement a laquelle il faut affecté la valeur Vrai pour que
l'evenement Print soit exécuter une nouvelle fois. Sinon après c'est du
dessin. Bon Courage j'ai déjà du mal a comprendre ce que j'ai fait.
enfin si ca peut t'aider.

Xav.
__________________________________

'Méthode Utilisé une fois par page
'tu l'appelle dans l'évenement : Private Sub PP_PrintPage(sender As
Object, ev As PrintPageEventArgs)

Public Sub PrintListView(ByRef e As Drawing.Printing.PrintPageEventArgs,
ByVal Position As Drawing.Rectangle, ByVal Lst As ListView, Optional
ByVal NewPrint As Boolean = False, Optional ByVal RepeatFirstCol As
Boolean = False)
Static Cl, Ln As Integer
Dim LbTmp As New Label
Dim nbCol, LeftPos, TopPos As Integer
Dim It As ListViewItem

If NewPrint Then
Cl = 0
Ln = 0
End If


LeftPos = Position.Left
TopPos = Position.Top

'Colonne
If Cl = Lst.Columns.Count Then Cl = 0
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = Lst.Columns(0).Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(0).Width
End If
For I As Integer = Cl To Lst.Columns.Count - 1
LbTmp.Text = Lst.Columns(I).Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos

LbTmp.BackColor = Color.LightGray
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle


PrintLabel(LbTmp, e)

LeftPos += Lst.Columns(I).Width
If I = Lst.Columns.Count - 1 Then
nbCol = I
Else
If LeftPos + Lst.Columns(I + 1).Width > Position.Width +
Position.Left Then
nbCol = I
Exit For
End If
End If
Next

'LIGNE
TopPos += LbTmp.Height

For J As Integer = Ln To Lst.Items.Count - 1
It = Lst.Items(J)
LeftPos = Position.Left
If RepeatFirstCol And Cl <> 0 Then
LbTmp.Text = It.Text
Select Case Lst.Columns(0).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(0).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
End If
For I As Integer = Cl To nbCol
Dim Sb As ListViewItem.ListViewSubItem = It.SubItems(I)
LbTmp.Text = Sb.Text
Select Case Lst.Columns(I).TextAlign
Case HorizontalAlignment.Center
LbTmp.TextAlign = ContentAlignment.MiddleCenter
Case HorizontalAlignment.Left
LbTmp.TextAlign = ContentAlignment.MiddleLeft
Case HorizontalAlignment.Right
LbTmp.TextAlign = ContentAlignment.MiddleRight
End Select
LbTmp.Width = Lst.Columns(I).Width
LbTmp.Left = LeftPos
LbTmp.Top = TopPos
If Not It.UseItemStyleForSubItems Then
LbTmp.BackColor = Sb.BackColor
LbTmp.ForeColor = Sb.ForeColor
LbTmp.Font = Sb.Font
Else
LbTmp.BackColor = It.BackColor
LbTmp.ForeColor = It.ForeColor
LbTmp.Font = It.Font
End If

LbTmp.Font = Lst.Font
LbTmp.BorderStyle = BorderStyle.FixedSingle

PrintLabel(LbTmp, e)
LeftPos += LbTmp.Width
Next
TopPos += LbTmp.Height
If J = Lst.Items.Count - 1 Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
End If
Else
If TopPos > Position.Top + Position.Height Then
If nbCol < Lst.Columns.Count - 1 Then
e.HasMorePages = True
Cl = nbCol + 1
Exit For
Else
e.HasMorePages = True
Ln = J + 1
Cl = 0
Exit For
End If
End If
End If
Next


End Sub

__________________________________

Public Sub PrintLabel(ByVal Lb As Label, ByVal E As
System.Drawing.Printing.PrintPageEventArgs)
Dim RecF As New RectangleF(Lb.Left, Lb.Top, Lb.Width, Lb.Height)

'BackGround
E.Graphics.FillRectangle(New SolidBrush(Lb.BackColor), RecF)

'Bordure
Select Case Lb.BorderStyle
Case BorderStyle.FixedSingle
E.Graphics.DrawRectangle(System.Drawing.Pens.Black,
Lb.Left, Lb.Top, Lb.Width, Lb.Height)
Case BorderStyle.Fixed3D
End Select

'TEXT
Dim F As New System.Drawing.StringFormat
Select Case Lb.TextAlign
Case ContentAlignment.BottomCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.BottomRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Far

Case ContentAlignment.MiddleCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.MiddleRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Center

Case ContentAlignment.TopCenter
F.Alignment = StringAlignment.Center
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopLeft
F.Alignment = StringAlignment.Near
F.LineAlignment = StringAlignment.Near

Case ContentAlignment.TopRight
F.Alignment = StringAlignment.Far
F.LineAlignment = StringAlignment.Near
End Select

E.Graphics.DrawString(Lb.Text, Lb.Font, New
SolidBrush(Lb.ForeColor), RecF, F)
End Sub
__________________________________






"Stéphane L." a écrit dans le message de news:
ORx%
Bonjour,

Je suis sous VB .net 2003 Initiation.

J'ai 1 formulaire où j'ai des étiquettes (Label1 et Label2), des zones
de texte de remplis (dans TextBox1 et TextBox2), 1 petite image (dans
PictureBox1) et 1 menu fichier/imprimer.(MenuItem2)

J'aimerai faire 1 aperçu avant impression des données de ce formulaire.
J'ai bien remarqué les 4 contrôles disponibles :
PrintDialog1
PrintDocument1
PrintPreviewDialog1
PrintPreviewControl1

mais je vois pas comment faire (à part indiquer dans les propriétés de
:
PrintDialog1 => Document=PrintDocument1
PrintPreviewControl1 => Document=PrintDocument1)

pour réussir à avoir l'aperçu des 2 textes des labels et textbox ainsi
que de l'image.

Merci d'avance pour votre aide

--
Cordialement,

Stéphane L