本文介绍如何使用 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 帮助