资源描述:
《PB动态创建窗口》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、动态创建数据窗口 在实际应用中,经常需要根据用户需求来动态创建数据窗,一般方法是这样的。 在一个window中加入一个数据窗控件,如dw_new,但是该数据窗没有dataobject,(空白的)就可以用以下语法来创建: dw_new.create(ls_syntax,ls_error)//创建语法,错误信息 ls_syntax可以用以下三种方法来形成: 一、动态由sql语法创建: //连接到pb的example数据库 stringls_sql,ls_syntax,ls_error ls_s
2、yntax='select*fromdepartment' ls_syntax=sqlca.SyntaxFromSQL(ls_sql,'style(type=grid)',ls_error) iflen(ls_error)>0then messagebox('Error','SyntaxFromSQLError:~r'+ls_error) else dw_new.create(ls_syntax,ls_error) iflen(ls_error)>0then MessageBox(
3、"Error","Createhavetheseerrors:~r"+ls_error) else dw_new.settransobject(sqlca) dw_new.retrieve() endif endif 二、由另一个数据窗的syntax来创建 stringls_syntax,ls_error ls_syntax=dw_test.describe('datawindow.syntax') dw_new.create(ls_syntax,ls_error) ifl
4、s_error''then messagebox('CreateError',ls_error) else dw_new.settransobject(sqlca) dw_new.retrieve() endif 三、读取psr文件来创建 stringls_syntax,ls_error,ls_ret ls_ret=char(13)+char(10)//回车键 intli_fileNum longli_length li_FileNum=FileOpen("efef.psr",
5、Streammode!,read!,shared!,Replace!) ifli_filenum>0then FileSeek(li_FileNum,158,FromBeginning!) li_length=fileRead(li_filenum,ls_syntax) endif fileclose(li_filenum) ifli_length=0thenreturn ls_syntax="release5;"+ls_ret+ls_syntax //截掉ls_syntax中的数据部
6、分,5.0以"sparse(names="dept_name?)"作为参考位置 //6.0以html(作为参考位置 longpos1,pos2 pos1=pos(ls_syntax,'sparse(names="',1) pos2=pos(ls_syntax,'"',pos1+16) ls_syntax=left(ls_syntax,pos1)+mid(ls_syntax,pos1+1,pos2-pos1+1) dw_New.create(ls_syntax,ls_error) ifls_e
7、rror''then messagebox('CreateError',ls_error) else dw_new.settransobject(sqlca) dw_new.retrieve() endif //pb6,pb7的代码可以参照pb5自己写,只是文件头和数据窗结束标记不同而已。 PowerBuilder用Create()函数创建动态数据窗口,其语法格式为:dw.Create(Syntax[,ErrString]) 其中:dw为需创建的动态数据窗口名;Syntax为创建动态
8、数据窗口的语法字符串;ErrString为可选参数,用来存放发生错误时的错误信息,若忽略,发生错误时系统自动显示消息框,一般不符我们需要,所以需定义该参数。 显然重点在Syntax,PowerBuilder提供LibraryExport()与SyntaxFromSQL()二个函数来达到这个目的: 一、LibraryExport()函数 功能:从PowerBuilder库中输出一个对象,返回该对象的语法。 语法格式:Li