ContainerObject.DesignExt.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System.Drawing;
  2. using System.Windows.Forms;
  3. using FastReport.Utils;
  4. namespace FastReport
  5. {
  6. partial class ContainerObject
  7. {
  8. #region Public Methods
  9. /// <inheritdoc/>
  10. public override void DrawSelection(FRPaintEventArgs e)
  11. {
  12. base.DrawSelection(e);
  13. if (Report == null)
  14. return;
  15. float m = Report.Designer.DpiMultiplier();
  16. e.Graphics.DrawImage(Report.Designer.GetImage(75), (int)(AbsLeft * e.ScaleX + 8 * m), (int)(AbsTop * e.ScaleY - 8 * m));
  17. }
  18. /// <inheritdoc/>
  19. public override void HandleMouseDown(FRMouseEventArgs e)
  20. {
  21. HandleMouseHover(e);
  22. if (e.handled)
  23. e.mode = WorkspaceMode2.Move;
  24. else
  25. {
  26. base.HandleMouseDown(e);
  27. if (e.handled)
  28. {
  29. if (e.modifierKeys != Keys.Shift)
  30. {
  31. e.mode = WorkspaceMode2.SelectionRect;
  32. e.activeObject = this;
  33. }
  34. }
  35. }
  36. }
  37. /// <inheritdoc/>
  38. public override void HandleMouseHover(FRMouseEventArgs e)
  39. {
  40. if (IsSelected)
  41. {
  42. float m = 1 / Report.Designer.Zoom;
  43. if (new RectangleF(AbsLeft + 8 * m, AbsTop - 8 * m, 16 * m, 16 * m).Contains(new PointF(e.x, e.y)))
  44. {
  45. e.handled = true;
  46. e.cursor = Cursors.SizeAll;
  47. }
  48. }
  49. }
  50. /// <inheritdoc/>
  51. public override void HandleMouseUp(FRMouseEventArgs e)
  52. {
  53. base.HandleMouseUp(e);
  54. if (e.activeObject == this && e.mode == WorkspaceMode2.SelectionRect)
  55. {
  56. ObjectCollection selectedList = new ObjectCollection();
  57. // find objects inside the selection rect
  58. foreach (ReportComponentBase c in Objects)
  59. {
  60. e.handled = false;
  61. c.HandleMouseUp(e);
  62. // object is inside
  63. if (e.handled)
  64. selectedList.Add(c);
  65. }
  66. if (selectedList.Count > 0)
  67. selectedList.CopyTo(Report.Designer.SelectedObjects);
  68. }
  69. }
  70. #endregion
  71. }
  72. }