如下所示,在用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函数设定自定义纸张。你可以找下,网上应该不少