M
Marcos Beccar Varela
Hello to all, I have this form with a PrintDocument named prt_doc,
theproblem is that when I invoke the prt_doc.print() it only prints the las
page, and not multiple pages.
I Also Have a Preview with a PrintPreviewControl and it shows me all the
pages, but I still don´t know how to make them print.
Thank you all
Marcos
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
prt_doc.PrinterSettings.PrintRange = PrintRange.AllPages
prt_doc.Print()
End Sub
Private Sub prt_doc_PrintPage(ByVal sender As System.Object, ByVal e As
System.Drawing.Printing.PrintPageEventArgs) Handles prt_doc.PrintPage
Dim TipoTexto As Font = New Font("Verdana", 8, FontStyle.Regular)
Dim TipoTexto2 As Font = New Font("Verdana", 8, FontStyle.Bold)
Dim TipoTitulo As Font = New Font("Verdana", 18, FontStyle.Bold)
Dim TipoTitulo2 As Font = New Font("Verdana", 14, FontStyle.Bold)
Dim TipoTitulosDatos As Font = New Font("Verdana", 7,
FontStyle.Underline Or FontStyle.Bold)
Dim TipoDatos As Font = New Font("Verdana", 10, FontStyle.Italic)
Dim Brocha As Brush
Dim Lapiz As Pen = New Pen(Color.Black, 1)
Dim PosY As Integer = e.MarginBounds.Top
If LineaTexto = 0 Then
PosY = e.MarginBounds.Y
Dim Tamano As SizeF = e.Graphics.MeasureString(Titulo, TipoTitulo)
e.Graphics.MeasureString(Titulo, TipoTitulo)
e.Graphics.DrawString(Titulo, TipoTitulo, Brushes.Gray, 0, PosY)
PosY += Tamano.Height
e.Graphics.DrawString(Titulo2, TipoTitulo2, Brushes.Black, 0, PosY)
PosY += Tamano.Height + 10
End If
Dim Indice As Integer
Dim AltoLinea As Integer = TipoTexto.GetHeight(e.Graphics) + 2
For Indice = LineaTexto To st_camp0.GetUpperBound(0)
Dim ta_camp1 As SizeF = e.Graphics.MeasureString(st_camp1(Indice),
TipoTexto)
Dim ta_camp4 As SizeF = e.Graphics.MeasureString(st_camp4(Indice),
TipoTexto)
e.Graphics.DrawString(st_camp1(Indice), TipoTexto, Brushes.Black, 2,
PosY + 1)
e.Graphics.DrawLine(Lapiz, 0, PosY, 0, PosY + AltoLinea)
e.Graphics.DrawLine(Lapiz, 0, PosY, 750, PosY)
PosY += AltoLinea
If PosY + AltoLinea >= e.MarginBounds.Bottom Then
LineaTexto = Indice
PosY = e.MarginBounds.Top
e.HasMorePages = True
Exit Sub
End If
If Len(st_camp0(Indice)) = 0 Then Exit For
Next
End Sub
theproblem is that when I invoke the prt_doc.print() it only prints the las
page, and not multiple pages.
I Also Have a Preview with a PrintPreviewControl and it shows me all the
pages, but I still don´t know how to make them print.
Thank you all
Marcos
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
prt_doc.PrinterSettings.PrintRange = PrintRange.AllPages
prt_doc.Print()
End Sub
Private Sub prt_doc_PrintPage(ByVal sender As System.Object, ByVal e As
System.Drawing.Printing.PrintPageEventArgs) Handles prt_doc.PrintPage
Dim TipoTexto As Font = New Font("Verdana", 8, FontStyle.Regular)
Dim TipoTexto2 As Font = New Font("Verdana", 8, FontStyle.Bold)
Dim TipoTitulo As Font = New Font("Verdana", 18, FontStyle.Bold)
Dim TipoTitulo2 As Font = New Font("Verdana", 14, FontStyle.Bold)
Dim TipoTitulosDatos As Font = New Font("Verdana", 7,
FontStyle.Underline Or FontStyle.Bold)
Dim TipoDatos As Font = New Font("Verdana", 10, FontStyle.Italic)
Dim Brocha As Brush
Dim Lapiz As Pen = New Pen(Color.Black, 1)
Dim PosY As Integer = e.MarginBounds.Top
If LineaTexto = 0 Then
PosY = e.MarginBounds.Y
Dim Tamano As SizeF = e.Graphics.MeasureString(Titulo, TipoTitulo)
e.Graphics.MeasureString(Titulo, TipoTitulo)
e.Graphics.DrawString(Titulo, TipoTitulo, Brushes.Gray, 0, PosY)
PosY += Tamano.Height
e.Graphics.DrawString(Titulo2, TipoTitulo2, Brushes.Black, 0, PosY)
PosY += Tamano.Height + 10
End If
Dim Indice As Integer
Dim AltoLinea As Integer = TipoTexto.GetHeight(e.Graphics) + 2
For Indice = LineaTexto To st_camp0.GetUpperBound(0)
Dim ta_camp1 As SizeF = e.Graphics.MeasureString(st_camp1(Indice),
TipoTexto)
Dim ta_camp4 As SizeF = e.Graphics.MeasureString(st_camp4(Indice),
TipoTexto)
e.Graphics.DrawString(st_camp1(Indice), TipoTexto, Brushes.Black, 2,
PosY + 1)
e.Graphics.DrawLine(Lapiz, 0, PosY, 0, PosY + AltoLinea)
e.Graphics.DrawLine(Lapiz, 0, PosY, 750, PosY)
PosY += AltoLinea
If PosY + AltoLinea >= e.MarginBounds.Bottom Then
LineaTexto = Indice
PosY = e.MarginBounds.Top
e.HasMorePages = True
Exit Sub
End If
If Len(st_camp0(Indice)) = 0 Then Exit For
Next
End Sub