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


using System; 
using System.Drawing; 
 
namespace GoldPrinter 
{ 
	///  
	/// Outer,网格体之外的对象,通常用于表头表底做表体的附加信息 
	///  
	/// 程序提供:周方勇;Email:flygoldfish@sina.com。 
	/// 请 关 注:WebMIS.Net快速开发工具,不写一行程序开发B/S架构下MIS、OA、CRM、人事管理、档案管理等数据库网页系统。简单、实用、稳定、可靠。 
	/// 下    载: 
	///			 上海奥联:WWW.AlinkSoft.COM 
	///			 用友华表:WWW.CellSoft.CC 
	///★★★★★您可以免费使用此程序,但是请您保留此说明,以维护知识产权★★★★★ 
	///  
	public class Outer:Printer 
	{ 
		//核心为网格对象,不对最终用户公开 
		protected DrawGrid mdrawGrid; 
 
		//标识是否初始了行列数,只在两个地方修改,Initialize(int rows, int cols)或SetText(char rowSplit,char colSplit,string text)。 
		//只有初始了,才能执行Draw()操作。 
		protected bool mblnHadInitialized; 
 
		public Outer() 
		{ 
			mblnHadInitialized = false; 
			this.IsDrawAllPage = false; 
 
			mdrawGrid = new DrawGrid(); 
			 
			mdrawGrid.AlignMent = AlignFlag.Left; 
			mdrawGrid.ColsAlignString = ""; 
			mdrawGrid.Border = GridBorderFlag.None; 
			mdrawGrid.Line = GridLineFlag.None; 
			mdrawGrid.Merge = GridMergeFlag.None; 
 
			this.Font = new Font("宋体",11); 
			 
			mdrawGrid.RowHeight = this.Font.Height; 
			mdrawGrid.Initialize(0,0); 
 
		} 
 
		public object DataSource 
		{ 
			get 
			{ 
				return this.mdrawGrid.DataSource; 
			} 
			set 
			{ 
				this.mdrawGrid.DataSource = value; 
			}		 
		} 
 
		public string[,] Text 
		{ 
			get 
			{ 
				return this.mdrawGrid.GridText; 
			} 
			set 
			{ 
				this.mdrawGrid.GridText = value; 
			}		 
		} 
 
		///  
		/// 获取是否能执行绘制操作,只有初始了对象的行列数才可以执行Draw()操作 
		///  
		///  
		public bool CanDraw 
		{ 
			get 
			{ 
				return this.mblnHadInitialized; 
			} 
		} 
 
		public int RowHeight 
		{ 
			get 
			{ 
				return mdrawGrid.RowHeight; 
			} 
			set 
			{ 
				mdrawGrid.RowHeight = value;			 
			} 
		 
		} 
 
		#region IOuter 成员 
 
		///  
		/// 初始行列数 
		///  
		/// 初始对象的行数 
		/// 初始对象的列数 
		public virtual void Initialize(int rows, int cols) 
		{ 
			mblnHadInitialized = true; 
			mdrawGrid.Initialize(rows,cols); 
		} 
 
		///  
		/// 获取对象的行数 
		///  
		public int Rows 
		{ 
			get 
			{ 
				return mdrawGrid.Rows; 
			} 
		} 
 
		///  
		/// 获取对象的列数 
		///  
		public int Cols 
		{ 
			get 
			{ 
				return mdrawGrid.Cols; 
			} 
		} 
 
		///  
		/// 获取对象的高 
		///  
		public override float Height 
		{ 
			get 
			{ 
				return mdrawGrid.Rows * mdrawGrid.RowHeight; 
			} 
		} 
		 
		///  
		/// 指定绘制区域 
		///  
		System.Drawing.Rectangle Rectangle 
		{ 
			get 
			{ 
				return mdrawGrid.Rectangle; 
			} 
			set 
			{ 
				 mdrawGrid.Rectangle = value; 
			} 
		} 
 
 
		///  
		/// 为对象指定单元设置文本值 
		///  
		/// 单元行 
		/// 单元列 
		/// 文本值 
		public virtual void SetText(int row, int col, string text) 
		{ 
			mdrawGrid.SetText(row,col,text); 
		} 
 
         
		///  
		/// 用指定的行列分隔分隔的一串字符串,些操作默认已执行初始行列数 
		///  
		///  
		///  
		public virtual void SetText(char rowSplit,char colSplit,string text) 
		{ 
			mdrawGrid.SetText(rowSplit,colSplit,text); 
 
			//mblnHadInitialized = true; 
		} 
 
		///  
		/// 获取对象指定单元文本值 
		///  
		/// 单元行 
		/// 单元列 
		///  
		public virtual string GetText(int row, int col) 
		{ 
			return mdrawGrid.GetText(row,col);		 
		} 
 
		///  
		/// 在绘图表面绘制对象绘制文本 
		///  
		public override void Draw() 
		{ 
			if (mblnHadInitialized) 
			{ 
				base.Draw(); 
 
				//在指定的区域内绘制文本				 
				mdrawGrid.Rectangle = new Rectangle((int)this.RectangleF.X + (int)this.MoveX,(int)this.RectangleF.Y  + (int)this.MoveY,(int)this.RectangleF.Width,(int)this.RectangleF.Height); 
				mdrawGrid.Graphics = this.Graphics; 
				mdrawGrid.Draw(); 
			} 
			else 
			{ 
				throw new Exception("对象的行列数还未初始,请用Initialize()进行操作!"); 
			} 
		} 
 
		#endregion 
 
	}//End Class 
}//End NameSpace