MouseF.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit MouseF;
  2. interface
  3. uses Qt, Classes, QGraphics,
  4.   QControls, QForms, SysUtils, Types;
  5. type
  6.   TMouseForm = class(TForm)
  7.     procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
  8.       Shift: TShiftState; X, Y: Integer);
  9.     procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  10.       Y: Integer);
  11.     procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
  12.       Shift: TShiftState; X, Y: Integer);
  13.     procedure FormPaint(Sender: TObject);
  14.   private
  15.     fDragging: Boolean;
  16.     fRect: TRect;
  17.   public
  18.     { Public declarations }
  19.   end;
  20. var
  21.   MouseForm: TMouseForm;
  22. implementation
  23. {$R *.xfm}
  24. procedure TMouseForm.FormMouseDown(Sender: TObject; Button: TMouseButton;
  25.   Shift: TShiftState; X, Y: Integer);
  26. begin
  27.   if Button = mbLeft then
  28.   begin
  29.     fDragging := True;
  30.     Mouse.Capture := Self; // the form captures the mouse
  31.     fRect.Left := X;
  32.     fRect.Top := Y;
  33.     fRect.BottomRight := fRect.TopLeft;
  34.     Canvas.DrawFocusRect (fRect);
  35.   end;
  36. end;
  37. procedure TMouseForm.FormMouseMove(Sender: TObject;
  38.   Shift: TShiftState; X, Y: Integer);
  39. begin
  40.   // display the position of the mouse in the caption
  41.   Caption := Format ('Mouse in x=%d, y=%d', [X, Y]);
  42.   if fDragging then
  43.   begin
  44.     // remove and redraw the dragging rectangle
  45.     Canvas.DrawFocusRect (fRect);
  46.     fRect.Right := X;
  47.     fRect.Bottom := Y;
  48.     Canvas.DrawFocusRect (fRect);
  49.   end
  50.   else
  51.     if ssShift in Shift then
  52.     begin
  53.       // mark points in yellow
  54.       Canvas.Pen.Color := clYellow;
  55.       Canvas.DrawPoint (X, Y);
  56.     end;
  57. end;
  58. procedure TMouseForm.FormMouseUp(Sender: TObject; Button: TMouseButton;
  59.   Shift: TShiftState; X, Y: Integer);
  60. begin
  61.   if fDragging then
  62.   begin
  63.     Mouse.Capture := nil; // release the mouse capture
  64.     fDragging := False;
  65.     Invalidate;
  66.   end;
  67. end;
  68. procedure TMouseForm.FormPaint(Sender: TObject);
  69. begin
  70.   Canvas.Pen.Color := clBlue;
  71.   Canvas.Rectangle (fRect.Left, fRect.Top,
  72.     fRect.Right, fRect.Bottom);
  73. end;
  74. end.