IMPRIMIR DADOS DE UM DATAGRIDVIEW

GABRIELTINTI 19/01/2014 12:49:46
#433259
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
Faça seu login para responder