如何创建一个动态的数据窗口对象

PB编程 专栏收录该内容
37 篇文章 0 订阅


问:我想在程序运行中根据需要动态地建立一个数据窗口对象,该怎么做呢?

答:方法有四:

第一种方法:

    在程序中用Describe()函数得到某个已经存在的数据窗口对象的源代码。如:

string str_dwsyntax,str_lag
//获得数据窗口1的语法
str_dwsyntax=dw_1.object.datawindow.syntax
//根据数据窗口1的语法动态生成数据窗口2的语法
dw_2.create(str_dwsyntax)
//对数据窗口2的内容作局部修改
str_lag="stu_id_t.font.height='-12' stu_id_t.font.face='楷体_GB2312'"
//字体变12号字体,由宋体改为楷体
dw_2.modify(str_lag)
dw_2.settransobject(sqlca)
dw_2.retrieve()

第二种方法:

    在程序中使用系统函数LibraryExport()得到某个已经存在的数据窗口对象的源代码。

第三种方法:

    在PowerBuilder开发环境的库管理画笔(Library Painter)中使用移出功能(右键→Export)将某个数据窗口对象的语法保存到文本文件中。

第四种方法:

   1、设计窗口时在窗口上设置一个数据窗口控件,该控件用于展示动态创建的数据窗口。

   2、构造一条SELECT语句。

   3、利用事务对象的对象函数SyntaxFromSQL()生成符合数据窗口对象语法的字符串。

   4、使用数据窗口控件的对象函数Create()创建数据窗口。

例子:string str_err_sql,str_err_create,str_sql,str_syntax      

     str_sql="select emp_id,emp_data,emp_name from employee where emp_salary>750"
     //生成SELECT语句对应的自由风格的数据窗口语法
     str_syntax=SQLCA.SyntaxFromSQL(str_sql,'style(type=Form)',str_err_sql)
     if len(str_err_sql)>0 then
        messagebox("错误","取得SQL语法时出错")
        return
     else
        dw_1.create(str_syntax,str_err_create)
        if len(str_err_create)>0 then
           messagebox("错误","创建数据窗口时出错!") 
           return
        end if
     end if
     dw_1.settransobject(sqlca)
     dw_1.retrieve()

[注]SyntaxFromSQL()函数

说明:根据SQL SELECT语句生成数据窗口对象的源代码,通常用于创建动态数据窗口对象。语法:transaction.SyntaxFromSQL(sqlselect,presentation,err )。返回值:string,成功时返回生成的指定风格数据窗口对象的源代码,错误时返回空字符串,err参数可说明原因。参数类型及说明transaction事务对象名。sqlselectstring,其值为一条有效的SQL SELECT语句。presentationstring,指定数据窗口缺省的表现风格。完整语法Style(Type=value property=value ……) //数据窗口风格

Type

Tabular缺省值,列表风格Grid列表风格Form自由格式Crosstab交叉列表Graph统计图风格Group分组风格Label标签风格Nested复合风格Ole 2.0Ole风格RichText超文本风格DataWindow(Property=value ……) //数据窗口本身的属性Column(Property=value ……) //列对象属性Group(groupby_colnum1 by_colnum2 …… property ……) //分组特性Text(property=value ……) //文本对象属性Title('titlestring') //数据窗口的标题errstring,当生成数据窗口源代码发生错误时,该参数用于保存出错信息。

[注]Create()函数

说明:使用指定的源代码创建数据窗口对象,并用新的数据窗口对象来取代旧的,但新的不会自动成为应用库的一部份。语法:dwcontrol.Create( syntax {,errorbuffer})返回值:integer,成功为1,错误为-1。参数类型及说明dwcontrol数据窗口控件名。syntax数据窗口源代码,Create()函数将使用该代码来创建数据窗口对象。errorbuffer可选,保存创建时的出错信息,若省略则系统将使用消息对话框显示出错信息。用法数据窗口对象源代码语法相当复杂,因此手工从头构造该语法几乎是不可能的,但也不用泄气,Powersoft提供了几个办法构造数据窗口对象的源代码。1程序中使用数据窗口控件的Describe()函数得到某个已经存在的数据窗口对象的源代码,再据此修改。2程序中使用系统函数LibraryExport()得到某个已经存在的数据窗口对象的源代码,再据此修改。3在PowerBuilder开发环境的库管理画笔(Library Painter)中使用移出功能(Export)将某个数据窗口对象的语法保存到文本文件中,再据此修改。4程序中使用事务对象函数SyntaxFromSQL(),该函数根据SQL语句创建数据窗口对象的源代码,再据此修改。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值