Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Vista Previa del Metodo Print

Estas en el tema de Vista Previa del Metodo Print en el foro de Visual Basic clásico en Foros del Web. Hola que tal, alguien de ustedes sabe como hacer una vista previa del objeto print. es decir. yo hago las impresiones con el PRINTER todo ...
  #1 (permalink)  
Antiguo 15/07/2008, 11:30
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 6
Vista Previa del Metodo Print

Hola que tal, alguien de ustedes sabe como hacer una vista previa del objeto print.
es decir. yo hago las impresiones con el PRINTER todo funciona perfectamente mis titulos, Encabezados, Sub Encabezados y un sin fin de cosas que hace a la hora de mandar a imprimir, todo funciona perfecto pero ahora mi cliente quiere una vista previa de lo que va a imprimir, no se para que como quiera va hacer la impresión pero es el gusto del cliente.

la Pregunta alguien de ustedes sabe como hacer esto.?

Mi cliente no quiere usar ninguna clase de reporteador solo quiere algo sencillo que le muestre la vista previa.

espero sus comentarios y aqui estare por si no quedo claro el post.
  #2 (permalink)  
Antiguo 15/07/2008, 11:33
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Vista Previa del Metodo Print

Si estás usando el Printer para imprimir. Es fácil, solo simula el objeto Printer pero usando un PictureBox, así te mostrará en pantalla el mismo resultado que obtendrías en impresora. Solo que debes configurar el ancho y el alto tomando en cuenta el tamaño del papel.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 15/07/2008, 11:54
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: Vista Previa del Metodo Print

Y eso como lo haria por ejemplo para imprimir con printer hago esto:
Código:
'Columna 0 FECHA
        Printer.CurrentY = VerticalMargen + (ContarFila - 1) * nIncrem
        Printer.CurrentX = (HorizontalMargen) + ((2.5 - Printer.TextWidth(Me.MSHFlexGrid1.TextMatrix(Fila, 2))) / 2)
        Printer.Print Me.MSHFlexGrid1.TextMatrix(Fila, 2)
Esto es solo el ejemplo de una columna y como lo haria para poder visualizarlo?
  #4 (permalink)  
Antiguo 15/07/2008, 12:02
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Vista Previa del Metodo Print

Por ejemplo, puedes colocar un PictureBox llamado picPreview y hacer esto:
Código:
picPreview.CurrentY = VerticalMargen + (ContarFila - 1) * nIncrem
picPreview.CurrentX = (HorizontalMargen) + ((2.5 - picPreview.TextWidth(Me.MSHFlexGrid1.TextMatrix(Fila, 2))) / 2)
picPreview.Print Me.MSHFlexGrid1.TextMatrix(Fila, 2)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 15/07/2008, 12:32
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: Vista Previa del Metodo Print

Ah okey entiendo cambiar el objeto pinturebox con el objeto print, bueno te agradezco Davie el Grande voy a modificar mi codigo si tengo algun problema no dudes que aqui estare dando lata.

Por lo pronto gracias.
  #6 (permalink)  
Antiguo 15/07/2008, 13:36
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: Vista Previa del Metodo Print

Una cosa como defino la Scala para la hoja en forma horizontal y tamaño carta con el pinturebox por ejemplo para el metodo print yo utilizo esto:

Código:
    Printer.Orientation = vbPRORPortrait '2 Orientación Horizontal vbPRORLandscape '1 Horientación Vertical "vbPRORPortrait"
    Printer.ScaleMode = vbCentimeters 'Ponemos la Escala en Centimetros
    'Margenes
    HorizontalMargen = (21.59 - Printer.ScaleWidth) / 2 + 0.1
    VerticalMargen = (27.94 - Printer.ScaleHeight) / 2 + 0.1 + 4.3
  #7 (permalink)  
Antiguo 15/07/2008, 13:42
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Vista Previa del Metodo Print

El ScaleMode lo puedes hacer igual:
Código:
picPreview.ScaleMode = vbCentimeters
Y como el Picture no tiene 'orientación' simplemente toma el valor del ScaleHeight y el ScaleWidth de la impresora (que estará invertida).
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 15/07/2008, 14:45
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: Vista Previa del Metodo Print

Gracias David el Grande, este es el codigo que me genera la vista previa pero no me muestra nada que estoy haciendo mal.

Código:
Private Sub CmdImprimirPeriodos_Click()
Dim Fila As Integer, ContarFila As Integer, nIncrem As Single
Dim Ppagina As Integer, Pagina As Integer, Filas As Integer

    With FrmVistaPreliminar
        .picPreview.ScaleMode = vbCentimeters
        HorizontalMargen = (21.59 - .picPreview.ScaleWidth) / 2 '+ 0.1
        VerticalMargen = (27.94 - .picPreview.ScaleHeight) / 2 '+ 0.1 + 4.3
         nIncrem = 0.6
        
        Pagina = 1
    'Imprimimos la Grilla
     '---------------------------------------------------------------------------------------
    'imprimimos los datos de la grilla
    
    'Cargamos nuevas fuentes y tamaños para la grilla
    .picPreview.Font = "verdana"
    .picPreview.FontSize = 8
    .picPreview.ForeColor = vbBlue
    .picPreview.FontBold = False
        
    ContarFila = 1
        
    For Fila = 1 To (Me.GrillaPeriodos.Rows - 1)

        'Columna 0 Meses
        
        .picPreview.CurrentY = VerticalMargen + (ContarFila - 1) * nIncrem
        .picPreview.CurrentX = HorizontalMargen + ((3.5 - .picPreview.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 0))) / 2)
        .picPreview.Print Me.GrillaPeriodos.TextMatrix(Fila, 0)
        

        'Columna 1 Numero de Periodo
        .picPreview.CurrentY = VerticalMargen + (ContarFila - 1) * nIncrem
        .picPreview.CurrentX = 3.5 + HorizontalMargen + ((2 - .picPreview.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 1))) / 2)
        .picPreview.Print Me.GrillaPeriodos.TextMatrix(Fila, 1)

        'Columna 2 Dias a Pagar
        .picPreview.CurrentY = VerticalMargen + (ContarFila - 1) * nIncrem
        .picPreview.CurrentX = 5.5 + HorizontalMargen + ((2 - .picPreview.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 2))) / 2)
        .picPreview.Print Me.GrillaPeriodos.TextMatrix(Fila, 2)

        'Columna 3 Fecha en que inicia el Periodo
        .picPreview.CurrentY = VerticalMargen + (ContarFila - 1) * nIncrem
        .picPreview.CurrentX = 7.5 + HorizontalMargen + ((3.5 - .picPreview.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 3))) / 2)
        .picPreview.Print Me.GrillaPeriodos.TextMatrix(Fila, 3)

        'Columna 4 Fecha en que Termina el Periodo
        .picPreview.CurrentY = VerticalMargen + (ContarFila - 1) * nIncrem
        .picPreview.CurrentX = 11 + HorizontalMargen + ((3.5 - .picPreview.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 4))) / 2)
        .picPreview.Print Me.GrillaPeriodos.TextMatrix(Fila, 4)

        'Columna 5 Partes de un Mes
        .picPreview.CurrentY = VerticalMargen + (ContarFila - 1) * nIncrem
        .picPreview.CurrentX = 14.5 + HorizontalMargen + ((2 - .picPreview.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 5))) / 2)
        .picPreview.Print Me.GrillaPeriodos.TextMatrix(Fila, 5)

        'Columna 6 Status Activo o Inactivo
        .picPreview.CurrentY = VerticalMargen + (ContarFila - 1) * nIncrem
        .picPreview.CurrentX = 16.5 + HorizontalMargen + ((3 - .picPreview.TextWidth(Me.GrillaPeriodos.TextMatrix(Fila, 6))) / 2)
        .picPreview.Print Me.GrillaPeriodos.TextMatrix(Fila, 6)

        'Agregamos numero de paginas
        .picPreview.CurrentY = 27
        .picPreview.CurrentX = HorizontalMargen + ((21.59 - .picPreview.TextWidth("Pág " & Pagina & " de " & Ppagina)) / 2)
        .picPreview.Print "Pág " & Pagina & " de " & Ppagina
        ContarFila = ContarFila + 1
        
        
    Next Fila
    
    'Final de la impresión
    
    'Printer.EndDoc
    .Show vbModal
        
    End With
End Sub
  #9 (permalink)  
Antiguo 15/07/2008, 14:49
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Vista Previa del Metodo Print

Debes tener la propiedad AutoRedraw del PictureBox a True.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 15/07/2008, 14:57
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: Vista Previa del Metodo Print

Muchisimas gracias ya me pone lo que queria solo que un poco extraño pero mañana voy arreglarlo y si tengo una duda te aviso. por lo pronto gracias.
  #11 (permalink)  
Antiguo 15/07/2008, 14:59
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Vista Previa del Metodo Print

De nada, yo normalmente para que se vea bien coloco otro PictureBox de fondo por la cuestión de los márgenes...

Saludos
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 15/07/2008, 15:02
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: Vista Previa del Metodo Print

Mañana me podrias ayudar ya que por hoy es demasiado tarde para mi. porque si necesito ver lo de las paginas. porque me encima la mayor parte de todo lo que mando a visualizarlo. me imagino que es por el tamaño del pinturebox. pero bueno mañana sera otro dia. buen dia a todos.
  #13 (permalink)  
Antiguo 16/07/2008, 09:34
 
Fecha de Ingreso: noviembre-2006
Mensajes: 227
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: Vista Previa del Metodo Print

Hola que tal, tengo el siguiente problema me encima los textos, porque son varios registros lo que me tienen que mostrar me imagino que es por lo de las paginas como le hago para que una vez se cumpla cierta cantidad de lines me lo escriba en otro pincturebox o hay que agregar un monton de pinturebox o que es lo que necesito. espero su apoyo por lo pronto gracias...
  #14 (permalink)  
Antiguo 16/07/2008, 09:38
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Vista Previa del Metodo Print

Puedes comprobar si el texto que vas a escribir no es mayor que el tamaño de la página y mandar a escribir en otro PictureBox.
Sería algo así como:
Código PHP:
If picPreview.CurrentY picPreview.TextHeight("Texto a escribir") > Printer.ScaleHeight Then
     Aquí el código para saltar a otra página 
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:30.