PB中dynamic呼叫型別的用法

2021-08-21 23:22:21 字數 2241 閱讀 7615

pb中dynamic呼叫型別的用法

說到dynamic呼叫型別,我們先看看物件、屬性、函式和事件的引用方法:

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

物件名.物件屬性

userenter=sle_name.text

其中,sle_name是乙個單行編輯框物件的名稱,text是單行編輯框的text屬性。

程式中訪問物件的函式與事件的格式為:

functionname()

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

objectname是物件名;

type取值為function或event,用於指明訪問函式還是事件,預設值為function;

calltype用於指明powerbuilder查詢函式的時機,有效取值為:

static(預設值):編譯時查詢函式,若不存在,產生編譯錯誤

dynamic:程式執行時查詢函式,若不存在,產生執行錯誤

when用於指明函式或事件是立即執行呢還是當前程式段執行完畢後執行,取值為:

trigger(預設值):立即執行

post:當前程式段執行完畢後執行

functionname指明呼叫的函式或事件名稱

argumentlist給出函式或事件的引數

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

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

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

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

graphicobjectgo_object

datawindowdw_object

editmaskem_object

multilineeditmle_object

richtexteditrte_object

singlelineeditsle_object

go_object=getfocus()

choosecasetypeof(go_object)

casedatawindow!

dw_object=go_object

dw_object.undo()

caseeditmask!

em_object=go_object

em_object.undo()

casemultilineedit!

mle_object=go_object

mle_object.undo()

caserichtextedit!

rte_object=go_object

rte_object.undo()

casesinglelineedit!

sle_object=go_object

sle_object.undo()

caseelse

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

endchoose

其實我們可以用動態呼叫函式的方法簡單地解決這一問題,即對graphicobject物件呼叫undo()函式,然後在函式名前加上關鍵字dynamic

SwiftUI中的動態型別Dynamic Type

今天我想和您談談swiftui中對動態型別的支援。我認為,如果您的應用中沒有動態型別支援,就無法創造出色的使用者體驗。swiftui為任何文字表示形式提供了開箱即用的動態型別,並簡化了我們的工作。但是我們仍然需要做一些工作,所以讓我們談談它。動態型別功能允許使用者選擇螢幕上顯示的文字內容的大小。它可...

pb呼叫oracle中的儲存過程

1 現在oracle中建立乙個儲存過程 create or replace procedure proc jbylbxqk as ny in string is ll tczz number 12 ll tctx number 12 ll dbzz number 12 ll dbtx number ...

dynamic動態型別的理解

動態型別的特點 出現時機 net4.0之後引入新的關鍵字dynamic 用來定義動態型別 使用特點 呼叫動態型別時不做 編譯 檢查,而在程式執行時查詢,如果成員存在且引數正確,就正常執行 asp.net mvc 中的viewbag,就是乙個動態的類 if viewbag.student nuu cl...