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