第10-11章 應(yīng)用對(duì)象創(chuàng)建自定義函數(shù)_第1頁
第10-11章 應(yīng)用對(duì)象創(chuàng)建自定義函數(shù)_第2頁
第10-11章 應(yīng)用對(duì)象創(chuàng)建自定義函數(shù)_第3頁
第10-11章 應(yīng)用對(duì)象創(chuàng)建自定義函數(shù)_第4頁
第10-11章 應(yīng)用對(duì)象創(chuàng)建自定義函數(shù)_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第10章應(yīng)用對(duì)象每個(gè)程序都有個(gè)入口點(diǎn),運(yùn)行時(shí)程序從這個(gè)入口點(diǎn)啟動(dòng),比如,用C語言編寫程序時(shí),main()就是入口點(diǎn)。與此相似,用PowerBuilder開發(fā)應(yīng)用程序時(shí),同樣需要一個(gè)入口點(diǎn),不過它不是個(gè)函數(shù),而是PowerBuilder的一個(gè)對(duì)象——應(yīng)用對(duì)象。每個(gè)PowerBuilder應(yīng)用程序都必須有一個(gè)、而且只能有一個(gè)應(yīng)用對(duì)象,也可以說,應(yīng)用對(duì)象代表了應(yīng)用程序,程序從應(yīng)用對(duì)象開始運(yùn)行。除了作為應(yīng)用程序的入口點(diǎn)這一功能外,應(yīng)用對(duì)象還定義了應(yīng)用程序的系統(tǒng)級(jí)行為,例如,應(yīng)用程序使用哪些應(yīng)用庫(一種PowerBuilder定義的特殊格式的文件)來保存用到的各種對(duì)象、對(duì)象的缺省字體、應(yīng)用程序的圖標(biāo)等。PowerBuilder是個(gè)面向?qū)ο蟮拈_發(fā)環(huán)境,用它開發(fā)的應(yīng)用程序以對(duì)象和事件驅(qū)動(dòng)為基本特征。作為PowerBuilder的對(duì)象之一,應(yīng)用對(duì)象也有一組事件,當(dāng)用戶運(yùn)行應(yīng)用程序時(shí),首先觸發(fā)應(yīng)用對(duì)象的Open事件,在這個(gè)事件的事件處理程序中我們可以設(shè)置應(yīng)用的初始狀態(tài),裝入其它對(duì)象、連接數(shù)據(jù)庫等。當(dāng)用戶終止應(yīng)用程序時(shí),應(yīng)用對(duì)象的Close事件被觸發(fā),在這個(gè)事件的事件處理程序中完成必要的系統(tǒng)清理工作,例如斷開與數(shù)據(jù)庫的連接、清除用戶自定義對(duì)象等。當(dāng)程序運(yùn)行過程中發(fā)生嚴(yán)重錯(cuò)誤時(shí),應(yīng)用對(duì)象的SystemError事件被觸發(fā),這時(shí)可以報(bào)告錯(cuò)誤類型和性質(zhì),以便及時(shí)排除錯(cuò)誤。由此可見,應(yīng)用對(duì)象對(duì)開發(fā)完美的PowerBuilder應(yīng)用程序至關(guān)重要、不可或缺。10.1應(yīng)用對(duì)象的屬性應(yīng)用對(duì)象是開發(fā)PowerBuider應(yīng)用程序必須用到的對(duì)象,應(yīng)用對(duì)象的屬性對(duì)整個(gè)應(yīng)用程序的開發(fā)起著舉足輕重的作用,它的字體屬性決定了應(yīng)用程序開發(fā)過程中其它對(duì)象的文本字體。利用應(yīng)用對(duì)象可以為應(yīng)用程序設(shè)置下述屬性:缺省的字體屬性(包括字體、風(fēng)格、大小、顏色);應(yīng)用程序的圖標(biāo);設(shè)置缺省字體

應(yīng)用對(duì)象的四個(gè)字體屬性決定了開發(fā)應(yīng)用程序過程中經(jīng)常使用的四種字體,這四個(gè)字體屬性分別為:TextFont,ColumnFont,HeaderFont,LabelFont。TextFont決定窗口中的控件、用戶對(duì)象、數(shù)據(jù)窗口中靜態(tài)文本的缺省字體;ColumnFont指定數(shù)據(jù)窗口中檢索出的數(shù)據(jù)使用的缺省字體;HeaderFont定義列表風(fēng)格(tabular)和網(wǎng)格風(fēng)格(grid)數(shù)據(jù)窗口對(duì)象中列標(biāo)題的缺省字體;LabelFont確定自由風(fēng)格(freeform)數(shù)據(jù)窗口對(duì)象中列標(biāo)簽的缺省字體。在開始開發(fā)應(yīng)用程序時(shí),根據(jù)需要先設(shè)定這些字體后,以后設(shè)計(jì)其它對(duì)象時(shí)就免除了反復(fù)設(shè)置字體的重復(fù)勞動(dòng)。字體包括四方面的內(nèi)容::字體類型(如宋體、楷體、行楷等)、字體大小(如10,11,12),字體風(fēng)格,字體的顏色。

設(shè)置應(yīng)用程序圖標(biāo)

圖標(biāo)的用途是代表應(yīng)用程序。程序運(yùn)行后,如果用戶將其最小化,該圖標(biāo)就出現(xiàn)在屏幕上。指定缺省全局變量的類型

PowerBuider提供了五個(gè)內(nèi)置的全局變量(SQLCA,SQLDA,SQLSA,Error,Message),它們都有缺省的類型,但開發(fā)者可對(duì)其進(jìn)行修改。10.2應(yīng)用對(duì)象的事件應(yīng)用對(duì)象的事件不多,一共只有六個(gè),但它們卻十分重要。它的Open事件必須編寫事件處理程序,否則整個(gè)應(yīng)用程序就會(huì)什么也不做就結(jié)束了。通常情況下,在Open事件處理程序中我們?cè)O(shè)置應(yīng)用系統(tǒng)的初始環(huán)境、建立與數(shù)據(jù)庫的連接、打開應(yīng)用的第一個(gè)窗口等。下面介紹應(yīng)用對(duì)象的Open,Close,Idle,SystemError,ConnectionBegin,ConnectionEnd事件的發(fā)生時(shí)機(jī)與常見用法。10.2應(yīng)用對(duì)象的事件應(yīng)用Open(打開)事件應(yīng)用對(duì)象的Open事件在啟動(dòng)應(yīng)用程序時(shí)發(fā)生,且只發(fā)生一次。是應(yīng)用程序的入口,對(duì)所有應(yīng)用程序來說,都必須對(duì)該事件編程,否則運(yùn)行應(yīng)用程序時(shí)系統(tǒng)將出現(xiàn)一個(gè)警告對(duì)話框,提醒你必須對(duì)應(yīng)用對(duì)象的Open事件編程。一般來說,在Open事件處理程序中應(yīng)該完成下述工作:完成初始化工作利用INI文件設(shè)置某些屬性,或初始化一個(gè)事務(wù)對(duì)象連接要訪問的數(shù)據(jù)庫打開應(yīng)用程序的第一個(gè)窗口10.2應(yīng)用對(duì)象的事件應(yīng)用Close(關(guān)閉)事件應(yīng)用對(duì)象的Close事件只發(fā)生一次,它發(fā)生在退出應(yīng)用程序、返回到操作系統(tǒng)之前,是應(yīng)用程序的出口,通常在這個(gè)事件的事件處理程序中完成下述工作:刪除應(yīng)用程序運(yùn)行過程中創(chuàng)建的對(duì)象(例如額外的事務(wù)對(duì)象等)往INI文件中保存狀態(tài)信息,以便下次運(yùn)行程序時(shí)恢復(fù)狀態(tài)關(guān)閉應(yīng)用程序中尚未關(guān)閉的文件斷開與數(shù)據(jù)庫的連接10.2應(yīng)用對(duì)象的事件應(yīng)用Idle(空閑)事件

Idle事件在下述情況下發(fā)生:首先在應(yīng)用程序的某段程序中使用Idle()函數(shù)設(shè)置一個(gè)定時(shí)器時(shí)間間隔,如果在時(shí)間間隔規(guī)定的時(shí)間內(nèi)用戶沒有敲擊鍵盤或使用鼠標(biāo)(即用戶沒有操作應(yīng)用程序),那么系統(tǒng)產(chǎn)生應(yīng)用對(duì)象的Idle事件,用戶的任何交互操作都將重設(shè)該定時(shí)器。Idle事件的用途有下述幾種:創(chuàng)建自己獨(dú)具特色的屏幕保護(hù)程序隱藏機(jī)密數(shù)據(jù)并強(qiáng)制用戶在長(zhǎng)時(shí)間未操作應(yīng)用程序時(shí)重新輸入密碼了解用戶是否長(zhǎng)時(shí)間未操作應(yīng)用程序,如果是的話,應(yīng)用程序可以自動(dòng)退出、返回系統(tǒng),這樣有助于減少數(shù)據(jù)庫的連接數(shù)目并節(jié)省數(shù)據(jù)庫資源。10.2應(yīng)用對(duì)象的事件應(yīng)用SystemError事件是處理運(yùn)行錯(cuò)誤的最后一道關(guān)卡,用來處理最嚴(yán)重的錯(cuò)誤,可以在此處編寫錯(cuò)誤處理和可能的恢復(fù)代碼,簡(jiǎn)單的措施是顯示出錯(cuò)信息。如果未對(duì)此事件編程,那么系統(tǒng)出錯(cuò)時(shí)PowerBuider會(huì)通過對(duì)話框顯示錯(cuò)誤代碼和錯(cuò)誤信息,不過它是用英文表達(dá)的,對(duì)國內(nèi)用戶顯然不友好。10.2應(yīng)用對(duì)象的事件應(yīng)用

ConnectBegin(連接開始)事件ConnectBegin事件用于分布式PowerBuider應(yīng)用的服務(wù)器端。當(dāng)客戶程序試圖連接到服務(wù)器程序時(shí),觸發(fā)服務(wù)器程序應(yīng)用對(duì)象的ConnectBegin事件。ConnectEnd(連接結(jié)束)事件

ConnectEnd事件用于分布式PowerBuider應(yīng)用的服務(wù)器端。當(dāng)客戶程序試圖斷開與服務(wù)器程序的連接時(shí),觸發(fā)服務(wù)器程序應(yīng)用對(duì)象的ConnectEnd事件。

第11章創(chuàng)建自定義函數(shù)和結(jié)構(gòu)由于應(yīng)用程序的要求千差萬別,標(biāo)準(zhǔn)函數(shù)有時(shí)仍然滿足不了用戶的要求,所以還需要?jiǎng)?chuàng)建符合自己要求的函數(shù)。

PowerBuilder的函數(shù)分兩種類型:全局函數(shù)和對(duì)象函數(shù)。全局函數(shù)獨(dú)立于任何對(duì)象,在整個(gè)應(yīng)用程序中都能使用;而對(duì)象函數(shù)則與特定的窗口、菜單、用戶對(duì)象等相關(guān)聯(lián),是對(duì)象的一部分,根據(jù)定義可能在整個(gè)程序中使用,也可能只茌對(duì)象內(nèi)部使用。

PowerBuilder的標(biāo)準(zhǔn)函數(shù)同樣分為全局函數(shù)和對(duì)象函數(shù)兩類,如messagebox()、類型轉(zhuǎn)換函數(shù)等就是全局函數(shù);而GetltemString()、AddItem()等就是對(duì)象函數(shù)。結(jié)構(gòu)是組織相關(guān)變量的一種方法,例如,可以把姓名、地址、工資等信息放到一個(gè)結(jié)構(gòu)變量中,并作為一個(gè)整體傳遞給函數(shù)。與自定義函數(shù)相似,結(jié)構(gòu)也有兩種類型:全局結(jié)構(gòu)和對(duì)象結(jié)構(gòu)。全局結(jié)構(gòu)在整個(gè)程序中都能使用,而對(duì)象結(jié)構(gòu)則只能在該對(duì)象中使用。下面介紹創(chuàng)建自定義函數(shù)和結(jié)構(gòu)的方法。1.創(chuàng)建自定義全局函數(shù)其步驟為:

1.擊file菜單中“New”按鈕創(chuàng)建新的自定義全局函數(shù),彈出定義用戶自定義函數(shù)的對(duì)話框。

2.定義函數(shù)的名字:通常以f_開頭(指示這是個(gè)用戶自定義函數(shù)),以與系統(tǒng)內(nèi)置函數(shù)相區(qū)別?!癆ccess”下拉列表框指定函數(shù)的訪問范圍,因?yàn)楫?dāng)前我們定義的函數(shù)是全局函數(shù),因此該列表框不能選擇。

3.定義返回值的類型:“Return”下拉列表框用于指定函數(shù)返回值的類型,缺省時(shí)為Integer。注意:如果定義了函數(shù)的返回值,則在函數(shù)體中必須有

return返回值

1.創(chuàng)建自定義全局函數(shù)

向調(diào)用的腳本返回值。例如PB的標(biāo)準(zhǔn)函數(shù)messagebox返回一個(gè)整數(shù),表示用戶單擊的是哪個(gè)按鈕。

4.定義函數(shù)的調(diào)用參數(shù):“Arguments”組框中定義函數(shù)參數(shù),每個(gè)參數(shù)占據(jù)一行,每行前的數(shù)字,“Type”下拉列表框中選擇參數(shù)類型,在“PassBy”下拉列表框中指定參數(shù)傳遞方式參數(shù)的傳遞方式:)值傳遞“value”,將實(shí)際參數(shù)的值傳遞給函數(shù)參數(shù);不改變實(shí)際實(shí)際參數(shù)的值。例如定義一個(gè)函數(shù)f_add1(integern) n=n+1在腳本中調(diào)用該函數(shù)

a=3 f_add1(a)地址傳遞reference,把實(shí)際參數(shù)的地址傳遞給函數(shù),此時(shí),函數(shù)如果修改了形式參數(shù)的值,那么實(shí)際參數(shù)的值也就被修改了;f_add1(refintegern) n=n+1在上層腳本中調(diào)用該函數(shù)inta=3f_add1(a)此時(shí)a的值是什么?只讀傳遞readonly,不過不允許修改參數(shù)的值。對(duì)于一個(gè)只讀傳遞的形式參數(shù),如果在函數(shù)中試圖改變參數(shù)的值,函數(shù)編譯時(shí)就會(huì)發(fā)生錯(cuò)誤。2.創(chuàng)建自定義對(duì)象函數(shù)可以為ApplicationObject對(duì)象、窗口對(duì)象、用戶對(duì)象創(chuàng)建自定義函數(shù),這種函數(shù)稱為對(duì)象函數(shù)。對(duì)象函數(shù)一般只能在該對(duì)象內(nèi)使用,當(dāng)該對(duì)象正在打開且該函數(shù)的Access屬性為public時(shí),其他對(duì)象的程序可以調(diào)用該函數(shù),不過需在函數(shù)前加對(duì)象名,如W_pipe.w_initial()。如果函數(shù)所在的對(duì)象沒有被打開(即不在內(nèi)存中),則該對(duì)象函數(shù)不能被其他對(duì)象的程序調(diào)用。自定義對(duì)象函數(shù)的函數(shù)名的訪問屬性設(shè)置的設(shè)置:2.創(chuàng)建自定義對(duì)象函數(shù)(1)public:該函數(shù)在整個(gè)程序中都可訪問;(2)private:該函數(shù)只能在附屬于當(dāng)前窗口的程序中使用;(3)protected:該函數(shù)只能在附屬于當(dāng)前窗口的程序以及附屬于該窗口的后繼窗口的程序中使用。3.創(chuàng)建結(jié)構(gòu)結(jié)構(gòu)實(shí)際上定義了一個(gè)新的數(shù)據(jù)類型,應(yīng)用程序中使用點(diǎn)操作符(.)訪問結(jié)構(gòu)變量的元素。結(jié)構(gòu)和用戶自定義函數(shù)一樣,有兩種全局結(jié)構(gòu)和對(duì)象結(jié)構(gòu)。全局結(jié)構(gòu)可以在整個(gè)應(yīng)用程序中使用,而這些結(jié)構(gòu)與對(duì)象相關(guān),與對(duì)象保存在一起,而且只能在附屬于對(duì)象的代碼中使用。例如我們定義了結(jié)構(gòu)s_Person,它有三個(gè)分量Name、Address、Salary(分別代表姓名、地址、工資),使用下述語句說明結(jié)構(gòu)變量lp_Person并給分量賦值:s_Personlp_Personlp_Person.Name="李輝"lp_Person.Address="北京市"lp_Person.Salary=30003.創(chuàng)建結(jié)構(gòu)使用應(yīng)用對(duì)象的例子:實(shí)現(xiàn)在應(yīng)用程序空閑時(shí),隱藏主窗口,打開登錄窗口重新登錄,實(shí)現(xiàn)對(duì)應(yīng)用系統(tǒng)的保護(hù)。實(shí)現(xiàn)步驟: 在應(yīng)用對(duì)象的open事件中,利用idle(intn)函數(shù),設(shè)置啟動(dòng)應(yīng)用對(duì)象的idle事件的時(shí)鐘。 在idle時(shí)間中,隱藏主窗口,打開登錄窗口,當(dāng)輸入口令正確時(shí),顯示主窗口。3.創(chuàng)建結(jié)構(gòu)在systemerror事件中,顯示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論