PB視窗之間多引數的傳遞

2021-06-04 18:02:18 字數 2799 閱讀 7491

在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=″

… 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=″

… 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物件,以免程式出錯。 

PB視窗之間傳遞多引數的方法

在powerbuilder中函式openwithparm,closewithreturn,opensheetwithparm,windowname.openuserobjectwithparm 等都有乙個在進行視窗操作 開啟或者關閉 時存入message訊息物件的引數parameter或return...

PB視窗之間引數傳遞的幾種用

先來解釋一下引數傳遞的函式意義 message.stringparm 傳的是字元 message.doubleparm 傳的是數值 message.powerobjectparm 傳的是可以是視窗 物件 結構等等 例如 以數值傳遞為例 在w old視窗的相關事件中寫入如下 表示傳送要傳遞引數 lon...

Activity之間的引數傳遞

activity之間的引數傳遞 假設有2個activity,分別為 activitya和 activityb,activitya負責呼叫 activityb。一 activitya傳遞引數給 activityb activitya類的 bundle bundle new bundle bundle....