unit test;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TPunkt = class(TObject)
private
{ Private-Deklarationen }
rRichtung : Integer;
rhoehe : Integer;
rpunkt : TPoint;
rschliessen : Boolean;
// procedure ermmittlehöhe();
public
{ Public-Deklarationen }
procedure Bewegung();
end;
TForm1 = class(TForm)
Timer1: TTimer;
Timer2: 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 Timer2Timer(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
form1.Timer2.Enabled :=false;
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;
punkt.rpunkt.Y:= 0;
punkt.rRichtung:=1;
punkt.rhoehe:=form1.ClientHeight;
punkt.rschliessen := false;
timer2.Enabled:=true;
end;
procedure TForm1.onclose(Sender: TObject; var Action: TCloseAction);
var
index :word;
begin
punkt.Free;
punkt.rschliessen := true;
for index := 0 to anzahl do
sh[index].Free;
shpos[index].Free;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
shape1.Top:= punkt.rpunkt.Y;
label1.Caption:=inttostr(punkt.rpunkt.Y);
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
punkt.Bewegung ;
timer3.Enabled:=true;
timer2.Enabled :=false;
end;
procedure TForm1.Timer3Timer(Sender: TObject);
var index : word ;
begin
for index := 0 to anzahl do
sh[index].Top := shpos[index].rpunkt.Y;
// sh2[index].Bewegung;
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].Bewegung();
end;
end.