关于实时打印的问题

sailerbai 2001-05-22 10:48:00
各位兄台,小弟有个很棘手的问题,请各位指教:我想在pb下实现下面一个功能:让打印机在有一条记录时,就打印一条记录,但不把纸走完,知道打满一页才打印下一张纸。
...全文
180 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sailerbai 2001-06-04
  • 打赏
  • 举报
回复
谢谢各位了
由于我的打印机时激打的
所以
这个问题好像不能解决
不过还是谢过大家了!
billxia 2001-06-01
  • 打赏
  • 举报
回复
打印时能使纸回退,打印完之后能能让纸前进一些,
适合于打票据的单位,一定试试呀!灵的
long job,temp
job=printopen()
printsend(job,"~h1B~h6A~254")
printsend(job,"~h1B~h6A~100")
printsend(job,"~h1c~h78~h01")
printsend(job,"~h1B~h43~h01")
print(job,"")
temp=printdatawindow(job,dw_print) /*dw_print是要打印的数据窗口*/
printclose(job)
Job = PrintOpen()
printsend(job,"~h1B~h43~h13")
printclose(job)

转载从:xingjiaren(Sandy) 

billxia 2001-06-01
  • 打赏
  • 举报
回复
98里:
string ls_key9x = "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print\Printers\"

blob lblb_data
ls_key9x = ls_key9x + ls_default
if RegistryGet ( ls_key9x, "Default DevMode",RegBinary!, lblb_data) <> 1 then
return -1
end if
if ai_type = 0 and ai_width >0 and ai_length >0 then
blobedit(lblb_data,47,156)
blobedit(lblb_data,49,ai_width)
blobedit(lblb_data,51,ai_length)
else
blobedit(lblb_data,47,ai_type)
end if
RegistrySet(ls_key9x,"Default DevMode",RegBinary!,lblb_data)
sailerbai 2001-06-01
  • 打赏
  • 举报
回复
还有没有其他的办法
设法让打印机做的实时打印
就是说 有一条记录就打一条
纸也不多走
我听说不是有退纸的控制语句嘛
还希望大家多指点!
sailerbai 2001-06-01
  • 打赏
  • 举报
回复
感谢tmx(林欢儿) pbworm(pb菜鸟) zzjacky(拨剑四顾)
to billxia() 不知“设置打印机的自定义打印页大小,
让高度正好是一行 ”在那里设置,是在打印机的设置中吗?

to zzjacky(拨剑四顾)
不知这个调节纸张的控件怎么实现,还请大虾指教!
billxia 2001-05-31
  • 打赏
  • 举报
回复
设置打印机的自定义打印页大小,
让高度正好是一行
tmx 2001-05-31
  • 打赏
  • 举报
回复
将行中的数据转换成一个字符串来打印实在用处不大,不知pbworm(pb菜鸟)对工资本、保险卡有无体会。
pbworm 2001-05-31
  • 打赏
  • 举报
回复
我说一个思想:
1、先判断一下一页中有多少行,可以使用count * for page来得到。
2、使用printopen来打开一个作业。
3、读出数据窗口中的一行,将这行中的数据转换成一个字符串,使用printtext来打印一行。
4、判断是否为最后一行,是:使用printpage;否:转到3。
5、关闭打印作业。

太麻烦了,不知其他的大虾有没有什么好的方法。
xingjiaren 2001-05-31
  • 打赏
  • 举报
回复
需要用语句控制,不是一句两句就能说清楚的
你问斑竹流方,去访问他的主页看看
tmx 2001-05-31
  • 打赏
  • 举报
回复
数据窗口打印原理就是以页为单位,“每次打印的时候,不论有多少数据,打印机都是打完一
页纸,不是说当记录未满一页时,就停留在下一行的位置”,的确这样,我的思路:
第一次打印3行,数据窗口记录有3条记录,打印纸继续走完,第二次打印时又有5行,这时数据
窗口应该有8条记录,其中前3条为空白记录,后5条才是真正记录,又把这章纸放入打印即可,
注意这个数据窗口只用于打印,不要存盘。
给分方法:
1、自己发一个感谢语或问题结语;
2、输入口令
3、给回复的他人打分,所给分总和必须等于问题分数,不能多也不能少,不能给自己分;
4按“给分”按钮。
zzjacky 2001-05-31
  • 打赏
  • 举报
回复
偶的一个笨办法:
在打印的提示窗口上,放置一个可以调节纸张的控件,
然后通过修改纸张的长度来达到目的。
不知各位还有什么更好的方法。
sailerbai 2001-05-31
  • 打赏
  • 举报
回复
怎么每人帮我啊?
sailerbai 2001-05-22
  • 打赏
  • 举报
回复
to tmx()
我还是有一点没有懂,就是每次打印的时候,不论有多少数据,
打印机都是打完一页纸,不是说当记录未满一页时,就停留在
下一行的位置,我该怎么办呢?
还有一点,我怎么把分给你,还请提示!
tmx 2001-05-22
  • 打赏
  • 举报
回复
PB中的数据操作以数据窗口为基础,不能实现你的要求,建议你采用下面方法:
借助于一个临时数据窗口,在下次打印时,判断前面的行是否已经打印,如果已经打印则打印
空行,如果一页打印完成后还有记录没有打印,则提示换页,从新页第一行开始打印,每页中
间的折缝可以空走一行,每页行数相对固定,而数据窗口中数据不需存盘,银行的工资册打印
就是这个原理。

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧