none
Como imprimir em uma só vez forms diferentes usando o PrintForm? RRS feed

  • Pergunta

  • Boa noite!

    Estou trabalhando em um projeto e ele precisa imprimir o que tem dentro de alguns Forms(Janelas), para isso estou usando o PrintForm, para imprimir janela "LayoutForm" estou usando esse código:

    'Chama a janela de impressão
            Try
                Dim pf As New Microsoft.VisualBasic.PowerPacks.Printing.PrintForm
                pf.PrintAction = PrintAction.PrintToPrinter
                pf.Print(LayoutForm, Printing.PrintForm.PrintOption.ClientAreaOnly)
            Catch ex As Exception
                MsgBox("Ocorreu um erro ao imprimir!")
            End Try
    

    A questão é que possuo mais 2 janelas que são "LayoutForm2"  e "LayoutForm3", preciso que o programa imprima usando o PrintForm essas outras duas janelas, cada uma em uma página diferente, como se fosse m arquivo com várias páginas.

    OBS: Também gostaria de saber como deixar a janela de visualização (quando usa o PrintToPreview) abrir de forma Maximizada por padrão!

    Obrigado desde já!

    sexta-feira, 6 de março de 2015 23:39

Respostas

  • Poderias testar com um Timer:

    Insira:

    1 Timer (TimerPrintForm)

    1 ProgressBar  para acompanhar o andamento da operação

    Deixe o Timer como "stop" no evento "load" do Form em que ele está instalado

    No botão que usas coloque o timer para startar

    Private Sub TimerPrintForm_Tick(sender As Object, e As EventArgs) Handles TimerPrintForm.Tick

            ProgressBar1.Increment(1)

            If ProgressBar1.Value = 1 Then

                Label1.Text = "Preparando para Imprimir..."

            End If

     

     

            If ProgressBar1.Value = 10 Then

                'aqui coloca o código para imprimir o  "LayoutForm2"

                Try

                    Dim pf As New Microsoft.VisualBasic.PowerPacks.Printing.PrintForm

                    pf.PrintAction = PrintAction.PrintToPrinter

                    pf.Print(LayoutForm2, Printing.PrintForm.PrintOption.ClientAreaOnly)

     

                Catch ex As Exception

                    MsgBox("Ocorreu um erro ao imprimir!")

     

                End Try

     

            End If

     

            If P1.Value = 30 Then

                'aqui coloca o código para imprimir o  "LayoutForm3"

                Try

                    Dim pf As New Microsoft.VisualBasic.PowerPacks.Printing.PrintForm

                    pf.PrintAction = PrintAction.PrintToPrinter

                    pf.Print(LayoutForm3, Printing.PrintForm.PrintOption.ClientAreaOnly)

     

                Catch ex As Exception

                    MsgBox("Ocorreu um erro ao imprimir!")

     

                End Try

            End If

            If P1.Value = 60 Then

     

            End If

            If P1.Value = 90 Then

                MsgBox("Operação realizada com sucesso!")

            End If

            If P1.Value = 100 Then

    ProgressBar1.Value = 1

                TimerPrintForm.Stop()

              

            End If

     

        End Sub



      Nota: O intervalo do Timer você coloca conforme o tempo que você achar melhor para a operação.  

    Espero ter lhe ajudado!      

                   

    MS INFORMATICA







    sábado, 7 de março de 2015 00:44