www.pudn.com > Cnewprint.rar > MultiHeader.cs


using System; 
using System.Drawing; 
 
namespace GoldPrinter 
{ 
	///  
	/// MultiHeader,多层表头 
	///  
	/// 程序提供:周方勇;Email:flygoldfish@sina.com。 
	/// 请 关 注:WebMIS.Net快速开发工具,不写一行程序开发B/S架构下MIS、OA、CRM、人事管理、档案管理等数据库网页系统。简单、实用、稳定、可靠。 
	/// 下    载: 
	///			 上海奥联:WWW.AlinkSoft.COM 
	///			 用友华表:WWW.CellSoft.CC 
	///★★★★★您可以免费使用此程序,但是请您保留此说明,以维护知识产权★★★★★ 
	///  
	public class MultiHeader:Header 
	{ 
		private const int CONST_MAX_ROWS = 3; 
		private bool _isDrawDiagonalLine;		//是否打印第一列的对角线起点为0行0列,指定行数为终点 
		private float _DiagonalLineRows;		//行数,可以是小数如1.5 
		 
		#region 字段属性		 
		///  
		/// 是否打印第一列的对角线,要指定行数 
		///  
		public bool IsDrawDiagonalLine 
		{ 
			get 
			{ 
				return _isDrawDiagonalLine; 
			} 
			set 
			{ 
				_isDrawDiagonalLine = value; 
			} 
		} 
 
		///  
		/// 对角线起点为0行0列,指定行数为终点。行数可以是小数如1.5 
		///  
		public float DiagonalLineRows 
		{ 
			get 
			{ 
				return _DiagonalLineRows; 
			} 
			set 
			{ 
				_DiagonalLineRows = value; 
			} 
		} 
		#endregion 
 
		public MultiHeader() 
		{ 
			this.IsDrawAllPage = true; 
			mdrawGrid.AlignMent = AlignFlag.Center; 
			mdrawGrid.Border = GridBorderFlag.Single; 
			mdrawGrid.Line = GridLineFlag.Both; 
 
			_isDrawDiagonalLine= false; 
			_DiagonalLineRows = 2; 
			 
			//粗体显示并合并 
			mdrawGrid.Merge = GridMergeFlag.Any; 
			this.Font = new Font("宋体",12,FontStyle.Bold); 
			 
			mdrawGrid.RowHeight = this.Font.Height + 10;			 
		} 
 
		protected override int SetMaxRows() 
		{ 
			return CONST_MAX_ROWS; 
		} 
 
		public void SetMergeTextOnRowSel(int row, int startCol,int endCol, string text) 
		{			 
			mdrawGrid.SetTextOnRowSel(row,startCol,endCol, text); 
		} 
 
		public void SetMergeTextOnColSel(int col, int startRow,int endRow, string text) 
		{			 
			mdrawGrid.SetTextOnColSel(col,startRow,endRow, text); 
		} 
 
 
		public MultiHeader(int rows,int cols):this() 
		{ 
			base.Initialize(rows,cols); 
 
			string mstrAlignment = ""; 
 
			//所有列居中对齐 
			for(int i = 0 ; i < cols ; i++) 
			{ 
				mstrAlignment += "C"; 
			} 
			this.mdrawGrid.ColsAlignString = mstrAlignment; 
		} 
 
		///  
		/// 画对角线,仅限于第一列 
		///  
		protected void DrawDiagonalLine(float rows) 
		{	 
			try 
			{ 
				float x1,y1,x2,y2; 
 
				x1 = (float)mdrawGrid.Rectangle.X; 
				y1 = (float)mdrawGrid.Rectangle.Y; 
 
				x2 = x1 + mdrawGrid.ColsWidth[0]; 
				y2 = y1 + mdrawGrid.RowHeight * this._DiagonalLineRows;			 
				 
				this.Graphics.SetClip(new RectangleF(x1,y1,mdrawGrid.ColsWidth[0],mdrawGrid.RowHeight * mdrawGrid.Rows)); 
 
				this.Graphics.DrawLine(Pens.Black,x1,y1,x2,y2); 
			} 
			catch(Exception e) 
			{} 
			finally 
			{ 
				this.Graphics.ResetClip(); 
			} 
 
		} 
 
		public override void Draw() 
		{ 
			base.Draw (); 
			if (_isDrawDiagonalLine) 
			{ 
				DrawDiagonalLine(this._DiagonalLineRows); 
			} 
		} 
 
 
		public string ColsAlign 
		{ 
			get 
			{ 
				return this.mdrawGrid.ColsAlignString; 
			} 
			set 
			{ 
				this.mdrawGrid.ColsAlignString = value; 
			} 
		} 
 
		public int[] ColsWidth 
		{ 
			get 
			{ 
				return this.mdrawGrid.ColsWidth; 
			} 
			set 
			{ 
				this.mdrawGrid.ColsWidth = value; 
			} 
		} 
 
	}//End Class 
}//End NameSpace