⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 outer.cs

📁 C#实现简单报表打印 进销存真正源代码
💻 CS
字号:
using System;
using System.Drawing;

namespace GoldPrinter
{
	/// <summary>
	/// Outer,网格体之外的对象,通常用于表头表底做表体的附加信息
	/// 
	/// 程序提供:周方勇;Email:flygoldfish@sina.com。
	/// 请 关 注:WebMIS.Net快速开发工具,不写一行程序开发B/S架构下MIS、OA、CRM、人事管理、档案管理等数据库网页系统。简单、实用、稳定、可靠。
	/// 下    载:
	///			 上海奥联:WWW.AlinkSoft.COM
	///			 用友华表:WWW.CellSoft.CC
	///★★★★★您可以免费使用此程序,但是请您保留此说明,以维护知识产权★★★★★
	/// </summary>
	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;
			}		
		}

		/// <summary>
		/// 获取是否能执行绘制操作,只有初始了对象的行列数才可以执行Draw()操作
		/// </summary>
		/// <returns></returns>
		public bool CanDraw
		{
			get
			{
				return this.mblnHadInitialized;
			}
		}

		public int RowHeight
		{
			get
			{
				return mdrawGrid.RowHeight;
			}
			set
			{
				mdrawGrid.RowHeight = value;			
			}
		
		}

		#region IOuter 成员

		/// <summary>
		/// 初始行列数
		/// </summary>
		/// <param name="rows">初始对象的行数</param>
		/// <param name="cols">初始对象的列数</param>
		public virtual void Initialize(int rows, int cols)
		{
			mblnHadInitialized = true;
			mdrawGrid.Initialize(rows,cols);
		}

		/// <summary>
		/// 获取对象的行数
		/// </summary>
		public int Rows
		{
			get
			{
				return mdrawGrid.Rows;
			}
		}

		/// <summary>
		/// 获取对象的列数
		/// </summary>
		public int Cols
		{
			get
			{
				return mdrawGrid.Cols;
			}
		}

		/// <summary>
		/// 获取对象的高
		/// </summary>
		public override float Height
		{
			get
			{
				return mdrawGrid.Rows * mdrawGrid.RowHeight;
			}
		}
		
		/// <summary>
		/// 指定绘制区域
		/// </summary>
		System.Drawing.Rectangle Rectangle
		{
			get
			{
				return mdrawGrid.Rectangle;
			}
			set
			{
				 mdrawGrid.Rectangle = value;
			}
		}


		/// <summary>
		/// 为对象指定单元设置文本值
		/// </summary>
		/// <param name="row">单元行</param>
		/// <param name="col">单元列</param>
		/// <param name="text">文本值</param>
		public virtual void SetText(int row, int col, string text)
		{
			mdrawGrid.SetText(row,col,text);
		}

        
		/// <summary>
		/// 用指定的行列分隔分隔的一串字符串,些操作默认已执行初始行列数
		/// </summary>
		/// <param name="text"></param>
		/// <param name="colSplit"></param>
		public virtual void SetText(char rowSplit,char colSplit,string text)
		{
			mdrawGrid.SetText(rowSplit,colSplit,text);

			//mblnHadInitialized = true;
		}

		/// <summary>
		/// 获取对象指定单元文本值
		/// </summary>
		/// <param name="row">单元行</param>
		/// <param name="col">单元列</param>
		/// <returns></returns>
		public virtual string GetText(int row, int col)
		{
			return mdrawGrid.GetText(row,col);		
		}

		/// <summary>
		/// 在绘图表面绘制对象绘制文本
		/// </summary>
		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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -