1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Help] VB 2008 e PrintDocument

Discussão em 'Programação' iniciada por Soldi3r^^, 10 de Junho de 2008. (Respostas: 0; Visualizações: 787)

  1. Soldi3r^^

    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.ObjectByVal e As System.Drawing.Printing.PrintPageEventArgsHandles 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 unitCIVA", font6, Brushes.Black, 500, 275)
            e.Graphics.DrawString("
    Total CIVA", 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("
    CargaNossas 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("
    DescargaInstalaçõ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 ^^
     

Partilhar esta Página