Galera estou com um problema. Tenho dois datagridview e gostaria que de colocar todos os dados em um relatorio e depois imprimir eles. O Problema é que o relatorio nao esta ficando alinhado e quando na primeira coluna a quantidade de caracteres muda de 1
para 2, a proxima coluna também desloca um caractere para o lado. Gostaria que isso nao acontecesse. Além disso eu gostaria que fossem listadas as paginas relacionadas a quantidade de dados, mas no meu caso, ele acaba copiando a primeira pagina e repede varias
vezes.
Vou colocar o codigo aqui, obrigado pessoal.
'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("ABC", FonteSubTitulo, Brushes.Black, MargemEsquerda + 150, 80, New StringFormat())
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 160, MargemDireita, 160)
'Campos a serem impressos
e.Graphics.DrawString("Nó", FonteNegrito, Brushes.Black, MargemEsquerda + 20, 170, New StringFormat())
e.Graphics.DrawString("Vazão(L/s)", FonteNegrito, Brushes.Black, MargemEsquerda + 110, 170, New StringFormat())
e.Graphics.DrawString("Cota(m)", FonteNegrito, Brushes.Black, MargemEsquerda + 200, 170, New StringFormat())
e.Graphics.DrawString("Pressão Estática(mH2O)", FonteNegrito, Brushes.Black, MargemEsquerda + 300, 170, New StringFormat())
e.Graphics.DrawString("Pressão Dinâmica", 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)
'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
'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
Next
'Rodape
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, MargemInferior, MargemDireita, MargemInferior)
e.Graphics.DrawString(System.DateTime.Now.ToString(), FonteRodape, Brushes.Black, MargemEsquerda, MargemInferior, New StringFormat())
LinhaAtual += CInt(FonteNormal.GetHeight(e.Graphics))
LinhaAtual += 1
e.Graphics.DrawString("Pagina : " & paginaAtual, FonteRodape, Brushes.Black, MargemDireita - 50, MargemInferior, New StringFormat())
'Incrementa o n£mero da pagina
paginaAtual += 1
'verifica se continua imprimindo
If (LinhaAtual > LinhasPorPagina) Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
problemas com o windows xp sp2