数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
PB窗口之间传递多参数的方法

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

 

  在PowerBuilder中函数OpenWithParm,CloseWithReturn,OpenSheetWithParm,windowname.OpenUserObjectWithParm等都有一个在进行窗口操作(打开或者关闭)时存入Message消息对象的参数parameter或returnvalue。

  消息对象Message有三个属性用于存储这些函数传递给窗口的数据(依赖于窗口操作时参数赋予的类型)。根据parameter / returnvalue参数数据类型的不同,该参数的值保存在Message对象的不同属性中。parameter / returnvalue参数的类型与使用的Message对象属性的对应关系如下表:

参数类型 Message对象属性
Numeric(数值) Message.DoubleParm
PowerObject(PB对象,包括用户自定义的结构数据类型) Message.PowerObjectParm
String(字符串) Message.StringParm
  应用程序根据OpenWithParm()等函数的parameter / returnvalue参数类型,从Message消息对象的不同属性中提取该函数并传送给被打开窗口的值。

  在PB中如果是传递一个参数,是很容易实现的。在调用脚本中,可以使用如下代码:

  openwithparm(w—wantparm,parmtotrans)

  接着在打开窗口w—wantparm的open事件中键入:

  string ls—getparm

  ls—getparm=message.stringparm

  …

  如果需要传递多个参数,可以使用如下两种方法:

  方法一

  定义结构变量:lstr—declaredstr,其中包含你想传递的各种参数:

  变量名      变量类型

  ID          Unsignedlong

  Name      Character

  Email      Character

  Homepage      Character

   …        …

  在调用脚本中,使用如下代码:

  lstr—declaredstr lstr—parmtotrans

  lstr—parmtotrans.id=1

  lstr—paramtotrans.name=″panya″

  lstr—paramtotrans.email=″[email protected]

  lstr—paramtotrans.homepage=″http://panya.163.net″

  …

  openwithparm(w_wantparm,parmtotrans)

  接下来在打开窗口w—wantparm的open事件中,获取结构信息:

  lstr—declaredstr lstr—getparm

  integer li—getid

  string ls—getname

  string ls—getemail

  string ls—gethomepage

  lstr—getparm=message.powerobjectparm

  li—getid=lstr—getparm.id

  ls—getname= lstr—getparm.name

  ls—geemail= lstr—getparm.email

  ls—gethomepage= lstr—getparm.homepage

  …

  其中ame

  String Email

  String Homepage

  ...

  打开窗口w—wantparm,并传递多个参数:

  u—n—parmtostore lnv_paramtotrans

  lnv—paramtotrans.id=1

  lnv—paramtotrans.name=″panya″

  lnv—paramtotrans.email=″[email protected]

  lnv—paramtotrans.homepage=″http://pbnet.126.com″

  …

  OpenWithParm ( w—wantparm, lnv—paramtotrans )

  在 w—wantparm 的 open 事件中访问传来的参数:

  u—n—parmtostore lnv—getparam

  integer li—getid

  string ls—getname

  string ls—getemail

  string ls—gethomepage

  lnv—getparam = Message.PowerObjectParm

  li—getid=lnv—getparam.id

  ls—getname=lnv—getparam.name

  ls—gethomepage=lnv—getparam.homepage

  ls—getemail=lnv—getparam.email

  …

  以上两种方法比较而言,第一种方法虽然比较简单实用,但是如果遇上较复杂的数据时,便不能在一个结构数据中充分描述了;第二种方法不但方便灵活,而且可以传送复杂的数据。当然,参数的传送不止以上的几种方法,你也可以使用全局变量或是公共可访问的窗口实例变量来传送参数,或者在窗口中调用一个函数,并传递所需的参数,在此就不再赘述了。

  另外,用Message传递参数必须注意以下几点:

  1. 最好执行完窗口操作(打开或关闭)后马上将Message消息对象的值传给变量,这是因为Message是全局使用的对象,每一次事件被触发或传送时都会被使用,其他Script 也有可能用到Message消息对象,因此它有被覆盖的危险。

  2.避免传送NULL对象,以免程序出错。




相关文章

相关软件