




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第10章應用對象每個程序都有個入口點,運行時程序從這個入口點啟動,比如,用C語言編寫程序時,main()就是入口點。與此相似,用PowerBuilder開發應用程序時,同樣需要一個入口點,不過它不是個函數,而是PowerBuilder的一個對象——應用對象。每個PowerBuilder應用程序都必須有一個、而且只能有一個應用對象,也可以說,應用對象代表了應用程序,程序從應用對象開始運行。除了作為應用程序的入口點這一功能外,應用對象還定義了應用程序的系統級行為,例如,應用程序使用哪些應用庫(一種PowerBuilder定義的特殊格式的文件)來保存用到的各種對象、對象的缺省字體、應用程序的圖標等。PowerBuilder是個面向對象的開發環境,用它開發的應用程序以對象和事件驅動為基本特征。作為PowerBuilder的對象之一,應用對象也有一組事件,當用戶運行應用程序時,首先觸發應用對象的Open事件,在這個事件的事件處理程序中我們可以設置應用的初始狀態,裝入其它對象、連接數據庫等。當用戶終止應用程序時,應用對象的Close事件被觸發,在這個事件的事件處理程序中完成必要的系統清理工作,例如斷開與數據庫的連接、清除用戶自定義對象等。當程序運行過程中發生嚴重錯誤時,應用對象的SystemError事件被觸發,這時可以報告錯誤類型和性質,以便及時排除錯誤。由此可見,應用對象對開發完美的PowerBuilder應用程序至關重要、不可或缺。10.1應用對象的屬性應用對象是開發PowerBuider應用程序必須用到的對象,應用對象的屬性對整個應用程序的開發起著舉足輕重的作用,它的字體屬性決定了應用程序開發過程中其它對象的文本字體。利用應用對象可以為應用程序設置下述屬性:缺省的字體屬性(包括字體、風格、大小、顏色);應用程序的圖標;設置缺省字體
應用對象的四個字體屬性決定了開發應用程序過程中經常使用的四種字體,這四個字體屬性分別為:TextFont,ColumnFont,HeaderFont,LabelFont。TextFont決定窗口中的控件、用戶對象、數據窗口中靜態文本的缺省字體;ColumnFont指定數據窗口中檢索出的數據使用的缺省字體;HeaderFont定義列表風格(tabular)和網格風格(grid)數據窗口對象中列標題的缺省字體;LabelFont確定自由風格(freeform)數據窗口對象中列標簽的缺省字體。在開始開發應用程序時,根據需要先設定這些字體后,以后設計其它對象時就免除了反復設置字體的重復勞動。字體包括四方面的內容::字體類型(如宋體、楷體、行楷等)、字體大小(如10,11,12),字體風格,字體的顏色。
設置應用程序圖標
圖標的用途是代表應用程序。程序運行后,如果用戶將其最小化,該圖標就出現在屏幕上。指定缺省全局變量的類型
PowerBuider提供了五個內置的全局變量(SQLCA,SQLDA,SQLSA,Error,Message),它們都有缺省的類型,但開發者可對其進行修改。10.2應用對象的事件應用對象的事件不多,一共只有六個,但它們卻十分重要。它的Open事件必須編寫事件處理程序,否則整個應用程序就會什么也不做就結束了。通常情況下,在Open事件處理程序中我們設置應用系統的初始環境、建立與數據庫的連接、打開應用的第一個窗口等。下面介紹應用對象的Open,Close,Idle,SystemError,ConnectionBegin,ConnectionEnd事件的發生時機與常見用法。10.2應用對象的事件應用Open(打開)事件應用對象的Open事件在啟動應用程序時發生,且只發生一次。是應用程序的入口,對所有應用程序來說,都必須對該事件編程,否則運行應用程序時系統將出現一個警告對話框,提醒你必須對應用對象的Open事件編程。一般來說,在Open事件處理程序中應該完成下述工作:完成初始化工作利用INI文件設置某些屬性,或初始化一個事務對象連接要訪問的數據庫打開應用程序的第一個窗口10.2應用對象的事件應用Close(關閉)事件應用對象的Close事件只發生一次,它發生在退出應用程序、返回到操作系統之前,是應用程序的出口,通常在這個事件的事件處理程序中完成下述工作:刪除應用程序運行過程中創建的對象(例如額外的事務對象等)往INI文件中保存狀態信息,以便下次運行程序時恢復狀態關閉應用程序中尚未關閉的文件斷開與數據庫的連接10.2應用對象的事件應用Idle(空閑)事件
Idle事件在下述情況下發生:首先在應用程序的某段程序中使用Idle()函數設置一個定時器時間間隔,如果在時間間隔規定的時間內用戶沒有敲擊鍵盤或使用鼠標(即用戶沒有操作應用程序),那么系統產生應用對象的Idle事件,用戶的任何交互操作都將重設該定時器。Idle事件的用途有下述幾種:創建自己獨具特色的屏幕保護程序隱藏機密數據并強制用戶在長時間未操作應用程序時重新輸入密碼了解用戶是否長時間未操作應用程序,如果是的話,應用程序可以自動退出、返回系統,這樣有助于減少數據庫的連接數目并節省數據庫資源。10.2應用對象的事件應用SystemError事件是處理運行錯誤的最后一道關卡,用來處理最嚴重的錯誤,可以在此處編寫錯誤處理和可能的恢復代碼,簡單的措施是顯示出錯信息。如果未對此事件編程,那么系統出錯時PowerBuider會通過對話框顯示錯誤代碼和錯誤信息,不過它是用英文表達的,對國內用戶顯然不友好。10.2應用對象的事件應用
ConnectBegin(連接開始)事件ConnectBegin事件用于分布式PowerBuider應用的服務器端。當客戶程序試圖連接到服務器程序時,觸發服務器程序應用對象的ConnectBegin事件。ConnectEnd(連接結束)事件
ConnectEnd事件用于分布式PowerBuider應用的服務器端。當客戶程序試圖斷開與服務器程序的連接時,觸發服務器程序應用對象的ConnectEnd事件。
第11章創建自定義函數和結構由于應用程序的要求千差萬別,標準函數有時仍然滿足不了用戶的要求,所以還需要創建符合自己要求的函數。
PowerBuilder的函數分兩種類型:全局函數和對象函數。全局函數獨立于任何對象,在整個應用程序中都能使用;而對象函數則與特定的窗口、菜單、用戶對象等相關聯,是對象的一部分,根據定義可能在整個程序中使用,也可能只茌對象內部使用。
PowerBuilder的標準函數同樣分為全局函數和對象函數兩類,如messagebox()、類型轉換函數等就是全局函數;而GetltemString()、AddItem()等就是對象函數。結構是組織相關變量的一種方法,例如,可以把姓名、地址、工資等信息放到一個結構變量中,并作為一個整體傳遞給函數。與自定義函數相似,結構也有兩種類型:全局結構和對象結構。全局結構在整個程序中都能使用,而對象結構則只能在該對象中使用。下面介紹創建自定義函數和結構的方法。1.創建自定義全局函數其步驟為:
1.擊file菜單中“New”按鈕創建新的自定義全局函數,彈出定義用戶自定義函數的對話框。
2.定義函數的名字:通常以f_開頭(指示這是個用戶自定義函數),以與系統內置函數相區別。“Access”下拉列表框指定函數的訪問范圍,因為當前我們定義的函數是全局函數,因此該列表框不能選擇。
3.定義返回值的類型:“Return”下拉列表框用于指定函數返回值的類型,缺省時為Integer。注意:如果定義了函數的返回值,則在函數體中必須有
return返回值
1.創建自定義全局函數
向調用的腳本返回值。例如PB的標準函數messagebox返回一個整數,表示用戶單擊的是哪個按鈕。
4.定義函數的調用參數:“Arguments”組框中定義函數參數,每個參數占據一行,每行前的數字,“Type”下拉列表框中選擇參數類型,在“PassBy”下拉列表框中指定參數傳遞方式參數的傳遞方式:)值傳遞“value”,將實際參數的值傳遞給函數參數;不改變實際實際參數的值。例如定義一個函數f_add1(integern) n=n+1在腳本中調用該函數
a=3 f_add1(a)地址傳遞reference,把實際參數的地址傳遞給函數,此時,函數如果修改了形式參數的值,那么實際參數的值也就被修改了;f_add1(refintegern) n=n+1在上層腳本中調用該函數inta=3f_add1(a)此時a的值是什么?只讀傳遞readonly,不過不允許修改參數的值。對于一個只讀傳遞的形式參數,如果在函數中試圖改變參數的值,函數編譯時就會發生錯誤。2.創建自定義對象函數可以為ApplicationObject對象、窗口對象、用戶對象創建自定義函數,這種函數稱為對象函數。對象函數一般只能在該對象內使用,當該對象正在打開且該函數的Access屬性為public時,其他對象的程序可以調用該函數,不過需在函數前加對象名,如W_pipe.w_initial()。如果函數所在的對象沒有被打開(即不在內存中),則該對象函數不能被其他對象的程序調用。自定義對象函數的函數名的訪問屬性設置的設置:2.創建自定義對象函數(1)public:該函數在整個程序中都可訪問;(2)private:該函數只能在附屬于當前窗口的程序中使用;(3)protected:該函數只能在附屬于當前窗口的程序以及附屬于該窗口的后繼窗口的程序中使用。3.創建結構結構實際上定義了一個新的數據類型,應用程序中使用點操作符(.)訪問結構變量的元素。結構和用戶自定義函數一樣,有兩種全局結構和對象結構。全局結構可以在整個應用程序中使用,而這些結構與對象相關,與對象保存在一起,而且只能在附屬于對象的代碼中使用。例如我們定義了結構s_Person,它有三個分量Name、Address、Salary(分別代表姓名、地址、工資),使用下述語句說明結構變量lp_Person并給分量賦值:s_Personlp_Personlp_Person.Name="李輝"lp_Person.Address="北京市"lp_Person.Salary=30003.創建結構使用應用對象的例子:實現在應用程序空閑時,隱藏主窗口,打開登錄窗口重新登錄,實現對應用系統的保護。實現步驟: 在應用對象的open事件中,利用idle(intn)函數,設置啟動應用對象的idle事件的時鐘。 在idle時間中,隱藏主窗口,打開登錄窗口,當輸入口令正確時,顯示主窗口。3.創建結構在systemerror事件中,顯示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論