Power Builder - Setear impresora

 
Vista:

Setear impresora

Publicado por Javier Prado (2 intervenciones) el 12/05/2003 20:58:50
Estoy haciendo una ventana para las opciones de impresion y tengo un problema cuando escojo una impresora. he logrado crear una funcion que me llena un ddplb con las impresoras de la pc pero al momento de escoger una es el problema porque siempre imprime en la predeterminada. Pense que la funcion Printsetprinter() hacia ese trabajo pero no me funciona. Ya se que puedo hacer esto con la funcion printsetup() pero ahi me aparece la ventana del power con etiquetas en ingles. La idea es crear mi propio "printsetup()" para personalizar mas el sistema. Pero no encuentro ninguna funcion para cambiar de impresora. Quiza necesite una funcion externa pero no se cual.
Les agradeceria enormemente su ayuda porque ahora estoy parado por ese asunto.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Setear impresora

Publicado por Ricardo (1957 intervenciones) el 13/05/2003 01:57:22
Basicamente las funciones de PRINT que necesitas utilizar son PRINTOPEN y PRINTCLOSE, para cuando seleccionas y envias la impresion con PRINTSEND (de forma manual).

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Setear impresora

Publicado por Oscar (1178 intervenciones) el 13/05/2003 02:24:07
Hola Javier:
PB, tiene las siguientes funciones para lo que buscas:
* PrintGetPrinters ( )
Permite obtener las impresoras instaladas;
Nota: Es mejor leer la lista de impresoras del regedit con RegistryKey.

* PrintSetPrinter(nombreimpresora)
Permite elegir la impresora que deseas usar.

Mejor te pongo un ejemplo concreto:
1. En una ventana insertá los siguientes controles:
- Un ListBox(lb_1), para ver la lista de impresoras.
- Un Botón, llamado Mostrar (cb_1), al pulsar te mostrará en el lb_1, la lista de impresoras.
- Un Botón, llamado Imprimir (cb_2)
2. El script del botón Mostrar (cb_1) es:
----------------------------------------
String impresoras[]
Int rtn,i,nbImpresoras

//Recupera las subentradas disponibles para una determinada clave
rtn=RegistryKeys("HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers",impresoras)

nbImpresoras=UpperBound(impresoras)
For i=1 To nbImpresoras
lb_1.AddItem(impresoras[i])
next
---------------------------------------
3. El script del botón Imprimir (cb_2) es:
---------------------------------------
PrintSetPrinter (lb_1.SelectedItem())

Ulong L
L=PrintOpen()
Print(L,"Hola Mundo")
PrintClose(L)
---------------------------------------
Nota: Por supuesto que te imprime con la impresora que selecciones en el lb_1.
Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Setear impresora

Publicado por Javier Prado (2 intervenciones) el 13/05/2003 05:47:34
Gracias a los dos. solo me faltaba el PrintOpen() y el PrintClose(). Pero aun tengo una duda.
No se porque la funcion printgetprinter() me devuelve los datos de mi ultima impresora. Osea yo tengo 4 impresoras en mi pc y a pesar que coloco por windows como predeterminada culaquier otra, siempre me sale la cuarta impresora por el printgetprinter(). he usado tambien el printopen() y el printclose() pero aun asi no me funciona.
¿Como puedo obtener los datos de la impresora predeterminada o seleccionada(drivers,puerto)?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Setear impresora

Publicado por juan (89 intervenciones) el 13/05/2003 17:43:58
Creo que el problema es que la impresora que eliges por defecto en power no tiene nada que ver con la la impresora por defecto de windows, pueden ser diferentes. Es como si power se hiciera una copia de las impresoras que hay instaladas asi aunque modifiques las propiedades de alguna sólo las modificas para tu sesion de power no del sistema.
Corregirme si me equivoco y asi aprendemos un poco todos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Setear impresora

Publicado por Oscar (1178 intervenciones) el 13/05/2003 20:26:04
En realidad, la función PrintGetPrinter(), sí obtiene el nombre de la impresora actual. Lo que sucede, (y esto está explicado en la ayuda de esta función), es que no reinicializa o no se libera de la memoria, cuando se ejecuta la aplicación.

Por ejemplo, si escribes el siguiente script, verás que te muestra el nombre de la impresora predeterminada.
--------------------------------------
String ls_fullstring=PrintGetPrinter()

String ls_driver, ls_temp

Long ll_place

ls_temp=mid(ls_fullstring, ll_place +1)

ll_place=pos (ls_temp, "~t")

ls_driver=left(ls_temp, ll_place -1)

//Ver el nombre
sle_1.text=ls_driver
--------------------------------------
Nota: Si cambias a otra impresora como predeterminada, tienes que cerrar PB y ejecutar nuevamente tu aplicación. Entonces, buscá algo para que te resete o destruya esa variable; por ahí debe haber algo de eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Setear impresora

Publicado por eduardo.v (208 intervenciones) el 13/05/2003 22:30:56
Bueno te comento yo hace algun tiempo tuve un problema similar y al no poder encontrar la solucion lo que hice es almacenar los datos de las impresoras PrintGetPrinters() en una estructura de tipo array y luego en el selectionchanged de mi ddplb llamaba a una funcion local que me devolvia los datos de la impresora seleccionada.
Ya que es un poco ortodoxo, pero fue la unica forma de tener los datos automaticamente. Espero que te sirva.
Saludos desde Peru
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mostrar impresora predeterminada

Publicado por Oscar (1178 intervenciones) el 14/05/2003 06:01:35
Como la función PrintGetPrinter() de PB, no se puede resetear, acá tienes una manera simple de averiguar la impresora predeterminada (en Win 98, en el resto de los Win, sólo te fijas en el regedit : HKEY_CURRENT_CONFIG.). Puedes cambiar la veces que quieras las impresoras y siempre te mostrará la predeterminada:
---------------------------------------------------------------
String predeterminada
RegistryGet("HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\Print\Printers","Default",predeterminada)

//Imprimes el resultado por ejemplo en un static Text
st_1.text=String(predeterminada)
----------------------------------------------------
Bye.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar