Outer.cs
上传用户:jx_fiona
上传日期:2014-03-08
资源大小:1387k
文件大小:5k
源码类别:

打印编程

开发平台:

Others

  1. using System;
  2. using System.Drawing;
  3. namespace GoldPrinter
  4. {
  5. /// <summary>
  6. /// Outer,网格体之外的对象,通常用于表头表底做表体的附加信息。
  7. /// 
  8. /// 作 者:长江支流(周方勇)
  9. /// Email:flygoldfish@163.com  QQ:150439795
  10. /// 网 址:www.webmis.com.cn
  11. /// ★★★★★您可以免费使用此程序,但是请您完整保留此说明,以维护知识产权★★★★★
  12. /// 
  13. /// </summary>
  14. public class Outer:Printer,IDisposable
  15. {
  16. //平均列宽
  17. private bool _IsAverageColsWidth;
  18. #region 字段属性
  19. /// <summary>
  20. /// 是否平均分配列宽
  21. /// </summary>
  22. public bool IsAverageColsWidth
  23. {
  24. get
  25. {
  26. return _IsAverageColsWidth;
  27. }
  28. set
  29. {
  30. _IsAverageColsWidth = value;
  31. }
  32. }
  33. #endregion
  34. //核心为网格对象,不对最终用户公开
  35. protected DrawGrid mdrawGrid;
  36. //标识是否初始了行列数,Initialize(int rows, int cols)
  37. //只有初始了,才能执行Draw()操作。
  38. protected bool mblnHadInitialized;
  39. public Outer()
  40. {
  41. _IsAverageColsWidth = true;
  42. mblnHadInitialized = false;
  43. this.IsDrawAllPage = false;
  44. mdrawGrid = new DrawGrid();
  45. mdrawGrid.AlignMent = AlignFlag.Left;
  46. mdrawGrid.ColsAlignString = "";
  47. mdrawGrid.Border = GridBorderFlag.None;
  48. mdrawGrid.Line = GridLineFlag.None;
  49. mdrawGrid.Merge = GridMergeFlag.None;
  50. this.Font = new Font("宋体",11);
  51. mdrawGrid.PreferredRowHeight = this.Font.Height;
  52. mdrawGrid.Initialize(0,0);
  53. }
  54. public object DataSource
  55. {
  56. get
  57. {
  58. return this.mdrawGrid.DataSource;
  59. }
  60. set
  61. {
  62. this.mdrawGrid.DataSource = value;
  63. if (DataSource.GetType().ToString() == "System.String[]" || DataSource.GetType().ToString() == "System.String[,]" || DataSource.GetType().ToString() == "System.Data.DataTable")
  64. {
  65. mblnHadInitialized = true;
  66. }
  67. }
  68. }
  69. public string[,] Text
  70. {
  71. get
  72. {
  73. return this.mdrawGrid.GridText;
  74. }
  75. set
  76. {
  77. this.mdrawGrid.GridText = value;
  78. mblnHadInitialized = true;
  79. }
  80. }
  81. /// <summary>
  82. /// 获取是否能执行绘制操作,只有初始了对象的行列数才可以执行Draw()操作
  83. /// </summary>
  84. /// <returns></returns>
  85. public bool CanDraw
  86. {
  87. get
  88. {
  89. return this.mblnHadInitialized;
  90. }
  91. }
  92. public int RowHeight
  93. {
  94. get
  95. {
  96. return mdrawGrid.PreferredRowHeight;
  97. }
  98. set
  99. {
  100. mdrawGrid.PreferredRowHeight = value;
  101. }
  102. }
  103. /// <summary>
  104. /// 初始行列数
  105. /// </summary>
  106. /// <param name="rows">初始对象的行数</param>
  107. /// <param name="cols">初始对象的列数</param>
  108. public virtual void Initialize(int rows, int cols)
  109. {
  110. mblnHadInitialized = true;
  111. mdrawGrid.Initialize(rows,cols);
  112. }
  113. /// <summary>
  114. /// 获取对象的行数
  115. /// </summary>
  116. public int Rows
  117. {
  118. get
  119. {
  120. return mdrawGrid.Rows;
  121. }
  122. }
  123. /// <summary>
  124. /// 获取对象的列数
  125. /// </summary>
  126. public int Cols
  127. {
  128. get
  129. {
  130. return mdrawGrid.Cols;
  131. }
  132. }
  133. /// <summary>
  134. /// 获取或设置对象的列宽
  135. /// </summary>
  136. public int[] ColsWidth
  137. {
  138. get
  139. {
  140. return mdrawGrid.ColsWidth;
  141. }
  142. set
  143. {
  144. mdrawGrid.ColsWidth = value;
  145. }
  146. }
  147. /// <summary>
  148. /// 获取对象的高
  149. /// </summary>
  150. public override int Height
  151. {
  152. get
  153. {
  154. return mdrawGrid.Rows * mdrawGrid.PreferredRowHeight;
  155. }
  156. }
  157. /// <summary>
  158. /// 为对象指定单元设置文本值
  159. /// </summary>
  160. /// <param name="row">单元行</param>
  161. /// <param name="col">单元列</param>
  162. /// <param name="text">文本值</param>
  163. public virtual void SetText(int row, int col, string text)
  164. {
  165. mdrawGrid.SetText(row,col,text);
  166. }
  167.         
  168. /// <summary>
  169. /// 用指定的行列分隔分隔的一串字符串,些操作默认已执行初始行列数
  170. /// </summary>
  171. /// <param name="text"></param>
  172. /// <param name="colSplit"></param>
  173. public virtual void SetText(char rowSplit,char colSplit,string text)
  174. {
  175. mdrawGrid.SetText(rowSplit,colSplit,text);
  176. //mblnHadInitialized = true;
  177. }
  178. /// <summary>
  179. /// 获取对象指定单元文本值
  180. /// </summary>
  181. /// <param name="row">单元行</param>
  182. /// <param name="col">单元列</param>
  183. /// <returns></returns>
  184. public virtual string GetText(int row, int col)
  185. {
  186. return mdrawGrid.GetText(row,col);
  187. }
  188. /// <summary>
  189. /// 在绘图表面绘制对象绘制文本
  190. /// </summary>
  191. public override void Draw()
  192. {
  193. if (mblnHadInitialized)
  194. {
  195. base.Draw();
  196. //在指定的区域内绘制文本
  197. mdrawGrid.Rectangle = new Rectangle((int)this.Rectangle.X + (int)this.MoveX,(int)this.Rectangle.Y  + (int)this.MoveY,(int)this.Rectangle.Width,(int)this.Rectangle.Height);
  198. mdrawGrid.Graphics = this.Graphics;
  199. if (this._IsAverageColsWidth)
  200. {
  201. mdrawGrid.Width = mdrawGrid.Rectangle.Width;
  202. mdrawGrid.ColsWidth = mdrawGrid.GetAverageColsWidth();
  203. }
  204. mdrawGrid.Draw();
  205. }
  206. else
  207. {
  208. throw new Exception("对象的行列数还未初始,请用Initialize()进行操作!");
  209. }
  210. }
  211.         #region IDisposable 成员
  212.         public override void Dispose()
  213.         {
  214.             this.mdrawGrid.Dispose();
  215.         }
  216.         #endregion
  217.     }//End Class
  218. }//End NameSpace