21 ago 2013

Imprimir un form scrollable con datos



Para imprimir un form con datos y con scroll el único código que me funcionó fué el siguiente.
Ya que yo quería imprimir un Panel pero no lo he conseguido, así que creé un nuevo Form y copié los datos del Panel.

Imprimir

  • Arrastrar el componente PrintDocument al proyecto (PrintDocument1 en mi caso).
  • Ya en el botón para imprimir la factura crear un PrintDialog (printer en mi caso).
  • Ponerle el nombre que queréis que se muestre en la cola de impresión.
  • Asignarle el Form a imprimir (Form2 en mi caso).
  • En mi caso hago un rellenarFactura() que coge los datos de un PanelImprimir y los copia al Form2 para mostrarlos al usuario como datos finales que se van a imprimir.
  • Hago un Form2.Show() para que se muestre el que se va a imprimir finalmente con todos los datos.
  • Después de que el usuario confirme que quiere imprimir la factura, le asigno los márgenes.
  • Y finalmente llamo al método Print pasándole los parámetros el Form2 y la opción que es Scrollable.

Private Sub ImprimirFactura_Click(sender As Object, e As EventArgs) Handles ImprimirFactura.Click
        Dim Message As String = "¿Quieres imprimir esta factura?"
        Dim Caption As String = "Vas a imprimir esta factura."
        Dim Buttons As MessageBoxButtons = MessageBoxButtons.OKCancel
        Dim Result As DialogResult
        Result = MessageBox.Show(Message, Caption, Buttons)
        If Result = System.Windows.Forms.DialogResult.OK Then
            Dim printer As PrintDialog = New PrintDialog
            'Set the document name
            Form2.PrintForm1.DocumentName = "Factura"
            'Set the printed document
            printer.Document = Form2.PrintDocument1
            
            Form2.rellenarFactura()
            Form2.Show()
            
            'If the printer dialog returns ok Print the page
            If printer.ShowDialog() = Windows.Forms.DialogResult.OK Then
          Form2.PrintForm1.PrinterSettings = printer.PrinterSettings
          Form2.PrintForm1.PrinterSettings.DefaultPageSettings.Margins.Top = 10
          Form2.PrintForm1.PrinterSettings.DefaultPageSettings.Margins.Bottom = 10
          Form2.PrintForm1.PrinterSettings.DefaultPageSettings.Margins.Left = 20
          Form2.PrintForm1.PrinterSettings.DefaultPageSettings.Margins.Right = 10
          Form2.PrintForm1.Print(Form2,PowerPacks.Printing.PrintForm.PrintOption.Scrollable)
            End If
        End If
    End Sub

No hay comentarios:

Publicar un comentario