• Lunes 23 de Diciembre de 2024, 07:53

Autor Tema:  Preview De Un Textbox  (Leído 2458 veces)

Soultaker

  • Miembro HIPER activo
  • ****
  • Mensajes: 972
  • Nacionalidad: pe
    • Ver Perfil
Preview De Un Textbox
« en: Domingo 5 de Diciembre de 2004, 07:52 »
0
Hola de nuevo tengo una duda como puedo hacer esto, digamos tengo un TextBox con una gran cantidad de contenido, y esto lo quiero imprimir, pero antes quisiera que me mostrar un preview y cuantas hojas ocupa todo el contenido, si alguien sabe como hacerlo. Avisenme pe.

 :comp:
http]
foros,programacion, c, c++, java,
linux, videojuegos, directX, .NET,
visual basic,robotica,microprocesadores

Para los nuevos usuarios de este Foro, por favor leerse esta discusión.
Cómo Hacer Preguntas De Forma Inteligente

Ojos que no ven... pisan caquita
Camarón que se duerme... muere electrocutado


<<< Harol Moreyra Bendezú >>>

Laforge

  • Miembro activo
  • **
  • Mensajes: 33
    • Ver Perfil
Re: Preview De Un Textbox
« Respuesta #1 en: Martes 14 de Diciembre de 2004, 18:49 »
0
La verdad es que es un poco complicado......pero una opción podría ser esta...

(El ejemplo utiliza los controles PrintDocument, PrintPreviewDialog, PageSetupDialog y PrintDialog)

 :comp:

    Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
        Try
            'especifica els paràmetres de la pàgina actual
            PrintDocument1.DefaultPageSettings = OpcionesImprPagina
            'especifica documento para cuadro de diálogo de impresión a mostrar
            CadenaImpr = RichTextBox1.Text
            PrintDialog1.Document = PrintDocument1
            Dim result As DialogResult = PrintDialog1.ShowDialog()
            If result = DialogResult.OK Then PrintDocument1.Print()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

 Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Dim numCaract As Integer
        Dim numLineas As Integer
        Dim strParaPagina As String
        Dim strFormato As New StringFormat()
        'define un rectángulo basándose en la configuración de página
        Dim rectDibujar As New RectangleF(e.MarginBounds.Left, e.MarginBounds.Top, e.MarginBounds.Width, e.MarginBounds.Height)
        'define un area para calcular el texto que cabe en una página
        'diminuye en un alínea la altura para asegurar que el texto no se sale
        Dim MedidaTamaño As New SizeF(e.MarginBounds.Width, e.MarginBounds.Height - FuenteImpr.GetHeight(e.Graphics))

        'cuando escribe cadenas largas, las separa entre palabras
        strFormato.Trimming = StringTrimming.Word

        'calcula cuántos caracteres y líneas pueden caber basándose en medidatamaño
        e.Graphics.MeasureString(CadenaImpr, FuenteImpr, MedidaTamaño, strFormato, numCaract, numLineas)

        'calcula las cadenas que caben en una página
        strParaPagina = CadenaImpr.Substring(0, numCaract)

        'imprime la cadena contenida en la página actual
        e.Graphics.DrawString(strParaPagina, FuenteImpr, Brushes.Black, rectDibujar, strFormato)

        'si hay más texto, indica que hay más páginas
        If numCaract < CadenaImpr.Length Then
            'resta el texto que ya se ha impreso de la cadena
            CadenaImpr = CadenaImpr.Substring(numCaract)
            e.HasMorePages = True
        Else
            e.HasMorePages = False
            'se ha impreso todo el texto, restaura la cadena
            CadenaImpr = RichTextBox1.Text
        End If
    End Sub

    Private Sub btnSetup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetup.Click
        Try
            PageSetupDialog1.PageSettings = OpcionesImprPagina
            PageSetupDialog1.ShowDialog()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

Private Sub btnPreview_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPreview.Click
        Try
            'especificar las opciones de la página actual
            PrintDocument1.DefaultPageSettings = OpcionesImprPagina
            'especifica documento para cuadro de diálogo de impresión y mostrar
            CadenaImpr = RichTextBox1.Text
            PrintPreviewDialog1.Document = PrintDocument1
            PrintPreviewDialog1.ShowDialog()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

-ejemplo extraído del manual de VB.NET de Michael Halvorson, editorial McGrawhill-  :D

Espero que te sirva. Yo es el que utilizo cuando tengo que imprimir largos textos des de un textbox (richtextbox),...aunque trato de evitarlo.

Saludos,  :hola:
[size=109]Nunca esperes una mejor ocasión para beberte esa botella de vino.......nunca llega.[/size]