Cómo usar el comando establecer impresora a nombre para imprimir en una impresora especificada en Visual FoxPro


Resumen


Para especificar que un informe de Visual FoxPro debe enviarse a una impresora en particular, es habitual cambiar la impresora predeterminada de Windows o usar la cláusula PROMPT en el comando del informe para permitir al usuario seleccionar 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 usando establecer impresora como nombre [nombre de impresora].

Más información


El comando establecer impresora a nombre permite que la impresora seleccionada en Visual FoxPro se establezca en cualquier impresora instalada en Windows. La lista de las impresoras instaladas puede leerse en una matriz con la función APRINTERS (), o el cuadro de diálogo GETPRINTER () puede devolver un único nombre de impresora.Nota: para que este procedimiento funcione, el formulario de informe debe guardarse con la impresora predeterminada seleccionada en el cuadro de lista desplegable nombre del cuadro de diálogo Configurar impresión. Este cuadro de diálogo se llama desde el cuadro de diálogo Configurar página que se encuentra en el menú archivo.

Ejemplo 1

El siguiente programa muestra el cuadro de diálogo GETPRINTER () para permitir la selección de una impresora desde las impresoras instaladas. Si selecciona Aceptar en el cuadro de diálogo GetPrinter, se envía un informe denominado prueba a la impresora seleccionada. Si se selecciona el botón Cancelar en el cuadro de diálogo GetPrinter, el informe no se imprime.
   * 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
Notas: en Visual FoxPro 3,0 y en la versión 3 b, el cuadro de diálogo GETPRINTER () es diferente y el cuadro de diálogo permite cambiar la configuración vertical u horizontal, entre otras. Estos se omiten cuando se imprime el informe.

Ejemplo 2

El programa siguiente muestra un formulario personalizado que tiene una lista desplegable 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


Visual FoxPro 5,0 HelpVisual FoxPro 6,0 Help