官方微博
微信公眾號(hào)
新手入門(mén)
會(huì)員類(lèi)型
在線咨詢(xún)
維權(quán)服務(wù)
投訴建議
聯(lián)系我們
PB中dynamic調(diào)用類(lèi)型的用法
說(shuō)到DYNAMIC調(diào)用類(lèi)型,我們先看看對(duì)象、屬性、函數(shù)和事件的引用方法: PowerBuilder 6.0應(yīng)用程序的開(kāi)發(fā)過(guò)程實(shí)際上就是各種對(duì)象的定義和使用過(guò)程。所有對(duì)象都有名稱(chēng),并通過(guò)名稱(chēng)相互區(qū)分。在PowerScript中,訪問(wèn)對(duì)象的屬性、函數(shù)、事件的方法很簡(jiǎn)單,就是使用圓點(diǎn)作為標(biāo)記符,具體來(lái)說(shuō),訪問(wèn)對(duì)象屬性的格式為: 對(duì)象名.對(duì)象屬性 例如,把單行編輯框sle_name的用戶(hù)輸入內(nèi)容送到字符串變量UserEnter的語(yǔ)句可以寫(xiě)成: UserEnter=sle_name.Text 其中,sle_name是一個(gè)單行編輯框?qū)ο蟮拿Q(chēng),Text是單行編輯框的Text屬性。 程序中訪問(wèn)對(duì)象的函數(shù)與事件的格式為: { objectname.} { type } { calltype } { when } functionname ( { argumentlist } ) 其中,大括號(hào)所括成分根據(jù)情況可以省略,各成分的意義為: objectname是對(duì)象名; type取值為FUNCTION或EVENT,用于指明訪問(wèn)函數(shù)還是事件,缺省值為FUNCTION; calltype用于指明PowerBuilder 查找函數(shù)的時(shí)機(jī),有效取值為: STATIC(缺省值):編譯時(shí)查找函數(shù),若不存在,產(chǎn)生編譯錯(cuò)誤 when用于指明函數(shù)或事件是立即執(zhí)行呢還是當(dāng)前程序段執(zhí)行完畢后執(zhí)行,取值為: TRIGGER(缺省值):立即執(zhí)行 functionname指明調(diào)用的函數(shù)或事件名稱(chēng) argumentlist給出函數(shù)或事件的參數(shù) 例如,想把輸入焦點(diǎn)移動(dòng)到單行編輯框sle_name上,程序中寫(xiě)上語(yǔ)句:sle_name.SetFocus()即可。想立即執(zhí)行按鈕cb_name的單擊事件處理程序,那么寫(xiě)上語(yǔ)句:cb_name .EVENT TRIGGER Clicked()即可。 從以上看出,DYNAMIC是指定函數(shù)或事件的一個(gè)動(dòng)態(tài)調(diào)用,即當(dāng)你指定一個(gè)動(dòng)態(tài)調(diào)用時(shí),函數(shù)和事件在編譯時(shí)不一定要存在。你告訴編譯器:相信我,此處在運(yùn)行時(shí)一定會(huì)有一個(gè)合適的函數(shù)或事件。對(duì)于動(dòng)態(tài)調(diào)用,PowerBuilder等到執(zhí)行時(shí)才尋找函數(shù)或事件。這就給了你更大的編程靈活性。 請(qǐng)比較以下的示例(摘錄): 目前流行的大部分應(yīng)用程序中都提供了Undo功能,在PowerBuilder中也可以利用Undo()函數(shù)實(shí)現(xiàn)該功能。Undo()函數(shù)可用于DataWindow, EditMask, MultiLineEdit, RichTextEdit和SingleLineEdit 對(duì)象,如果只對(duì)某一個(gè)對(duì)象進(jìn)行Undo操作,只需在Undo菜單項(xiàng)的單擊事件中鍵入如下腳本:Objectname.undo(),但是當(dāng)窗口中有多個(gè)對(duì)象,我們?cè)诰帉?xiě)腳本時(shí)并不知道要對(duì)哪個(gè)對(duì)象執(zhí)行undo()操作,如何解決這一問(wèn)題呢?在PowerBuilder中,undo()等函數(shù)只能用于可視對(duì)象,而所有可視對(duì)象均繼承自系統(tǒng)對(duì)象類(lèi)GraphicObject。因此我們可以定義一個(gè)GraphicObject對(duì)象的實(shí)例變量go_object,等到運(yùn)行時(shí)再用getfocus()函數(shù)確定具體操作對(duì)象。然后用Typeof()函數(shù)確定當(dāng)前對(duì)象的類(lèi)型,再用Choose case語(yǔ)句根據(jù)不同的類(lèi)型引用不同的實(shí)例變量,代碼如下: 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("出錯(cuò)","不能撤消!") end choose 其實(shí)我們可以用動(dòng)態(tài)調(diào)用函數(shù)的方法簡(jiǎn)單地解決這一問(wèn)題,即對(duì)GraphicObject對(duì)象調(diào)用undo()函數(shù),然后在函數(shù)名前加上關(guān)鍵字Dynamic |
煤炭網(wǎng)版權(quán)與免責(zé)聲明:
凡本網(wǎng)注明"來(lái)源:煤炭網(wǎng)www.shanesbookmarks.com "的所有文字、圖片和音視頻稿件,版權(quán)均為"煤炭網(wǎng)www.shanesbookmarks.com "獨(dú)家所有,任何媒體、網(wǎng)站或個(gè)人在轉(zhuǎn)載使用時(shí)必須注明"來(lái)源:煤炭網(wǎng)www.shanesbookmarks.com ",違反者本網(wǎng)將依法追究責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,是本著為讀者傳遞更多信息的目的,并不意味著本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載使用時(shí),必須保留本網(wǎng)注明的稿件來(lái)源,禁止擅自篡改稿件來(lái)源,并自負(fù)版權(quán)等法律責(zé)任。違反者本網(wǎng)也將依法追究責(zé)任。 如本網(wǎng)轉(zhuǎn)載稿件涉及版權(quán)等問(wèn)題,請(qǐng)作者在兩周內(nèi)盡快來(lái)電或來(lái)函聯(lián)系。
網(wǎng)站技術(shù)運(yùn)營(yíng):北京真石數(shù)字科技股份有限公司、喀什中煤遠(yuǎn)大供應(yīng)鏈管理有限公司、喀什煤網(wǎng)數(shù)字科技有限公司
總部地址:北京市豐臺(tái)區(qū)總部基地航豐路中航榮豐1層
京ICP備18023690號(hào)-1 京公網(wǎng)安備 11010602010109號(hào)