Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Prozedur in einer Prozedur starten (https://www.delphipraxis.net/85548-prozedur-einer-prozedur-starten.html)

mo_greene 10. Feb 2007 15:09

Re: Prozedur in einer Prozedur starten
 
leider komme ich mit dieser Antwort nicht zur Lösung meines Problems... :cry:

Martin K 10. Feb 2007 15:16

Re: Prozedur in einer Prozedur starten
 
Du wirst wohl in FormCreate irgendeiner Komponente den Fokus geben wollen, wobei die Komponente in FormCreate noch nicht sichtbar ist.
Irgendetwas in der Art wird es wohl sein, aber ohne Code kann ich dir auch nicht mehr sagen...

mo_greene 10. Feb 2007 15:20

Re: Prozedur in einer Prozedur starten
 
Delphi-Quellcode:
var
  Form1: TForm1;
  a, b, c, richtig, falsch : integer;
  clo : boolean;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin
  Form1.ActiveControl := Produkt;
  Label1.Caption := '00:00:05'; //hier scheint der Fehler zu sein, da Delphi hierhin springt, nachdem ich bei der Fehlermeldung auf Okay geklickt habe
  a := random (10);
  b := random (10);
  Faktor1.Text := inttostr(a);
  Faktor2.Text := inttostr(b);
  clo := false;

end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption := TimeToStr(StrToTime(Label1.Caption)-0.000001);

  if Label1.Caption = '00:00:00' then
  begin
     Edit3.Text := 'Game Over';
     Produkt.Visible := false;
     Button2.Visible := true;
     Button1.Visible := false;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  c := strtoint(Produkt.Text);

  if a * b = c then
  begin
    Edit3.Text := 'Richtig';
    Application.ProcessMessages;
    sleep(1000);
    Edit3.Clear;
    a := random (10);
    b := random (10);
    Faktor1.Text := inttostr(a);
    Faktor2.Text := inttostr(b);
    Produkt.Clear;
    Label1.Caption := '00:00:05';
    Form1.ActiveControl := Produkt;
    inc(richtig);
    Edit4.Text:=inttostr(richtig);
  end
  else
    begin
    Edit3.Text := 'Falsch';
    Application.ProcessMessages;
    sleep(1000);
    Edit3.Clear;
    a := random (10);
    b := random (10);
    Faktor1.Text := inttostr(a);
    Faktor2.Text := inttostr(b);
    Produkt.Clear;
    Label1.Caption := '00:00:05';
    Form1.ActiveControl := Produkt;
    inc(falsch);
    Edit5.Text:=inttostr(falsch);
  end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 if clo = false then
 begin
  Timer1.Enabled := false;
  Faktor1.Clear;
  Faktor2.Clear;
  Produkt.Visible := false;
  Button2.Visible := true;
  Button1.Visible := false;
  clo := true;
  Button3.Caption := 'Schliessen';
 end
  else
    begin
     close;
    end;

end;

procedure TForm1.Button2Click(Sender: TObject); //nachdem diese Prozedur aufgerufen wurde, erscheint der Fehler
begin
  FormCreate(Self);
end;

end.
Wäre nett wenn mir jemand sagen könnte was ich falsch mache :oops: :cry:

Dani 10. Feb 2007 15:29

Re: Prozedur in einer Prozedur starten
 
Delphi-Quellcode:
Form1.ActiveControl := Produkt;
Das verursacht den Fehler, da das Formular in FormCreate (beim ersten Aufruf) nicht sichtbar ist.
[Falls du an einer eleganten Methode für deinen 5-Sekunden Timeout interessiert bist, zieh dir mal die Dokumentation vom Typ TDateTime rein ;)]

mo_greene 10. Feb 2007 15:38

Re: Prozedur in einer Prozedur starten
 
okay vielen dank :-D ...

nochmal ne grundsätzlichere frage:

wenn ich einer variablen einen zufälligen wert zuweise

Delphi-Quellcode:
a := random [10];
warum ist es dann so, dass die "zufälligen" Zahlen immer die gleiche Reihenfolge haben, nach Programmstart? Bei meinem Programm wo ich den Code geposted habe, wird der variablen z.b. immer eine 0 zugefügt, als nächstes eine 5, dann eine 2 etc...

woran liegt das?

Dani 10. Feb 2007 15:40

Re: Prozedur in einer Prozedur starten
 
Du musst den Zufallsgenerator initialisieren mit Randomize() (aber nur genau einmal)

mo_greene 10. Feb 2007 15:46

Re: Prozedur in einer Prozedur starten
 
an welcher stelle und wie sieht diese prozedur aus??

Die Muhkuh 10. Feb 2007 15:51

Re: Prozedur in einer Prozedur starten
 
Hier im Forum suchenRandomize << guckst Du ;)

mo_greene 10. Feb 2007 15:54

Re: Prozedur in einer Prozedur starten
 
vielen Dank :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:59 Uhr.
Seite 2 von 2     12   

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