Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Selección De Impresoras
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Selección De Impresoras 
 
Hola a todos.
Espero que puedan ayudarme.
Estoy aprendiendo a utilizar la clase Print y no encuentro forma de hacer que la impresión salga automáticamente por la impresora default, siempre me abre el cuadro de dialogo para que seleccione la impresora
Armé un código de prueba para que sea mas simple la interpretación
Antes que nada un poco del entorno donde estoy trabajando como dicen las normas del foro:

Sistema Operativo: Fedora 18
Versión de Gambas:3.4.1
Entorno de Escritorio:GNOME
Componentes: gb, gb.form, gb.gui, gb.image
Error: La impresión no sale automáticamente por la impresora default, siempre abre el cuadro de dialogo de selección de impresoras

Public Sub Button1_Click()
    If Not Printer1.Configure() Then
       Printer1.Count = 1                         'Define la cantidad de paginas a ase impresas
       Printer1.FullPage = True
       Printer1.Paper = Printer1.Custom
       Printer1.PaperHeight = 100
       Printer1.PaperWidth = 100
       Printer1.Print
    Endif
   Me.Close
End

Public Sub Printer1_Draw()
  Paint.MoveTo(5, 100)                                                       ' Define la posicion del texto que se va a imprimir
  Paint.Font.Name = "Times New Roman"                                          ' Font de letras utilizado
  Paint.Font.Size = 20 '* (Desktop.Resolution / Printer1.Resolution)           ' Tamaño de la letra
  Paint.Text("Aguarde a ser llamado")                                          ' Texto impreso
  Paint.Fill                                                                   '

  Paint.MoveTo(15, 150)                                                        ' (X,Y) Define la posicion del texto que se va a imprimir
  Paint.Font.Name = "Times New Roman"                                          ' Font de letras utilizado
  Paint.Font.Size = 40 '* (Desktop.Resolution / Printer1.Resolution)           ' Tamaño de la letra
  Paint.Text("TICKET")                                ' Texto impreso
  Paint.Fill                                                                   '

  Paint.MoveTo(20, 200)                                                        ' (X,Y) Define la posicion del texto que se va a imprimir
  Paint.Font.Name = "Times New Roman"                                          ' Font de letras utilizado
  Paint.Font.Size = 40 '* (Desktop.Resolution / Printer1.Resolution)           ' Tamaño de la letra
  Paint.Text("A 309")                                ' Texto impreso
  Paint.Fill                                                                   '
End


En el formulario se inserto la clase Print y un botón solamente
Al pulsar sobre el botón sale el cuadro de dialogo de selección de impresoras del sistema operativo.
Obviamente si selecciono una impresora, la impresión sale pero no logro hacer 2 cosas
1) Que salga la impresión por la impresora default sin abrir el cuadro de dialogo.
2) Que ante la presencia de 2 impresoras pueda especificar por programa en cual impresora sacar la impresión

Desde ya, toda la ayuda que me puedan proporcionar se los voy a agradecer..
Saludos

Mariano  
 



 
mgonzalez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Selección De Impresoras 
 
Hola mgonzalez:

Podrias mandar la impresión a un archivo (ver http://gambasdoc.org/help/comp/gb.qt4/printer?es&v3), e imprimirlo con Shell o Exec, usando el comando "lpr fichero" .
Creo que asi no debería de salir el cuadro de dialogo.

Nota:
He visto que existe el comando (en la terminal):
lpoptions
Con este puedes determinar cual es la impresora por defecto...
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Selección De Impresoras 
 
Gracias jsbsan.
Finalmente después de mucho buscar encontré la solución
La forma de solucionar esto es seleccionando la impresora donde queremos imprimir, no importa si está predeterminada o no.
Esto lo hacemos con la clausula NAME, con esto. si le ponemos el nombre TEXTUAL de la impresora, todo saldrá por esta.
Es una buena solución si es que tienen multiples impresoras..
Les posteo el programa ejemplo con esta modificación por si a alguien le sirve de algo..

Public Sub Button1_Click()
       Printer1.Count = 1                         'Define la cantidad de paginas a ase impresas
       Printer1.FullPage = True
       Printer1.Paper = Printer1.Custom
       Printer1.PaperHeight = 100
       Printer1.PaperWidth = 100
[b]       Printer1.Name = "Lexmark E-250dn" [/b]
       Printer1.Print
   Me.Close
End

Public Sub Printer1_Draw()
  Paint.MoveTo(5, 100)                                                       ' Define la posicion del texto que se va a imprimir
  Paint.Font.Name = "Times New Roman"                                          ' Font de letras utilizado
  Paint.Font.Size = 20 '* (Desktop.Resolution / Printer1.Resolution)           ' Tamaño de la letra
  Paint.Text("Aguarde a ser llamado")                                          ' Texto impreso
  Paint.Fill                                                                   '

  Paint.MoveTo(15, 150)                                                        ' (X,Y) Define la posicion del texto que se va a imprimir
  Paint.Font.Name = "Times New Roman"                                          ' Font de letras utilizado
  Paint.Font.Size = 40 '* (Desktop.Resolution / Printer1.Resolution)           ' Tamaño de la letra
  Paint.Text("TICKET")                                ' Texto impreso
  Paint.Fill                                                                   '

  Paint.MoveTo(20, 200)                                                        ' (X,Y) Define la posicion del texto que se va a imprimir
  Paint.Font.Name = "Times New Roman"                                          ' Font de letras utilizado
  Paint.Font.Size = 40 '* (Desktop.Resolution / Printer1.Resolution)           ' Tamaño de la letra
  Paint.Text("A 309")                                ' Texto impreso
  Paint.Fill                                                                   '
End
 


Espero que les sirva como a mi  
Saludos
 



 
mgonzalez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Selección De Impresoras 
 
Muy útil!
 



 
arubioc - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Selección De Impresoras 
 
mgonzalez.

Gracias por compartir la solución que hayaste... estuve mirando la ayuda de gambasdoc,y no me percaté de esa propiedad...
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Selección De Impresoras 
 
Asignar el nombre de la impresora es precisamente el modo de seleccionarla; pero si haces un programa para distintos usuarios no conocerás previamente el nombre de sus impresoras.
Aparte de configure() puedes utilizar comandos de CUPS. Ejemplo


Dim sAux, sPrinterName As String
    Dim sAuxArray As String[]
    Dim i As Byte
    Shell "lpstat -a" To sAux
    
    sAuxArray = Split(sAux, "\n")
 


lpstat -a crea un array de cadenas con los nombres de las impresoras

de otro lado

lpstat -d

da el nombre del destino o instancia por defecto y

lpoptions -d [destino]

lo establece.

En todo caso siempre que tendrás obtener su valor porque si no estableces la propiedad Name a tu objeto Printer  en gambas dará error.

Espero que sirva.

Sebas
 



 
última edición por Sebas el Miercoles, 01 May 2013, 12:11; editado 1 vez 
Sebas - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Impresoras Sebas General 4 Jueves, 30 Junio 2011, 23:52 Ver último mensaje
jguardon
No hay nuevos mensajes Impresoras INTELIGENTES alessandri Videotutoriales 1 Jueves, 09 Enero 2014, 11:18 Ver último mensaje
Shell
No hay nuevos mensajes Selección De Proyectos En Gambas3 Shell General 2 Miercoles, 04 Julio 2012, 00:46 Ver último mensaje
Shell
No hay nuevos mensajes ColumnView Y Selección De Campos Ninfus Bases de Datos 5 Jueves, 23 Diciembre 2010, 13:24 Ver último mensaje
ahtonio
 

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 publicar eventos en el calendario