MouseF.pas
资源名称:delphi.rar [点击查看]
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:
Delphi控件源码
开发平台:
Delphi
- unit MouseF;
- interface
- uses Windows, Classes, Graphics,
- Controls, Forms, SysUtils;
- type
- TMouseForm = class(TForm)
- procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
- Y: Integer);
- procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure FormPaint(Sender: TObject);
- private
- fDragging: Boolean;
- fRect: TRect;
- public
- { Public declarations }
- end;
- var
- MouseForm: TMouseForm;
- implementation
- {$R *.DFM}
- procedure TMouseForm.FormMouseDown(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if Button = mbLeft then
- begin
- fDragging := True;
- Mouse.Capture := Handle;
- fRect.Left := X;
- fRect.Top := Y;
- fRect.BottomRight := fRect.TopLeft;
- Canvas.DrawFocusRect (fRect);
- end;
- end;
- procedure TMouseForm.FormMouseMove(Sender: TObject;
- Shift: TShiftState; X, Y: Integer);
- begin
- // display the position of the mouse in the caption
- Caption := Format ('Mouse in x=%d, y=%d', [X, Y]);
- if fDragging then
- begin
- // remove and redraw the dragging rectangle
- Canvas.DrawFocusRect (fRect);
- fRect.Right := X;
- fRect.Bottom := Y;
- Canvas.DrawFocusRect (fRect);
- end
- else
- if ssShift in Shift then
- // mark points in yellow
- Canvas.Pixels [X, Y] := clYellow;
- end;
- procedure TMouseForm.FormMouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- begin
- if fDragging then
- begin
- Mouse.Capture := 0; // calls ReleaseCapture
- fDragging := False;
- Invalidate;
- end;
- end;
- procedure TMouseForm.FormPaint(Sender: TObject);
- begin
- Canvas.Rectangle (fRect.Left, fRect.Top,
- fRect.Right, fRect.Bottom);
- end;
- end.