使用 "将打印机设置为名称" 命令在 Visual FoxPro 中打印到指定打印机

本文介绍如何使用 "将打印机设置为名称" 命令打印到指定打印机。

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

摘要

为了指定将 Visual FoxPro 报告发送到特定打印机,习惯于更改 Windows 默认打印机或使用 PROMPT 命令上的子句, REPORT 以允许用户选择打印机。 但是,可以更改所需的目标打印机,而无需使用这些技术中的任何一种。 本文介绍使用 "将打印机设置为名称 [打印机名称]" 来执行此操作的一些方法。

更多信息

"将打印机设置为名称" 命令允许将 Visual FoxPro 中当前选定的打印机设置为安装在 Windows 下的任何打印机。 已安装的打印机列表可以通过函数读入阵列 APRINTERS() ,也可以通过对话框返回单个打印机名称 GETPRINTER()

备注

若要执行此过程,必须使用在 "打印设置" 对话框内的 "名称" 下拉框中选择的默认打印机保存报告表单。 此对话框从 "文件" 菜单下的 "页面设置" 对话框中调用。

示例 1

下面的程序显示了 GETPRINTER() 允许从已安装打印机中选择打印机的对话框。 如果在 GetPrinter 对话框中选择了 "确定",则会向所选打印机发送名为 Test 的报告。 如果在 " 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.0 b 下,该 GETPRINTER() 对话框是不同的,对话框允许更改纵向/横向设置,以及其他。 打印报表时,将忽略这些情况。

示例 2

下面的程序显示一个自定义窗体,其中包含一个使用 APRINTERS 创建的数组,其中包含一个由 ( # A1 创建的数组。 如果选择 "打印报告" 命令按钮,则会向所选打印机发送名为 Test 的报告。 如果选择 "取消" 按钮,则不会打印报告。

 * 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 帮助