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

打印编程

开发平台:

Others

  1. using System;
  2. using System.Drawing;
  3. namespace GoldPrinter
  4. {
  5. /// <summary>
  6. /// 中国特色的多层表头。
  7. /// 
  8. /// 作 者:长江支流(周方勇)
  9. /// Email:flygoldfish@163.com  QQ:150439795
  10. /// 网 址:www.webmis.com.cn
  11. /// ★★★★★您可以免费使用此程序,但是请您完整保留此说明,以维护知识产权★★★★★
  12. /// 
  13. /// </summary>
  14. public class MultiHeader:Header
  15. {
  16. private const int CONST_MAX_ROWS = 3;
  17. private bool _isDrawDiagonalLine; //是否打印第一列的对角线起点为0行0列,指定行数为终点
  18. private float _DiagonalLineRows; //行数,可以是小数如1.5
  19. #region 字段属性
  20. /// <summary>
  21. /// 是否打印第一列的对角线,要指定行数
  22. /// </summary>
  23. public bool IsDrawDiagonalLine
  24. {
  25. get
  26. {
  27. return _isDrawDiagonalLine;
  28. }
  29. set
  30. {
  31. _isDrawDiagonalLine = value;
  32. }
  33. }
  34. /// <summary>
  35. /// 对角线起点为0行0列,指定行数为终点。行数可以是小数如1.5
  36. /// </summary>
  37. public float DiagonalLineRows
  38. {
  39. get
  40. {
  41. return _DiagonalLineRows;
  42. }
  43. set
  44. {
  45. _DiagonalLineRows = value;
  46. }
  47. }
  48. #endregion
  49. public MultiHeader()
  50. {
  51. this.IsDrawAllPage = true;
  52. mdrawGrid.AlignMent = AlignFlag.Center;
  53. mdrawGrid.Border = GridBorderFlag.Single;
  54. mdrawGrid.Line = GridLineFlag.Both;
  55. this.IsAverageColsWidth = false;
  56. _isDrawDiagonalLine= false;
  57. _DiagonalLineRows = 2;
  58. //粗体显示并合并
  59. mdrawGrid.Merge = GridMergeFlag.Any;
  60. this.Font = new Font("宋体",12,FontStyle.Bold);
  61. mdrawGrid.PreferredRowHeight = this.Font.Height + 10;
  62. }
  63. protected override int SetMaxRows()
  64. {
  65. return CONST_MAX_ROWS;
  66. }
  67. public void SetMergeTextOnRowSel(int row, int startCol,int endCol, string text)
  68. {
  69. mdrawGrid.SetTextOnRowSel(row,startCol,endCol, text);
  70. }
  71. public void SetMergeTextOnColSel(int col, int startRow,int endRow, string text)
  72. {
  73. mdrawGrid.SetTextOnColSel(col,startRow,endRow, text);
  74. }
  75. public MultiHeader(int rows,int cols):this()
  76. {
  77. base.Initialize(rows,cols);
  78. string mstrAlignment = "";
  79. //所有列居中对齐
  80. for(int i = 0 ; i < cols ; i++)
  81. {
  82. mstrAlignment += "C";
  83. }
  84. this.mdrawGrid.ColsAlignString = mstrAlignment;
  85. }
  86. /// <summary>
  87. /// 画对角线,仅限于第一列
  88. /// </summary>
  89. protected void DrawDiagonalLine(float rows)
  90. {
  91. try
  92. {
  93. int x1,y1,x2,y2;
  94. x1 = mdrawGrid.Rectangle.X;
  95. y1 = mdrawGrid.Rectangle.Y;
  96. x2 = x1 + mdrawGrid.ColsWidth[0];
  97. y2 = y1 + (int)(mdrawGrid.PreferredRowHeight * this._DiagonalLineRows);
  98. this.Graphics.SetClip(new Rectangle(x1,y1,mdrawGrid.ColsWidth[0],mdrawGrid.PreferredRowHeight * mdrawGrid.Rows));
  99. this.Graphics.DrawLine(Pens.Black,x1,y1,x2,y2);
  100. }
  101. catch(Exception e)
  102. {}
  103. finally
  104. {
  105. this.Graphics.ResetClip();
  106. }
  107. }
  108. public override void Draw()
  109. {
  110. base.Draw ();
  111. if (_isDrawDiagonalLine)
  112. {
  113. DrawDiagonalLine(this._DiagonalLineRows);
  114. }
  115. }
  116. public string ColsAlign
  117. {
  118. get
  119. {
  120. return this.mdrawGrid.ColsAlignString;
  121. }
  122. set
  123. {
  124. this.mdrawGrid.ColsAlignString = value;
  125. }
  126. }
  127. }//End Class
  128. }//End NameSpace