當前位置:編程學習大全網 - 編程語言 - 什麽是PFC,請做詳細介紹

什麽是PFC,請做詳細介紹

PFC是PowerBuilder高級開發工具集中的壹個基本類庫,提供了進行壹般應用開發時會經常用到的對象和函數代碼。PowerBuilder5.0的基本類庫中的內容十分豐富,比以前版本中所提供的功能要增加了許多,而且對象之間的繼承和引用關系也比以前更為清晰合理。因此編寫壹個完全建構在PFC類庫之上的應用可大大提高軟件質量,而且利用基類的已有代碼也會使得許多復雜的功能實現起來要輕松得多。可是如何編寫這樣的應用,以合理地繼承、利用和改造PFC的基本框架,以及使用PFC時應註意的事項,卻是十分復雜的問題,在這裏無法用幾千字就能夠講清楚。不過我們仍然能夠像使用以往版本的類庫壹樣,只是借用PFC中壹些對象的基本功能以省去自己編寫代碼的麻煩。

本文將主要介紹如何利用PFC中幾個數據窗口功能,為我們的編程帶來便利。

我們在應用中會遇到層次型關系的數據,例如部門和雇員實體之間的關系。在對壹個部門下雇員的數據進行維護時,可以使用Master/Detail的表現形式,在數據窗口dw_1表現已有部門的數據,並根據用戶選擇的某壹條記錄,在dw_2中變換所選定部門雇員的信息,並對雇員信息進行維護。

首先聲明壹個全局變量:

n_cst_appmanagergnv_app

在應用的Open事件中加入:

gnv_app=CREATEn_cst_appmanager

gnv_app.Eventpfc_Open(commandline)

在應用的Close事件中鍵入:

gnv_app.Eventpfc_Close()

DESTROYn_cst_appmanager

在窗口中我們定義dw_1和dw_2為PFC中u_dw的實例對象,在窗口的Open事件中我們編程如下:

//設置dw_1和dw_2的級聯方式

dw_1.of_setlinkage(true)

dw_2.of_setlinkage(true)

dw_1.of_settransobject(sqlca)

dw_2.of_settransobject(sqlca)

//定義dw_1和dw_2的級聯關系

dw_2.inv_linkage.of_linkto(dw_1)

dw_2.inv_linkage.of_setarguments("dept","dept")

dw_2.inv_linkage.of_setusecollinks(1)//設置連接方式為filter

//觸發dw_2的pfc_retrieve()事件

dw_2.eventpfc_retrieve()

ifdw_1.eventpfc_retrieve()=-1then

messagebox("錯誤","提取數據錯誤-類別")

else

dw_1.setfocus()

endif

在dw_1和dw_2的pfc_retrieve

事件中將祖先的代碼覆蓋,並分別寫下如下語句:

returnthis.retrieve()

在dw_1的rowfocuschanged事件代碼中將對該數據窗口的數據進行過濾,而執行retrieve()函數將觸發這壹事件。

使用PFC中這個對象的優點還可以體現在以下兩點:當需要更新級聯的所有數據窗口時,只需執行dw_1.inv_linkage.of_update()壹條命令即可完成;如果想要在dw_2中增加壹行新數據,可使用dw_2.pfc_addrow(0)或dw_2.pfc_insertrow()函數,這個函數會將dw_2中dept字段的值自動設置為dw_1中dept的當前值,從而避免了手工使用GetItem和SetItem函數來設置。

在上述簡單的關系中,並未充分體現出PFC優越性。但在壹個工廠中對零件的管理或是大型商場中對商品的管理,往往是要通過多次的級聯才能定位到某壹類產品的子目,在這樣的系統中,擁有壹個像u_dw這樣的基類,編程的效率就可以提高許多。

在壹個數據窗口中如果有的列含有下拉式數據窗口時,在這些列中使用下拉搜索功能會給用戶帶來很多方便,也就是說在這些列中當用戶使用鍵盤敲入數據時,應用程序自動地搜索下拉式數據窗口中對應的值,使其跳轉到相應的記錄上。使用PFC,我們只需指定這個數據窗口繼承n_cst_dwsrv_dropdownsearch對象,並在這個數據窗口中鍵入下列代碼:

constructor事件:

dw_1.of_setdropdownsearch(true)

dw_1.inv_dropdownsearch.of_addcolumn()

editchanged事件:

inv_dropdownsearch.eventpfc_editchanged(row,dwo,data)

這個數據窗口中所有的下拉式數據窗口就都具備了下拉搜索功能。不過我們要對這個PFC對象進行改進,以適應中國國情。原有的搜索功能是要求用戶在該列中輸入下拉式數據窗口的顯示值(displaycolumn)才能查詢,這對於使用拼音文字的用戶是十分方便的,應用將隨著用戶輸入字符的增多,逐步遞進地顯示相應的記錄。可是在中文應用軟件中,該列的顯示值壹般都為中文,輸入並不方便,所以有經驗的操作員往往習慣於使用他們熟悉的編號,即下拉式數據窗口的實際存儲值(datacolumn),因此將應用程序做成對實際值進行查詢也許更符合中國用戶的習慣。我們就需要在n_cst_dwsrv_dropdownsearch中的pfc_editchanged事件中作如下修改:

覆蓋祖先類的代碼,鍵入新代碼。新代碼是對它的祖先對象pfc_n_cst_dwsrv_dropdownsearch中pfc_editchanged事件的代碼作部分修改,將其中第72行

ls_dddw_displaycol=adwo_obj.dddw.displaycolumn

改為:

ls_dddw_displaycol=adwo_obj.dddw.datacolumn

即可。(因代碼過長,我們無法在這裏全部引述。)

3.使用PFC中有關數據窗口打印的功能。在u_dw對象中還提供了壹些有關打印的事件和函數,我們首先在數據窗口的構造事件或窗口的Open事件中,將數據窗口設置允許打印預覽:dw_1.of_setprintpreview(true)。

我們可以在程序中調用dw_1.eventpfc_print()、dw_1.eventpfc_printpreview()、dw_1.eventpfc_pagesetup()、dw_1.eventpfc_zoom()分別用來實現打印、打印預覽、頁面設置、預覽窗口的放大縮小等功能。在這些功能中,PowerBuilder會自動彈出相應的窗口,由用戶設置打印的份數,頁面紙張的大小,預覽窗口的顯示比例等參數。

此外在窗口對象中PFC提供了response風格窗口的祖先類w_response,其中加入壹些用戶可能經常用到的功能。例如只需在繼承窗口的open事件中加入如下語句:this.inv_base.of_center(),可實現該窗口在打開時窗口在屏幕的正中位置顯示;又如在open事件中加入:this.of_setbase(true),每個繼承窗口缺省都有數據數據窗口存儲功能等等。

  • 上一篇:netty系列之:protobuf在UDP協議中的使用
  • 下一篇:藥學專業描述怎麽寫?
  • copyright 2024編程學習大全網