使用 SET PRINTER TO NAME 命令在 Visual FoxPro 中打印到指定的打印机

本文介绍如何使用 SET PRINTER TO NAME 命令打印到指定的打印机。

原始产品版本: Visual FoxPro
原始 KB 数: 162798

总结

若要指定 Visual FoxPro 报表应发送到特定打印机,通常更改 Windows 默认打印机或使用 PROMPT 命令上的 REPORT 子句允许用户选择打印机。 但是,无需使用这些技术之一即可更改所需的目标打印机。 本文介绍使用 SET PRINTER TO NAME [打印机名称] 执行此操作的一些方法。

详细信息

SET PRINTER TO NAME 命令允许 Visual FoxPro 中当前选定的打印机设置为在 Windows 下安装的任何打印机。 已安装的打印机列表可以读入具有 APRINTERS() 函数的数组,或者对话框可以返回 GETPRINTER() 单个打印机名称。

注意

要使此过程正常工作,必须将报表表单保存并指定打印设置对话框中名称下拉框选择的默认打印机。 从“文件”菜单下的“页面设置”对话框调用此对话框。

示例 1

以下程序显示 GETPRINTER() 对话框,以允许从已安装的打印机中选择打印机。 如果在 GetPrinter 对话框中选择了“确定”,则会向所选打印机发送名为“测试”的报告。 如果在 GetPrinter 对话框中选择了“取消”按钮,则不会打印报表。

 * 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

注意

在 Visual FoxPro 3.0 和 3.0b 下,GETPRINTER() 对话框不同,该对话框允许更改纵向/横向设置等功能。 打印报表时将忽略这些值。

示例 2

以下程序显示一个自定义窗体,其中的下拉列表由APRINTERS()函数生成的数组填充。 如果选择“打印报表”命令按钮,则会向所选打印机发送名为“测试”的报表。 如果选择“取消”按钮,则不会打印报表。

 * 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

参考

  • Visual FoxPro 5.0 帮助
  • Visual FoxPro 6.0 帮助