Obtener nombre de la impresora seleccionada con programación en VFP9

Tengo el siguiente código para abrir el cuadro de diálogo de impresoras

loComDialog = newobject( "mscomdlg.commondialog" )
Locomdialog. ShowPrinter()

¿Cómo puedo guardar en una variable el nombre de la impresora que seleccione?

Antes había usado el GETPRINTER(), pero ese cuadro de diálogo no permite indicar cuantas copias necesito

1 respuesta

Respuesta
1

? "Impresora", SET ("Impresora", 2)
loComDialog = NewObject ("mscomdlg.commondialog")
loComDialog.ShowPrinter ()
? "Impresora", SET ("Impresora", 2)

Dale una revisada ha este código

en la parte que dice

? "Impresora", SET ("Impresora", 2)

¿en "impresora", debo poner el nombre la impresora?

mil disculpas el detalle es que el nombre de la impresora varía dependiendo de cual yo haya seleccionado, y es el que debo guardar en una variable para después enviarla a la instrucción SET PRINTER TO NAME variable_con_nombre_de_impresora_seleccionada

Le agradezco mucho nuevamente

En un formulario que llamo para seleccionar la impresora en el Init del formulario tengo el siguiente Código
Creo un cursor donde guardo el nombre de la impresora y la ubicación de la impresora la esto es para las impresoras conectadas en otros equipos
CREATE CURSOR impres(Nombre C(100), UbicaImpre C(100))
SELECT Impres
SCATTER MEMVAR BLANK
xLen = APRINTERS(ArrImpresora) && APRINTERS es una función que llena un arreglo bidimensional con las impresoras Instaladas en el equipo y también
&& devuelve el numero de impresoras Primera Columna Nombre de la impresora Segunda columna ubicación de la impresora
IF xLen = 0
RETURN
ELSE
** Con este For Guardo las Impresoras en el cursor que luego puedes mostrar en Combo Box o en un List Box
FOR por = 1 TO xLen
m.Nombre = UPPER(ArrImpresora[por,1])
m.UbicaImpre = ArrImpresora[x,2]
INSERT INTO impres FROM MEMVAR
NEXT
ENDIF
Una vez Seleccionada la Impresora debes comprobar si es una impresora local o instalada en otro equipo de la red. Esto lo haces mirando si el primer caracter de la ubicación de la impresora es una barra invertida \
IF LEFT(Impres.UbicaImpre,1) = "\"
cfgNomImpresora = ALLTRIM(Impres.UbicaImpre) && impresora en otro equipo
ELSE
cfgNomImpresora = ALLTRIM(Impres.Nombre) && Impresora Local
ENDIF
ya lo que queda es indicar al programa hacia donde enviar le impresión se coloca entre paréntesis para que haga una macro sustitución.

Copia de otro foro

Buen día, muchísimas gracias!!, voy a probar este código al parecer me servirá de mucho.

Le agradezco nuevamente y ojala cuente con su apoyo nuevamente para alguna otra duda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas