使用 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 說明