在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環境下執行通過。
相關文章
- 動態呼叫python類和函式Python函式
- 【PB】powerbuilder呼叫VC編寫的動態連結庫UI
- vue在一個函式中呼叫另外一個函式Vue函式
- VB動態呼叫外部函式的方法 (轉)函式
- 在iOS專案中自動生成函式呼叫關係圖(CallGraph)iOS函式
- JS中函式內套函式的呼叫JS函式
- C中呼叫Lua函式函式
- C++原始碼免殺之函式的動態呼叫C++原始碼函式
- perl根據函式名動態呼叫函式
- 避免SQL中的函式呼叫SQL函式
- Matlab中@與函式呼叫Matlab函式
- JNI呼叫c動態連結庫函式程式碼實踐函式
- 淺析PowerBuilder下動態SQL語句UISQL
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- C++中函式呼叫的用法C++函式
- [譯] 解析 Go 中的函式呼叫Go函式
- python利用or在列表解析中呼叫多個函式.pyPython函式
- 影片直播系統原始碼,在Laravel中自定義模板函式 並在模板中呼叫原始碼Laravel函式
- Solidity中函式返回值,靜態動態陣列Solid函式陣列
- 利用動態建立自動化介面實現VB的函式指標呼叫 (轉)函式指標
- 應用呼叫驅動的ioctl函式函式
- 繼承與派生,多繼承,函式過載,建構函式呼叫順序 靜態多型和動態多型繼承函式多型
- 如何呼叫程式碼在python3中改變函式值?Python函式
- 呼叫函式:如把ssha的值在SSHA的框中輸出函式
- C++建構函式和解構函式呼叫虛擬函式時使用靜態聯編C++函式
- JavaScript 中匿名函式的遞迴呼叫JavaScript函式遞迴
- 詳解 JS 中 new 呼叫函式原理JS函式
- 函式呼叫中堆疊的個人理解函式
- 函式的動態引數 及函式巢狀函式巢狀
- 子函式呼叫函式
- 函式呼叫棧函式
- 函式呼叫發生在SQL呼叫之前還是過程中函式SQL
- 運用inlinehook主動呼叫函式inlineHook函式
- PLSQL Language Referenc-PL/SQL動態SQL-練習:在動態SQL塊中呼叫子程式。SQL
- VB中呼叫WebService上的函式的方法Web函式
- Python中動態類和動態方法的建立與呼叫Python
- VS中呼叫DLL動態庫的方法
- 外部函式的呼叫函式