使用 SET PRINTER TO NAME 命令列印到 Visual FoxPro 中指定的印表機

本文介紹如何使用 SET PRINTER TO NAME 命令列印到指定的印表機。

原始產品版本: Visual FoxPro
原始 KB 編號: 162798

摘要

為了指定 Visual FoxPro 報表應傳送至特定印表機,自定義變更 Windows 預設印表機,或在命令上REPORT使用 PROMPT 子句來允許使用者選取印表機。 不過,您可以變更所需的目的地印表機,而不需要使用其中一種技術。 本文說明一些使用 SET PRINTER TO NAME [印表機名稱] 來執行此作業的方法。

其他相關資訊

SET PRINTER TO NAME 命令可讓 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.0b 下, GETPRINTER() 對話框不同,而且對話框允許變更直向/橫向設定等等。 列印報表時會忽略這些專案。

範例 2

下列程式會顯示自定義表單,其中包含以 APRINTERS () 建立的陣列填入的下拉式清單。 如果您選擇 [列印報表] 命令按鈕,則會將名為 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 說明