SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: ccortes en Viernes 5 de Septiembre de 2003, 17:17

Título: Re: Imprimir contenido de DataGrid sin crystal ni datarep
Publicado por: ccortes en Viernes 5 de Septiembre de 2003, 17:17
Como le hago para Imprimir el contenido de un DataGrid sin crystal ni datareport, o sea por codigo :question:
Título: Re: Imprimir contenido de DataGrid sin crystal ni datarep
Publicado por: Brroz en Lunes 8 de Septiembre de 2003, 08:33
Hola Carlos.

Puedes utilizar el objeto Printer.

Básicamente tendrás que controlar las propiedades CurrentX y CurrentY para indicar las coordenadas en las que imprimir, Font, Orientation, etc, etc... Para imprimir usa el método Print, para incluir imágenes PaintPicture y cuando tengas el listado completo: EndDoc para que comience la impresión.

Suerte.
Título: Re: Imprimir contenido de DataGrid sin crystal ni datarep
Publicado por: ccortes en Lunes 8 de Septiembre de 2003, 15:38
Brroz gracias por responder. pero dejame decirte que no manejo bien el objeto printer, podrias enviarme o explicarme un ejemplo, te lo agradecere mucho
Título: Re: Imprimir contenido de DataGrid sin crystal ni datarep
Publicado por: Brroz en Martes 9 de Septiembre de 2003, 08:37
Fíjate en el ejemplo:

*****************************************

Private Sub Command1_Click()

    Dim strTexto As String
   
    Printer.PaperSize = vbPRPSA4
    Printer.Orientation = vbPRORPortrait
    Printer.Scale (0, 0)-(210, 297)
   
    Printer.Line (10, 10)-(Printer.ScaleWidth - 10, Printer.ScaleHeight - 10), , B
   
    Printer.Font.Name = "Courier"
    Printer.Font.Size = 10
    Printer.Font.Bold = True
    Printer.Font.Underline = True
    strTexto = "Título del informe"
    Printer.CurrentX = Int(Printer.ScaleWidth / 2) - Int(Printer.TextWidth(strTexto) / 2)
    Printer.CurrentY = 5
    Printer.Print strTexto
   
    Printer.Font.Size = 8
    Printer.Font.Bold = False
    Printer.Font.Underline = False
   
    strTexto = Now
    Printer.CurrentX = 10
    Printer.CurrentY = 5
    Printer.Print strTexto
    strTexto = "Página 1"
    Printer.CurrentX = Printer.ScaleWidth - Printer.TextWidth(strTexto) - 10
    Printer.CurrentY = 5
    Printer.Print strTexto
   
    Printer.CurrentX = 15
    Printer.CurrentY = 20
    strTexto = "Una línea de texto"
    Printer.Print strTexto
    Printer.CurrentX = 15
    strTexto = "Otra línea de texto"
    Printer.Print strTexto
    Printer.CurrentX = 15
   
    Dim sngY As Single
    sngY = Printer.CurrentY
    strTexto = "Otra línea más"
    Printer.Print strTexto
    strTexto = "Otra texto en la misma línea y alineado a la derecha"
    Printer.CurrentY = sngY
    Printer.CurrentX = Printer.ScaleWidth - Printer.TextWidth(strTexto) - 10
    Printer.Print strTexto
   
    Printer.EndDoc

End Sub

*******************************************

Espero que te sirva.
Suerte.
Título: Re: Imprimir contenido de DataGrid sin crystal ni datarep
Publicado por: Tenaza en Martes 9 de Septiembre de 2003, 21:37
Hola amigo. Te envío una pequeña rutina casera que adapté a mis necesidades para imprimir directamente. En el ejemplo encontrarás un procedimiento ligado al evento click de un botón y otro código que lo incluyo en un módulo .bas .

Deberás incorporar al form un control CommonDialog para seleccionar la impresora.

Espero que te sea útil.
Saludos

:beer:
Título: Re: Imprimir contenido de DataGrid sin crystal ni datarep
Publicado por: ccortes en Jueves 11 de Septiembre de 2003, 16:46
GRACIAS A LOS DOS :good:
Título: Imprimir contenido de DataGrid sin crystal ni datarep
Publicado por: chiaravel en Jueves 11 de Septiembre de 2003, 17:03
Te cuento que las grillas que trae el ComponentONE Studio , traen muchisimas mas propiedades que las grillas comunes y entre las propiedades que trae estan las de grabar y la de imprimir la misma.

Simplemente con 1 sola linea de codigo.

Grilla.PrintGrid

Fijate en Emule o en Kazaa que te podras bajar el Studio Completo que trae mas de 35 controles, imperdibles que te haran la tarea de programar una fiesta.

Suerte