資料視窗列印詳解

2021-07-03 11:02:14 字數 2873 閱讀 8212



資料視窗列印詳解

powerbuilder中提供了兩種常用的列印資料視窗的方法,一種是使用函式print,使用該函式可以由datawindow自動維護列印作業;另一種是使用函式printdatawindow,該函式需要指令碼來維護列印作業。使用列印作業應該首先啟動列印作業,然後傳送資料到印表機,最後關閉列印作業。典型指令碼模式如下:

long ll_job

ll_job = printopen("資料視窗列印")

//進行列印相關專案的設定

//傳送列印內容

printclose(ll_job)//關閉列印作業

1、啟動列印作業

printopen函式用來開啟乙個作業,並返回當前可以使用的列印作業號,該列印作業號可以標識當前的列印工作。該函式的語法是:

printopen ( )

如果發生錯誤,該函式返回-1。列印作業名稱是可選的,名字在列印佇列中。在列印作業的最後必須關閉列印作業,使powerbuilder和windows清除列印作業所占用的所有資源。因此,每個啟動作業的語句都有乙個關閉作業的語句相對應。

2、關閉列印作業

有兩個函式可以用來關閉列印作業。printclose()函式把當前頁傳送給印表機,並關閉當前列印作業。語法格式為:

printclose(printjobnumber)

函式printcancel()取消列印作業並刪除當前的列印檔案。這個函式可以與print或者printdatawindow()函式組合使用。用於printdatawindow()的語法是:

datawindowcontrol.printcancel()

用於print()的語法是:

printcancel(printjobnumber)

printclose()函式和printcancel()函式是互相排斥的,成功呼叫過乙個以後,不要在沒有再次開啟列印作業時呼叫另乙個函式。

3、printdatawindow函式

該函式是以單個列印作業的形式列印資料視窗控制項

中的內容。powerbuilder使用資料視窗物件中定義的字型和布局進行列印。用這個函式可以在乙個列印作業中列印多個資料視窗,但是每個資料視窗控制項都從新的一頁開始列印;如果要讓幾個資料視窗列印在同一頁中,則需要利用底層的列印函式或將要列印在同一頁中的資料視窗,建立成乙個composite顯示樣式的資料視窗。printdatawindow函式的語法是:

printdatawindow(printjobnumber,datawindow)

其中,printjobnumber是printopen函式返回的列印作業號,datawindow是要列印的資料視窗控制項的名稱。除了能夠和printopen()、printclose()函式共同使用外,其他函式都不能和printdatawindow共同使用。下面是乙個完整地使用函式printdatawindow()進行資料視窗列印的例子,該例子中同時列印三個資料視窗:

long ll_job

ll_job = printopen("資料視窗列印")

printdatawindow(ll_job,dw_1)

printdatawindow(ll_job,dw_2)

printdatawindow(ll_job,dw_3)

printclose(ll_job)//關閉列印作業

在乙個列印作業中同時列印多個資料視窗時,有時需要頁碼連續計數。如果使用composite型別的資料視窗就沒有必要考慮這個問題了,列印單個的資料視窗如何解決這個問題呢?首先在應用中定義乙個全域性變數,用來儲存當前已經列印過的資料視窗的頁號:

int gi_pageno

定義乙個函式f_pageno(可以是全域性函式,也可以是視窗函式)用來返回前面已經列印過的頁號:

return gi_pageno

在資料視窗物件中放置計算字段引用該函式,計算字段如下定義:

page() string(f_get_pageno())

然後在資料視窗的printpage事件中修改該變數,以便記錄每個資料視窗列印了多少頁。

gi_pageno = gi_pageno   1

在第乙個要列印的資料視窗的printstart事件中編寫如下指令碼,以便在重新開始列印作業時,頁號重新開始計數:

gi_pageno=0

在其他要列印的資料視窗的printstart事件中編寫指令碼,使計算字段更新:

dw_1.modify("page_c.expression= 『string( page() f_get_pageno())『")

上面的過程可能感覺到有些煩瑣。實際上指令碼很簡單,定義乙個全域性變數和乙個函式,在資料視窗物件上放置乙個計算字段,在資料視窗的printstart、printpage事件中編寫指令碼。

4、print函式

該函式是乙個通用的函式,可以用來列印powerbuilder中許多可視物件。下面介紹列印資料視窗時的語法,格式如下:

datawindowname.print ( )

datawindowname為要列印的資料視窗控制項

名稱,canceldialog是乙個boolean型變數,指示在列印時是否顯示乙個無模式的可以隨時取消列印的視窗,該變數預設為true。該函式正確執行則返回1,執行過程中發生錯誤則返回-1。

雖然該函式和printdatawindow一樣都可以列印資料視窗,但是它們之間是有區別的。print函式使用設定在資料視窗物件的列印規範來列印資料視窗,而printdatawindow函式使用印表機當前的設定來列印資料視窗。本節開始介紹的乙個簡單的列印程式設計,在呼叫函式printsetup時雖然可以設定印表機,但不是所有的設定都可以在呼叫print函式來列印時體現出來,只有那些在資料視窗物件中沒有指出的可以起作用。因為按鈕「列印設定」僅僅呼叫函式printsetup(),沒有修改資料視窗物件的列印設定。後面章節詳細介紹開發乙個通用的可以設定印表機、列印份數、列印方向、列印紙張、列印哪些頁面等等很多選項的通用的列印配置視窗。

C 列印時如何隱藏列印視窗

最近在開發快件行包管理軟體,在介面上放了一堆文字框之類用於輸入的控制項,當使用者輸入乙個資料後按回車,自動跳到下一文字框,如果是最後乙個文字框,表示輸入完成,立即開始列印票據,為簡化使用者輸入,每個文字框通常都有預設值,因此,絕大部分情況下按一下回車就可以了,用熟練後通常只需修改少量資料,然後一路回...

資料視窗物件函式IsRowNew詳解

函式作用 該函式是資料視窗物件函式,不能在powerscript中直接使用。該函式用來判斷指定資料行的資料是否是新資料行,通常只在detail節中使用該函式。經常在計算域中使用該函式,根據返回值決定計算域中顯示的內容 也可以為列的某屬性設定表示式,使用該函式,比如設定列的背景顏色時使用該函式,可以讓...

go fmt列印詳解

軟體包fmt實現了格式化的i o,其功能類似於c的printf和scanf。格式 動詞 來自c,但更簡單。佔位符說明 示例輸出 v相應值的預設格式 printf v person v類似 v,但輸出結構體時會新增欄位名式 printf v person v相應值的go語法表示 printf v pe...