CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  基础类

如何实现逐份打印/非逐份打印控制。

楼主ttjvip()2005-01-01 14:43:10 在 PowerBuilder / 基础类 提问

如何实现逐份打印/逐份打印控制? 问题点数:100、回复次数:8Top

1 楼hygougou(uoguogyh)回复于 2005-01-01 17:37:50 得分 0

做个循环  
  打印放在循环里面做即可Top

2 楼nsqsmile(阿南)回复于 2005-01-01 21:35:02 得分 0

哈哈,高Top

3 楼zhangdatou(猪头)回复于 2005-01-01 22:24:59 得分 0

一楼说的有道理Top

4 楼zhangdatou(猪头)回复于 2005-01-01 22:25:56 得分 100

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提供了丰富的打印功能,只要我们把有关的函数、事件领会清楚,   灵活地去使用,即可达到预期的目的。    
   
   
   
  Top

5 楼hchi0118(cold)回复于 2005-01-02 09:39:49 得分 0

upTop

6 楼tw829(唐牛)回复于 2005-01-02 14:52:05 得分 0

楼主问题:问的很模糊!Top

7 楼tw829(唐牛)回复于 2005-01-02 14:53:43 得分 0

楼主问题:问的很模糊,无法回答!Top

8 楼cxwsoftware(方宇)回复于 2005-01-03 11:34:27 得分 0

何不自己编写一个子程序呢!Top

相关问题

  • 打印控制
  • 打印控制!!!!!!!!!!!!!!!
  • 打印控制
  • ???如何用VB实现逐行打印???
  • 控制打印机
  • 如何用程序控制打印机实现双面打印?来者有分,送完为止!
  • java打印问题: Java怎样实现控制针式打印机的走纸呢?
  • 用串口转换连接到EPSON300K ,如何控制打印机打印?用MSCOMM实现,有经验者入。
  • 如何在pb中实现控制datawindow每页的打印条数?
  • C#的控制台程序怎么实现一些打印功能。

关键词

  • 打印
  • 脚本
  • 函数
  • 用户
  • 控制
  • printcancel
  • 变量
  • datawindow
  • 取值
  • 页号

得分解答快速导航

  • 帖主:ttjvip
  • zhangdatou

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo