從這個Expr備注型字段里可以看出:PAPERSIZE=256 這里的256表示是自定義紙張,如果:
PAPERSIZE=9 為A4、11為A5 具體數(shù)據(jù)見VFP幫助的Printfo()一節(jié), 而:
PAPERLENGTH=1000 (紙張長度)
PAPERWIDTH=1600 (紙張寬度)
則分別代表自定義紙張的長度和寬度。 之所以會出現(xiàn)上面提到的問題,是因為系統(tǒng)重新安裝打印機后,WIN系統(tǒng)一般默認的是A4打印紙,與我們設計時保存在.frx文件里的紙張不符,因而造成這種情況。 那么如何避免出現(xiàn)這個問題呢?
下面是一段檢測紙張類型的代碼,供您參考:
這段代碼必須放在執(zhí)行report form ... 命令前。
use xxx.frx in 0 ALIAS mPrint &&在空閑工作區(qū)以mPrint別名打開xxx.frx文件
x=atcline('PAPERSIZE',mPrint.Expr) &&取得PAPERSIZE在Expr字段中的行
sSIZE=subs(mline(mPrint.Expr,x),11) &&取得設計時保存的紙張類型
mSIZE=allt(str(Prtinfo(2))) &&取得當前打印機默認的紙張類型
x=atcline('PAPERLENGTH',mPrint.Expr) &&取得紙張長度在Expr字段中的行
sLEN=subs(mline(mPrint.Expr,x),13) &&取得紙張長度
x=atcline('PAPERWIDTH',mPrint.Expr) &&取得紙張寬度在Expr字段中的行
sWIDTH=subs(mline(mPrint.Expr,x),12) &&取得紙張寬度
use in 'mPrint' &&關閉xxx.frx文件
if sSIZE=mSIZE &&如果相符,則正常打印
report form xxx.frx to printer
else
Messagebox('請設定打印機紙張為自定義:長='+sLEN+',寬='+sWIDTH,0+48+0,'提示')
report form xxx.frx to printer prompt &&打印前先打開打印機設置對話窗口
endi
5.不讓打印的結果顯示在屏幕上
report form xxx.frx to printer Noconsole
6.打印或打印預覽時,如何使系統(tǒng)打印工具條不出現(xiàn) 系統(tǒng)提供的打印工具條,我們無法檢測其各按鈕的事件,不能掌握用戶當時操作的情況,那如何不讓它出現(xiàn)呢?
首先您得做一個表單(最好是模式表單),用于代替系統(tǒng)的預覽窗口(Preview),然后:
do form dybd &&打開這個表單
report form xxx.frx windows dybd
這樣系統(tǒng)提供的打印工具條就不會出現(xiàn)了。
當然如果自己再做個類似于打印工具條的類,既可掌握按鈕事件又美觀就更好了,注:經(jīng)查VFP3.0可能沒有windows子句。