Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Impresión En Gambas3
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Impresión En Gambas3 
 
Hola a todos.

Estoy intentando reprogramar la impresión en Gambas3 que en este sentido no tiene nada que ver con Gambas2. Hay que hacerlo todo de nuevo.

He conseguido imprimir cuando se trata de una sola página utilizando Printer.Count  en el evento Printer_begin() cuando sólo es una página. Pero si es más de una página y además no se sabe cuantas hay que utilizar el evento Printer_Paginate()  que es llamado si no se utiliza Printer.Count pero en realidad hace un blucle llamando al evento constantemente sin poder hacer nada más.

¿Alguien ha utilizado esto o sabe como hacerlo?

Gracias
 



 
Sebas - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Más Información - Impresión En Gambas3 
 
Quizás no me he explicado bien. Quiero aportar el código que muestre el problema y a la vez es código utilizable para quien quiera imprimir con gambas3.


Public Sub FPrinter_Begin()
    Debug "Iniciando impresión"
  
    Paint.Scale(Paint.Width / pPrinter.PaperWidth, Paint.Height / pPrinter.PaperHeight)    'Cooordenadas en milímetros
    Debug "paint.width=";; Paint.Width
    Debug "paint.height=";; Paint.Height
    RMargin = 12
    LMargin = pPrinter.PaperWidth - RMargin
    TMargin = 10
    BMargin = pPrinter.PaperHeight - TMargin
    
    'Estableciendo número de páginas
    'El número de páginas sólo se puede establecer una vez en el evento Begin y
    'en este caso se dispara el evento Draw de la impresora
    'Si no se establece se dispara el evento Paginate pero no sé como manejar
    'este evento para ir imprimiento páginas según sea necesario
    pPrinter.Count = 2      'La impresora imprime el número de páginas que se establezca en la propiedad Count utilizando para ello el evento Draw
End

Public Sub FPrinter_Draw()
    Head    'Impreso en todas las páginas
    Detail    'Imprime el resultado de una consulta SQL distribuyéndolo en las páginas necesarias
    
End



Private Sub Detail()
    Dim d As Date

    Paint.Font.Name = "Free serif"
    Paint.Font.Size = 3.5
    Paint.Font.Bold = False
    iYPos = 84
    Do While resDetalle.Available

        If resDetalle["Entregado"] <> d Then
          Paint.Font.Bold = True
          iYpos += 4
          d = resDetalle["Entregado"]
          Paint.DrawText("Entregado " & Format(d), RMargin + 3, iYPos)
          iYpos += 4
          Paint.Font.Bold = False
        Endif
        Paint.DrawText(resDetalle["Productos.Producto"], rmargin + 3, iYPos)
        Paint.DrawText(resDetalle["peso"], 75, iYPos, 5, 0, 1)
        Paint.DrawText(resDetalle["extras"], 85, iYPos)
        Paint.DrawText(resDetalle["cantidad"], 113, iYPos, 6, 0, 1)
        Paint.DrawText(Format(resDetalle["precio"], "0.0000"), 123, iYPos, 12, 0, Align.Right)
        Paint.DrawText(resDetalle["IVA"], 153, iYPos, 5, 0, 1)
        Paint.DrawText(Format(resDetalle["importe"], "#0.0000"), 173, iYPos, 15, 0, Align.TopRight)
        resDetalle.MoveNext
        iYPos += 4  
        If iYPos >= LineResume Then
          Exit
        Endif  

    Loop
    If pPrinter.Page = pPrinter.Count Then Resume() 'Imprime el resumen sólo en la última página.
                                'Quizás se puede hacer también con el evento End de la impresora
End
 


La documentación de gambas3 dice

Event Paginate ( )

This evento is raised so that you can paginate your document in the background.

If you define no event handler, this event will not be raised, and you will have to define the Count propiedad inside the Begin event handler.

Otherwise, if you handle this event, the event handler will be called again and again until you explicitely define the count property.

Si no se define Printer.Count el el evento Begin es llamado el evento Paginate pero no sé que código poner en este dado quje Printer.Count sólo puede ser establecido una vez, no cada vez que necesite una nueva página y Printer.Page es una propiedad de sólo lectura.

Si defino correctamente el número de páginas en el evento Begin la impresión sale bien pero antes de enviar las filas a la impresora ignoro cuantas páginas llevará.

Espero ser claro y si alguien conoce como manejar esto o está interesado en investigarlo conmigo responda. Husmeando en internet parece que nadie más está trabajando en este caso así que abriríamos una vía para otros compañeros que estén interesados en Gambas3.

Gracias

Sebas
 



 
Sebas - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Impresión En Gambas3 
 
Bueno, finalmente me respondo a mí mismo.

He estado revisando el modelo de impresión en GTK+. después que encontré un hilo de conversación en que Benöit Misisni indica que el modelo de Gambas3 es igual que en GTK o QT4.
El modelo de impresión de GTK dice lo mismo que la documentación de Gambas3. En resumen la impresión no está disponible hasta que se determina el número de páginas con el objeto de no bloquear el objeto más tiempo del necesario (¿Objeto printer, paint, ...? no lo sé).
Lo cierto es que hay que calcular las páginas antes de empezar en Printer_Begin o en Printer_Paginate realizando las operaciones que sean necesarias para ello.

Sebas
 



 
Sebas - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Impresión En Gambas3 
 
Hola Sebas, estoy migrando de gambas2 a gambas3 y el tema de la impresion es realemente una j*&%$%& , ando detras del tema como 2 semanas y no veo una forma practica de migrar todos los listados de una aplicación.
 



 
arubioc - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Impresión En Gambas3 (2 Bugs Encontrados) Sebas General 2 Martes, 15 Enero 2013, 04:23 Ver último mensaje
Sebas
No hay nuevos mensajes Impresión En WebView marcopc Aplicaciones/Fragmentos de Código 0 Jueves, 24 Octobre 2013, 16:13 Ver último mensaje
marcopc
No hay nuevos mensajes Impresión De Pegatinas Con Una Imagen shordi Aplicaciones/Fragmentos de Código 7 Jueves, 26 Noviembre 2015, 19:37 Ver último mensaje
jsbsan
No hay nuevos mensajes Impresión PDF De Formulario calcena General 1 Domingo, 08 Octobre 2017, 21:29 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron