社区
PowerBuilder
帖子详情
如何实现逐份打印/非逐份打印控制。
ttjvip
2005-01-01 02:43:10
如何实现逐份打印/逐份打印控制?
...全文
1470
8
打赏
收藏
如何实现逐份打印/非逐份打印控制。
如何实现逐份打印/逐份打印控制?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cxwsoftware
2005-01-03
打赏
举报
回复
何不自己编写一个子程序呢!
hchi0118
2005-01-02
打赏
举报
回复
up
tw829
2005-01-02
打赏
举报
回复
楼主问题:问的很模糊,无法回答!
tw829
2005-01-02
打赏
举报
回复
楼主问题:问的很模糊!
zhangdatou
2005-01-01
打赏
举报
回复
PowerBuilder下DataWindow的打印控制技术
--------------------------------------------------------------------------------
在PowerBuilder中,如果我们只是简单地调用Print()函数来打印报表,它会将DataW indow中的数据全部打印出来,而我们有可能只需要报表中的一部分,因而我们需要对这种打印方法予以改进。
改进后的打印
改进后,每次打印DataWindow前首先弹出一个信息框,提示用户准备什么格式的打印纸,用户确认后,马上给出一个选择窗口,请用户选择打印范围,用户选好范围,确定,即可进入打印进程。 图1
在打印过程中,同时显示打印进度窗口,提示当前打印进展状况, 允许用户随时中断打印过程。窗口格式为 图2
改进过程所使用的技术
改进技术中涉及的有关事件:
·PrintStart事件 DataWindow事件,每次DataWindow打印开始时 触发,系统同时传过来一个long型参数pagesmax,给出本次要打印的总页数。
·PrintPage事件DataWindow事件,在DataWindow每一页打印格式化前触发,系统同时传过来两个long型参数:一个是pagesprinted,给出当前打印页的页号;一个是copy,给出当前打印份数。此外该事件的返回值将控制本页是否被打印,若返回值为0则打印,值为1则将本页跳过。
·PrintEnd事件 DataWindow事件,每次DataWindow打印结束时触 发,系统同时传过来一个long型参数pagesprinted,给出本次实际打印的总页数。
改进技术中用户定义的全局变量:
·printtotalpage integer型变量,存放打印的总页数。
·printstartpage integer型变量,存放打印的起始页号。
·printendpage integer型变量,存放打印的终止页号。
·printpagesize string型变量,存放打印纸规格信息。
·printall boolean型变量,标记是否全部打印,是取值1、否取 值0。
·printcancel boolean型变量,标记是否取消打印,是取值1、否取值0。
改进技术中用户定义的函数:
·fn—dwprintstart()打印初始化函数,由PrintStart事件调用 。
主要功能:提示用户准备什么规格的打印纸,请用户选择打印范围 ,弹出打印状态显示窗口。
调用参数:一个是dw1,DataWindow型,传递本次打印的DataWindow ;
一个是maxpages,integer型,传递本次打印内容总页数;
返回值:integer型,正常打印为0,否则为-1。
·fn—dwprintpage()当前页打印控制函数,由PrintPage事件调 用。
主要功能:判断打印取消标志,即变量printcancel,如为真则取消本次打印;
否则判断当前页是否在用户选择的打印范围内,是则打印,否则跳过;
若打印,修改打印进度窗口中的打印进展信息。
调用参数:一个是dw1,DataWindow型,传递本次打印的DataWindow ;
一个是currentpage,integer型变量,传递当前打印页号;
返回值:integer型,打印0,跳过为1。
改进技术中用到的窗口:
·w—printdiag 打印会话窗口,为应答窗口,用户可通过它指定打印范围,以便确定printstartpage、printendpage两个变量的取值 。
·w—printing 打印状态显示窗口,为弹出式窗口,显示打印进展信息,用户可通过它终止打印过程,即将变量printcancel置为真。
有关程序脚本
1.fn—dwprintstart()函数的脚本
int i
/*弹出提示框,提示用户准备什么规格的打印纸 */
i=MessageBox("准备打印","请放好"+printpagesize+&"打印纸, 准备打印~n是否确定?",Question!,YesNo!,2)
/* 如果用户选择确定,则继续打印 */
if(i=1)then
/* 将全局变量printtotalpage赋值为本次打印总页
数赋值*/
printtotalpage=maxpages
/* 打开选择对话窗口*/
Open(w—printdiag)
/* 判断全局变量printcancel,若取值为假,则打开打印状态显示 窗口,继续打印*/
if(printcancel=false)then
Open(w—printing);
return(0)
end if
end if
/*取消本次打印,返回*/
dw1.printcancel
return(-1)
2.fn—dwprintpage()函数的脚本
/*变量skipit存放返回码,控制本页是否打印,为0则打印,为1则 跳过*/
int skipit;
/*判断全局变量printcancel,若取值为真,则取消本次打印,返回 */
if(printcancel=true)then
dw1.printcancel()
return(1)
end if
/*判断全局变量printall,若取值为真,则打印所有页,将skipit 同赋为0*/
if(Printall=true)then
skipit=0
elseif(currentpage>=printstartpage and currentpage<=prin tendpage)then
/*否则,判断当前页是否在指定的打印范围内,如是,则打印,将sk ipit赋为0*/
skipit=0
else
/*否则,跳过本页,将skipit赋为1*/
skipit=1
end if
/*若打印本页,则修改打印状态显示窗口中的打印进展信息*/
if skipit=0 then
w—printing.st—currentpage.text="正在打印第"+string(cur rentpage)&+"页,还剩"+string(printendpage-currentpage+1)+"页"
end if
/*返回skipit*/
return(skipit)
3.w—printdiag窗口中的脚本
open事件脚本:
/*先将打印范围取默认值,即打印起始页为1,终止页为最大页*/
em—start.text="1"
em—end.text=string(printtotalpage)
【确定】按钮clicked事件脚本:
double
i
//不取消本次打印,将全局变量printcancel置为假
printcancel=false
/*根据用户选择的打印范围,将全局变量printall、printstartp age、printendpag e初始化*/
if rb—all.checked then
printall=true
printstartpage=1
printendpage=totalpage
else
printall=false
em—start.getdata(i)
printstartpage=int(i)
em—end.getdata(i)
printendpage=int(i)
/*若用户指定的起始页大于终止页,提示用户重新输入,返回*/
if(printstartpage>printendpage)then
Messagebox("起止页号错误","请正确填写起止页码")
return
end if
/*根据用户指定的打印范围,修改打印总页数*/
totalpage=printendpage-printstartpage+1
end if
/*关闭w-printdiag窗口*/
close(parent)
【取消】按钮clicked事件脚本:
/*取消本次打印,将全局变量printcancel置为真,关闭w—printd iag窗口*/.
printcancel=true
close(parent)
4.w—printing窗口中的脚本
open事件脚本:
/*设置打印总页数提示信息*/
st—totalpage.text="打印内容共"+string(totalpage)+"页"
【取消】按钮clicked事件脚本:
/*取消本次打印,将全局变量printcancel置为真*/
printcancel=true
使用方法
使用本技术控制打印某个datawindow,只须完成下列工作:(在这里假设要打印的Dat aWindows是dw—1)
对dw—1的有关事件编写脚本:
PrintStart事件
/*调用打印初始化函数,并将本次打印的DataWindow及打印总页数传递给它*/
fn—dwprintstart(this,pagesmax)
PrintPage事件
/*调用当前页打印控制函数,并将本次打印的DataWindow及当前页数传递给它*/
fn—dwprintpage(this,pagesprinted)
PrintEnd事件
/*关闭打印状态显示窗口*/
close(w—printing)
用下列脚本与打印dw—1对应:
/*将打印纸规格信息存入全局变量printpagesize,调打印函数*/
printpagesize="××××××"
dw—1.print(false)
以上是一种实现打印控制的改进技术,从中可以领略到PowerBuil der提供了丰富的打印功能,只要我们把有关的函数、事件领会清楚, 灵活地去使用,即可达到预期的目的。
zhangdatou
2005-01-01
打赏
举报
回复
一楼说的有道理
nsqsmile
2005-01-01
打赏
举报
回复
哈哈,高
hygougou
2005-01-01
打赏
举报
回复
做个循环
打印放在循环里面做即可
打印
时候复选框勾选不见了_请取消勾选
逐份
打印
复选框
再点击“文件”--“
打印
”第二种:在工具栏中找到“
打印
”这个图案,点击进入第三种:快捷键“Ctrl + P”快速进入
打印
设置:1、
控制
打印
页码范围选定页码进行
打印
:在“页码范围”中选择“全部”,进行所有页的
打印
;...
LODOP纸张/
打印
机/份数/
打印
方向/双面
打印
简短问答
//设置为
非
逐份
打印
,1-1 2-2 3-3
打印
方向 #设置
打印
方向 横向纵向,参考http://blog.sina.com.cn/s/blog_721e77e5010143gh.html 设置
打印
方向,参考样例5 http://www.c-lodop.com/demolist/PrintSample5.html ...
简单实用的web
打印
方案-网页精准
打印
web
打印
多为业务场景的
打印
需求,比如直接
打印
,无预览直接
打印
,特定格式
打印
(
打印
标签、面单、票据、零售小票等)其难度在于如何将需要
打印
的内容,精确套打到标签、票据中,精确
控制
分页,并
实现
高速连续
打印
。...
打印
机:PJL PCL,使用PJL指令在PCL
打印
机上
控制
打印
任务
在PCL(Printer Control Language)
打印
机上,可以使用PJL指令来
控制
...总结起来,PJL PCL
打印
机提供了一种强大的
控制
打印
任务的方式,通过使用PJL指令,可以
实现
对
打印
机各个方面的灵活
控制
,从而满足不同的
打印
需求。
C语言循环
打印
空心正方形代码
实现
注释已经对代码进行了详细解释,包括输入边长、边长验证、外层循环
控制
行、内层循环
控制
列、判断边界位置并
打印
相应的字符。该程序
实现
了一个循环
打印
空心正方形的功能。用户输入正方形的边长,然后程序使用嵌套循环...
PowerBuilder
1,076
社区成员
66,437
社区内容
发帖
与我相关
我的任务
PowerBuilder
PowerBuilder 相关问题讨论
复制链接
扫一扫
分享
社区描述
PowerBuilder 相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章