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
|
unit tst06ju;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Shape1: TShape;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
var
BordGauche, BordDroit, BordSup, BordBas, DV, DH : integer;
VersDroite, VersBas : Boolean ;
begin
DV := Form1.Tag;
DH := Shape1.Tag;
BordGauche := 0;
BordSup := 0;
BordDroit := Form1.ClientWidth - Shape1.Width;
BordBas := Form1.ClientHeight - Shape1.Height;
VersDroite := ( DH > 0 );
if ((Shape1.Left + DH) < BordGauche) OR ((Shape1.Left + DH) > BordDroit) then
begin DH := -DH;
if VersDroite
then Shape1.Left := BordDroit - Shape1.Left + DH + BordDroit
else Shape1.Left := BordGauche - Shape1.Left + DH + BordGauche
end
else Shape1.Left := Shape1.Left + DH;
VersBas := ( DV > 0 );
if ((Shape1.Top + DV) < BordSup) OR ((Shape1.Top + DV) > BordBas)
then begin DV := -DV;
if VersBas then Shape1.Top := BordBas - Shape1.Top + DV + BordBas
end
else Shape1.Top := Shape1.Top + DV;
Form1.Tag := DV; Shape1.Tag := DH;
end;
end. |
Partager