当前位置: 代码迷 >> PB >> 动态行数 怎么自定义打印 不能分页
  详细解决方案

动态行数 怎么自定义打印 不能分页

热度:123   发布时间:2016-04-29 09:13:49.0
动态行数 如何自定义打印 不能分页
如下所示,在用powerbuilder 8.0做一个患者结算详细清单时,因药品条数不固定,所以打印单高度不能固定,但不能分页,必需用一页纸进行打印,纸宽度为12mm,页眉和页脚加上表格头总共5行,高度为30mm,具体药品每行为7mm, 所用打印机为LQ-300K, 下面为我所实现代码,但打印时,打印机都会多走出100mm的距离,不知为什么,可能是我的代码有问题,请指出。或提供一个更好的解决办法。谢谢。分不够可以在加。
  long ll_job_js  
ll_job_js = printopen()  
if ll_job_js = -1 then  
messagebox("提示","打印机未准备好")  
return  
else 
long dw_5row
dw_5row=dw_5.rowcount()//统计算出行数
//定制行距1/8英寸 1/8英寸 = 0.125 英寸 = 3.175 毫米
PrintSend(ll_job_js, CHAR(27)+CHAR(48))  
  //计算总行数
decimal d_printrow
d_printrow=Ceiling((30+7*dw_5row) / 3.175) //30为页眉和页脚的高度mm
  //CHAR(Int(d_printrow)为行数,可以改变他以实现打印高度
  PrintSend(ll_job_js, CHAR(27)+CHAR(67)+CHAR(Int(d_printrow))) //
//必须使用printdatawindow,这样才能利用刚才设置的打印控制码
printdatawindow(ll_job_js,dw_5)  
/*换页*/
printsend(ll_job_js,char(27)+char(12))
PRINTCLOSE(ll_JOB_js)
//RETURN 1
//用纸的高度除以3.175求出行数
end if

------解决方案--------------------
对计算列celing(rowCount/5)进行分组,正好可以最多每页5行
------解决方案--------------------
printsend这和打印机的驱动有关啊,你以前试过这个LQ-300K用你这样的代码可以控制吗?9.0.3以后应该可以直接设置纸长,之前最好用api函数设定自定义纸张。你可以找下,网上应该不少
  相关解决方案