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

Delphi控件源码

开发平台:

Delphi

  1. unit MouseF;
  2. interface
  3. uses Windows, Classes, Graphics,
  4.   Controls, Forms, SysUtils;
  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 *.DFM}
  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 := Handle;
  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.       // mark points in yellow
  53.       Canvas.Pixels [X, Y] := clYellow;
  54. end;
  55. procedure TMouseForm.FormMouseUp(Sender: TObject; Button: TMouseButton;
  56.   Shift: TShiftState; X, Y: Integer);
  57. begin
  58.   if fDragging then
  59.   begin
  60.     Mouse.Capture := 0; // calls ReleaseCapture
  61.     fDragging := False;
  62.     Invalidate;
  63.   end;
  64. end;
  65. procedure TMouseForm.FormPaint(Sender: TObject);
  66. begin
  67.   Canvas.Rectangle (fRect.Left, fRect.Top,
  68.     fRect.Right, fRect.Bottom);
  69. end;
  70. end.