ParentControl.DesignExt.cs 2.4 KB

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