MSChartObject.DesignExt.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using FastReport.DataVisualization.Charting;
  5. using System.IO;
  6. using System.Drawing;
  7. using System.Windows.Forms;
  8. using System.Drawing.Imaging;
  9. using System.ComponentModel;
  10. using System.Drawing.Design;
  11. using System.Collections;
  12. using FastReport;
  13. using FastReport.Utils;
  14. using FastReport.Data;
  15. using FastReport.TypeEditors;
  16. using System.Drawing.Drawing2D;
  17. namespace FastReport.MSChart
  18. {
  19. partial class MSChartObject : IHasEditor
  20. {
  21. #region Properties
  22. /// <summary>
  23. /// This property is not relevant to this class.
  24. /// </summary>
  25. [Browsable(false)]
  26. public override Border Border
  27. {
  28. get { return base.Border; }
  29. set { base.Border = value; }
  30. }
  31. /// <summary>
  32. /// This property is not relevant to this class.
  33. /// </summary>
  34. [Browsable(false)]
  35. public override FillBase Fill
  36. {
  37. get { return base.Fill; }
  38. set { base.Fill = value; }
  39. }
  40. /// <summary>
  41. /// This property is not relevant to this class.
  42. /// </summary>
  43. [Browsable(false)]
  44. public new string Style
  45. {
  46. get { return base.Style; }
  47. set { base.Style = value; }
  48. }
  49. /// <summary>
  50. /// This property is not relevant to this class.
  51. /// </summary>
  52. [Browsable(false)]
  53. public new string EvenStyle
  54. {
  55. get { return base.EvenStyle; }
  56. set { base.EvenStyle = value; }
  57. }
  58. /// <summary>
  59. /// This property is not relevant to this class.
  60. /// </summary>
  61. [Browsable(false)]
  62. public new string HoverStyle
  63. {
  64. get { return base.HoverStyle; }
  65. set { base.HoverStyle = value; }
  66. }
  67. #endregion
  68. #region Public Methods
  69. /// <inheritdoc/>
  70. public override SizeF GetPreferredSize()
  71. {
  72. if ((Page as ReportPage).IsImperialUnitsUsed)
  73. return new SizeF(Units.Inches * 3, Units.Inches * 2);
  74. return new SizeF(Units.Millimeters * 80, Units.Millimeters * 50);
  75. }
  76. /// <inheritdoc/>
  77. public override void OnBeforeInsert(int flags)
  78. {
  79. base.OnBeforeInsert(flags);
  80. MSChartSeries series = AddSeries(SeriesChartType.Column);
  81. series.CreateDummyData();
  82. }
  83. /// <inheritdoc/>
  84. public override void OnAfterInsert(InsertFrom source)
  85. {
  86. base.OnAfterInsert(source);
  87. if (source == InsertFrom.NewObject)
  88. Series[0].CreateUniqueName();
  89. }
  90. /// <inheritdoc/>
  91. public bool InvokeEditor()
  92. {
  93. using (MSChartObjectEditorForm form = new MSChartObjectEditorForm())
  94. {
  95. form.ChartObject = this;
  96. return form.ShowDialog() == DialogResult.OK;
  97. }
  98. }
  99. /// <inheritdoc/>
  100. public override void OnMouseMove(MouseEventArgs e)
  101. {
  102. base.OnMouseMove(e);
  103. if (Hyperlink.Kind == HyperlinkKind.DetailPage || Hyperlink.Kind == HyperlinkKind.DetailReport)
  104. {
  105. float m = DrawUtils.ScreenDpi / 96f;
  106. Chart.Size = new Size((int)(Width * m), (int)(Height * m));
  107. HitTestResult hitTest = Chart.HitTest((int)(e.X * m), (int)(e.Y * m));
  108. if (hitTest.ChartElementType == ChartElementType.DataPoint)
  109. {
  110. HotPoint = hitTest.Series.Points[hitTest.PointIndex];
  111. Hyperlink.Value = HotPoint.AxisLabel;
  112. Cursor = Cursors.Hand;
  113. }
  114. else
  115. {
  116. HotPoint = null;
  117. Hyperlink.Value = "";
  118. Cursor = Cursors.Default;
  119. }
  120. }
  121. }
  122. /// <inheritdoc/>
  123. public override void OnMouseLeave(EventArgs e)
  124. {
  125. base.OnMouseLeave(e);
  126. HotPoint = null;
  127. }
  128. #endregion
  129. }
  130. partial class SparklineObject
  131. {
  132. /// <inheritdoc/>
  133. public override SizeF GetPreferredSize()
  134. {
  135. if (Page is ReportPage && (Page as ReportPage).IsImperialUnitsUsed)
  136. return new SizeF(Units.Inches * 1, Units.Inches * 0.2f);
  137. return new SizeF(Units.Millimeters * 25, Units.Millimeters * 5);
  138. }
  139. /// <inheritdoc/>
  140. public override void OnBeforeInsert(int flags)
  141. {
  142. MSChartSeries series = AddSeries(SeriesChartType.FastLine);
  143. series.CreateDummyData();
  144. Chart.BorderSkin.SkinStyle = BorderSkinStyle.None;
  145. Chart.BorderlineDashStyle = ChartDashStyle.NotSet;
  146. Chart.ChartAreas[0].AxisX.Enabled = AxisEnabled.False;
  147. Chart.ChartAreas[0].AxisY.Enabled = AxisEnabled.False;
  148. Chart.Legends[0].Enabled = false;
  149. }
  150. }
  151. }