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

打印编程

开发平台:

Others

  1. using System;
  2. using System.Drawing;
  3. namespace GoldPrinter
  4. {
  5. /// <summary>
  6. /// Top,提供一个一行三列的对象,第一列居左,第三列居右,中间一旬居中。默认每页重复打印。
  7. /// 
  8. /// 作 者:长江支流(周方勇)
  9. /// Email:flygoldfish@163.com  QQ:150439795
  10. /// 网 址:www.webmis.com.cn
  11. /// ★★★★★您可以免费使用此程序,但是请您完整保留此说明,以维护知识产权★★★★★
  12. /// 
  13. /// </summary>
  14. public class Top:Printer
  15. {
  16. //核心为网格对象,不对最终用户公开
  17. protected DrawGrid mdrawGrid;
  18. protected string _text;
  19. protected object _dataSource;
  20. public Top()
  21. {
  22. this.IsDrawAllPage = true;
  23. _text = "";
  24. mdrawGrid = new DrawGrid();
  25.             
  26. //mdrawGrid.AlignMent = AlignFlag.Left;
  27. mdrawGrid.ColsAlignString = "LCR";
  28. mdrawGrid.Border = GridBorderFlag.None;
  29. mdrawGrid.Line = GridLineFlag.None;
  30. mdrawGrid.Merge = GridMergeFlag.None;
  31. this.Font = new Font("宋体",11);
  32. mdrawGrid.PreferredRowHeight = this.Font.Height;
  33. mdrawGrid.Initialize(1,3);
  34. }
  35. public string Text
  36. {
  37. get
  38. {
  39. return this._text;
  40. }
  41. set
  42. {
  43. this._text = value;
  44. SetText(this._text);
  45. }
  46. }
  47. /// <summary>
  48. /// 获取或设置数据源,可以是以'|'分隔的字符串或一维数组
  49. /// </summary>
  50. public object DataSource
  51. {
  52. get
  53. {
  54. return this._dataSource;
  55. }
  56. set
  57. {
  58. if (value != null)
  59. {
  60. if (value.GetType().ToString() == "System.String")
  61. {
  62. this.Text = (string)value;
  63. }
  64. else if(value.GetType().ToString() == "System.String[]")
  65. {
  66. string mstr = "";
  67. string[] marr = (string[])value;
  68. if (marr.Length > 0)
  69. {
  70. for(int i = 0 ; i < marr.Length ; i++)
  71. {
  72. mstr += "|" + marr[i];
  73. }
  74. mstr = mstr.Substring(1);
  75. this.Text = mstr;
  76. }
  77. else
  78. {
  79. this.Text = "";
  80. }
  81. }
  82. }
  83. else
  84. {
  85. this._dataSource = null;
  86. }
  87. }
  88. }
  89. /// <summary>
  90. /// 获取对象的高
  91. /// </summary>
  92. public override int Height
  93. {
  94. get
  95. {
  96. return mdrawGrid.Rows * mdrawGrid.PreferredRowHeight;
  97. }
  98. }
  99. /// <summary>
  100. /// 用分隔符(默认'|')分隔的串设置文本值
  101. /// </summary>
  102. /// <param name="text"></param>
  103. public virtual void SetText(string text)
  104. {
  105. this._text = text;
  106. SetText(text,'|');
  107. }
  108. /// <summary>
  109. /// 用指定分隔符分隔的串设置文本值
  110. /// </summary>
  111. /// <param name="text"></param>
  112. /// <param name="split"></param>
  113. public virtual void SetText(string text,char split)
  114. {
  115. this._text = text;
  116. string mstr = text;
  117. char msplit = split;
  118. string[] arrStr = mstr.Split(msplit);
  119. if (arrStr.Length > 0)
  120. {
  121. mdrawGrid.SetText(0,0,arrStr[0]);
  122. }
  123. if (arrStr.Length > 1)
  124. {
  125. mdrawGrid.SetText(0,1,arrStr[1]);
  126. }
  127. if (arrStr.Length > 2)
  128. {
  129. mdrawGrid.SetText(0,2,arrStr[2]);
  130. }
  131. }
  132. /// <summary>
  133. /// 在绘图表面绘制对象绘制文本
  134. /// </summary>
  135. public override void Draw()
  136. {
  137. base.Draw();
  138. //在指定的区域内绘制文本
  139. 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);
  140. mdrawGrid.Graphics = this.Graphics;
  141. mdrawGrid.Width = mdrawGrid.Rectangle.Width;
  142. mdrawGrid.ColsWidth = mdrawGrid.GetAverageColsWidth();
  143. mdrawGrid.Draw();
  144. }
  145. }//End Class
  146. }//End NameSpace