·天新网首页·加入收藏·设为首页
首页|笔记本|手机|数码相机|摄像机|MP3/MP4|主板|内存|显示器|办公|打印机|下载|开发|汽车|学院|业界
硬件|台式机|数码|数字家庭|投影仪|GPS/CPU|显卡|硬盘|服务器|网络|一体机|驱动|源码|游戏|考试|报价
在PB中实现分段打印功能
http://dev.21tx.com 2005年05月18日

  在使用Powerbuilder进行应用程序的开发过程中,可使用Powerbuilder提供的函数Print()对数据窗口进行打印,但是在实际应用中,Print()函数提供的功能远不能满足用户的需要。本文将介绍如何在Powerbuilder中实现分段打印的技巧,从而满足应用程序特定功能的要求。

  有时,我们需要把数据窗口显示的数据按照一定的格式进行分页打印,而每页显示的  
数据是随机的,每页又需要分别汇总,所以每页的总和也不相等,我们可以用RowsDiscard()和RowsCopy()函数与Print()函数联合使用。

  例如对于某一数据窗口,我们需要按照每页打印5行,不足5行补空行,每页合计为当页总数。这时我们首先把显示的数据窗口命名为dw_1,接着另建一个隐含的数据窗口,格式和dw_1完全相同,并命名为dw_2,最后计算需要打印几页,具体程序如下:

  int n,mm

  //每页打印mm行

  mm = long(em_1.text)

  n = int(dw_1.rowcount()/mm) + 1

  //如果不足mm行,直接打印

  if dw_1.rowcount() < mm then

   dw_1.print()

   return

  end if

  //用FOR循环语句,循环n-1次:

  int m = 0

  for m = 0 to n - 1

   dw_2.reset()

   dw_2.rowsdiscard(1,dw_2.rowcount(),Primary!)

   //删除dw_2中的数据

   //从数据窗口的主缓冲区拷贝mm行到dw_2

  dw_1.RowsCopy(mmm+1, (m+1)mm, Primary!, dw_2, 1, Primary!)

  //不足mm行补空行

  if dw_2.rowcount() > 0 and dw_2.rowcount() < mm then

  int ii,jj

  jj = dw_2.rowcount()

  for ii = 1 to mm - jj

  dw_2.InsertRow(0)

  dw_2.ScrollToRow(dw_2.RowCount())

   next

   end if

  //循环打印dw_2窗口

  dw_2.print()

  next

  利用以上代码,我们就可以实现按特定的格式进行分段打印的功能了。

上一篇: 在PB中实现数据录入维持序号连续性的简单实现
下一篇: 在POWER BUILDER中使用WINSOCK控件

Google
 
热点文章
关于我们 | 联系我们 | 广告服务 | 工作机会 | 版权声明 | 欢迎投稿 | 网站地图
Copyright © 2000-2008 , www.21tx.com , All Rights Reserved .
晨新科技 版权所有 Created by TXSite.net