在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
*** string
loca string
在呼叫指令碼中(本例使用才選單clicked中),使用如下**:
lstr_para lstr_tranpara
lstr_tranpara.id = "00000001"
lstr_tranpara.name = "獨孤求敗"
lstr_tranpara.*** = "男"
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.***
sle_4.text = lstr_getpara.loca
其中,lstr_getpara為使用者自定義結構資料型別,是值傳送的。
方法二首先建立乙個類使用者物件
uo_para
在該使用者物件中將你需要傳遞的各種引數申明成例項變數,例如:
public:
string id
string name
string ***
string loca
在呼叫指令碼中(本例使用才選單clicked中),使用如下**:
uo_para uo_tranpara
uo_tranpara = create uo_para
uo_tranpara.id = "00000001"
uo_tranpara.name = "獨孤求敗"
uo_tranpara.*** = "男"
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.***
sle_4.text = uo_getpara.loca
以上兩種方法比較而言,第一種方法雖然比較簡單實用,但是如果遇上較複雜的資料時,便不能在乙個結構資料中充分描述了;
第二種方法不但方便靈活,而且可以傳送複雜的資料。當然,引數的傳送不止以上的幾種方法,你也可以使用全域性變數或是公共可
訪問的視窗例項變數來傳送引數,或者在視窗中呼叫乙個函式,並傳遞所需的引數,在此就不再贅述了。
另外,用message傳遞引數必須注意以下幾點:
最好執行完視窗操作(開啟或關閉)後馬上將message訊息物件的值傳給變數,這是因為message是全域性使用的物件,
每一次事件被觸發或傳送時都會被使用,其他script 也有可能用到message訊息物件,因此它有被覆蓋的危險。
2.避免傳送null物件,以免程式出錯。
PB視窗之間多引數的傳遞
在powerbuilder中函式openwithparm,closewithreturn,opensheetwithparm,windowname.openuserobjectwithparm等都有乙個在進行視窗操作 開啟或者關閉 時存入message訊息物件的引數parameter或returnv...
PB視窗之間引數傳遞的幾種用
先來解釋一下引數傳遞的函式意義 message.stringparm 傳的是字元 message.doubleparm 傳的是數值 message.powerobjectparm 傳的是可以是視窗 物件 結構等等 例如 以數值傳遞為例 在w old視窗的相關事件中寫入如下 表示傳送要傳遞引數 lon...
Activity之間傳遞引數的方法
在activity之間傳遞引數的常用方法有3種,另外還有接受返回引數的辦法。1.使用intent類的方法 intent intent new intent intent.putstringextras data context startactivity intent 2.利用bundle bund...