[Help] VB 2008 e PrintDocument

Soldi3r^^

Power Member
Boas pessoal.. tenho uma form com um datagrid, e quero que imprima os dados.. quando é uma página dá tudo bem.. mas se é mais do que uma não consigo por isto a dar direito..

PHP:
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        'Margens
        Dim margem_esq, margem_dir As Integer
        margem_esq = 50
        margem_dir = 770
        Dim LinhasLidas As Integer = 0
        cont = 295

        'Desenho
        If My.Computer.FileSystem.FileExists("C:\Temp\" & endereco_logo) Then
        Else
            My.Computer.Network.DownloadFile("ftp://" & ftp_server & "/ftproot/" & endereco_logo, "C:\Temp\" & endereco_logo, "root", "zaqwerty")
        End If


        If endereco_logo = "" Then
        Else
            e.Graphics.DrawImage(Image.FromFile("C:\Temp\" & endereco_logo), margem_esq, 35, 100, 100)
        End If
        e.Graphics.DrawString("LOCAL EXPEDIÇÃO", font3, Brushes.Black, 185, 35)
        e.Graphics.DrawString(nome, font3, Brushes.Black, 170, 50)
        e.Graphics.DrawString(morada, font3, Brushes.Black, 170, 65)
        e.Graphics.DrawString(cp & "  " & localidade, font3, Brushes.Black, 170, 80)
        e.Graphics.DrawString("Telefone: " & ntelefone & " Fax: " & fax, font3, Brushes.Black, 170, 95)
        e.Graphics.DrawString("Factura / Recibo", font1, Brushes.Black, 535, 25)
        e.Graphics.DrawString("Pág.  1 de 1", font3, Brushes.Black, 535, 45)
        e.Graphics.DrawString(lblnome.Text, font1, Brushes.Black, 450, 165)
        e.Graphics.DrawString(morada_cliente, font1, Brushes.Black, 450, 180)
        e.Graphics.DrawString(cp_cliente, font1, Brushes.Black, 450, 195)
        e.Graphics.DrawString(local_cliente, font1, Brushes.Black, 510, 195)

        e.Graphics.DrawString("Factura nº           " & lbln.Text, font1, Brushes.Black, margem_esq, 170)
        e.Graphics.DrawString("Data                    " & data2, font1, Brushes.Black, margem_esq, 185)
        e.Graphics.DrawString("Moeda                 EUR", font1, Brushes.Black, margem_esq, 200)
        e.Graphics.DrawString("Pagamento         Pronto Pagamento ", font1, Brushes.Black, margem_esq, 215)
        e.Graphics.DrawString("Nº contribuinte    " & NIF, font1, Brushes.Black, margem_esq, 230)

        'Divisão da folha
        e.Graphics.DrawLine(Pens.Black, margem_esq, 270, margem_dir, 270)


        e.Graphics.DrawString("Código", font6, Brushes.Black, margem_esq, 275)
        e.Graphics.DrawString("Descrição", font6, Brushes.Black, 185, 275)
        e.Graphics.DrawString("Quant.", font6, Brushes.Black, 450, 275)
        e.Graphics.DrawString("Preço unit. C/ IVA", font6, Brushes.Black, 500, 275)
        e.Graphics.DrawString("Total C/ IVA", font6, Brushes.Black, 620, 275)
        e.Graphics.DrawString("IVA", font6, Brushes.Black, 740, 275)

        e.Graphics.DrawLine(Pens.Black, margem_esq, 290, margem_dir, 290)

        'Rodapé
        e.Graphics.DrawString("Processado por computador @ HouseGest V1.0", font3, Brushes.Black, margem_esq, 1080)
        e.Graphics.DrawString(nome & " - " & morada & " , " & cp & " - " & localidade & " - " & "Capital Social " & capital & "€ Contribuinte " & NIF, font5, Brushes.Black, margem_esq, 1100)

        'Rodapé esquerda
        e.Graphics.DrawLine(Pens.Black, margem_esq, 950, margem_dir, 950)
        e.Graphics.DrawString("Telefone :" & telefone_cliente, font4, Brushes.Black, margem_esq, 970)

        'Rodapé Centro
        e.Graphics.DrawString("Carga: Nossas Instalações", font1, Brushes.Black, 300, 990)
        e.Graphics.DrawString("Data: " & Date.Now.ToShortDateString, font1, Brushes.Black, 300, 1005)
        e.Graphics.DrawString("Hora: " & Date.Now.ToShortTimeString, font1, Brushes.Black, 300, 1020)
        e.Graphics.DrawString("Descarga: Instalações do Cliente", font1, Brushes.Black, 300, 1035)
        e.Graphics.DrawString("Expedição: ____-____-____", font1, Brushes.Black, 300, 1065)

        'Rodapé Direita

        e.Graphics.DrawString("TOTAL EUR ", font_preco, Brushes.Black, 520, 1050)
        e.Graphics.DrawString(lbl_total.Text & " €", font_preco, Brushes.Black, 650, 1050)
        

        'Desenha/Escreve produtos comprados
        If LinhasLidas <= LinhasImpressas Then
            For linha = 0 To DataGridView1.RowCount - 2
                If cont < 900 Then
                    e.Graphics.DrawString(DataGridView1.Item(0, linha).Value.ToString, font_codigo, Brushes.Black, margem_esq, cont)
                    e.Graphics.DrawString(DataGridView1.Item(1, linha).Value.ToString, font1, Brushes.Black, 145, cont)
                    e.Graphics.DrawString(DataGridView1.Item(4, linha).Value.ToString, font1, Brushes.Black, 445, cont)
                    e.Graphics.DrawString(DataGridView1.Item(2, linha).Value.ToString, font1, Brushes.Black, 510, cont)
                    e.Graphics.DrawString(DataGridView1.Item(3, linha).Value.ToString, font1, Brushes.Black, 740, cont)
                    e.Graphics.DrawString(DataGridView1.Item(5, linha).Value.ToString, font1, Brushes.Black, 620, cont)
                    cont += 25
                Else
                    LinhasImpressas = LinhasLidas
                    If cont < 900 Then
                        e.HasMorePages = False
                    Else
                        e.HasMorePages = True
                    End If
                    cont = 295
                End If

                LinhasLidas += 1
            Next
        End If
        
    End Sub

O problema é que ou está sempre a inserir páginas, ou então os registos saem uns por cima de outros.. e ficam também os mesmos...

i need help ^^
 
Back
Topo