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

來源:互聯網
上載者:User
 

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

深圳:獨孤求敗   2003-11-24

 

        在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對象,以免程式出錯。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.