现在的位置: 首页 > 综合 > 正文

【PB】如何创建一个动态的数据窗口对象?

2013年08月10日 ⁄ 综合 ⁄ 共 2386字 ⁄ 字号 评论关闭

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

答:方法有四:

第一种方法:

    在程序中用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 事务对象名。
sqlselect string,其值为一条有效的SQL SELECT语句。
presentation string,指定数据窗口缺省的表现风格。
完整语法 Style(Type=value property=value ……) //数据窗口风格

Type

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

[注]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语句创建数据窗口对象的源代码,再据此修改。

抱歉!评论已关闭.