PB笔记之窗口之间传递多参数的方法
messageboxex("警告","确定要把删除房间["+ls_id+"]吗?",question!,yesno!)<>1 then return //=1则是确认,messageboxex点击后会有返回值,本行代码的作用是:弹出窗口提升,点击ok则继续执行后面的代码,其它选项则return出去。
if 语句可以和有返回值的函数配合使用,类似上面
窗口之间数据传输:
在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_1,"独孤求败")
接着在打开窗口w_1的open事件中键入:
sle_1.Text = message.stringparm
如果需要传递多个参数,可以使用如下两种方法:
方法一
定义结构变量:lstr_para,其中包含你想传递的各种参数:
变量名 变量类型
ID string
Name string
Sex string
Loca string
在调用脚本中(本例使用才菜单clicked中),使用如下代码:
lstr_para lstr_Tranpara
lstr_Tranpara.id = "00000001"
lstr_Tranpara.name = "独孤求败"
lstr_Tranpara.sex = "男"
lstr_Tranpara.loca = "广东深圳"
openwithparm(w_2,lstr_Tranpara)
接下来在打开窗口w_2的open事件中,获取结构信息:
lstr_para lstr_Getpara
lstr_Getpara = message.powerobjectparm
sle_1.Text = lstr_Getpara.id
sle_2.Text = lstr_Getpara.name
sle_3.Text = lstr_Getpara.sex
sle_4.Text = lstr_Getpara.loca
其中,lstr_Getpara为用户自定义结构数据类型,是值传送的。
方法二
首先创建一个类用户对象
uo_para
在该用户对象中将你需要传递的各种参数申明成实例变量,例如:
public:
string id
string name
string sex
string loca
在调用脚本中(本例使用才菜单clicked中),使用如下代码:
uo_para uo_Tranpara
uo_Tranpara = create uo_para
uo_Tranpara.id = "00000001"
uo_Tranpara.name = "独孤求败"
uo_Tranpara.sex = "男"
uo_Tranpara.loca = "广东深圳"
OpenWithParm(w_3,uo_Tranpara)
接下来在打开窗口w_3的open事件中,获取用户对象信息:
uo_para uo_Getpara
uo_Getpara = message.powerobjectparm
sle_1.Text = uo_Getpara.id
sle_2.Text = uo_Getpara.name
sle_3.Text = uo_Getpara.sex
sle_4.Text = uo_Getpara.loca
以上两种方法比较而言,第一种方法虽然比较简单实用,但是如果遇上较复杂的数据时,便不能在一个结构数据中充分描述了;
第二种方法不但方便灵活,而且可以传送复杂的数据。当然,参数的传送不止以上的几种方法,你也可以使用全局变量或是公共可
访问的窗口实例变量来传送参数,或者在窗口中调用一个函数,并传递所需的参数,在此就不再赘述了。
另外,用Message传递参数必须注意以下几点:
1. 最好执行完窗口操作(打开或关闭)后马上将Message消息对象的值传给变量,这是因为Message是全局使用的对象,
每一次事件被触发或传送时都会被使用,其他Script 也有可能用到Message消息对象,因此它有被覆盖的危险。
2.避免传送NULL对象,以免程序出错。
PB笔记之窗口之间传递多参数的方法的更多相关文章
- IOS开发使用委托delegate在不同窗口之间传递数据
IOS开发使用委托delegate在不同窗口之间传递数据是本文要介绍的内容,主要是来讲解如何使用委托delegate在不同窗口之间传递数据,具体内容来看详细内容.在IOS开发里两个UIView窗口之间 ...
- MFC不同窗口之间传递数据
问题的由来: 最近在学习串口通信编程,参考的例子大多数都是在一个对话框中同时完成对串口的配置及数据收发的功能.这种方式不太适合于写自己的应用程序(会使得程序界面比较混乱,无法突出程序的重点),因此想让 ...
- BASE64-客户端(js)加码-服务器端(c#)解码,URL传递“汉字参数”解决方法
HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号('+'), 在 Decode 的时候将加号转为空格, 但是浏览器是不能理解加号为空格的, 所以如果文件名包含了 ...
- Java 传递可变参数和方法重载
形式:类型... 参数名 示例:public void show(int... a) {}; 可变参数在方法中被当作数组来处理 可变参数传值的四种方式: 一个值也不传,可变参数会接收到长度为0的数组 ...
- pb中打开窗口并传递参数
try long ll_result; ll_result=1;openwithparm(w_sb_order,UserCode);catch(RuntimeError er) errorMsg=e ...
- C#中web页面之间传递数组参数
一直以来用到的都是在url地址中传递string类型,那么如果是数组类型的该怎么传递呢? ]; arryStr[] = "a"; arryStr[] = "b" ...
- <笔记>TP5的分页传递额外参数
默认生成的分页只有page一个参数,若需要提供额外的参数才能访问分页(例如查询结果的分页,需要传入查询关键字的参数才能显示结果),则需要设置额外参数query
- Delphi exe实例之间传递cmd参数
{Unit1.pas} 通过这个单元的Button,调用另一个实例: procedure TForm1.Button1Click(Sender: TObject); begin ShellExecut ...
- WinForm 中两个窗口之间传递数据
方法有很多种,这里介绍项目中使用的两种 一.通过委托+事件的方法进行传值 (点击Form2中的button1按钮,将会把Form2中的textbox.text 传给Form1中的 lable.text ...
随机推荐
- cropper手机使用实例
cropper手机使用实例 一.总结 一句话总结: 启示:还是要多个相关的实例交叉使用,相互印证,查漏补缺,可以更加高效和方便和节约时间 二.Cropper.js从前台到后台的完整实例应用 转自或参考 ...
- HSCR | Hirschsprung‘s disease | 巨结肠 | 研究进展
这个网站介绍得很详细:Hirschsprung Disease,基本的定义.病因.诊断. Hirschsprung disease — integrating basic science and cl ...
- 一个java创建,删除,构建Jenkins等功能的JenkinsUtil工具类
package com.vip.webpagetest.utils; import java.io.InputStream;import java.util.ArrayList;import java ...
- HttpWebrequest使用的注意点
HttpWebrequest使用的注意点 1.HttpWebrequest相关属性的设置以及默认连接数量限制 System.Net.ServicePointManager.DefaultConnect ...
- ubuntu12.04下安装Python3.5.2 1
下载源码包 (https://www.python.org/downloads/release/python-352/) 2 解压Python-3.5.2.tar.xz 3 sudo ./conf ...
- Tosca 给定义变量,取内容放到变量里
可以在TOOLS里 buffer viewer里面搜索查自己的变量
- 004 JpaRepository,CrudRepository,PagingAndSortingRepository的区别
很多程序都在使用,CrudRepository或者PagingAndSortingRepository,但是以前自己的程序使用的是JpaRepository,然后查了一下材料,记录一下. 1.类图 2 ...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_38、源码编译安装Redis4.x
笔记 2.源码编译安装Redis4.x 简介:使用源码安装Redis4.x和配置外网访问 1.快速安装 https://redis.io/download#installation ...
- Jmeter之__CSVRead随机读取变量
背景:当你需要从一些数据中随机的取值用的话可以用这个函数来实现__CSVRead __CSVRead函数用于对脚本进行参数化,当脚本中不同变量需要不同参数值时,可以考虑__CSVRead函数. _CS ...
- 深度学习:21天实战caffe学习资源-4-环境安装
使用anaconda3环境下的python2.7, 机器macos mojave 10.14 1.安装Xcode 首先现在app store中安装Xcode: 不然会有” framework not ...