TableRowMenu.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using FastReport.Design;
  2. using FastReport.Design.PageDesigners.Page;
  3. using FastReport.Utils;
  4. using System;
  5. namespace FastReport.Table
  6. {
  7. internal class TableRowMenu : TableMenuBase
  8. {
  9. #region Fields
  10. private SelectedObjectCollection selection;
  11. private TableBase table;
  12. private TableRow row;
  13. public ContextMenuItem miInsertRowAbove;
  14. public ContextMenuItem miInsertRowBelow;
  15. public ContextMenuItem miAutoSize;
  16. public ContextMenuItem miCut;
  17. public ContextMenuItem miPaste;
  18. public ContextMenuItem miDelete;
  19. private ContextMenuItem miStyle;
  20. #endregion
  21. #region Properties
  22. #endregion
  23. #region Private Methods
  24. private void miInsertRowAbove_Click(object sender, EventArgs e)
  25. {
  26. TableRow row = new TableRow();
  27. table.Rows.Insert(table.Rows.IndexOf(this.row), row);
  28. table.CreateUniqueNames();
  29. selection.Clear();
  30. selection.Add(row);
  31. Change();
  32. }
  33. private void miInsertRowBelow_Click(object sender, EventArgs e)
  34. {
  35. TableRow row = new TableRow();
  36. table.Rows.Insert(table.Rows.IndexOf(this.row) + 1, row);
  37. table.CreateUniqueNames();
  38. selection.Clear();
  39. selection.Add(row);
  40. Change();
  41. }
  42. private void miAutoSize_Click(object sender, EventArgs e)
  43. {
  44. for (int i = 0; i < selection.Count; i++)
  45. {
  46. (selection[i] as TableRow).AutoSize = miAutoSize.Checked;
  47. }
  48. Change();
  49. }
  50. private void miCut_Click(object sender, EventArgs e)
  51. {
  52. TableRow[] rows = new TableRow[selection.Count];
  53. for (int i = 0; i < selection.Count; i++)
  54. {
  55. rows[i] = selection[i] as TableRow;
  56. }
  57. table.Clipboard.CutRows(rows);
  58. selection.Clear();
  59. selection.Add(table);
  60. Change();
  61. }
  62. private void miPaste_Click(object sender, EventArgs e)
  63. {
  64. table.Clipboard.PasteRows(table.Rows.IndexOf(row));
  65. selection.Clear();
  66. selection.Add(table);
  67. Change();
  68. }
  69. private void miDelete_Click(object sender, EventArgs e)
  70. {
  71. for (int i = 0; i < selection.Count; i++)
  72. {
  73. TableRow row = selection[i] as TableRow;
  74. if (row != null)
  75. {
  76. if (row.IsAncestor)
  77. {
  78. FRMessageBox.Error(String.Format(Res.Get("Messages,DeleteAncestor"), row.Name));
  79. break;
  80. }
  81. else
  82. table.Rows.Remove(row);
  83. }
  84. }
  85. selection.Clear();
  86. selection.Add(table);
  87. Change();
  88. }
  89. private void miStyle_Click(object sender, EventArgs e)
  90. {
  91. if (sender is ContextMenuItem menuItem)
  92. {
  93. (Designer.ActiveReportTab.ActivePageDesigner as ReportPageDesigner).Workspace.Focus();
  94. for (int i = 0; i < table.ColumnCount; i++)
  95. {
  96. table[i, table.Rows.IndexOf(row)].Style = menuItem.Text;
  97. }
  98. Change();
  99. }
  100. }
  101. #endregion
  102. public TableRowMenu(Designer designer) : base(designer)
  103. {
  104. selection = Designer.SelectedObjects;
  105. row = selection[0] as TableRow;
  106. table = row.Parent as TableBase;
  107. miInsertRowAbove = CreateMenuItem(218, Res.Get("ComponentMenu,TableRow,InsertAbove"), new EventHandler(miInsertRowAbove_Click));
  108. miInsertRowBelow = CreateMenuItem(219, Res.Get("ComponentMenu,TableRow,InsertBelow"), new EventHandler(miInsertRowBelow_Click));
  109. miAutoSize = CreateMenuItem(Res.Get("ComponentMenu,TableRow,AutoSize"), new EventHandler(miAutoSize_Click));
  110. miAutoSize.BeginGroup = true;
  111. miAutoSize.CheckOnClick = true;
  112. miCut = CreateMenuItem(5, Res.Get("Designer,Menu,Edit,Cut"), new EventHandler(miCut_Click));
  113. miCut.BeginGroup = true;
  114. miPaste = CreateMenuItem(7, Res.Get("Designer,Menu,Edit,Paste"), new EventHandler(miPaste_Click));
  115. miDelete = CreateMenuItem(51, Res.Get("Designer,Menu,Edit,Delete"), new EventHandler(miDelete_Click));
  116. miStyle = CreateMenuItem(87, Res.Get("ComponentMenu,TableCell,Styles"), null);
  117. miStyle.Visible = table.Report.Styles.Count > 0;
  118. miStyle.BeginGroup = true;
  119. foreach (Style style in table.Report.Styles)
  120. {
  121. miStyle.DropDownItems.Add(CreateMenuItem(style.Name, new EventHandler(miStyle_Click)));
  122. }
  123. // QAT items
  124. miCut.QatItem = miPaste.QatItem = miDelete.QatItem = true;
  125. miAutoSize.Checked = row.AutoSize;
  126. miCut.Enabled = table.Rows.Count > 1;
  127. miPaste.Enabled = table.Clipboard.CanPasteRows;
  128. miDelete.Enabled = table.Rows.Count > 1;
  129. Items.AddRange(new ContextMenuItem[] {
  130. miInsertRowAbove, miInsertRowBelow,
  131. miAutoSize, miStyle,
  132. miCut, miPaste, miDelete });
  133. }
  134. }
  135. }