Use el comando SET PRINTER TO NAME para imprimir en una impresora especificada en Visual FoxPro.
En este artículo se presenta cómo usar el comando SET PRINTER TO NAME para imprimir en una impresora especificada.
Versión original del producto: Visual FoxPro
Número de KB original: 162798
Resumen
Para especificar que un informe de Visual FoxPro debe enviarse a una impresora determinada, es habitual cambiar la impresora predeterminada de Windows o usar la PROMPT
cláusula en el REPORT
comando para permitir que el usuario seleccione la impresora. Sin embargo, es posible cambiar la impresora de destino deseada sin usar ninguna de estas técnicas. En este artículo se explican algunos métodos para hacerlo mediante SET PRINTER TO NAME [nombre de la impresora].
Más información
El comando SET PRINTER TO NAME permite que la impresora seleccionada actualmente en Visual FoxPro se establezca en cualquier impresora instalada en Windows. La lista de impresoras instaladas se puede leer en una matriz con la APRINTERS()
función o el cuadro de diálogo puede devolver un único nombre de GETPRINTER()
impresora.
Nota:
Para que este procedimiento funcione, el formulario de informe debe guardarse con la impresora predeterminada seleccionada en el cuadro desplegable Nombre del cuadro de diálogo Configurar impresión. Se llama a este cuadro de diálogo desde el cuadro de diálogo Configuración de página que se encuentra en el menú Archivo.
Ejemplo 1
El siguiente programa muestra el cuadro de diálogo para permitir la GETPRINTER()
selección de una impresora de las impresoras instaladas. Si se selecciona Aceptar en el cuadro de diálogo GetPrinter , se envía un informe denominado Prueba a la impresora seleccionada. Si el botón Cancelar está seleccionado en el cuadro de diálogo GetPrinter , el informe no se imprimirá.
* Beginning of program for Example 1
* *******************************************************
* This program assumes a report called Test which has been
* saved with the default printer in the Print Setup dialog.
*
LOCAL lcPrinter
lcPrinter = ''
lcPrinter = GETPRINTER()
IF !EMPTY(lcPrinter)
SET PRINTER TO NAME (lcPrinter)
REPORT FORM Test TO PRINTER NOCONSOLE
ELSE
WAIT WINDOW 'Print Job Cancelled' TIME 1
ENDIF
*
* End of program for Example 1
Nota:
En Visual FoxPro 3.0 y 3.0b, el GETPRINTER()
cuadro de diálogo es diferente y el cuadro de diálogo permite cambiar la configuración vertical o horizontal, entre otros. Se omiten cuando se imprime el informe.
Ejemplo 2
El programa siguiente muestra un formulario personalizado que tiene una lista desplegable rellenada con una matriz creada con APRINTERS(). Si elige el botón de comando "Imprimir informe", se envía un informe denominado Prueba a la impresora seleccionada. Si elige el botón Cancelar, el informe no se imprimirá.
* Beginning of program for Example 2
*********************************************************
* This program assumes a report called Test which has been
* saved with the default printer in the Print Setup dialog.
*
PUBLIC oform
oform=CREATEOBJECT("form1")
oform.SHOW
DEFINE CLASS form1 AS FORM
AutoCenter = .T.
Height = 158
Width = 327
Caption = "Printer Dialog"
Name = "Form1"
DIMENSION aprintarray[1]
ADD OBJECT combo1 AS COMBOBOX WITH ;
ROWSOURCETYPE = 5, ;
ROWSOURCE = "thisform.aPrintArray", ;
HEIGHT = 25, ;
LEFT = 24, ;
STYLE = 2, ;
TOP = 48, ;
WIDTH = 276, ;
NAME = "Combo1"
ADD OBJECT command1 AS COMMANDBUTTON WITH ;
TOP = 108, ;
LEFT = 48, ;
HEIGHT = 27, ;
WIDTH = 84, ;
CAPTION = "Print Report", ;
DEFAULT = .T., ;
NAME = "Command1"
ADD OBJECT command2 AS COMMANDBUTTON WITH ;
TOP = 108, ;
LEFT = 180, ;
HEIGHT = 25, ;
WIDTH = 84, ;
CANCEL = .T., ;
CAPTION = "Cancel", ;
NAME = "Command2"
PROCEDURE combo1.INIT
LOCAL lnI
FOR lnI = 1 TO APRINTERS(THISFORM.aprintarray)
* Note below that you are adding a leading space. This
* prevents a network printer in Windows NT from appearing
* disabled in the combo due the leading "\"
THISFORM.aprintarray[lnI,1] = SPACE(1) + ;
THISFORM.aprintarray[lnI,1]
ENDFOR
* Set initial value of combo
THIS.Requery()
IF '5.0' $ VERSION()
* This sets the combo initial value of the dropdown to the
* default printer - This will not work in 3.0/3.0b since
* SET('PRINTER', 2) is not available
FOR EACH a_element IN THISFORM.aprintarray
IF UPPER(SET('PRINTER',2))$UPPER(a_element)
THIS.Value = a_element
ENDIF
ENDFOR
ELSE
* If in 3.0/3.0b, set to first element in list.
THIS.Value = THISFORM.aprintarray[1]
ENDIF
ENDPROC
PROCEDURE command1.CLICK
SET PRINTER TO NAME (ALLTRIM(THISFORM.combo1.VALUE))
REPORT FORM test TO PRINTER NOCONSOLE
RELEASE THISFORM
ENDPROC
PROCEDURE command2.CLICK
RELEASE THISFORM
ENDPROC
ENDDEFINE
*
* End of program for Example 2
Referencias
- Ayuda de Visual FoxPro 5.0
- Ayuda de Visual FoxPro 6.0