unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TMain =
class(TForm)
procedure FormCreate(Sender: TObject);
procedure BtTestreiheClick (Sender: TObject);
procedure BtReaktionstestClick (Sender: TObject);
procedure FormKeyDown (Sender: TObject;
var Key: Word; Shift: TShiftState);
procedure TiReaktionTimer (Sender: TObject);
private
{ Private declarations }
BtTestreihe: TButton;
//Klassen und Objecte (bei Laufzeit erzeugt)
BtReaktionstest: TButton;
TiReaktion: TTimer;
EdZeit: TEdit;
LbZeit: TLabel;
Start, Stop: Longint;
public
{ Public declarations }
end;
var
Main: TMain;
Ampel: TAmpel;
//WARUM AKZEPTIERT DER DIE KLASSE NICHT???
implementation
{$R *.dfm}
procedure TMain.FormCreate(Sender: TObject);
begin
BorderStyle := bsSingle;
//Hauptformular
Left := 150;
Top := 100;
Width := 240;
Height := 250;
Caption := '
Projekt Reaktion';
BtTestreihe := TButton.Create (Main);
//Komponenten
BtTestreihe.Parent := Main;
BtTestreihe.SetBounds (60,20,120,32);
BtTestreihe.Caption := '
Neuer Test';
BtReaktionstest := TButton.Create(Main);
BtReaktionstest.Parent := Main;
BtReaktionstest.SetBounds (60,70, 120, 32);
BtReaktionstest.Caption := '
Start!';
LbZeit := TLabel.Create(Main);
with LbZeit
do begin
Parent := Main;
SetBounds (60, 120, 120, 32);
Caption:= '
Reaktionszeit';
end;
EdZeit := TEdit.Create(Main);
with EdZeit
do begin
Parent := Main;
SetBounds (60, 140, 120, 32);
Font.
Name := '
Arial';
Font.Size := 20;
Text := '
0 ms';
end;
TiReaktion := TTimer.Create (Main);
end;
procedure TMain.BtTestreiheClick(Sender: TObject);
//Button Testreihe
begin
Ampel := TAmpel.Create(Main);
Ampel.Show;
Ampel.Rot;
BtReaktionstest.Enabled := True;
end;
procedure TMain.BtReaktionstestClick(Sender: TObject);
//Button Reaktionstest
begin
EdZeit.Text := '
';
Ampel.Rot;
TiReaktion.Interval := 2000 + Random(3000);
TiReaktion.Enabled := True;
end;
procedure TMain.TiReaktionTimer(Sender: TObject);
//Timer
begin
Ampel.Gruen;
Start := GetTickCount;
TiReaktion.Enabled := False;
end;
//Zeit
procedure TMain.FormKeyDown (Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
Stop := GetTickCount;
if Ampel.IstGruen
then EdZeit.Text := '
'+ IntToStr (Stop-Start)+ '
ms';
end;
end.