Amigo Pupo.
Este código lo tengo en un botón, (en el click claro!)
Muestra el cuadro de diálogo de windows que te permite seleccionar una impresora. En el código, (suelo hacerlo para no olvidarlo), coloqué una explicación para mi mismo, porque a veces con tantas cosas, cuando pasa el tiempo lo olvido. Pero es básicamente por el problema que hemos tenido muchos, cuando en un informe se estable una impresora predeterminada.
El problema es que a veces tenemos una predeterminada, pero VFP busca la que está en el entorno del frx.
Revisa el código y los comentarios.
Espero te sean útiles y a todos a quienes les pueda servir
*------------
* GETPRINTER Muestra el cuadro de dialogo de impresoras disponibles
Impresora = ALLTRIM(GETPRINTER( ))
* Si selecciona una Muestra la impresora seleccionada ***
* Y luego la pone como predeterminada
IF EMPTY(Impresora)
WAIT 'No seleccionó Impresora' WINDOW AT 3,45
ELSE
cMensaje = 'Ahora la impresora Predeterminada será'+ CHR(13)+;
'La impresora: '+ Impresora
WAIT cMensaje WINDOW AT 3,45
ws = Createobject("WScript.Network")
ws.SetDefaultPrinter(Alltrim(Impresora))
RELEASE ws && lo libero de memoria.
ENDIF
* En cada botón que mande a imprimir debo decirla la impresora que va
* a usar diciendo SET PRINTER TO NAME ((variable)))
* Entonces puedo seleccionar una con el promt cada vez que va a imprimir
* o puedo tener una predeterminada para ese reporte.
* El problema que tenía es que el reporte guarda en su entorno (si uno quiere,
* el nombre de la impresora. Por eso es necesario cambiar las propiedades de
* los reportes para que no guarde la impresora en el entorno del reporte o
* informe.
* Esto se hace haciendo click derecho sobre el reporte se despliega una ventana
* que contiene en la parte inferior un control check box que dice
* Save printer enviroment, lo que significa guardar la impresora en el
* entorno (del reporte).
*
* si se coloca de esa manera (sin guardar la impresora) entonces se dirige
* el reporte a la impresora predeterminada por el sistema operativo.
* Se puede también cambiar la impresora predeterminada con un simple botón
*
* y se puede poner para que imprima con la predeterminada Así:
* SET PRINTER TO NAME ((SET("PRINTER",2))) o también se puede
* seleccionar una impresora cuyo nombre se guarda en una varible y luego le digo
* SET PRINTER TO NAME ((variable)))
* Ahora si quiero mostrar la impresora que va a usar antes
* o también si seleccioné otra se puede ver
* SET PRINTER TO NAME ((SET("PRINTER",3)))
* cambiando el valor 2 x 3 se ve la predeterminada para VFP con
* SET PRINTER TO NAME
*
Saludos
Elides Paredes
Barquisimeto Venezuela.