DataBandMenu.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Windows.Forms;
  5. using FastReport.Design;
  6. using FastReport.Utils;
  7. namespace FastReport
  8. {
  9. internal class DataBandMenu : BandBaseMenu
  10. {
  11. private SelectedObjectCollection selection;
  12. public ContextMenuItem miAddDetailDataBand;
  13. public ContextMenuItem miKeepTogether;
  14. public ContextMenuItem miKeepDetail;
  15. public ContextMenuItem miColumnsEditor;
  16. private List<DataBand> ModifyList
  17. {
  18. get
  19. {
  20. List<DataBand> list = new List<DataBand>();
  21. foreach (Base c in selection)
  22. {
  23. if (c is DataBand && !c.HasRestriction(Restrictions.DontModify))
  24. list.Add(c as DataBand);
  25. }
  26. return list;
  27. }
  28. }
  29. private void miAddDetailDataBand_Click(object sender, EventArgs e)
  30. {
  31. DataBand band = selection[0] as DataBand;
  32. DataBand detailData = new DataBand();
  33. detailData.Parent = band;
  34. detailData.CreateUniqueName();
  35. detailData.Height = detailData.GetPreferredSize().Height;
  36. Change();
  37. }
  38. private void miKeepTogether_Click(object sender, EventArgs e)
  39. {
  40. foreach (DataBand band in ModifyList)
  41. {
  42. band.KeepTogether = miKeepTogether.Checked;
  43. }
  44. Change();
  45. }
  46. private void miKeepDetail_Click(object sender, EventArgs e)
  47. {
  48. foreach (DataBand band in ModifyList)
  49. {
  50. band.KeepDetail = miKeepDetail.Checked;
  51. }
  52. Change();
  53. }
  54. private void miColumnsEditor_Click(object sender, EventArgs e)
  55. {
  56. foreach (DataBand band in ModifyList)
  57. {
  58. band.InvokeColumnsEditor();
  59. }
  60. Change();
  61. }
  62. public DataBandMenu(Designer designer) : base(designer)
  63. {
  64. selection = Designer.SelectedObjects;
  65. miAddDetailDataBand = CreateMenuItem(Res.Get("ComponentMenu,DataBand,AddDetailDataBand"), miAddDetailDataBand_Click);
  66. miKeepTogether = CreateMenuItem(Res.Get("ComponentMenu,DataBand,KeepTogether"), miKeepTogether_Click);
  67. miKeepTogether.BeginGroup = true;
  68. miKeepTogether.CheckOnClick = true;
  69. miKeepDetail = CreateMenuItem(Res.Get("ComponentMenu,DataBand,KeepDetail"), miKeepDetail_Click);
  70. miKeepDetail.CheckOnClick = true;
  71. miColumnsEditor = CreateMenuItem(Res.Get("ComponentMenu,DataBand,ColumnsEditor"), miColumnsEditor_Click);
  72. miColumnsEditor.CheckOnClick = true;
  73. miStartNewPage.BeginGroup = false;
  74. int insertPos = Items.IndexOf(miAddChildBand);
  75. Items.Insert(insertPos + 1, miAddDetailDataBand);
  76. insertPos = Items.IndexOf(miStartNewPage);
  77. Items.Insert(insertPos, miKeepTogether);
  78. Items.Insert(insertPos + 1, miKeepDetail);
  79. insertPos = Items.IndexOf(miHyperlink);
  80. Items.Insert(insertPos, miColumnsEditor);
  81. DataBand band = selection[0] as DataBand;
  82. bool enabled = !band.HasRestriction(Restrictions.DontModify);
  83. miAddDetailDataBand.Enabled = enabled && band.Bands.Count == 0;
  84. miKeepTogether.Enabled = enabled;
  85. miKeepDetail.Enabled = enabled;
  86. miKeepTogether.Checked = band.KeepTogether;
  87. miKeepDetail.Checked = band.KeepDetail;
  88. }
  89. }
  90. }