MatrixCellMenu.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Windows.Forms;
  5. using FastReport.Utils;
  6. namespace FastReport.Matrix
  7. {
  8. internal class MatrixCellMenu : MatrixCellMenuBase
  9. {
  10. private ContextMenuItem miFunction;
  11. private ContextMenuItem miFunctionNone;
  12. private ContextMenuItem miFunctionSum;
  13. private ContextMenuItem miFunctionMin;
  14. private ContextMenuItem miFunctionMax;
  15. private ContextMenuItem miFunctionAvg;
  16. private ContextMenuItem miFunctionCount;
  17. private ContextMenuItem miFunctionCountDistinct;
  18. private ContextMenuItem miFunctionCustom;
  19. private ContextMenuItem miPercent;
  20. private ContextMenuItem miPercentNone;
  21. private ContextMenuItem miPercentColumnTotal;
  22. private ContextMenuItem miPercentRowTotal;
  23. private ContextMenuItem miPercentGrandTotal;
  24. private void Function_Click(object sender, EventArgs e)
  25. {
  26. MatrixAggregateFunction function = (MatrixAggregateFunction)(sender as ContextMenuItem).Tag;
  27. (Descriptor as MatrixCellDescriptor).Function = function;
  28. Change();
  29. }
  30. private void Percent_Click(object sender, EventArgs e)
  31. {
  32. MatrixPercent percent = (MatrixPercent)(sender as ContextMenuItem).Tag;
  33. (Descriptor as MatrixCellDescriptor).Percent = percent;
  34. Change();
  35. }
  36. public MatrixCellMenu(MatrixObject matrix, MatrixElement element, MatrixDescriptor descriptor)
  37. : base(matrix, element, descriptor)
  38. {
  39. MyRes res = new MyRes("Forms,TotalEditor");
  40. miFunction = CreateMenuItem(132, Res.Get("ComponentMenu,MatrixCell,Function"), null);
  41. miFunctionNone = CreateMenuItem(Res.Get("Misc,None"), new EventHandler(Function_Click));
  42. miFunctionNone.CheckOnClick = true;
  43. miFunctionNone.Tag = MatrixAggregateFunction.None;
  44. miFunctionSum = CreateMenuItem(res.Get("Sum"), new EventHandler(Function_Click));
  45. miFunctionSum.CheckOnClick = true;
  46. miFunctionSum.Tag = MatrixAggregateFunction.Sum;
  47. miFunctionMin = CreateMenuItem(res.Get("Min"), new EventHandler(Function_Click));
  48. miFunctionMin.CheckOnClick = true;
  49. miFunctionMin.Tag = MatrixAggregateFunction.Min;
  50. miFunctionMax = CreateMenuItem(res.Get("Max"), new EventHandler(Function_Click));
  51. miFunctionMax.CheckOnClick = true;
  52. miFunctionMax.Tag = MatrixAggregateFunction.Max;
  53. miFunctionAvg = CreateMenuItem(res.Get("Avg"), new EventHandler(Function_Click));
  54. miFunctionAvg.CheckOnClick = true;
  55. miFunctionAvg.Tag = MatrixAggregateFunction.Avg;
  56. miFunctionCount = CreateMenuItem(res.Get("Count"), new EventHandler(Function_Click));
  57. miFunctionCount.CheckOnClick = true;
  58. miFunctionCount.Tag = MatrixAggregateFunction.Count;
  59. miFunctionCountDistinct = CreateMenuItem(res.Get("CountDistinct"), new EventHandler(Function_Click));
  60. miFunctionCountDistinct.CheckOnClick = true;
  61. miFunctionCountDistinct.Tag = MatrixAggregateFunction.CountDistinct;
  62. miFunctionCustom = CreateMenuItem(res.Get("Custom"), new EventHandler(Function_Click));
  63. miFunctionCustom.CheckOnClick = true;
  64. miFunctionCustom.Tag = MatrixAggregateFunction.Custom;
  65. miFunction.DropDownItems.AddRange(new ContextMenuItem[] {
  66. miFunctionNone, miFunctionSum, miFunctionMin, miFunctionMax, miFunctionAvg, miFunctionCount, miFunctionCountDistinct, miFunctionCustom });
  67. res = new MyRes("ComponentMenu,MatrixCell");
  68. miPercent = CreateMenuItem(res.Get("Percent"), null);
  69. miPercentNone = CreateMenuItem(Res.Get("Misc,None"), new EventHandler(Percent_Click));
  70. miPercentNone.CheckOnClick = true;
  71. miPercentNone.Tag = MatrixPercent.None;
  72. miPercentColumnTotal = CreateMenuItem(res.Get("PercentColumnTotal"), new EventHandler(Percent_Click));
  73. miPercentColumnTotal.CheckOnClick = true;
  74. miPercentColumnTotal.Tag = MatrixPercent.ColumnTotal;
  75. miPercentRowTotal = CreateMenuItem(res.Get("PercentRowTotal"), new EventHandler(Percent_Click));
  76. miPercentRowTotal.CheckOnClick = true;
  77. miPercentRowTotal.Tag = MatrixPercent.RowTotal;
  78. miPercentGrandTotal = CreateMenuItem(res.Get("PercentGrandTotal"), new EventHandler(Percent_Click));
  79. miPercentGrandTotal.CheckOnClick = true;
  80. miPercentGrandTotal.Tag = MatrixPercent.GrandTotal;
  81. miPercent.DropDownItems.AddRange(new ContextMenuItem[] {
  82. miPercentNone, miPercentColumnTotal, miPercentRowTotal, miPercentGrandTotal });
  83. int insertIndex = Items.IndexOf(miDelete);
  84. Items.Insert(insertIndex, miFunction);
  85. Items.Insert(insertIndex + 1, miPercent);
  86. MatrixAggregateFunction function = (Descriptor as MatrixCellDescriptor).Function;
  87. foreach (ContextMenuItem item in miFunction.DropDownItems)
  88. {
  89. if ((MatrixAggregateFunction)item.Tag == function)
  90. {
  91. (item as ContextMenuItem).Checked = true;
  92. break;
  93. }
  94. }
  95. MatrixPercent percent = (Descriptor as MatrixCellDescriptor).Percent;
  96. foreach (ContextMenuItem item in miPercent.DropDownItems)
  97. {
  98. if ((MatrixPercent)item.Tag == percent)
  99. {
  100. (item as ContextMenuItem).Checked = true;
  101. break;
  102. }
  103. }
  104. }
  105. }
  106. }