PowerBuilder中实现数据窗口打印预览通用方法

2008年03月31日 星期一 下午 03:10

  我们在文字处理过程中,常常在打印前要预览,以便控制打印效果,特别在数据打印中要有选择地打印页面,更需要预览。PowerBuilder

 

提供了程序开发过程中的数据打印预览,下面介绍在程序应用中实现打印预览通用方法。

打印预览窗口w_preview

 

一、下面讲述创建上述窗口的实现过程:

 

1.创建一个新窗口W_preview,设置该窗口的类型(WindowType)为child!

 

2.在主窗口中按示意图放置各个控件:

Gb_1:用于显示的控件按钮,放在窗口最上面

gb_2:用于显示纵向和横向打印的收音机按钮(rb_1,rb_2),放在窗口的右部

dw_prt:用于显示打印预览结果,放在窗口的左部

 

3.为窗口创建结构s_preview,具体步骤是:

在结构成员名(Variable Name)中输入dw_name,sql_txt",在结构类型(Type)中选择String",以s_preview"为对象名保存此结构。

 

4.为窗口w_preview定义Open事件程序如下:

 

s_preview dwparm

dwparm=Message.Powerobjectparm

dw_prt.SetSQLSelect(dwparm.sql_txt)

dw_prt.Dataobject=dwparm.dw_name

dw_prt.settransobject(sqlca)

dw_prt.object.datawindow.print.preview = "yes"

dw_prt.Object.Datawindow.Print.Preview.Rulers="yes"

dw_prt.Modify("DataWindow.Print.Margin.Left=200")

dw_prt.Modify("DataWindow.Print.Margin.Top=200")

dw_prt.retrieve( )

cbx_1.checked=true

rb_1.checked=true

 

5.为窗口w_preview定义resize事件程序如下:

gb_1.width=this.workspacewidth( )

dw_prt.height=this.workspaceheight( ) - gb_1.height -this.y -200

dw_prt.width=this.workspacewidth( ) - gb_2.width - this.x -200

gb_2.x=dw_prt.width

rb_1.x=gb_2.x + 40

rb_2.x=gb_2.x + 40

p_7.x=gb_2.x + gb_2.width

p_6.x=p_7.x - p_7.width * 3

p_5.x=p_6.x - p_6.width * 3

p_4.x=p_5.x - p_5.width * 3

p_3.x=p_4.x - p_4.width * 3

 

二、上述W_preview窗口中各控件说明及相关实现:

 

1. 命令按钮控件(CommandButton)

 

p_1:执行打印动作,脚本如下:

dw_prt.print()

 

p_2:执行保存动作,脚本如下:

string is_filename, is_fullname

 

if GetFileOpenName ("另存为", is_fullname, is_filename, &

   "TXT", "文本文件 (*.txt),*.txt", "d:/", 512) < 1 then return

 

dw_prt.SaveAs(is_fullname, Text!, False)

 

p_3: 用于数据窗口翻至首页,脚本如下:

dw_prt.scrolltorow( 0)

 

p_5: 用于数据窗口向上翻页,脚本如下:

dw_prt.scrollpriorpage( )

 

p_4: 用于数据窗口向下翻页,脚本如下:

dw_prt.scrollnextpage( )

 

p_6: 用于数据窗口翻至尾页,脚本如下:

dw_prt.scrolltorow( dw_prt.rowcount())

 

p_7: 用于关闭打印预览数据窗口,脚本如下:

close(parent)

 

2.复选框控件(CheckBox)

 

Cbx_1:用于为预览数据窗口添加显示标尺,clicked的脚本如下:

IF Checked=TRUE THEN

   dw_prt.Object.Datawindow.Print.Preview.Rulers="yes"

ELSE

   dw_prt.Object.Datawindow.Print.Preview.Rulers="no"

END IF

 

3.掩码编辑器控件(EditMask):Em_1:用于显示和改变打印预览的相对比例。

3.1为掩码编辑器(Em_1)定义属性,在General页中定义Text为100,在Mask页中为Mask定义为###,选中Spin Control, 设置Spin  

 

Increment为1,设置Spin Range的Min为1、Max为200

3.2定义用户事件(user events)ue_change, 事件ue_change 的事件标识为pbm_enchange,它是在编辑器值发生改变时触发,脚本如下:

IF Integer(This.Text)>0 And Integer(This.Text)<=200 THEN

     dw_prt.Object.Datawindow.Print.Preview.Zoom=Integer(This.Text)

END IF

 

4.成组框控件(GroupBox)

 

Gb_1:用于显示上面的控件按钮,放在窗口最上面

gb_2:用于显示纵向和横向打印的收音机按钮(rb_1,rb_2),放在窗口的右部

 

5.收音机按钮控件(RadioButton)

 

Rb_1:用于控制纵向打印,脚本如下:

dw_prt.Object.Datawindow.Print.Orientation=2

 

Rb_2:用于控制横向打印,脚本如下:

dw_prt.Object.Datawindow.Print.Orientation=1

 

6.数据窗口控件(DataWindow)

 

dw_prt:用于显示打印预览结果,放在窗口的左部

 

 

三、调用上述通用打印预览窗口(w_preview)

在打印按钮clicked!事件下:

s_preview parm

parm.dw_name=dw_1.dataobject

messagebox('',parm.dw_name)

//parm.dw_name='r'+Right(parm.dw_name,Len(parm.dw_name) - 1)

//messagebox('',parm.dw_name)

parm.sql_txt=dw_1.GetSQLSelect()

OpenWithParm(w_preview, parm)

 

 

 

posted @ 2010-11-12 19:09  lenya  阅读(1257)  评论(0编辑  收藏  举报