Project MOUSEONE
Project Structure
MOUSEONE.DPR
program MouseOne;
uses
Forms,
MouseF in 'MouseF.pas' {MouseForm};
{$R *.RES}
begin
Application.CreateForm(TMouseForm, MouseForm);
Application.Run;
end.
MOUSEF.PAS
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;
SetCapture (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
ReleaseCapture;
fDragging := False;
Invalidate;
end;
end;
procedure TMouseForm.FormPaint(Sender: TObject);
begin
Canvas.Rectangle (fRect.Left, fRect.Top,
fRect.Right, fRect.Bottom);
end;
end.
MOUSEF.DFM
object MouseForm: TMouseForm
Left = 223
Top = 108
Width = 435
Height = 300
Caption = 'Mouse'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'System'
Font.Style = []
OldCreateOrder = False
OnMouseDown = FormMouseDown
OnMouseMove = FormMouseMove
OnMouseUp = FormMouseUp
OnPaint = FormPaint
PixelsPerInch = 96
TextHeight = 16
end
|