在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() |
其實我們可以用動態呼叫函式的方法簡單地解決這一問題(只需三行程式碼),即對GraphicObject物件呼叫undo()函式,然後在函式名前加上關鍵字Dynamic。因為物件類GraphicObject並沒有undo()這個物件函式,如果不加關鍵字Dynamic,編譯時就會出現錯誤。使用了Dynamic關鍵字,PowerBuilder在編譯時不檢查該函式和所用引數的有效性,而到指令碼執行時才去檢查該函式。程式碼如下:
GraphicObject go_object go_object=getfocus() go_object.dynamic undo() |
允許動態呼叫函式是的PowerBuilder5.0的特性之一。在程式設計中靈活運用動態函式呼叫的方法有助於提高所設計程式的可維護性、可重用性。
以上程式在PowerBuileer 5.0,Window95環境下執行通過。
相關文章
- vue在一個函式中呼叫另外一個函式Vue函式
- JNI呼叫c動態連結庫函式程式碼實踐函式
- 運用inlinehook主動呼叫函式inlineHook函式
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- Solidity中函式返回值,靜態動態陣列Solid函式陣列
- 如何呼叫程式碼在python3中改變函式值?Python函式
- C++中函式呼叫的用法C++函式
- 影片直播系統原始碼,在Laravel中自定義模板函式 並在模板中呼叫原始碼Laravel函式
- C++建構函式和解構函式呼叫虛擬函式時使用靜態聯編C++函式
- 類的解構函式自動呼叫函式
- 函式呼叫棧函式
- 子函式呼叫函式
- 呼叫函式:如把ssha的值在SSHA的框中輸出函式
- 函式的動態引數 及函式巢狀函式巢狀
- 詳解 JS 中 new 呼叫函式原理JS函式
- 外部函式的呼叫函式
- gdb 如何呼叫函式?函式
- C程式函式呼叫&系統呼叫C程式函式
- 普通函式與函式模板呼叫規則函式
- PostgreSQL函式裡呼叫函式(SETOF + RETURN QUERY)SQL函式
- Spring AI中函式呼叫Mistral AI最新APISpringAI函式API
- VS(visual studio) C++ 封裝dll,以及其隱式呼叫與顯式呼叫(靜態動態)C++封裝
- Python中動態類和動態方法的建立與呼叫Python
- linux 動態庫 靜態庫 函式覆蓋Linux函式
- Lua中呼叫ref和out修飾引數的函式/過載函式函式
- 普通函式與函式模板呼叫規則2函式
- js中在一個函式中引用另一個函式中的函式,可以這麼做JS函式
- httprunner yml 呼叫外部函式HTTP函式
- VS中呼叫DLL動態庫的方法
- 如何在 Deno 應用程式中呼叫 Rust 函式Rust函式
- apiAutoTest:支援自定義函式,用例中可呼叫API函式
- Python騷操作:動態定義函式Python函式
- 核心函式 系統呼叫 系統命令 庫函式函式
- Python中定義(建立)、呼叫函式及返回值Python函式
- 如何讓其他模型也能在SemanticKernel中呼叫本地函式模型函式
- 【圖文】函式呼叫過程中棧的變化函式
- Echarts的tooltip中動態單位設定(使用formatter函式加工)EchartsORM函式
- 教你在Nodejs中如何獲取當前函式被呼叫的行數及檔名NodeJS函式
- Python中將函式作為另一個函式的引數傳入並呼叫Python函式