利用PowerBuilder建立数据窗口时用户通常不能自己选择数据来源和显示类型如何让用户在应用程序中自己定义数据窗口的数据来源和显示类型呢?为了达到这个目的我们必须在运行程序阶段根据用户自己的需求动态地建立一个数据窗口
在建立动态数据窗口之前必须先得到数据窗口对象的语法PB中为我们提供了SyntaxFromSQL( )函数利用这个函数可以得到建立数据窗口的语法SyntaxFromSQL()函数的基本格式如下
事物对象SyntaxFromSQL(数据来源字符串显示类型字符串错误字符串)
下面是建立一个数据窗口对象语法的范例∶
// 声明变量
string ls_sql ls_presentls_err ls_syntax
// 定义数据窗口的数据来源
ls_sql = select emp_id from employee
//定义数据窗口显示字符串
ls_present = style(type=tabular)
// 得到建立数据窗口对象语法
// 如果错误发生SyntaxFromSQL 返回一个空字符串
ls_errls_syntax = SQLCASyntaxFromSQL(ls_sql ls_present ls_err)
利用 SyntaxFromSQL( )所建立的数据窗口对象是在运行阶段才建立的对象并不会自动保存在PB的对象数据库 Library 中为了以后可以重复使用这个数据窗口对象可以利用 LibraryImport( )函数保存数据窗口对象
在利用 SyntaxFromSQL( )函数建立一个数据窗口语法后必须将它与窗口上的数据窗口控件结合这个数据窗口控件必须已经存在于窗口中 要将数据窗口对象语法和一个已经存在的数据窗口控件结合必须利用Create( )函数下面是范例程序∶
// 声明变量string ls_syntax ls_err
ls_errdw_Create(ls_syntax ls_err)
dw_SetTransobject(SQLCA)
dw_retrieve( )
在上面程序中ls_syntax是运行SyntaxFromSQL( )函数后所返回的字符串除此之外也可以利用LibraryExport( )函数从PB对象数据库中得到已经存在于PBL中的数据窗口对象语法因为Create( )函数会破坏先前数据窗口与事物对象的结合所以必须利用SetransObject( )函数重新结合事物对象给新的数据窗口对象最后再运行Retrieve( )函数从数据库中读取数据
最后我们需要利用SQL 语句字符串动态创建一个新的数据窗口对象到一个数据窗口控件当中虽然在运行阶段并不能直接在窗口上建立一个数据窗口控件但却可以利用用户对象建立一个与窗口上一样的数据窗口控件在运行阶段时再动态打开这个用户对象下面是动态建立数据窗口控件的步骤∶
在用户对象画板内建立一个标准数据窗口的用户类
可以在这个控件中增加功能程序用户对象函数和用户自定义事件后保存用户对象到对象数据库中
利用 OpenUserObject( )函数建立一个数据窗口用户对象的复件一般格式如下∶OpenUserObject(用户对象变量{x坐标值y坐标值})下面是在窗口上鼠标点击的坐标位置建立一个用户对象 u_dw的范例∶ OpenUserObject(u_dw Pointerx( )Pointery( ))
以上是建立一个动态数据窗口的基本步骤感兴趣的朋友不妨一试
编辑推荐
ASP NET开发培训视频教程
Microsoft NET框架程序设计视频教程