IMPRIMIR DADOS DE UM DATAGRIDVIEW
Galera não consigo consertar esse problema, o programa consegue identificar que existe mais dados que que ele pode guardar na página, só que eu não consigo colocar delimitar a quantidade de dados por página. Agora ele coloca 58 dados na primeira página e ao invés de criar uma nova página e colocar o restante dos dados, ele acaba colocando tudo em cima um do outro.
Não consigo arrumar isso. Valeu pela força ai galera
[ô]Variaveis das linhas
Dim LinhasPorPagina As Single = 0
Dim PosicaoDaLinha As Single = 0
Dim LinhaAtual As Integer = 0
[ô]Variaveis das margens
Dim MargemEsquerda As Single = e.MarginBounds.Left
Dim MargemSuperior As Single = e.MarginBounds.Top + 100
Dim MargemDireita As Single = e.MarginBounds.Right
Dim MargemInferior As Single = e.MarginBounds.Bottom
Dim CanetaDaImpressora As Pen = New Pen(Color.Black, 1)
[ô]Variaveis das fontes
Dim FonteNegrito As Font
Dim FonteTitulo As Font
Dim FonteSubTitulo As Font
Dim FonteRodape As Font
Dim FonteNormal As Font
Dim LogText As String = String.Empty
[ô]define efeitos em fontes
FonteNegrito = New Font([Ô]Arial[Ô], 9, FontStyle.Bold)
FonteTitulo = New Font([Ô]Arial[Ô], 15, FontStyle.Bold)
FonteSubTitulo = New Font([Ô]Arial[Ô], 12, FontStyle.Bold)
FonteRodape = New Font([Ô]Arial[Ô], 8)
FonteNormal = New Font([Ô]Arial[Ô], 9)
Dim PosicaoLinha As Integer = 55
[ô]define valores para linha atual e para linha da impressao
LinhaAtual = 0
Dim L As Integer = 0
[ô]Cabecalho
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 60, MargemDireita, 60)
e.Graphics.DrawString([Ô]Tabela de Dados[Ô], FonteSubTitulo, Brushes.Black, MargemEsquerda + 150, 80, New StringFormat())
[ô]Campos a serem impressos
e.Graphics.DrawString([Ô]1[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 25, 170, New StringFormat())
e.Graphics.DrawString([Ô]2[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 145, 170, New StringFormat())
e.Graphics.DrawString([Ô]3[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 282, 170, New StringFormat())
e.Graphics.DrawString([Ô]4[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 380, 170, New StringFormat())
e.Graphics.DrawString([Ô]5[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 500, 170, New StringFormat())
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 190, MargemDireita, 190)
LinhasPorPagina = CInt(e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 9)
Dim FinalPaginaLinhas As Single = 0
[ô]Ler datagridview
For Each dr As DataGridViewRow In FormPrincipal.DataGridView1.Rows
[ô]Por na variavel a linha toda
For i As Integer = 0 To dr.Cells.Count - 1
LogText &= dr.Cells(i).Value & [Ô] [Ô]
Next
If LinhaAtual < LinhasPorPagina Then
[ô]Desenhar conteudo na página
[ô]e.Graphics.DrawString(LogText, New Font([Ô]Arial[Ô], 9), Brushes.Black, 36, PosicaoLinha)
PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
e.Graphics.DrawString(LogText, FonteNormal, Brushes.Black, MargemEsquerda + 21, PosicaoDaLinha, New StringFormat())
LinhaAtual += 1
LogText = String.Empty
[ô]nesta parte ele reconhece a margem inferior e para de colocar o resultado até o final da página
[ô] If (PosicaoDaLinha + 28.8) > MargemInferior Then
[ô]Exit For
[ô]FinalPaginaLinhas = (PosicaoDaLinha + 28.8)
[ô]End If
ElseIf 59 < LinhaAtual < 116 Then
e.HasMorePages = True
Me.PrintPreviewControl1.Rows = 2
PosicaoDaLinha = MargemSuperior + ((LinhaAtual - 58) * FonteNormal.GetHeight(e.Graphics))
e.Graphics.DrawString(LogText, FonteNormal, Brushes.Black, MargemEsquerda + 21, PosicaoDaLinha, New StringFormat())
LinhaAtual += 1
LogText = String.Empty
ElseIf 117 < LinhaAtual < 174 Then
e.HasMorePages = True
Me.PrintPreviewControl1.Rows = 3
PosicaoDaLinha = MargemSuperior + ((LinhaAtual - 58) * FonteNormal.GetHeight(e.Graphics))
e.Graphics.DrawString(LogText, FonteNormal, Brushes.Black, MargemEsquerda + 21, PosicaoDaLinha, New StringFormat())
LinhaAtual += 1
LogText = String.Empty
End If
Next
LinhaAtual += CInt(FonteNormal.GetHeight(e.Graphics))
LinhaAtual += 1
paginaAtual += 1
Não consigo arrumar isso. Valeu pela força ai galera
[ô]Variaveis das linhas
Dim LinhasPorPagina As Single = 0
Dim PosicaoDaLinha As Single = 0
Dim LinhaAtual As Integer = 0
[ô]Variaveis das margens
Dim MargemEsquerda As Single = e.MarginBounds.Left
Dim MargemSuperior As Single = e.MarginBounds.Top + 100
Dim MargemDireita As Single = e.MarginBounds.Right
Dim MargemInferior As Single = e.MarginBounds.Bottom
Dim CanetaDaImpressora As Pen = New Pen(Color.Black, 1)
[ô]Variaveis das fontes
Dim FonteNegrito As Font
Dim FonteTitulo As Font
Dim FonteSubTitulo As Font
Dim FonteRodape As Font
Dim FonteNormal As Font
Dim LogText As String = String.Empty
[ô]define efeitos em fontes
FonteNegrito = New Font([Ô]Arial[Ô], 9, FontStyle.Bold)
FonteTitulo = New Font([Ô]Arial[Ô], 15, FontStyle.Bold)
FonteSubTitulo = New Font([Ô]Arial[Ô], 12, FontStyle.Bold)
FonteRodape = New Font([Ô]Arial[Ô], 8)
FonteNormal = New Font([Ô]Arial[Ô], 9)
Dim PosicaoLinha As Integer = 55
[ô]define valores para linha atual e para linha da impressao
LinhaAtual = 0
Dim L As Integer = 0
[ô]Cabecalho
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 60, MargemDireita, 60)
e.Graphics.DrawString([Ô]Tabela de Dados[Ô], FonteSubTitulo, Brushes.Black, MargemEsquerda + 150, 80, New StringFormat())
[ô]Campos a serem impressos
e.Graphics.DrawString([Ô]1[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 25, 170, New StringFormat())
e.Graphics.DrawString([Ô]2[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 145, 170, New StringFormat())
e.Graphics.DrawString([Ô]3[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 282, 170, New StringFormat())
e.Graphics.DrawString([Ô]4[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 380, 170, New StringFormat())
e.Graphics.DrawString([Ô]5[Ô], FonteNegrito, Brushes.Black, MargemEsquerda + 500, 170, New StringFormat())
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 190, MargemDireita, 190)
LinhasPorPagina = CInt(e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 9)
Dim FinalPaginaLinhas As Single = 0
[ô]Ler datagridview
For Each dr As DataGridViewRow In FormPrincipal.DataGridView1.Rows
[ô]Por na variavel a linha toda
For i As Integer = 0 To dr.Cells.Count - 1
LogText &= dr.Cells(i).Value & [Ô] [Ô]
Next
If LinhaAtual < LinhasPorPagina Then
[ô]Desenhar conteudo na página
[ô]e.Graphics.DrawString(LogText, New Font([Ô]Arial[Ô], 9), Brushes.Black, 36, PosicaoLinha)
PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
e.Graphics.DrawString(LogText, FonteNormal, Brushes.Black, MargemEsquerda + 21, PosicaoDaLinha, New StringFormat())
LinhaAtual += 1
LogText = String.Empty
[ô]nesta parte ele reconhece a margem inferior e para de colocar o resultado até o final da página
[ô] If (PosicaoDaLinha + 28.8) > MargemInferior Then
[ô]Exit For
[ô]FinalPaginaLinhas = (PosicaoDaLinha + 28.8)
[ô]End If
ElseIf 59 < LinhaAtual < 116 Then
e.HasMorePages = True
Me.PrintPreviewControl1.Rows = 2
PosicaoDaLinha = MargemSuperior + ((LinhaAtual - 58) * FonteNormal.GetHeight(e.Graphics))
e.Graphics.DrawString(LogText, FonteNormal, Brushes.Black, MargemEsquerda + 21, PosicaoDaLinha, New StringFormat())
LinhaAtual += 1
LogText = String.Empty
ElseIf 117 < LinhaAtual < 174 Then
e.HasMorePages = True
Me.PrintPreviewControl1.Rows = 3
PosicaoDaLinha = MargemSuperior + ((LinhaAtual - 58) * FonteNormal.GetHeight(e.Graphics))
e.Graphics.DrawString(LogText, FonteNormal, Brushes.Black, MargemEsquerda + 21, PosicaoDaLinha, New StringFormat())
LinhaAtual += 1
LogText = String.Empty
End If
Next
LinhaAtual += CInt(FonteNormal.GetHeight(e.Graphics))
LinhaAtual += 1
paginaAtual += 1
Faça seu login para responder