unit test;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TPunkt =
class(TObject)
rTimer : TTimer;
procedure rTimerTimer(Sender: TObject);
private
{ Private-Deklarationen }
rRichtung : Integer;
rhoehe : Integer;
rpunkt : TPoint;
rschliessen : Boolean;
// procedure ermmittlehöhe();
public
{ Public-Deklarationen }
constructor Create;
destructor Destroy;
override;
procedure Bewegung();
end;
TForm1 =
class(TForm)
Timer1: TTimer;
Label1: TLabel;
Shape1: TShape;
Button1: TButton;
Timer3: TTimer;
procedure FormCreate(Sender: TObject);
procedure onclose(Sender: TObject;
var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
private
{ Private-Deklarationen }
punkt : TPunkt;
sh :
array of TShape;
shpos :
array of TPunkt;
anzahl : integer;
public
{ Public-Deklarationen }
procedure erstellen();
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{procedure TPunkt.ermmittlehöhe;
begin
rhoehe := form1.ClientHeight;
Bewegung();
end;}
procedure TPunkt.Bewegung();
var
i : integer;
begin
// repeat
case rRichtung
of
1:
begin
rpunkt.Y:= rpunkt.Y +3;
if rpunkt.Y > rhoehe-33
then rRichtung := 2;
Sleep(25);
end;
2:
begin
rpunkt.Y:= rpunkt.Y -3;
if rpunkt.Y < 0
then rRichtung := 1;
Sleep(25);
end;
end;
Application.ProcessMessages;
//until rschliessen = true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
punkt := TPunkt.Create;
//punkt.ermmittlehöhe;
end;
procedure TForm1.onclose(Sender: TObject;
var Action: TCloseAction);
begin
timer1.Enabled:=false;
timer3.Enabled := false;
punkt.Free;
punkt.rschliessen := true;
setlength(sh, 0);
setlength(shpos, 0);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
shape1.Top:= punkt.rpunkt.Y;
label1.Caption:=inttostr(punkt.rpunkt.Y);
end;
procedure TForm1.Timer3Timer(Sender: TObject);
var index : word ;
begin
for index := 0
to anzahl
do
begin
sh[
index].Top := shpos[
index].rpunkt.Y;
// sh2[index].Bewegung;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var X: Integer;
begin
x:= anzahl+1;
setLength(sh, x);
setLength(shpos, x);
erstellen();
end;
procedure TForm1.erstellen;
begin
shpos[anzahl]:= TPunkt.Create;
sh[anzahl]:= TShape.Create(self);
sh[anzahl].Parent:= self;
sh[anzahl].Brush.Color:= clred;
sh[anzahl].Shape:= stcircle;
sh[anzahl].Top :=shpos[anzahl].rpunkt.Y;
sh[anzahl].Left := random(200);
sh[anzahl].Height:= 33;
sh[anzahl].Width:= 33;
shpos[anzahl].rTimer.Enabled:= true;
timer3.Enabled:= true;
end;
constructor TPunkt.Create;
begin
rpunkt.Y := 0;
rRichtung:= 1;
rhoehe := form1.ClientHeight;
rtimer := TTimer.Create(
nil);
rtimer.Interval := 25;
rtimer.Enabled := true;
rtimer.OnTimer := rTimerTimer;
end;
procedure TPunkt.rTimerTimer(Sender : TObject);
begin
Bewegung();
end;
destructor TPunkt.Destroy;
begin
rtimer.Enabled := false;
rtimer.Free;
end;
end.