




已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第11章 自定義函數(shù)和結(jié)構(gòu),11.1 創(chuàng)建自定義全局函數(shù) 11.2 創(chuàng)建自定義對象函數(shù) 11.3 外部函數(shù) 11.4 結(jié)構(gòu),11.1.1創(chuàng)建自定義全局函數(shù),在開發(fā)環(huán)境的主窗口中,選擇工具欄的New圖標(biāo)或選擇主菜單File的子菜單New,將出現(xiàn)標(biāo)題為“New”的窗口。,圖11-1 定義全局函數(shù),11.1.1創(chuàng)建自定義全局函數(shù),Object頁的Function,雙擊Function項(xiàng)或點(diǎn)擊OK按鈕,進(jìn)入全局函數(shù)的定義。 在圖中,F(xiàn)unction Name項(xiàng)中輸入函數(shù)名、Return Type下拉框中選擇函數(shù)返回值的類型、Argument Name中輸入函數(shù)參數(shù)名、Argument Type下拉框中選擇函數(shù)參數(shù)類型、PassBy下拉框中選擇參數(shù)傳遞方式。,11.1.1創(chuàng)建自定義全局函數(shù),參數(shù)傳遞方式有三種: Value:值傳遞-將實(shí)際參數(shù)的值傳遞給函數(shù)參數(shù) Reference:地址傳遞-把實(shí)際參數(shù)的地址傳遞給函數(shù),此時(shí),如果函數(shù)修改了形式參數(shù)的值,那么實(shí)際參數(shù)的值也就被修改了。 Readonly:地址傳遞-把實(shí)際參數(shù)的地址傳遞給函數(shù),不過不允許修改參數(shù)的值。 要增加或刪除參數(shù),可在圖11-2中右擊,出現(xiàn)彈出式菜單。Add Parameter增加參數(shù),Insert Parameter插入?yún)?shù),Delete Parameter刪除參數(shù),圖11-3 增加、插入、刪除參數(shù),11.1.1創(chuàng)建自定義全局函數(shù),函數(shù)名及參數(shù)定義好后,在定義函數(shù)的下面窗口內(nèi)編輯代碼?;蜻x擇主窗口View菜單的Script子菜單,打開函數(shù)代碼編輯窗口。函數(shù)返回值的類型、參數(shù)名、個(gè)數(shù)及類型可以隨時(shí)更改。若函數(shù)有返回值,必須立即輸入代碼,即必須寫一條return語句,否則產(chǎn)生錯(cuò)誤。 定義好的全局函數(shù)和標(biāo)準(zhǔn)函數(shù)一樣使用。,11.1.2修改自定義全局函數(shù),在開發(fā)環(huán)境的主窗口中,選擇工具欄的Open圖標(biāo)或選擇主菜單File的子菜單Open,將出現(xiàn)標(biāo)題為“Open”的窗口,在ObjectType下拉框中選擇Functions,在Object中選擇要打開的函數(shù), 雙擊或點(diǎn)擊OK按鈕,進(jìn)入全局函數(shù)的定義,如前圖11-4所示??梢愿暮瘮?shù)返回值的類型、參數(shù)名、個(gè)數(shù)及類型和函數(shù)代碼。,11.1.3刪除自定義全局函數(shù),打開Library庫管理器,打開要?jiǎng)h除的自定義全局函數(shù)所在的PBL,選擇要?jiǎng)h除的自定義全局函數(shù),右擊,出現(xiàn)彈出式菜單,選擇Delete將刪除所選的自定義全局函數(shù)。,圖11-6 刪除自定義全局函數(shù),11.2.1 創(chuàng)建自定義對象函數(shù),可以為Application Object對象、窗口對象、用戶對象創(chuàng)建自定義函數(shù),這種函數(shù)稱為對象函數(shù)。 先打開要定義函數(shù)的對象,再打開Script代碼編輯窗口,先選擇Functions,再選擇New Function,將出現(xiàn)函數(shù)定義窗口。,11.2.1 創(chuàng)建自定義對象函數(shù),Access缺省值為“public” 。 訪問屬性Access有三個(gè)選擇: l public:在整個(gè)程序中都可訪問。 l private:只能在當(dāng)前對象的程序中使用,不能在該對象的后代的程序中使用。 l protected:只能在當(dāng)前對象的程序以及該對象的后代的程序中使用。 對象函數(shù)的命名規(guī)則一般與對象有關(guān),如應(yīng)用對象Application Object的函數(shù)一般以“af_”作前綴,窗口對象Window的函數(shù)一般以“wf_”作前綴,菜單對象menu的函數(shù)一般以“mf_”作前綴,用戶自定義對象的函數(shù)一般以“uf_”作前綴。這些規(guī)則清楚地表明了函數(shù)所在對象的類型,便于程序的維護(hù)。,11.2.1 創(chuàng)建自定義對象函數(shù),在定義函數(shù)的下面窗口內(nèi)編輯代碼。若函數(shù)有返回值,立即輸入代碼,即必須寫一條return語句,否則產(chǎn)生錯(cuò)誤。 對象函數(shù)的返回值的類型、參數(shù)名、個(gè)數(shù)及類型能隨時(shí)更改,系統(tǒng)會給出一個(gè)提示信息,以確認(rèn)是否更改。 在其它對象的程序中調(diào)用時(shí),應(yīng)在函數(shù)名前加上函數(shù)所在的對象名如w_pipe.wf_error(num),當(dāng)然w_pipe必須已被打開。,11.2.2 修改自定義對象函數(shù),打開自定義函數(shù)所在的對象,打開Script代碼編輯窗口,選擇Functions,再選擇要修改的函數(shù)。對象函數(shù)的返回值的類型、參數(shù)名、個(gè)數(shù)及類型都能隨時(shí)更改。系統(tǒng)會給出一個(gè)提示信息,以確認(rèn)是否更改??梢暂斎牖蚋暮瘮?shù)代碼。,11.2.3 刪除自定義對象函數(shù),要?jiǎng)h除自定義對象函數(shù),首先打開自定義函數(shù)所在的對象,然后選擇主菜單View的子菜單Function List。,圖11-11 列出全部函數(shù),11.2.3 刪除自定義對象函數(shù),選擇Function List后將列出該對象的全部函數(shù),如圖11-12,右擊要?jiǎng)h除的函數(shù),出現(xiàn)一個(gè)彈出式菜單,圖11-13,選擇Delete將刪除所選的對象函數(shù)。 注意:一旦選擇Delete將立刻刪除所選的對象函數(shù),系統(tǒng)對刪除操作不作提醒。 在圖11-13中,選擇彈出式菜單中的Script,或雙擊所選的函數(shù),將打開Script代碼編輯窗口,以便查看與修改所選的對象函數(shù),包括函數(shù)返回值的類型、參數(shù)名、參數(shù)個(gè)數(shù)、參數(shù)類型及函數(shù)代碼等。,11.3.1外部函數(shù)的定義,使用外部函數(shù)之前,必須先對其進(jìn)行說明。根據(jù)作用范圍分為兩種類型:全局外部函數(shù)Global External Functions和局部外部函數(shù)Local External Functions。全局外部函數(shù)可在應(yīng)用程序的任何地方使用;局部外部函數(shù)只能在所定義的對象中使用。 打開要定義外部函數(shù)的對象,再打開Script代碼編輯窗口,選擇Declare,再選擇Global External Functions或Local External Functions,最后輸入函數(shù)定義。,11.3.1外部函數(shù)的定義,定義外部函數(shù)時(shí)使用兩種關(guān)鍵詞:有返回值用Function,無返回值用Subroutine。 用Function的格式: access FUNCTION return_type function_name(REFtype1 arg1,。,typen argn) LIBRARY lib_name 用Subroutine的格式: access SUBROUTINE sub_name(REFtype1 arg1,。,typen argn) LIBRARY lib_name 其中: l access:訪問級別。是可選項(xiàng),只用于局部外部函數(shù)Local External Functions, l return_type:返回值類型。必須是一個(gè)合法的PowerBuilder數(shù)據(jù)類型。 l function_name和sub_name:外部程序的函數(shù)名或子程序名儲存在DLL庫中。 l REF:參數(shù)通過地址傳遞。 l typei:參數(shù)的數(shù)據(jù)類型。 l argi:參數(shù)名 l lib_name:包含外部函數(shù)或子程序的DLL/EXE文件名。,11.3.2外部函數(shù)的調(diào)用,全局外部函數(shù)的使用類似于全局函數(shù),局部外部函數(shù)的使用類似于對象函數(shù)。在其它對象的代碼中使用局部外部函數(shù)時(shí)需加上函數(shù)定義所在的對象名。 但在實(shí)際應(yīng)用中會發(fā)現(xiàn),調(diào)用外部函數(shù)經(jīng)常不成功,原因可能是以下幾種情況: (1) 32位環(huán)境調(diào)用16位DLL (2) 數(shù)據(jù)類型不一致。外部函數(shù)一般是用C/C+寫的,有許多PowerBuilder所沒有的數(shù)據(jù)類型。 (3) 指針。PowerBuilder沒有指針數(shù)據(jù)類型。 (4) 函數(shù)名大小寫錯(cuò)誤。在PowerBuilder中不區(qū)分大小,但使用外部函數(shù)時(shí)卻要區(qū)分大小寫。 (5) 外部函數(shù)所在的庫文件DLL或EXE文件找不到??赡懿辉诋?dāng)前路徑下。,11.3.3外部函數(shù)使用實(shí)例,在Windows的控制面板中的有一個(gè)口令管理程序,用來設(shè)置和修改Windows和其它系統(tǒng)口令,如圖11-15。如何調(diào)用這個(gè)口令管理程序呢? 步驟如下: (1) 創(chuàng)建一個(gè)setpassword.pbl,其應(yīng)用對象名為password,再創(chuàng)建一個(gè)窗口w_pw,窗口上放一個(gè)“設(shè)置口令”的命令按鈕cb_setpw,如圖11-16所示。,圖11-15 Windows口令管理窗口,圖11-16 調(diào)用外部函數(shù)示例,11.3.3外部函數(shù)使用實(shí)例,(2) 編寫代碼 l 在應(yīng)用對象password的open事件中編寫代碼: open(w_pw) l 在窗口w_pw中定義外部函數(shù)。先打開w_pw的Script代碼編輯窗口,再選擇Declare,然后選擇Local External Functions。,圖11-17 定義外部函數(shù),11.3.3外部函數(shù)使用實(shí)例,輸入下面的代碼: / 定義外部函數(shù),即聲明外部函數(shù)的語法格式與來源 Function Long ShellExecuteA(Long hwindow, String lpOperation, String lpFile, String lpParameters, String lpDirectory, Long nShowCmd) Library shell32.dll Function Long GetDesktopWindow() Library user32.dll l 在“設(shè)置口令”的命令按鈕cb_setpw的clicked事件中輸入以下代碼: /在PowerBuilder中調(diào)用Windows控制面板中的口令管理程序 String cpl_name String ls_null SetNull(ls_null) cpl_name = “Password.cpl“ ShellExecuteA(GetDesktopWindow(), ls_null, rundll32.exe, “shell32.dll,Control_RunDLL “ + cpl_name + “,“, ls_null, 0) /調(diào)用外部函數(shù),11.4.1 定義全局結(jié)構(gòu),在開發(fā)環(huán)境的主窗口中,選擇工具欄的New圖標(biāo)或選擇主菜單File的子菜單New,將出現(xiàn)標(biāo)題為“New”的窗口。,圖11-18 定義全局結(jié)構(gòu),11.4.1 定義全局結(jié)構(gòu),選擇Object頁的Structure項(xiàng),雙擊Structure項(xiàng)或點(diǎn)擊OK,進(jìn)入全局結(jié)構(gòu)的定義,如圖11-19。 在圖11-19全局結(jié)構(gòu)定義畫板中,輸入元素名,并選擇元素的數(shù)據(jù)類型。右擊將出現(xiàn)彈出式菜單,如圖11-20,選擇Insert Row將插入元素,選擇Delete Row將刪除元素。,圖11-19 全局結(jié)構(gòu)定義畫板,圖11-20 增加、刪除結(jié)構(gòu)元素,11.4.1 定義全局結(jié)構(gòu),定義好結(jié)構(gòu)的元素后,選擇保存,輸入結(jié)構(gòu)名。結(jié)構(gòu)名一般以“s_”作前綴。,圖11-21 保存結(jié)構(gòu),11.4.2 定義對象層結(jié)構(gòu),為Application Object對象、窗口對象、菜單對象、用戶對象等創(chuàng)建結(jié)構(gòu)稱為對象層結(jié)構(gòu)。對象層結(jié)構(gòu)一般只能在該對象內(nèi)使用,當(dāng)該對象正在打開時(shí),其它對象的程序可以使用該結(jié)構(gòu)。 打開要定義結(jié)構(gòu)的對象,選擇主菜單Insert的子菜單Structure,如圖11-22,出現(xiàn)結(jié)構(gòu)定義窗口,如圖11-23。輸入結(jié)構(gòu)名、元素名及類型。按右鍵出現(xiàn)彈出式菜單,選擇Insert Row將插入元素,選擇Delete Row將刪除元素。對象層的結(jié)構(gòu)與所在的對象一起保存,不能單獨(dú)保存。,圖11-22 定義對象層結(jié)構(gòu),圖11-23 結(jié)構(gòu)定義畫板,11.4.3 使用結(jié)構(gòu),要使用某結(jié)構(gòu),應(yīng)該先聲明一個(gè)該結(jié)構(gòu)類型的實(shí)例變量,然后再引用該結(jié)構(gòu)的變量。 例如,設(shè)s_student是定義的一個(gè)全局結(jié)構(gòu),則在程序中使用該結(jié)構(gòu)類型的代碼例子為: s_student s1,s2 /定義兩個(gè)s_student型的實(shí)例變量s1和s2 s1.no=“320108800123204” /給結(jié)構(gòu)s1的元素no賦值 =sle.text /給結(jié)構(gòu)s1的元素name賦值 s1.math=96 /給結(jié)構(gòu)s1的元素math賦值 s2=s1 /將結(jié)構(gòu)s1各元素的值賦給結(jié)構(gòu)s2的對應(yīng)元素, /只有同一類型的結(jié)構(gòu)才能這樣整體賦值。 對象層的結(jié)構(gòu)其引用方法與全局結(jié)構(gòu)基本一樣,但在其它對象的代碼中引用時(shí),需指明結(jié)構(gòu)所在的對象(象引用對象函數(shù)那樣)。 例如,s_stru是在窗口w_main中定義的結(jié)構(gòu),在窗口中定義一個(gè)實(shí)例變量s3: s_stru s3 /在窗口的Declare中定義Instance Variable 要在另一窗口w_sub中引用s3,格式為: sle_1.text=w_main.s3.id sle_2.text=w_,11.4.4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備預(yù)防維護(hù)管理制度
- 設(shè)計(jì)公司施工管理制度
- 設(shè)計(jì)消防自審管理制度
- 訴求響應(yīng)平臺管理制度
- 診所衛(wèi)生制度管理制度
- 試劑動(dòng)態(tài)盤查管理制度
- 誠信商廈安全管理制度
- 財(cái)政直接支付管理制度
- 貨品配送處罰管理制度
- 貨車司機(jī)之家管理制度
- 參加培訓(xùn)人員匯總表
- 0720小罐茶品牌介紹
- 大健康產(chǎn)業(yè)商業(yè)計(jì)劃書
- GB∕T 7528-2019 橡膠和塑料軟管及軟管組合件 術(shù)語
- 常州市機(jī)械行業(yè)安管考試題庫
- 手術(shù)記錄-頸胸椎前后路脫位c7t
- PPT模板:小學(xué)生防溺水安全教育主題班會08課件(45頁P(yáng)PT)
- 如何當(dāng)好副職
- GB∕T 10544-2022 橡膠軟管及軟管組合件 油基或水基流體適用的鋼絲纏繞增強(qiáng)外覆橡膠液壓型 規(guī)范
- 槽邊排風(fēng)罩的設(shè)計(jì)計(jì)算
- 低血糖的急救護(hù)理PPT課件
評論
0/150
提交評論