本文主要是介绍VFP不安装打印驱动直接调用打印而且不自动进纸,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
之前程序要打印都是利服报表(report),设置好打印格式后,就调用report from 来打印,这样有其优点就是更改打印格式容易,但缺点是一定要安装打印机,而且要设好纸张,比如设好了A4纸,那么打印时每走一张A4纸高度就会自动进纸重新打第二页,而且打印驱动通常都自动设了页边距,这部份页边距不同于打印时设置的那些页边距,驱动中设有的页边距是不可调的,也就是说,要想打一页纸从最上边一直打印到最下面是不可能的,他总是会留下一定的上边距下页距.
这对于要一此特殊的情况就不适用了,比如POS的打印,大多的POS打印机都没有打印驱动的,就算有要找也麻烦,找了还要装,重装了电脑,又要重装驱动,这样对于一套软件来说,其维护的成本无形就增大了,而且中国人节约的优良传统也是其最大的障碍,很多公司都要打日记帐,一打就是几十页甚至几百页,如果每一页都留有上下边距,那无形中就是一个很大的浪费,正因为此,就引申出了今天这个文章.
旧版本的VFP是用@ Say 来送出打印的,这个功能一直被继承到了现在,要实现不用驱动,直接打印,最主要就是利用@ Say 把所要打印的内容送到一个*.PRN打印文件中,然后,再把这个文件复制到LTP的打印口,就可以了.代码如下.
SrPrint()
SET SAFETY OFF
SET DEVICE TO FILE output.prn &&生成打印文件
SELECT 0
USE _lj
Gs1=ALLTRIM(Gs_F)
USE
@ PROW(),0 SAY GS1+IIF(EMPTY(_Spdjhc1.Sm1_F)," 草稿","")
@ PROW()+1,0 SAY "小票清单"
@ PROW()+1,0 SAY "日期:"+DTOC(DATE())+" 收银:"+ALLTRIM(_Spdjhc1.P_Zdr_F)
@ PROW()+1,0 SAY _Spdjhc1.Sm1_F+" 会员:"+ALLTRIM(_Spdjhc1.P_Hy_F)
@ PROW()+1,0 SAY "──────────────"
@ PROW()+1,0 SAY " 品名 批号"
@ PROW()+1,0 SAY " 厂家"
@ PROW()+1,0 SAY " 批准文号"
@ PROW()+1,0 SAY " 数量 售价 售额"
@ PROW()+1,0 SAY "──────────────"
SELECT _Spdjhc2
SCAN FOR NOT EMPTY(Spzd_Sp_F)
@ PROW()+1,0 SAY PADR(LEFT(_Spdjhc2.P_Sp1_F,20),20," ")+ALLTRIM(_Spdjhc2.Scph_F) &&商品 批号
@ PROW()+1,0 SAY ALLTRIM(_Spdjhc2.P_Kh1_F) &&厂家
@ PROW()+1,0 SAY ALLTRIM(_Spdjhc2.Pzwh_F) &&批准文件号
@ PROW()+1,0 SAY ALLTRIM(STR(_Spdjhc2.Sl_F,20,4)) &&数量
@ PROW(),9 SAY ALLTRIM(STR(_Spdjhc2.Xsdjhs_F,20,2)) &&售价
@ PROW(),18 SAY ALLTRIM(STR(_Spdjhc2.Xsjehs_F,20,2)) &&金额
@ PROW()+1,0 SAY "──────────────"
ENDSCAN
@ PROW()+1,0 SAY "应收:"+ALLTRIM(STR(_SPDJHC1.sxlj_F,20,2))+" 实收:"+ALLTRIM(STR(_SPDJHC1.TETSSJE_F,20,2))
@ PROW()+1,0 SAY "找零:"++ALLTRIM(STR(_SPDJHC1.TETSSJE_F-_SPDJHC1.sxlj_F,20,2))
@ PROW()+2,0 SAY ""
@ PROW()+1,0 SAY ""
SET DEVICE TO SCREEN
COPY FILE output.prn TO lpt1.dos &&送到LPT1打印口
SET SAFETY ON
这篇关于VFP不安装打印驱动直接调用打印而且不自动进纸的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!