




已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第11章 自定義函數(shù)和結(jié)構(gòu),11.1 創(chuàng)建自定義全局函數(shù) 11.2 創(chuàng)建自定義對(duì)象函數(shù) 11.3 外部函數(shù) 11.4 結(jié)構(gòu),11.1.1創(chuàng)建自定義全局函數(shù),在開(kāi)發(fā)環(huán)境的主窗口中,選擇工具欄的New圖標(biāo)或選擇主菜單File的子菜單New,將出現(xiàn)標(biāo)題為“New”的窗口。,圖11-1 定義全局函數(shù),11.1.1創(chuàng)建自定義全局函數(shù),Object頁(yè)的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ù),不過(guò)不允許修改參數(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子菜單,打開(kāi)函數(shù)代碼編輯窗口。函數(shù)返回值的類型、參數(shù)名、個(gè)數(shù)及類型可以隨時(shí)更改。若函數(shù)有返回值,必須立即輸入代碼,即必須寫一條return語(yǔ)句,否則產(chǎn)生錯(cuò)誤。 定義好的全局函數(shù)和標(biāo)準(zhǔn)函數(shù)一樣使用。,11.1.2修改自定義全局函數(shù),在開(kāi)發(fā)環(huán)境的主窗口中,選擇工具欄的Open圖標(biāo)或選擇主菜單File的子菜單Open,將出現(xiàn)標(biāo)題為“Open”的窗口,在ObjectType下拉框中選擇Functions,在Object中選擇要打開(kāi)的函數(shù), 雙擊或點(diǎn)擊OK按鈕,進(jìn)入全局函數(shù)的定義,如前圖11-4所示。可以更改函數(shù)返回值的類型、參數(shù)名、個(gè)數(shù)及類型和函數(shù)代碼。,11.1.3刪除自定義全局函數(shù),打開(kāi)Library庫(kù)管理器,打開(kāi)要?jiǎng)h除的自定義全局函數(shù)所在的PBL,選擇要?jiǎng)h除的自定義全局函數(shù),右擊,出現(xiàn)彈出式菜單,選擇Delete將刪除所選的自定義全局函數(shù)。,圖11-6 刪除自定義全局函數(shù),11.2.1 創(chuàng)建自定義對(duì)象函數(shù),可以為Application Object對(duì)象、窗口對(duì)象、用戶對(duì)象創(chuàng)建自定義函數(shù),這種函數(shù)稱為對(duì)象函數(shù)。 先打開(kāi)要定義函數(shù)的對(duì)象,再打開(kāi)Script代碼編輯窗口,先選擇Functions,再選擇New Function,將出現(xiàn)函數(shù)定義窗口。,11.2.1 創(chuàng)建自定義對(duì)象函數(shù),Access缺省值為“public” 。 訪問(wèn)屬性Access有三個(gè)選擇: l public:在整個(gè)程序中都可訪問(wèn)。 l private:只能在當(dāng)前對(duì)象的程序中使用,不能在該對(duì)象的后代的程序中使用。 l protected:只能在當(dāng)前對(duì)象的程序以及該對(duì)象的后代的程序中使用。 對(duì)象函數(shù)的命名規(guī)則一般與對(duì)象有關(guān),如應(yīng)用對(duì)象Application Object的函數(shù)一般以“af_”作前綴,窗口對(duì)象Window的函數(shù)一般以“wf_”作前綴,菜單對(duì)象menu的函數(shù)一般以“mf_”作前綴,用戶自定義對(duì)象的函數(shù)一般以“uf_”作前綴。這些規(guī)則清楚地表明了函數(shù)所在對(duì)象的類型,便于程序的維護(hù)。,11.2.1 創(chuàng)建自定義對(duì)象函數(shù),在定義函數(shù)的下面窗口內(nèi)編輯代碼。若函數(shù)有返回值,立即輸入代碼,即必須寫一條return語(yǔ)句,否則產(chǎn)生錯(cuò)誤。 對(duì)象函數(shù)的返回值的類型、參數(shù)名、個(gè)數(shù)及類型能隨時(shí)更改,系統(tǒng)會(huì)給出一個(gè)提示信息,以確認(rèn)是否更改。 在其它對(duì)象的程序中調(diào)用時(shí),應(yīng)在函數(shù)名前加上函數(shù)所在的對(duì)象名如w_pipe.wf_error(num),當(dāng)然w_pipe必須已被打開(kāi)。,11.2.2 修改自定義對(duì)象函數(shù),打開(kāi)自定義函數(shù)所在的對(duì)象,打開(kāi)Script代碼編輯窗口,選擇Functions,再選擇要修改的函數(shù)。對(duì)象函數(shù)的返回值的類型、參數(shù)名、個(gè)數(shù)及類型都能隨時(shí)更改。系統(tǒng)會(huì)給出一個(gè)提示信息,以確認(rèn)是否更改。可以輸入或更改函數(shù)代碼。,11.2.3 刪除自定義對(duì)象函數(shù),要?jiǎng)h除自定義對(duì)象函數(shù),首先打開(kāi)自定義函數(shù)所在的對(duì)象,然后選擇主菜單View的子菜單Function List。,圖11-11 列出全部函數(shù),11.2.3 刪除自定義對(duì)象函數(shù),選擇Function List后將列出該對(duì)象的全部函數(shù),如圖11-12,右擊要?jiǎng)h除的函數(shù),出現(xiàn)一個(gè)彈出式菜單,圖11-13,選擇Delete將刪除所選的對(duì)象函數(shù)。 注意:一旦選擇Delete將立刻刪除所選的對(duì)象函數(shù),系統(tǒng)對(duì)刪除操作不作提醒。 在圖11-13中,選擇彈出式菜單中的Script,或雙擊所選的函數(shù),將打開(kāi)Script代碼編輯窗口,以便查看與修改所選的對(duì)象函數(shù),包括函數(shù)返回值的類型、參數(shù)名、參數(shù)個(gè)數(shù)、參數(shù)類型及函數(shù)代碼等。,11.3.1外部函數(shù)的定義,使用外部函數(shù)之前,必須先對(duì)其進(jìn)行說(shuō)明。根據(jù)作用范圍分為兩種類型:全局外部函數(shù)Global External Functions和局部外部函數(shù)Local External Functions。全局外部函數(shù)可在應(yīng)用程序的任何地方使用;局部外部函數(shù)只能在所定義的對(duì)象中使用。 打開(kāi)要定義外部函數(shù)的對(duì)象,再打開(kāi)Script代碼編輯窗口,選擇Declare,再選擇Global External Functions或Local External Functions,最后輸入函數(shù)定義。,11.3.1外部函數(shù)的定義,定義外部函數(shù)時(shí)使用兩種關(guān)鍵詞:有返回值用Function,無(wú)返回值用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:訪問(wèn)級(jí)別。是可選項(xiàng),只用于局部外部函數(shù)Local External Functions, l return_type:返回值類型。必須是一個(gè)合法的PowerBuilder數(shù)據(jù)類型。 l function_name和sub_name:外部程序的函數(shù)名或子程序名儲(chǔ)存在DLL庫(kù)中。 l REF:參數(shù)通過(guò)地址傳遞。 l typei:參數(shù)的數(shù)據(jù)類型。 l argi:參數(shù)名 l lib_name:包含外部函數(shù)或子程序的DLL/EXE文件名。,11.3.2外部函數(shù)的調(diào)用,全局外部函數(shù)的使用類似于全局函數(shù),局部外部函數(shù)的使用類似于對(duì)象函數(shù)。在其它對(duì)象的代碼中使用局部外部函數(shù)時(shí)需加上函數(shù)定義所在的對(duì)象名。 但在實(shí)際應(yīng)用中會(huì)發(fā)現(xiàn),調(diào)用外部函數(shù)經(jīng)常不成功,原因可能是以下幾種情況: (1) 32位環(huán)境調(diào)用16位DLL (2) 數(shù)據(jù)類型不一致。外部函數(shù)一般是用C/C+寫的,有許多PowerBuilder所沒(méi)有的數(shù)據(jù)類型。 (3) 指針。PowerBuilder沒(méi)有指針數(shù)據(jù)類型。 (4) 函數(shù)名大小寫錯(cuò)誤。在PowerBuilder中不區(qū)分大小,但使用外部函數(shù)時(shí)卻要區(qū)分大小寫。 (5) 外部函數(shù)所在的庫(kù)文件DLL或EXE文件找不到。可能不在當(dāng)前路徑下。,11.3.3外部函數(shù)使用實(shí)例,在Windows的控制面板中的有一個(gè)口令管理程序,用來(lái)設(shè)置和修改Windows和其它系統(tǒng)口令,如圖11-15。如何調(diào)用這個(gè)口令管理程序呢? 步驟如下: (1) 創(chuàng)建一個(gè)setpassword.pbl,其應(yīng)用對(duì)象名為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)用對(duì)象password的open事件中編寫代碼: open(w_pw) l 在窗口w_pw中定義外部函數(shù)。先打開(kāi)w_pw的Script代碼編輯窗口,再選擇Declare,然后選擇Local External Functions。,圖11-17 定義外部函數(shù),11.3.3外部函數(shù)使用實(shí)例,輸入下面的代碼: / 定義外部函數(shù),即聲明外部函數(shù)的語(yǔ)法格式與來(lái)源 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),在開(kāi)發(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頁(yè)的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 定義對(duì)象層結(jié)構(gòu),為Application Object對(duì)象、窗口對(duì)象、菜單對(duì)象、用戶對(duì)象等創(chuàng)建結(jié)構(gòu)稱為對(duì)象層結(jié)構(gòu)。對(duì)象層結(jié)構(gòu)一般只能在該對(duì)象內(nèi)使用,當(dāng)該對(duì)象正在打開(kāi)時(shí),其它對(duì)象的程序可以使用該結(jié)構(gòu)。 打開(kāi)要定義結(jié)構(gòu)的對(duì)象,選擇主菜單Insert的子菜單Structure,如圖11-22,出現(xiàn)結(jié)構(gòu)定義窗口,如圖11-23。輸入結(jié)構(gòu)名、元素名及類型。按右鍵出現(xiàn)彈出式菜單,選擇Insert Row將插入元素,選擇Delete Row將刪除元素。對(duì)象層的結(jié)構(gòu)與所在的對(duì)象一起保存,不能單獨(dú)保存。,圖11-22 定義對(duì)象層結(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的對(duì)應(yīng)元素, /只有同一類型的結(jié)構(gòu)才能這樣整體賦值。 對(duì)象層的結(jié)構(gòu)其引用方法與全局結(jié)構(gòu)基本一樣,但在其它對(duì)象的代碼中引用時(shí),需指明結(jié)構(gòu)所在的對(duì)象(象引用對(duì)象函數(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 住人活動(dòng)房租賃協(xié)議
- 2025年考試關(guān)鍵要點(diǎn)試題及答案
- 企業(yè)運(yùn)營(yíng)狀況與實(shí)力證明書(5篇)
- 行政管理中的質(zhì)量控制策略試題及答案
- 全面解析2025年自考試題及答案
- 2024-2025學(xué)年高中歷史第七單元蘇聯(lián)的社會(huì)主義建設(shè)第21課二戰(zhàn)后蘇聯(lián)的經(jīng)濟(jì)改革課后篇鞏固提升含解析新人教版必修2
- 2025新款店鋪裝修合同范本下載
- 行政管理試卷的公文解析試題及答案
- 2025年廣東省茶葉采購(gòu)合同模板
- 管理學(xué)組織行為研究試題及答案
- 教師聽(tīng)課評(píng)價(jià)記錄表
- 十字頭夾具設(shè)計(jì)說(shuō)明書
- 04S202 室內(nèi)消火栓安裝
- 醫(yī)療設(shè)備強(qiáng)檢計(jì)量目錄(參考)
- 三年級(jí)硬筆書法課課件
- 佳發(fā)教育考試網(wǎng)上巡查系統(tǒng)(標(biāo)準(zhǔn)版)
- 投融資部面試題本
- 汽車配件名稱大全全
- 新版pep小學(xué)英語(yǔ)四年級(jí)下冊(cè)《unit-5-my-clothes-Part-B-Read-and-write-》課件
- 康復(fù)治療-運(yùn)動(dòng)療法-課件
- 《學(xué)弈》優(yōu)質(zhì)課一等獎(jiǎng)?wù)n件
評(píng)論
0/150
提交評(píng)論