多数据窗口的打印?

yemian 2002-07-25 05:24:09
各位大虾:
我想做一个打印的菜单项,可以分别打印所有窗口的数据窗口,每个窗口当中只有一个数据窗口。不知该怎么做。
我想尝试用一个变量将数据窗口的名字传给printdatawindow(),可是发现printdatawindow()的参数不支持变量。该怎么办?
...全文
44 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
海洋‘s 2002-07-25
  • 打赏
  • 举报
回复
我给你一个精确打印的例子吧:
pb中定制打印页长
  在使用连续纸打印数据窗口的情况下,需要定制打印的页长,以保证打印机走纸正确,不用人工干预,实现连续打印。在PB中须调用外部函数来自定义纸张长度,比较繁琐。本文介绍一种直接对打印机的控制方法,简单实现对页长的设定。
一、 预备知识
计算机与打印机的通讯使用ASCII码进行,其中标准ASCII码包括可打印字符及非打印字符(控制码),打印机使用控制码来定制打印机。大多数打印机指令使用控制码escape作为其指令序列的第一个序列码。下面介绍本文用到的几个指令码序列:
设置换行量(行距)1/8 英寸
ASCII码 ESC 0
十进制码 27 48
设置以行为单位的页长
ASCII码 ESC C n
十进制码 27 67 n
其中n 为每页行数范围(1-127)
二、 PB中控制码的传送及定制页长的实现
在PB中通过函数Printsend(printjobnumber,string,{zerochar})来实现向打印机发送控制码。各参数定义如下: printjobnumber: 由printjob()函数返回的打印作业号;
string: 控制字符串,使用ASCII码;
zerochar: 用来替代string中的数字0;
由于字符串中,0终止字符串,如果string
中包含0,则需利用其他字符来表示0,参数zerochar即为此用途而设,当PB发送控制字符串给打印机时,把替代的字符zerochar转化为0。
下面是具体的完成定制页长打印数据窗口的程序(定制页长为2.75英寸):
long ll_job
dw_print.reset()
ll_job = printopen()
if ll_job = -1 then
messagebox(gs_title,"打印机未准备好")
return
end if
//定制行距1/8英寸
PrintSend(ll_job, CHAR(27)+CHAR(48))
//设定页长22行
PrintSend(ll_job, CHAR(27)+CHAR(67)+CHAR(22))
printdatawindow(ll_job,dw_print)
printclose(ll_job)
flymeng 2002-07-25
  • 打赏
  • 举报
回复
1.可把每一个数据窗口都获取传到另一个窗口里(打印窗口选择),可以选择一个打一个。
2. 做一个函数,参数中要有datawindow dw_dw1,函数内容可以这样:

long job
job=printopen()
printdatawindow(job,dw_dw1)
printclose(job)
第一种方法我在用,第二种方法理论可行。

1,075

社区成员

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

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