AJUDA COM PRINTPREVIEWDIALOG1

 Tópico anterior Próximo tópico Novo tópico

AJUDA COM PRINTPREVIEWDIALOG1

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#490895 - 22/10/2019 16:29:07

RDPISA
CATANDUVA
Cadast. em:Junho/2017


 Anexos estao visíveis somente para usuários registrados

Olá amigos estou com dificuldades com PrintPreviewDialog1
tenho uma datgrid populada com banco de dados sqlite quando mando imprimir  o PrintPreviewDialog1 impriomi tudo em uma unica pagina



Rogério D Pinto


#490896 - 22/10/2019 16:31:09

RDPISA
CATANDUVA
Cadast. em:Junho/2017


Citação:
:
Olá amigos estou com dificuldades com PrintPreviewDialog1
tenho uma datgrid populada com banco de dados sqlite quando mando imprimir  o PrintPreviewDialog1 impriomi tudo em uma unica pagina


Segue o código

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Btn_Imprimir.Click

        'cria o documento e dá o nome ao mesmo
        Dim PrintDocument1 As New Printing.PrintDocument
        'incluir o manipulador de eventos
        AddHandler PrintDocument1.PrintPage, AddressOf Me.imprimirRelatorios
        'modo de visualização
        'define algumas propriedades do projecto
        With PrintPreviewDialog1
            'indica qual o documento a ser visualizado
            .Document = PrintDocument1
            .WindowState = FormWindowState.Maximized
            .PrintPreviewControl.Zoom = 1
            .Text = Lbl_Conteudo.Text
            .ShowDialog()
        End With
        'libertar o documento após imprimir
        PrintDocument1.Dispose()
    End Sub

    Private Sub imprimirRelatorios(ByVal sender As Object, ByVal e As Drawing.Printing.PrintPageEventArgs)
        'Margens vamos assumir as margens assumidas pela impressora(Margin Bounds)

        Dim margemEsq As Single = e.MarginBounds.Left
        Dim margemDir As Single = e.MarginBounds.Right
        Dim margemSup As Single = e.MarginBounds.Top
        Dim margemInf As Single = e.MarginBounds.Bottom
        Dim linhasLidas As Integer = 1
        Dim cont = 250
        Dim paginaactual = 1
        Dim canetadaimpressora As Pen = New Pen(Color.Black, 2)
        'Variáveis das fontes
        Dim fonteNegrito As Font
        Dim fonteTitulo As Font
        Dim fonteSubtitulo As Font
        Dim fonteRodape As Font
        Dim fonteNormal As Font
        'define efeitos em fonte
        fonteNegrito = New Font("Arial", 8, FontStyle.Bold)
        fonteTitulo = New Font("Arial", 15, FontStyle.Bold)
        fonteSubtitulo = New Font("Arial", 10, FontStyle.Bold)
        fonteRodape = New Font("Arial", 8)
        fonteNormal = New Font("Arial", 8)
        'define-se o número de linhas por página
        'divide-se a área de impressão pelo tamanho da fonte subtraindo 10 valores
        Dim linhasporpagina = e.MarginBounds.Height / fonteNormal.GetHeight(e.Graphics) - 10
        'cabeçalho
        e.Graphics.DrawLine(canetadaimpressora, margemEsq, 60, margemDir, 60)
        e.Graphics.DrawLine(canetadaimpressora, margemEsq, 160, margemDir, 160)
        e.Graphics.DrawString(Lbl_Conteudo.Text, fonteTitulo, Brushes.Black, margemEsq + 200, 80, New StringFormat())
        'imagem
        'e.Graphics.DrawImage(Image.FromFile("F:\Projecto Final Direito\Projecto_Final\Resources\print.bmp"), 100, 68)
        e.Graphics.DrawString(System.DateTime.Today, fonteSubtitulo, Brushes.Black, margemDir - 150, 120, New StringFormat())
        'campos a serem impressos


        If Lbl_Conteudo.Text = "Relatório de Fornecedores :" Then
            e.Graphics.DrawString("Nome : ", fonteNegrito, Brushes.Black, margemEsq, 170, New StringFormat())
            e.Graphics.DrawString("Telefone : ", fonteNegrito, Brushes.Black, margemEsq + 300, 170, New StringFormat())
            e.Graphics.DrawString("Celular", fonteNegrito, Brushes.Black, margemEsq + 500, 170, New StringFormat())

            e.Graphics.DrawLine(canetadaimpressora, margemEsq, 200, margemDir, 200)
            'dados a serem impressos
            If linhasLidas <= linhasporpagina Then
                For linha = 0 To Dtg_Relatorios.RowCount - 1
                    If cont < 900 Then
                        e.Graphics.DrawString(Dtg_Relatorios.Item(1, linha).Value.ToString, fonteNegrito, Brushes.Black, margemEsq, cont)
                        e.Graphics.DrawString(Dtg_Relatorios.Item(2, linha).Value.ToString, fonteNormal, Brushes.Black, margemEsq + 300, cont)
                        e.Graphics.DrawString(Dtg_Relatorios.Item(3, linha).Value.ToString, fonteNormal, Brushes.Black, margemEsq + 500, cont)


                        cont += 25
                    Else
                        linhasporpagina = linhasLidas
                        If cont < 900 Then
                            e.HasMorePages = False
                        End If
                        cont = 295
                    End If
                    linhasLidas += 1

                Next

            End If

        ElseIf Lbl_Conteudo.Text = "Relatório de Clientes :" Then
            e.Graphics.DrawString("Nome : ", fonteNegrito, Brushes.Black, margemEsq, 170, New StringFormat())
            e.Graphics.DrawString("Telefone : ", fonteNegrito, Brushes.Black, margemEsq + 300, 170, New StringFormat())
            e.Graphics.DrawString("Celular", fonteNegrito, Brushes.Black, margemEsq + 500, 170, New StringFormat())

            e.Graphics.DrawLine(canetadaimpressora, margemEsq, 200, margemDir, 200)
            'dados a serem impressos
            If linhasLidas <= linhasporpagina Then
                For linha = 0 To Dtg_Relatorios.RowCount - 1
                    If cont < 900 Then
                        e.Graphics.DrawString(Dtg_Relatorios.Item(1, linha).Value.ToString, fonteNegrito, Brushes.Black, margemEsq, cont)
                        e.Graphics.DrawString(Dtg_Relatorios.Item(2, linha).Value.ToString, fonteNormal, Brushes.Black, margemEsq + 300, cont)
                        e.Graphics.DrawString(Dtg_Relatorios.Item(3, linha).Value.ToString, fonteNormal, Brushes.Black, margemEsq + 500, cont)


                        cont += 25
                    Else
                        linhasporpagina = linhasLidas
                        If cont < 900 Then
                            e.HasMorePages = False
                        End If
                        cont = 295
                    End If
                    linhasLidas += 1

                Next

            End If
        ElseIf Lbl_Conteudo.Text = "Relatório de Estoque :" Then
            e.Graphics.DrawString("Quantidade : ", fonteNegrito, Brushes.Black, margemEsq, 170, New StringFormat())
            e.Graphics.DrawString("Produto : ", fonteNegrito, Brushes.Black, margemEsq + 100, 170, New StringFormat())

            e.Graphics.DrawString("Descrição : ", fonteNegrito, Brushes.Black, margemEsq + 250, 170, New StringFormat())

            e.Graphics.DrawString("Total Custo : ", fonteNegrito, Brushes.Black, margemEsq + 400, 170, New StringFormat())
            e.Graphics.DrawString("Total Venda : ", fonteNegrito, Brushes.Black, margemEsq + 550, 170, New StringFormat())


            e.Graphics.DrawLine(canetadaimpressora, margemEsq, 200, margemDir, 200)
            'dados a serem impressos
            If linhasLidas <= linhasporpagina Then

                For linha = 0 To Dtg_Relatorios.RowCount - 1

                    If cont < 900 Then

                        e.Graphics.DrawString(Dtg_Relatorios.Item(0, linha).Value.ToString, fonteNegrito, Brushes.Black, margemEsq, cont)
                        e.Graphics.DrawString(Dtg_Relatorios.Item(1, linha).Value.ToString, fonteNormal, Brushes.Black, margemEsq + 100, cont)
                        e.Graphics.DrawString(Dtg_Relatorios.Item(2, linha).Value.ToString, fonteNormal, Brushes.Black, margemEsq + 250, cont)
                        e.Graphics.DrawString(Dtg_Relatorios.Item(3, linha).Value.ToString, fonteNormal, Brushes.Black, margemEsq + 400, cont)
                        e.Graphics.DrawString(Dtg_Relatorios.Item(4, linha).Value.ToString, fonteNormal, Brushes.Black, margemEsq + 550, cont)



                        cont += 25
                    Else
                        linhasporpagina = linhasLidas
                        If cont < 900 Then
                            e.HasMorePages = False
                        Else


                        End If
                        cont = 295
                    End If
                    linhasLidas += 1
                Next
                e.Graphics.DrawString(Lbl_Resultao.Text, fonteNormal, Brushes.Black, margemEsq + 485, cont)
                e.Graphics.DrawString(Lbl_Resultao_Custo.Text, fonteNormal, Brushes.Black, margemEsq + 285, cont)


            End If


       End If

        'rodapé

        e.Graphics.DrawLine(canetadaimpressora, margemEsq, margemInf, margemDir, margemInf)
        e.Graphics.DrawString(System.DateTime.Now.ToString(), fonteRodape, Brushes.Black, margemEsq, margemInf, New StringFormat())
        e.Graphics.DrawString("Pag." & paginaactual, fonteRodape, Brushes.Black, margemDir, margemInf, New StringFormat())
    End Sub
          


Rogério D Pinto


Resposta escolhida #490902 - 22/10/2019 20:10:32

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


Aqui mesmo no fórum eu já passei um exemplo bem simples:
http://www.vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=455811&pagina=1
Veja se te ajuda.

____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




#490932 - 24/10/2019 11:05:15

RDPISA
CATANDUVA
Cadast. em:Junho/2017


Citação:
:
Aqui mesmo no fórum eu já passei um exemplo bem simples:
http://www.vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=455811&pagina=1
Veja se te ajuda.

ok vou dar uma olhada obrigado

Rogério D Pinto


#490940 - 24/10/2019 21:25:55

RDPISA
CATANDUVA
Cadast. em:Junho/2017


Citação:
:
Aqui mesmo no fórum eu já passei um exemplo bem simples:
http://www.vbmania.com.br/index.php?modulo=forum&metodo=abrir&id=455811&pagina=1
Veja se te ajuda.

Ainda não resolve

Rogério D Pinto


#490946 - 25/10/2019 09:32:27

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


 Anexos estao visíveis somente para usuários registrados

Teste esse exemplo, talvez tê dê uma luz;

____________________________________________________
Você sabe que alguém te ama não pelo que ele fala, mas pelo o que faz.
O amor não sobrevive de teorias.




#491122 - 07/11/2019 12:28:21

RDPISA
CATANDUVA
Cadast. em:Junho/2017


Citação:
:
Teste esse exemplo, talvez tê dê uma luz;


Vou testar

Rogério D Pinto


#491123 - 07/11/2019 13:27:04

RDPISA
CATANDUVA
Cadast. em:Junho/2017


Citação:
:
Teste esse exemplo, talvez tê dê uma luz;

Obrigado é isso que eu precisava

Rogério D Pinto


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por RDPISA em 07/11/2019 13:27:35