• 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)

     来自:https://www.cnblogs.com/lenya/archive/2010/11/12/3706914.html

  • 相关阅读:
    三元操作符的类型务必一致
    a++ 和 ++a 的区别
    TCP/IP四层协议模型与ISO七层模型
    CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置
    修改gcc/g++默认include路径
    js中Math.random()生成指定范围数值的随机数
    在 QML 中创建 C++ 导入类型的实例
    QML从文件加载组件简单示例
    Android插件化开发---执行未安装apk中的Service
    游戏开发热门技术浅析
  • 原文地址:https://www.cnblogs.com/djd66/p/16205458.html
Copyright © 2020-2023  润新知