MatrixCellMenu.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using System;
  2. using System.Drawing;
  3. using System.Windows.Forms;
  4. using FastReport.Gauge.Simple.Progress;
  5. using FastReport.MSChart;
  6. using FastReport.Table;
  7. using FastReport.Utils;
  8. namespace FastReport.AdvMatrix
  9. {
  10. internal class MatrixCellMenu : MatrixCellMenuBase
  11. {
  12. private ContextMenuItem miFunctions;
  13. private ContextMenuItem miPercents;
  14. private ContextMenuItem miInsert;
  15. private ContextMenuItem miInsertChart;
  16. private ContextMenuItem miInsertGauge;
  17. private void Function_Click(object sender, EventArgs e)
  18. {
  19. string func = (sender as ContextMenuItem).Tag.ToString();
  20. foreach (Base c in Designer.SelectedObjects)
  21. {
  22. if (c is TableCell)
  23. (c as TableCell).ChangeAggregateFunction(func);
  24. }
  25. Change();
  26. }
  27. private void Percent_Click(object sender, EventArgs e)
  28. {
  29. string func = (sender as ContextMenuItem).Tag.ToString();
  30. foreach (Base c in Designer.SelectedObjects)
  31. {
  32. if (c is TableCell)
  33. (c as TableCell).ChangePercentFunction(func);
  34. }
  35. Change();
  36. }
  37. private void InsertChart_Click(object sender, EventArgs e)
  38. {
  39. Cell.ChangeAggregateFunction("ValuesList");
  40. SparklineObject obj = new SparklineObject();
  41. obj.Parent = Cell;
  42. obj.Dock = DockStyle.Fill;
  43. obj.CreateUniqueName();
  44. obj.OnBeforeInsert(0);
  45. Change();
  46. }
  47. private void InsertGauge_Click(object sender, EventArgs e)
  48. {
  49. Cell.ChangePercentFunction("PercentOfColumnTotal");
  50. SimpleProgressGauge obj = new SimpleProgressGauge();
  51. obj.Parent = Cell;
  52. obj.Dock = DockStyle.Fill;
  53. obj.Border = Cell.Border.Clone();
  54. obj.Maximum = 1;
  55. obj.CreateUniqueName();
  56. Change();
  57. }
  58. public MatrixCellMenu(AdvMatrixObject matrix) : base(matrix)
  59. {
  60. MyRes res = new MyRes("ComponentMenu,AdvMatrixCell,Function");
  61. miFunctions = CreateMenuItem(132, res.Get(""), null);
  62. miFunctions.BeginGroup = true;
  63. foreach (string name in Aggregates.Names)
  64. {
  65. string resName = "ComponentMenu,AdvMatrixCell,Function," + name;
  66. string text = Res.StringExists(resName) ? Res.Get(resName) : name;
  67. ContextMenuItem mi = CreateMenuItem(text, Function_Click);
  68. mi.CheckOnClick = true;
  69. mi.Tag = name;
  70. miFunctions.DropDownItems.Add(mi);
  71. }
  72. res = new MyRes("ComponentMenu,AdvMatrixCell,Percent");
  73. miPercents = CreateMenuItem(res.Get(""), null);
  74. foreach (string name in CellExt.PercentNames)
  75. {
  76. ContextMenuItem mi = CreateMenuItem(res.Get(name), Percent_Click);
  77. mi.CheckOnClick = true;
  78. mi.Tag = name;
  79. miPercents.DropDownItems.Add(mi);
  80. }
  81. res = new MyRes("ComponentMenu,AdvMatrixCell,Insert");
  82. miInsert = CreateMenuItem(res.Get(""), null);
  83. miInsert.BeginGroup = true;
  84. miInsertChart = CreateMenuItem(130, res.Get("Chart"), InsertChart_Click);
  85. miInsertGauge = CreateMenuItem(140, res.Get("Gauge"), InsertGauge_Click);
  86. miInsert.DropDownItems.Add(miInsertChart);
  87. miInsert.DropDownItems.Add(miInsertGauge);
  88. int insertIndex = Items.IndexOf(miClear);
  89. Items.Insert(insertIndex, miFunctions);
  90. Items.Insert(insertIndex + 1, miPercents);
  91. Items.Insert(insertIndex + 2, miInsert);
  92. miCollapseButton.Visible = false;
  93. miSortButton.Visible = false;
  94. miMergeSplit.Visible = false;
  95. }
  96. }
  97. }