原創(chuàng)|其它|編輯:郝浩|2010-05-14 11:52:48.000|閱讀 7281 次
概述:設(shè)計(jì)報(bào)告不僅費(fèi)時(shí)間,而且還乏味!但是,終端用戶信賴打印的報(bào)告,同時(shí)大多數(shù)的應(yīng)用也需要它們。因此,如何發(fā)揮你UI的功能并讓你的用戶把它呈遞到紙上又會(huì)怎樣呢?毋庸置疑,XtraPrinting Library肯定是你的最佳選擇。在DEV控件包使用方面有多年研究的慧都控件網(wǎng)愿把使用XtraPrinting Library的經(jīng)驗(yàn)與大家共分享。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
設(shè)計(jì)報(bào)告不僅費(fèi)時(shí)間,而且還乏味!但是,終端用戶信賴打印的報(bào)告,同時(shí)大多數(shù)的應(yīng)用也需要它們。因此,如何發(fā)揮你UI的功能并讓你的用戶把它呈遞到紙上又會(huì)怎樣呢?毋庸置疑,XtraPrinting Library肯定是你的最佳選擇。XtraPrinting Library 是100%的C#數(shù)據(jù)呈遞和可視化系統(tǒng)。用于特殊的Visual Studio .NET且將你的用戶接口與打印頁面相連接。一旦你開始使用XtraPrinting Library,你就能方便的打印高級(jí)可視控件中的內(nèi)容,正如XtraGrid和XtraTreeList一樣簡(jiǎn)單。可以使你在不需要傳統(tǒng)的報(bào)告編輯器的情況下能為你的終端用戶提供無限制的報(bào)告。
那么,如何完美演繹XtraPrinting Library的打印功能呢? 在DEV控件包使用方面有多年研究的慧都控件網(wǎng)愿把使用XtraPrinting Library的經(jīng)驗(yàn)與大家共分享。
首先要實(shí)現(xiàn)打印功能必須添加一個(gè)引用:DevExpress.XtraPrint。
實(shí)現(xiàn)打印需要用到的主要的類:
1. public class PrintingSystem : Component, ISupportInitialize,IPrintingSystem,IAccessible,IExporter,IPrintingSystemContext
該類負(fù)責(zé)提供生成報(bào)表的一些方法,還提供了對(duì)頁面進(jìn)行設(shè)置和打印報(bào)表的一些函數(shù),這個(gè)類的屬性包含了訪問其他管理報(bào)表的對(duì)象,如Document類,BrickGraphics類(在報(bào)表上進(jìn)行畫圖的類),XtraPageSettings類(提供對(duì)打印頁面進(jìn)行設(shè)置的操作)
2. public class PrintableComponentLink : Link
該類的功能是對(duì)實(shí)現(xiàn)DevExpress.XtraPrinting.IPrintable接口的所有控件進(jìn)行打印,它提供了一些基本的生成和打印報(bào)表的功能。在生成報(bào)表以后可以通過PrintingSystem將報(bào)表打印出來。
通過以上這兩個(gè)類就能完全實(shí)現(xiàn)各種控件打印了,只要一個(gè)控件實(shí)現(xiàn)了DevExpress.XtraPrinting.IPrintable這個(gè)接口就能夠?qū)υ摽丶蛴。鏕ridControl,CharControl等等,下面給出具體的實(shí)現(xiàn)方法:
public class PrintSettingController { PrintingSystem ps = null; string formName = null; PrintableComponentLink link = null; string _PrintHeader = null; /// <summary> /// 打印時(shí)的標(biāo)題 /// </summary> public string PrintHeader { set { _PrintHeader = value; } } string _PrintFooter = null; /// <summary> /// 打印時(shí)頁腳 /// </summary> public string PrintFooter { set { _PrintFooter = value; } } bool _landScape; /// <summary> /// 頁面橫縱向 /// </summary> public bool LandScape { set { _landScape = value; } } System.Drawing.Printing.PaperKind _paperKind; /// <summary> /// 紙型 /// </summary> public System.Drawing.Printing.PaperKind PaperKind { set { _paperKind = value; } } /// <summary> /// 打印控制器 /// </summary> /// <param name="control">要打印的部件</param> public PrintSettingController(IPrintable control) { if (control == null) return; Control c = (Control)control; formName = c.FindForm().GetType().FullName + "." + c.Name; ps = new DevExpress.XtraPrinting.PrintingSystem(); link = new DevExpress.XtraPrinting.PrintableComponentLink(ps); ps.Links.Add(link); link.Component = control; } /// <summary> /// 打印預(yù)覽 /// </summary> public void Preview() { try { if (DevExpress.XtraPrinting.PrintHelper.IsPrintingAvailable) { Cursor.Current = Cursors.AppStarting; if (_PrintHeader != null) { PageHeaderFooter phf = link.PageHeaderFooter as PageHeaderFooter; //設(shè)置頁眉 phf.Header.Content.Clear(); phf.Header.Content.AddRange(new string[] { "", _PrintHeader, "" }); phf.Header.Font = new System.Drawing.Font("宋體", 14, System.Drawing.FontStyle.Bold); phf.Header.LineAlignment = BrickAlignment.Center; //設(shè)置頁腳 phf.Footer.Content.Clear(); phf.Footer.Content.AddRange(new string[] { "", "", _PrintFooter }); phf.Footer.Font = new System.Drawing.Font("宋體", 9, System.Drawing.FontStyle.Regular); phf.Footer.LineAlignment = BrickAlignment.Center; } link.PaperKind = ps.PageSettings.PaperKind ; link.Margins = ps.PageSettings.Margins; link.Landscape = ps.PageSettings.Landscape; link.CreateDocument(); //漢化 DevExpress.XtraPrinting.Localization.PreviewLocalizer.Active = new Dxperience.LocalizationCHS.DxperienceXtraPrintingLocalizationCHS(); ps.PreviewFormEx.Show(); } else { Cursor.Current = Cursors.Default; MessageBox.Show("打印機(jī)不可用 ", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } finally { Cursor.Current = Cursors.Default; } } /// <summary> /// 打印 /// </summary> public void Print() { try { if (DevExpress.XtraPrinting.PrintHelper.IsPrintingAvailable) { if (_PrintHeader != null) { PageHeaderFooter phf = link.PageHeaderFooter as PageHeaderFooter; //設(shè)置頁眉 phf.Header.Content.Clear(); phf.Header.Content.AddRange(new string[] { "", _PrintHeader, "" }); phf.Header.Font = new System.Drawing.Font("宋體", 14, System.Drawing.FontStyle.Bold); phf.Header.LineAlignment = BrickAlignment.Center; //設(shè)置頁腳 phf.Footer.Content.Clear(); phf.Footer.Content.AddRange(new string[] { "", "", _PrintFooter }); phf.Footer.Font = new System.Drawing.Font("宋體", 9, System.Drawing.FontStyle.Regular); phf.Footer.LineAlignment = BrickAlignment.Center; } link.PaperKind = ps.PageSettings.PaperKind; link.Margins = ps.PageSettings.Margins; link.Landscape = ps.PageSettings.Landscape; link.CreateDocument(); link.CreateDocument(); //漢化 DevExpress.XtraPrinting.Localization.PreviewLocalizer.Active = new Dxperience.LocalizationCHS.DxperienceXtraPrintingLocalizationCHS(); ps.Print(); } else { Cursor.Current = Cursors.Default; MessageBox.Show("打印機(jī)不可用 ", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } finally { } } //獲取頁面設(shè)置信息 public void LoadPageSetting() { System.Drawing.Printing.Margins margins = new System.Drawing.Printing.Margins(60, 60, 60, 60); ps.PageSettings.Assign(margins, _paperKind, _landScape); } }
客戶端如何使用:實(shí)例化PrintSettingController,進(jìn)行參數(shù)設(shè)置,包括頁眉頁腳橫縱向紙型,當(dāng)然所有這些設(shè)置信息也可以在PrintSettingControll類里進(jìn)行設(shè)置了,我這里是需求的需要,所以加在了外面,PrintSystem.PageSettings屬性是XtraPageSettings類型,XtraPageSettings類封裝了所有的頁面設(shè)置信息,你可以在LoadPageSetting()函數(shù)里面進(jìn)行修改,來實(shí)現(xiàn)自己想要的功能,例如可以把設(shè)置信息保存成XML文件
PrintSettingController psc = new PrintSettingController(this.gridControl1);
//頁眉
psc.PrintHeader = this.Text;
//頁腳
psc.PrintFooter = this.dateTimePicker1.Text.ToString();
//橫縱向
psc.LandScape = this.rbtnHorizon.Checked;
//紙型
psc.PaperKind = System.Drawing.Printing.PaperKind.A4;
//加載頁面設(shè)置信息
psc.LoadPageSetting();
psc.Preview();
另外該類實(shí)現(xiàn)了對(duì)打印預(yù)覽對(duì)話框的漢化功能,添加了一個(gè)引用DXChinese.dll,然后在程序中加入了以下代碼即可實(shí)現(xiàn)漢化:
DevExpress.XtraPrinting.Localization.PreviewLocalizer.Active = new Dxperience.LocalizationCHS.DxperienceXtraPrintingLocalizationCHS();]
應(yīng)廣大客戶的強(qiáng)烈要求,慧都為DevExpress for .NET用戶量身打造了一款中文資源包,DevExpress 官方漢化資源 , 您只需極少花費(fèi)便可獲得這套完整、專業(yè)的漢化資源,從而使您的產(chǎn)品實(shí)現(xiàn)全面漢化。
慧都DevExpress高級(jí)培訓(xùn)大幕開啟! 本次培訓(xùn),旨在讓您深入了解DevExpress控件的各項(xiàng)功能,幫您快速掌握產(chǎn)品使用方法、應(yīng)用技巧、關(guān)鍵代碼及常見問題處理技巧,同時(shí)我們將結(jié)合產(chǎn)品應(yīng)用案例,DevExpress高級(jí)培訓(xùn)為您進(jìn)行深入的行業(yè)分析,使您在整個(gè)項(xiàng)目開發(fā)中游刃有余。
(慧都控件網(wǎng)版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處,否則追究法律責(zé)任)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都控件網(wǎng)