国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

PB中dynamic調用類型的用法

2024-07-21 02:09:57
字體:
來源:轉載
供稿:網友
pb中dynamic調用類型的用法


說到dynamic調用類型,我們先看看對象、屬性、函數和事件的引用方法:

powerbuilder 6.0應用程序的開發過程實際上就是各種對象的定義和使用過程。所有對象都有名稱,并通過名稱相互區分。在powerscript中,訪問對象的屬性、函數、事件的方法很簡單,就是使用圓點作為標記符,具體來說,訪問對象屬性的格式為:

對象名.對象屬性

例如,把單行編輯框sle_name的用戶輸入內容送到字符串變量userenter的語句可以寫成:

userenter=sle_name.text

其中,sle_name是一個單行編輯框對象的名稱,text是單行編輯框的text屬性。

程序中訪問對象的函數與事件的格式為:

{ objectname.} { type } { calltype } { when } functionname ( { argumentlist } )

其中,大括號所括成分根據情況可以省略,各成分的意義為:

objectname是對象名;

type取值為function或event,用于指明訪問函數還是事件,缺省值為function;

calltype用于指明powerbuilder 查找函數的時機,有效取值為:

static(缺省值):編譯時查找函數,若不存在,產生編譯錯誤 
dynamic:程序運行時查找函數,若不存在,產生運行錯誤

when用于指明函數或事件是立即執行呢還是當前程序段執行完畢后執行,取值為:

trigger(缺省值):立即執行 
post:當前程序段執行完畢后執行

functionname指明調用的函數或事件名稱

argumentlist給出函數或事件的參數

例如,想把輸入焦點移動到單行編輯框sle_name上,程序中寫上語句:sle_name.setfocus()即可。想立即執行按鈕cb_name的單擊事件處理程序,那么寫上語句:cb_name .event trigger clicked()即可。

從以上看出,dynamic是指定函數或事件的一個動態調用,即當你指定一個動態調用時,函數和事件在編譯時不一定要存在。你告訴編譯器:相信我,此處在運行時一定會有一個合適的函數或事件。對于動態調用,powerbuilder等到執行時才尋找函數或事件。這就給了你更大的編程靈活性。

請比較以下的示例(摘錄):

目前流行的大部分應用程序中都提供了undo功能,在powerbuilder中也可以利用undo()函數實現該功能。undo()函數可用于datawindow, editmask, multilineedit, richtextedit和singlelineedit 對象,如果只對某一個對象進行undo操作,只需在undo菜單項的單擊事件中鍵入如下腳本:objectname.undo(),但是當窗口中有多個對象,我們在編寫腳本時并不知道要對哪個對象執行undo()操作,如何解決這一問題呢?在powerbuilder中,undo()等函數只能用于可視對象,而所有可視對象均繼承自系統對象類graphicobject。因此我們可以定義一個graphicobject對象的實例變量go_object,等到運行時再用getfocus()函數確定具體操作對象。然后用typeof()函數確定當前對象的類型,再用choose case語句根據不同的類型引用不同的實例變量,代碼如下:

graphicobject go_object

datawindow dw_object

editmask em_object

multilineedit mle_object

richtextedit rte_object

singlelineedit sle_object

go_object=getfocus()

choose case typeof(go_object)

case datawindow!

dw_object=go_object

dw_object.undo()

case editmask!

em_object=go_object

em_object.undo()

case multilineedit!

mle_object=go_object

mle_object.undo()

case richtextedit!

rte_object=go_object

rte_object.undo()

case singlelineedit!

sle_object=go_object

sle_object.undo()

case else

messagebox("出錯","不能撤消!")

end choose

其實我們可以用動態調用函數的方法簡單地解決這一問題,即對graphicobject對象調用undo()函數,然后在函數名前加上關鍵字dynamic

國內最大的酷站演示中心!
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新龙县| 邵东县| 巩义市| 南昌市| 新晃| 盘山县| 锡林浩特市| 达州市| 桂阳县| 枣阳市| 于都县| 龙川县| 杭州市| 莱西市| 洛浦县| 鄄城县| 多伦县| 阳曲县| 抚州市| 长兴县| 静海县| 霸州市| 化隆| 武鸣县| 买车| 平山县| 岳阳市| 金塔县| 玛多县| 筠连县| 和硕县| 上饶市| 黑龙江省| 福海县| 浮山县| 忻城县| 临江市| 石渠县| 永吉县| 旬阳县| 呼伦贝尔市|