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

JLDR

[vb 2500 express] PrintDocument - mais do que uma página para imprimir

4 mensagens neste tópico

Boas.

Alguém me sabe dizer como faço para adicionar mais do que uma página para imprimir?

O que eu queria mesmo era algo do género:

- Na primeira página imprimir o texto "Página 1"

- Na segunda página imprimir o texto "Página 2"

e depois num PrintPreviewDialog poder circular entre as páginas.

Peço ajuda a quem souber... Cumps :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no metodo printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPAgeEventArgs e)

tens de definir isto e.HasMorePages = true or false

atenção... aconselho-te a trabalhares com contadores comuns a classe para não perderes o fio a meada porq quando metes isso ele limita-se a imprir ate e.HasMorePAges = false.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Cumps

Bem, eu sabia que tinha que meter o HasMorePages pelo meio, até já estive a ver exemplos disso, mas ainda não consegui perceber a dinâmica da rotina.

O que eu queria era, por exemplo, colocar uma frase na página 1 e outra frase na página 2. Para experimentar o sistema escrevi o seguinte código em que Documento1 é um objecto PrintDocument e Prever é um PrintPreviewDialog:

Public Class Form1
    Dim a As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        a = 1
        Prever.Document = Documento1
        Prever.Show()
    End Sub

    Private Sub Documento1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles Documento1.PrintPage
        Dim f As New Font("Verdana", 20)
        If a = 1 Then
            e.Graphics.DrawString("Texto página 1", f, Brushes.Black, 100, 100)
            a = a + 1
            e.HasMorePages = True
        End If
        If a = 2 Then
            e.Graphics.DrawString("Texto página 2", f, Brushes.Black, 100, 100)
            e.HasMorePages = False
            Exit Sub
        End If

    End Sub
End Class

O resultado disto é que o PrintPreviewDialog mostra-me apenas uma página e as duas frases escritas uma por cima da outra literalmente.

O que tenho de errado?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ups! Já descobri!!! Faltava fazer um Exit Sub após e.HasMorePages=True...

Obrigado na mesma.

Cumps :)

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