Share via


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