• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Espalha

Imprimir com printdocument

1 mensagem neste tópico

Ola pessoal , sou novo por aqui mas lá vai :

Estou a tentar fazer uma pré-visualização dos dados para impressão o que acontece é que , imaginado que imprimo 6 itens numa página, ele adiciona uma segunda página em branco só com o cabeçalho sendo o máximo de 6 itens por página. Se meter um 7 elemento ele visualiza bem o 7 na 2º página visualizando bem. Só acontece mal quando os itens por página chegam aos 6.

Vou colocar o código principal :

rptTitulo = "LISTAGEM "

        Dim pd As Printing.PrintDocument = New Printing.PrintDocument()

        AddHandler pd.PrintPage, New Printing.PrintPageEventHandler(AddressOf pdRelatoriosFotosNE_PrintPage)

        AddHandler pd.BeginPrint, New Printing.PrintEventHandler(AddressOf BeginFotosNE_Print)

        AddHandler pd.EndPrint, New Printing.PrintEventHandler(AddressOf EndFotosNE_Print)

        Dim objPrintPreview As New PrintPreviewDialog()

        Try

            ' Aqui o relatório é exibido no preview

            With objPrintPreview

                .Document = pd

                .WindowState = FormWindowState.Normal

                .PrintPreviewControl.Zoom = 1

                .Text = "LISTAGEM"

                .ShowIcon = True

                .ShowDialog()

            End With

        Catch ex As Exception

            MessageBox.Show(ex.ToString())

        End Try

    End Sub

Evento PrintPage

______________________________________

Dim LinhasPorPagina As Single = 0

        Dim PosicaoDaLinha As Single = 0

        Dim LinhaAtual As Integer = 0

        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)

        Dim FonteNegrito As Font

        Dim FonteTitulo As Font

        Dim FonteSubTitulo As Font

        Dim FonteRodape As Font

        Dim FonteNormal As Font

        FonteNegrito = New Font("Arial", 9, FontStyle.Bold)

        FonteTitulo = New Font("Arial", 18, FontStyle.Bold)

        FonteSubTitulo = New Font("Arial", 12, FontStyle.Bold)

        FonteRodape = New Font("Arial", 8)

        FonteNormal = New Font("Arial", 9)

        Dim y As Graphics = e.Graphics

        e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, 60, MargemDireita, 60)

   

      'CABEÇALHO

        LinhasPorPagina = e.MarginBounds.Height / FonteNormal.GetHeight(e.Graphics) - 9

        While (LinhaAtual < LinhasPorPagina AndAlso drole.Read())

                   

                PosicaoDaLinha = MargemSuperior + (LinhaAtual * FonteNormal.GetHeight(e.Graphics))

             

                e.Graphics.DrawString(drole.item(0) ...., FonteNormal, Brushes.Black, MargemEsquerda + 10, PosicaoDaLinha + 30, New StringFormat())

           

                LinhaAtual += 10

             

        End While

        '*****************************

        'imprime o rodapé do relatório

        '*****************************

        e.Graphics.DrawLine(CanetaDaImpressora, MargemEsquerda, MargemInferior, MargemDireita, MargemInferior)

   

        'incrementa o número da página

        PaginaAtual += 1

        If (LinhaAtual > LinhasPorPagina) Then

            e.HasMorePages = True

            'contador = 0

        Else

            e.HasMorePages = False

        End If

     

  End Sub

  Private Sub EndFotosNE_Print(ByVal sender As Object, ByVal e As Printing.PrintEventArgs)

     

        drole.Close()

        cnole.Close()

    End Sub

  Private Sub BeginFotosNE_Print(ByVal sender As Object, ByVal e As Printing.PrintEventArgs)

     

        conectardatabase()

        .....

        PaginaAtual = 1

    End Sub

Alguem sabe como resolver o problema ???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora