当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: 有没有transact-sql向pl/sql转换的工具啊????? ......
    摘要: 一、我要开发:前台连sessionbean再连cmp的数据库开发,谁能给我一个详细的中文步骤? 二、我装的jbuiler7+weblogic7用了一段时间后,连部署原来能运行的程序都出错,总提示部署前几次开发的文件出错,我估计是不是前几次开发的jar信息存在weblogic里了?有谁能解答? ......


高手,怎么做打印预览

怎么做啊?????  
  我第一次玩PB啦,请教一下啦

NO.1   作者: madking

modify("datawindow.print.preview=yes   datawindow.print.preview.rulers=yes")

NO.2   作者: byfq

dw_1.modify("datawindow.print.preview=yes")  
  最简单的方法

NO.3   作者: freeprogramer

up

NO.4   作者: freeprogramer

dw_1.object.datawindow.print.preview=true      
  也可以实现

NO.5   作者: madking

http://www.liulee.net

NO.6   作者: JIANXIN_LU

可以看看PFC的相关实现。

NO.7   作者: bomber2001

PB中一个类Word打印对话框的实现(转载)  
   
  Powerbuilder数据窗口可用于生成各种复杂的   报表,但如何让用户在使用时控制打印份数、打印范围等信息呢?    
   
  我们在开发我局MIS系统时,经过对我局报表打印   需求的分析,提出了如下的功能要求:    
   
  1.必须能够控制象打印份数、打印范围等   信息,这是基本的要求。    
   
  2.我们系统中装有多台打印机,必须能让用户根   据自己需要选择使用哪台打印机,必要时能对所选打印机进行配置。    
   
  3.在设计时,对每一个报表需要什么样的纸张,   要多大的边距合适,都已确定,所以使用时不需要页面的设置。但由于不同的报表使用不同的纸张,必须在使用时给出提示,以便用有机会换上合适的纸张。    
   
  根据以上要求,我们设计了如下图所示的对话框。   下面把设计过程以及用到的技术介绍一下。    
   
  首先使用窗口画板画出窗口,名字为w_printdlg,   窗口类型为respons。“打印机”组框中的“名称”文本控制的名字为st_printname,“设置”按钮的名字为cb_printsetup。“页面范围”组框中的无线按钮组名字分别为rb_pagearrangeall,、rb_pagearrangecurrent、rb_pagearrange,单行编辑框名字为sle_pagearrange,其enable属性为false。“副本”组框中的编辑域名字   为em_copies。“打印”旁边的下拉列表框名字为ddlb_printwhat,列表有三项,分别为所选页面、偶数页、奇数页。“纸张”组框中的下拉列表框名字为ddlb_paper,列表内容为Poerbuiler   定义的43种纸张类型,分别用0-42的数字来表示。“纵向”无线按钮的名字为rb_portrait,“横向”无线按钮的名字为rb_landscape。表示纵向和横向的图片框分别为p_portrait和p_landscape。   命令按钮“确定”和“取消”的名字分别为cb_ok和cb_cancel。    
   
  以上工作完成之后,就要着手编写程序。    
   
  首先为窗口定义实例变量idw_toprint,类型为datawindow,   用于保存要打印的数据窗口。再定义一个窗口事件ue_initcontrols,其程序内容如下:    
   
  //eventue_initcontrols()  
  //设置窗口中各控件的初始值  
  st_printername.text=idw_toprint.object.  
  datawindow.printer//当前打印机名字  
  em_copies.text="1"//默认打印份数为1  
  rb_pagearrangeall.checked=true//默认范围为全部页  
  sle_pagearrange.enabled=false //页面范围编辑框无效  
  ddlb_printwhat.SelectItem(1)//默认为“所选页面”  
  //打印方向  
  integerli_temp  
  li_temp=integer(idw_toprint.object.datawindow.print.orientation)//取出设计时的方向  
  if   li_temp=1   then//横向  
  rb_landscape.checked=true   //选中  
  p_landscape.visible=true   //图片显示  
  p_portrait.visible=false  
  elseif   li_temp   =   2   then   //纵向  
  rb_portrait.checked=true  
  p_portrait.visible=true  
  p_landscape.visible=false  
  endif  
   
  //纸张类型  
  li_temp=integer(idw_toprint.object.  
  datawindow.print.Paper.Size)   //设计时的纸张类型  
  ddlb_paper.SelectItem(li_temp+1)   //列表框中选中  
   
  然后,在窗口的open事件中编写如下脚本:  
  //openevent  
  //要使用OpenWithParm()打开,参数中包含要打印的数据窗口。  
   
  idw_toprint=message.powerobjectparm  
  //从参数中取出要打印的数据窗口  
   
  this.eventue_initcontrols()//初始化窗口各控件  
   
  在无线按钮rb_pagearrangall的clicked事件中编写脚本如下:  
  sle_pagearrange.enabled=false  
  在无线按钮rb_pagearrangcurrent的clicked事件中编写脚本如下:  
  sle_pagearrange.enabled=false  
  在无线按钮rb_pagearrang的clicked事件中编写脚本如下:  
  sle_pagearrange.enabled=true//当此无线按钮选中时才可用  
   
  在命令按钮cb_printersetup中编写如下脚本:  
  //cb_printersetup  
  PrintSetup()//设置打印机  
  parent.eventue_initcontrols()  
   
  在无线按钮rb_portrait的clicked事件中编写如下脚本:  
  //纵向  
  p_landscape.visible=false  
  p_portrait.visible=true//显示纵向图片框  
  在无线按钮rb_landscape的clicked事件中编写如下脚本:  
  //横向  
  p_portrait.visible=false  
  p_landscape.visible=true  
   
  在命令按钮cb_cancel的clicked事件中编写如下脚本  
  //cb_cancel执行程序  
  CloseWithReturn(parent,2)//如果选择取消,返回2  
  在命令按钮cb_ok的clicked事件中编写如下脚本  
  //cb_ok执行程序  
  string   str_temp  
  integer   li_temp  
  long   ll_row  
   
  //打印什么  
  li_temp=ddlb_printwhat.FindItem  
  (ddlb_printwhat.text,0)-1  
  idw_toprint.object.datawindow.  
  print.page.rangeinclude=li_temp  
   
  //打印范围  
  ifrb_pagearrangeall.checkedthen//全部页  
  str_temp=""  
  elseifrb_pagearrangecurrent.checkedthen//当前页  
  ll_row=idw_toprint.GetRow()  
  idw_toprint.object.datawindow.print.preview="Yes"  
  //设成预览模式  
  str_temp=idw_toprint.Describe("evaluate  
  (Page(),"+String(ll_row)+")")//计算页码  
  idw_toprint.object.datawindow.print.preview="No"  
  elseifrb_pagearrange.checkedthen//输入范围  
  str_temp=sle_pagearrange.text  
  endif  
  idw_toprint.object.datawindow.print.page.range=str_temp  
   
  //副本份数  
  iflen(em_copies.text)>0then  
  idw_toprint.object.datawindow.print.copies  
  =Integer(em_copies.text)  
  endif  
   
  //纸的方向  
  li_temp=0  
  if   rb_landscape.checked   then  
  li_temp=1  
  elseif   rb_portrait.checked   then  
  li_temp=2  
  endif  
  idw_toprint.object.datawindow.print.orientation=li_temp  
   
  //纸的尺寸  
  li_temp=   ddlb_paper.FindItem(ddlb_paper.Text,0)  
  //第li_temp项  
  idw_toprint.object.datawindow.print.paper.size=li_temp  
   
  closewithreturn(parent,1)  
   
  几点说明:    
   
  1.原点访问语法:程序中多次用到了象datawindowcontrol.object.datawindow.print.attribute       语法,用语控制数据窗口的打印属性。原点访问语法用语代替原来的Discribe和Modify函   数,更符合面向对象的语言习惯。关于print属性的详细信息,请参见Powerbuilder帮助。    
   
  2.当前打印页的计算:先用GetRow得到当前行数,   再用Describe和Evaluate函数来计算数据窗口表达式,得出当前页号。注意在计算只前,先把要打印的数据窗口置成预览模式,否则计算出来的是显示页号,和打印页号不一致。    
   
  3.窗口内外信息的传递:虽然你可以用全局变量传递信息,但那决不是一个好的注意。使用OpenWithParm函数打开窗口可以向窗口传递一个参数,使用CloseWithReturn函数关闭窗口可以返回一个参数,根据参数的类型,其结果被放在系统全局变量message的相应成员中。如果要传递多个参数,可以把要他们定义为一个结构来传递。  
 


    摘要: rt ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE