PowerBuilder的精確套打技術研究

才智咖 人氣:2.48W
PowerBuilder的精確套打技術研究
摘    要:針對固定表格進行套打時資料難以實現精確定位的這一實際情況,提出了利用動態資料視窗技術實現的一種解決方案,並詳細地介紹了具體實現步驟。關鍵詞:PowerBuilder;套打;動態資料視窗在進行MIS設計時,具體到對固定表格進行套打的設計中,由於固定表格在印刷,設計過程中,常常會出現以下:(1)表格的整體位置發生偏移。(2)表格的保持不變,但由於具體需要,對其中的某些資料的位置進行了調整。由此,會造成了列印時資料產生錯位、偏移等現象。使得列印的整體效果不甚美觀,大大的了整個程式的效能。這一點上,在車票、學員證件等列印過程中體現地尤為明顯。
若每次進行調整後,均需修改源程式,並重新進行編譯,這顯然會給使用者的工作中帶來許多不必要的麻煩。同樣的,對於開發者來說,這並不是功能完善的軟體系統。所幸的是PowerBuilder中提供了強大的動態資料視窗技術,使用者可以通過建立資料視窗物件,動態地生成資料視窗,並且在程式執行的.時候,再將其和一個數據視窗控制元件進行關聯。使用者也可以在程式執行過程中,通過程式指令碼獲取或重新設定資料視窗物件中所有實體的屬性。例如,我們可以在程式執行過程中修改DataWindow中任何物件,比如列、域、圖表等的高度、寬度、所在位置等屬性值,或者重新定義資料來源來實現特殊查詢。
實現固定表格精確套打的關鍵在於兩點:其一:表格內資料(即資料視窗中的物件,主要是列或計算域)的移動。其二:資料視窗物件列印格式的儲存及恢復。
根據動態資料視窗的技術特點,我們可以在程式中動態地實現固定表格中精確定位列印。PowerBuilder中實現精確套打主要涉及到以下幾個函式:
1)      ribe ( propertylist )     
獲取資料視窗物件或資料視窗物件中某一元素的當前屬性值。同樣的,也可以使用圓點操作符來獲取。
資料視窗中列的橫座標的獲取
<DW Control Name>ribe("<Columnname>.X")
<DW Control Name>ct.<Columnname>.X
2)      fy ( modstring )
使用者可以在modstring中使用下列三種語句型別來修改Datawindow物件。
1:Create object - 在資料視窗物件中增加物件,比如列、繪圖物件和計算域等。
2:Destroy object - 從資料視窗中刪除物件。
3:Property assignments - 動態設定資料視窗物件或資料視窗物件中某一元素的屬性值。比如背景、顏色、字型大小等。同樣的,也可以使用圓點操作符來進行設定。
設定資料視窗中列的橫座標
<DW Control Name>fy("<Columnname>.X='<an integer>'")
<DW Control Name>ct.<Columnname>.X='<an integer>'
3)      LibraryExport ( libraryname, objectname, objecttype )
通過呼叫LibraryExport函式,可以卸出一個視窗物件的原始碼,把它儲存在一個字串變數中,然後在Create函式中利用此原始碼(或做了某些改變的原始碼)建立一個數據視窗物件。
String ls_dwsyn, ls_errors
ls_dwsyn = LibraryExport("c:pb", "d_emp", ExportDataWindow!)4)      te ( syntax {, errorbuffer } )
利用資料視窗原始碼建立資料視窗物件,並將之與資料視窗控制元件相關聯。在呼叫Create( )時,函式的Syntax引數可以通過以下三種進行定義:(1)呼叫SyntaxFromsql函式 (2)呼叫LibraryExport函式 (3)使用者可以自己建立Syntax。
dw_te(ls_dwsyn, ls_errors)
dw_ransobject(sqlca)
dw_ieve( )5)      LibraryImport ( libraryname, objectname, objecttype, syntax, errors {, comments } )
將當前的資料視窗物件匯入到PBL庫中。用以儲存當前資料視窗設定。
string dwsyntax, ErrorBuffer
integer rtncode
dwsyntax = dw_ribe("ax")
rtncode = LibraryImport("c:pb", "d_emp", ImportDataWindow!, dwsyntax, ErrorBuffer )具體實現:
1)      新建一PBL庫,Print_,用以存放需要儲存的資料視窗物件。
2)      在程式執行中,資料視窗初始化期間,利用LibraryExport( )函式,匯入儲存在Print_中地資料視窗物件。
3)      在Create( )函式中利用上一步所匯入的原始碼建立資料視窗物件。
4)      如有需要對資料視窗中的物件進行調整,則對資料視窗中的具體物件的位置利用fy( )進行左右,上下調整。
5)      最後,將調整後的資料視窗設定儲存到Print_庫中。
6)      另外,可設定預設設定,當對資料視窗的物件調整不滿意時使用。
至此,完成了一個固定表格精確套打的程式。

   
【1】William . Powerbuilder 6開發指南【M】,北京:出版社,1998。
【2】劉紅巖。資料視窗技術詳解 【M】,北京:電子工業出版社,1999。
【3】王蓉。開發技術詳解 【M】,北京:電子工業出版社,1999。
TAGS:精確 技術