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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

return返回值

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

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

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

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

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論