AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Reaktionstest

Ein Thema von KingMax · begonnen am 30. Aug 2009 · letzter Beitrag vom 30. Aug 2009
 
KingMax

Registriert seit: 30. Aug 2009
7 Beiträge
 
#1

Reaktionstest

  Alt 30. Aug 2009, 19:02
Hallo,
wir haben als aufgabe in der Schule das Projekt "Reaktionstest" aufbekommen. Dabei geht es darum, die Reaktion zu testen. Hierzu wird eine gezeichnete Ampel nach zufälliger Zeit von rot auf "Grün" springen, und dann muss man eine taste drücken. Die Reaktion wird dann unten im Edit feld angezeigt. Das Programm besteht aus zwei Formularen, das Hauptformular und das Ampel-Formular (Units).

Mein Problem besteht nun hier, dass ich mithilfe der Klasse TAmpel die Ampel erzeuge. Nun wird die Klasse aber nicht akzeptiert! Könnt ihr mir vielleicht sagen wo ich einen Fehler gemacht habe? Ich lade den Quelltext beider Formulare mit hoch:

Delphi-Quellcode:
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.
Hier Formular mAmpel:

Delphi-Quellcode:
unit mAmpel;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type TAmpel = class (TForm)

private
AmpelGruen: Boolean;

public
procedure Rot;
procedure Gruen;
function IstGruen: Boolean;
end;


implementation

procedure TAmpel.Rot; //Rote Ampel
begin
  with Canvas do
  begin
     Pen.Width := 3;
     Brush.Color := clred;
     Ellipse (20,20,140,140);
     Brush.Color := clgray;
     Ellipse(20,160,140,280);
  end;
  AmpelGruen := false;
end;

procedure TAmpel.Gruen; //Gruene Ampel
begin
  with Canvas do
  begin
     Pen.Width := 3;
     Brush.Color := cllime;
     Ellipse(20,160,140,280);
     Brush.Color := clgray;
     Ellipse(20,20,140,140);
  end;
  AmpelGruen := True;
end;

function TAmpel.IstGruen;
begin
  IstGruen := AmpelGruen;
end;








end.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz