轉帖|其它|編輯:郝浩|2010-12-24 15:28:17.000|閱讀 548 次
概述:前面的一些文章介紹了如何使用MultiRow設計模板,以及完成一個簡單的數據庫應用,本文將介紹,在應用設計完成后,你如何使用MulitRow提供的打印功能,按照你的期望,打印到紙張或者其他圖形化界面上。首先我們簡單來介紹一下MultiRow提供的打印接口,然后著重介紹一些對打印效果的設置。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
前面的一些文章介紹了如何使用MultiRow設計模板,以及完成一個簡單的數據庫應用,本文將介紹,在應用設計完成后,你如何使用MulitRow提供的打印功能,按照你的期望,打印到紙張或者其他圖形化界面上。首先我們簡單來介紹一下MultiRow提供的打印接口,然后著重介紹一些對打印效果的設置。
打印接口:在GcMulitRow控件上有面有若個Print方法的重載,還有兩個PrintPreview的重載。其中,Print方法支持將GcMulitRow打印到一個Graphics(Print方法的第一個參數為Graphics對象)上面,或者直接輸出到打印機,你可以根據不同的需求調用不同的方法重載。
這里需要提一下的是,GcMultiRow的打印是基于每個Section的,也就是說,打印的時候,你可以定制,如何打印ColumnHeader,ColumnFooter,以及所有的Row。你會發現Print方法的參數當中,有一些讓你指定打印的范圍和樣式,不過這些打印方法大部分是在需要打印到Graphics對象時需要指定的,而對于直接輸出到打印機,GcMultiRow提供了一個屬性叫做PrintSettings,通過設置這個屬性下面的一些子屬性,你可以定制在輸出到打印機時的打印設置。
打印設置:在GcMulitRow控件上面有一個屬性是PrintSettings,他有一些屬性用來控制打印時候的效果。下面我們來對一些重要的屬性做個介紹。
1. PagingMode
這個屬性指出了在打印的過程中如何分頁。我們上面說過,MultiRow的打印是基于Section的,這個屬性也就是指定,如何將MulitRow當中的Section分布在每個頁面上面。
SingleRow模式
這個設置說明在將MulitRow當中的每一個Row打印到一頁紙上面。我們使用之前的一篇文章的示例作為演示,下面的一頁紙當中,只打印了一個Row:
Flow模式
這個設置說明MulitRow將從第一頁紙開始安排所有的Row,一個挨著一個從上到下排列,直到當前頁面不能顯示下一個Row,將重新生成一頁,繼續排列。下圖所示,按Flow模式打印,這個頁面只能顯示兩個Row:
MultiColumns模式
這種模式一般適用于當MulitRow的Row的寬度比較窄,一頁紙可以打印好幾列Row,為了節省紙張,可以選擇這種模式,打印多個列到一頁紙上面。請看下圖的效果,做了一個寬度較小的模板:
另外,上面的MultiColumns模式下,你還可以選擇所有Row的安排方式是依次從上到下,還是從左到右排列的。這個屬性是MultiColumnsPrintOrder,默認為DownThenOver,也就是從上到下排列,一列打印滿之后再從下一列繼續打印。如果改成OverThenDown,上圖的效果就成這樣子了:
2. 打印Row的范圍(PrintRange,FromRow,ToRow)
通過設置PrintRange你可以選擇打印的時候,只打印你想要的Row,比如PrintRange為AllRows,所有的Row將會被打印到頁面;為SelectedRows時,只打印你當前在GcMulitRow控件上面選中的Row;為CurrentRow,只打印CurrentCell所在的Row;為SomeRows的時候,你可以設置另外兩個屬性,FromRow和ToRow,指出Row的索引,指定從那行開始打印,結束于哪行。比如基于上面的例子,FromRow為10,ToRow為20,那么頁面上只打印10到20之間這十個Row:
上面的三個屬性的設置,對不同的PagingMode都是起作用的。
3. AutoFitWidth和ZoomFactor
當你的模板比較寬,超出了一頁紙可以容納的寬度,這樣就需要兩頁紙來打印完整的Row,如果這時候你希望一頁紙也可以容納這么寬的模板,你可以設置AutoFitWidth,來將打印時候的模板寬度進行縮小,讓紙張可以容納,這時候為了保證打印出來的效果,高度也會被自動縮小。使用之前的一個模板,看下面沒有設置AutoFitWidth之前的一個效果,模板太寬,Row被攔腰折斷,需要兩頁顯示一個Row:
將AutoFitWidth設置為True,寬度方向將被縮小來適應紙張的寬度,請看下圖,每頁紙都可以容納一個Row,這樣節省了紙張:
另外一個屬性ZoomFactor,跟AutoFitWidth有相似的功能,但更靈活,你可以指定ZoomFactor的值從0.1到4之間,任意縮放打印時的Row的大小,根據你的需求排放Row。比如下面的示例展示在Flow的分頁模式下,當ZoomFactor為0.5時,一個頁面將會布置更多的Row:
4. SectionMargin和ColumnMargin
上面提過,MultiRow的打印是基于每個Section的,因此通過這兩個屬性可以設置相鄰Section之間的空隙。用上面的示例,設置SectionMargin為15,每個Row之間將會有空隙,效果如下:
對于ColumnMargin,要求為MultiColumns分頁模式下,相鄰兩列之間的空隙,請看之前展示MultiColumns分頁模式下的示例在設置ColumnMargin為25之后的效果:
5. PrintHeader和PrintFooter
如果你已經熟悉了MultiRow的結構,你肯定知道MultiRow有三種Section,ColumnHeader,Row以及ColumnFooter,前面演示的示例只使用了Row,沒有ColumnHeader和ColumnFooter,下面創建的一個模板,是一個移動通信的發票,有ColumnHeader和ColumnFooter,這個示例將會在后續的博文中詳細講述如何使用MulitRow來制作。運行起來的效果如下所示:
創建這樣的模板分為三個部分,ColumnHeader作為發票頭顯示公司名稱以及其他發票信息,Row部分是主要內容顯示一些明細,ColumnFooter是一些額外信息顯示營業廳收款員信息,請看下圖的三個黑框部分,從上到下分別代表ColumnHeader,Row,ColumnFooter:
在打印的時候,你可以通過設置PrintHeader和PrintFooter屬性指定上面的ColumnHeader和ColumnFooter如何被打印在頁面上面。下面展示在SingleRow模式下,將PrintHeader和PrintFooter都設置為AllRows,這樣每頁紙上面都有公司名稱,營業廳,收款員信息了,如下圖所示
有時候,你希望只在第一頁顯示公司名稱,后面的頁面只顯示內容信息,你可以將PrintHeader屬性設置為FirstPage,這樣只有第一頁顯示公司名稱信息了。其他的值你可以自己嘗試設置,在這里就不一一介紹了。
6. PrintStyle
這是一個非常實用的屬性,他控制打印的樣式,默認為Rich,代表所有的控件上面的樣式和內容都要打印。另外還有Compact和Content模式。在這里值得一提的是Content的打印模式,如果將PrintStyle設置為Content模式,此時,所有的樣式將不被打印,只有每個格子當中的值被打印出來,這樣你可以實現"套打"的功能。也就是說,紙張的樣式,以及格子之類的固定格式已經存在紙張上面,只需要打印變化的內容就行了,這樣可以加快打印速度,節約打印耗材,目前很多票據都是采用這種打印模式。
直接使用上面的示例來說明,如果將PrintStyle設置為Content,打印效果如下:
可以看出,只有藍色的內容被打印了,這種模式下,你往打印機里面放入一張有固定格式的票據,比如下面的樣子:
然后啟動打印功能,一張成型的發票就被打印出來了。
7. 頁面和打印機配置
調用GcMultiRow的PageSetup()方法,你可以打開頁面配置窗口,更改頁面的一些設置,MulitRow就會根據你的設置評估打印時需要如何布局:
還可以在調用Print()方法時,指出要不要彈出打印機設置對話框,更改打印機的設置:
總結:MultiRow提供了豐富的打印功能,除了上面羅列的一些之外,你還可以進行自定義打印,在這里就不過多的闡述。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:網絡轉載