IMPRIMIR PAGINAS DE DADOS DO DATAGRIDVIEW
Não consigo fazer o printpreviewcontrol mostrar todos os dados do datagridview. Ou ele pega a mesma página e repete ela infinitas vezes ou ele só imprime a primeira página. Eu preciso que ele percorra todos os dados do datagridview e coloque os dados no printpreviewcontrol no número total de folhas para aqueles dados.
Obrigado galera
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 200, MargemDireita, 200)
LinhasPorPagina = CInt(e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 23)
Dim linha As Integer
linha = 210
Dim resultado As Double = 0
Dim soma As Double = 0
[ô] For i As Integer = 0 To 42
PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
While LinhaAtual < LinhasPorPagina
For i As Integer = 0 To FormPrincipal.DataGridView1.Rows.Count - 1
[ô] resultado = ((linha - 210) / 14.8)
[ô] If resultado < LinhasPorPagina Then
e.Graphics.DrawString(FormPrincipal.DataGridView1.Rows(i).Cells(0).Value.ToString(), FonteNormal, Brushes.Black, MargemEsquerda + 26, linha)
e.Graphics.DrawString(FormPrincipal.DataGridView1.Rows(i).Cells(1).Value.ToString(), FonteNormal, Brushes.Black, MargemEsquerda + 152, linha)
e.Graphics.DrawString(FormPrincipal.DataGridView1.Rows(i).Cells(2).Value.ToString(), FonteNormal, Brushes.Black, MargemEsquerda + 325, linha)
e.Graphics.DrawString(FormPrincipal.DataGridView1.Rows(i).Cells(3).Value.ToString(), FonteNormal, Brushes.Black, MargemEsquerda + 520, linha)
linha = linha + 20
LinhaAtual += 1
Next
End While
[ô]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
If (LinhaAtual > LinhasPorPagina) Then
LinhaAtual = 0
PrintPreviewControl1.Rows += 1
e.HasMorePages = True
Exit Sub
Else
e.HasMorePages = False
End If
e.Graphics.DrawString([Ô]Pagina : [Ô] & paginaAtual, FonteRodape, Brushes.Black, MargemDireita - 50, MargemInferior, New StringFormat())
paginaAtual += 1
Obrigado galera
e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 200, MargemDireita, 200)
LinhasPorPagina = CInt(e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 23)
Dim linha As Integer
linha = 210
Dim resultado As Double = 0
Dim soma As Double = 0
[ô] For i As Integer = 0 To 42
PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))
While LinhaAtual < LinhasPorPagina
For i As Integer = 0 To FormPrincipal.DataGridView1.Rows.Count - 1
[ô] resultado = ((linha - 210) / 14.8)
[ô] If resultado < LinhasPorPagina Then
e.Graphics.DrawString(FormPrincipal.DataGridView1.Rows(i).Cells(0).Value.ToString(), FonteNormal, Brushes.Black, MargemEsquerda + 26, linha)
e.Graphics.DrawString(FormPrincipal.DataGridView1.Rows(i).Cells(1).Value.ToString(), FonteNormal, Brushes.Black, MargemEsquerda + 152, linha)
e.Graphics.DrawString(FormPrincipal.DataGridView1.Rows(i).Cells(2).Value.ToString(), FonteNormal, Brushes.Black, MargemEsquerda + 325, linha)
e.Graphics.DrawString(FormPrincipal.DataGridView1.Rows(i).Cells(3).Value.ToString(), FonteNormal, Brushes.Black, MargemEsquerda + 520, linha)
linha = linha + 20
LinhaAtual += 1
Next
End While
[ô]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
If (LinhaAtual > LinhasPorPagina) Then
LinhaAtual = 0
PrintPreviewControl1.Rows += 1
e.HasMorePages = True
Exit Sub
Else
e.HasMorePages = False
End If
e.Graphics.DrawString([Ô]Pagina : [Ô] & paginaAtual, FonteRodape, Brushes.Black, MargemDireita - 50, MargemInferior, New StringFormat())
paginaAtual += 1
PEDRO47501,
Não deu muito certo, pois o meu problema está sendo pegar colocar varias paginas de informações no printpreviewcontrol, eu não estou utilizando um banco de dados para colocar os dados no datagridview. O problema está na leitura de várias paginas pelo printpreviewcontrol.
Não deu muito certo, pois o meu problema está sendo pegar colocar varias paginas de informações no printpreviewcontrol, eu não estou utilizando um banco de dados para colocar os dados no datagridview. O problema está na leitura de várias paginas pelo printpreviewcontrol.
Alguma possibilidade de vc utilizar o crystal reports ?
já tentei utilizar, só que nao deu certo =/
é muito dificil fazer dessa forma que eu estou fazendo? Pois 80% está feito o problema é que ele fica repetindo as paginas =/
é muito dificil fazer dessa forma que eu estou fazendo? Pois 80% está feito o problema é que ele fica repetindo as paginas =/
Com o crystal isso não acontece, talvez vc não soube utilizar.
Tópico encerrado , respostas não são mais permitidas