1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, LResources, Graphics, Dialogs, StdCtrls,
ExtCtrls;
type
{ TForm1 }
TForm1 = 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 FormCreate(Sender: TObject);
private
{ private declarations }
P0, P1: TPoint;
PA, PB: TPoint;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
PA.X:= 0;
PA.Y:= 0;
PB.X:= 0;
PB.Y:= 0;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssLeft in Shift then
begin
Canvas.Pen.Style:= psDash;
Canvas.Pen.Mode:= pmNotXor;
P0.X:= X;
P0.Y:= Y;
P1.X:= X;
P1.Y:= Y;
if (PA.X = 0) and ( PA.Y = 0) and (PB.X = 0) and (PB.Y = 0) then
Canvas.Rectangle(P0.X, P0.Y, P1.X, P1.Y)
else {effacement du rectangle après le relevé de la souris}
Canvas.Rectangle(PA.X, PA.Y, PB.X, PB.Y);
end;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in Shift then
begin
Canvas.Rectangle(P0.X, P0.Y, P1.X, P1.Y); {effaçage}
P1.X:= X;
P1.Y:= Y;
Canvas.Rectangle(P0.X, P0.Y, P1.X, P1.Y); {Retraçage}
end;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
PA.X:= P0.X;
PA.Y:= P0.Y;
PB.X:= P1.X;
PB.Y:= P1.Y;
end;
end. |
Partager