![]() |
Re: Prozedur in einer Prozedur starten
leider komme ich mit dieser Antwort nicht zur Lösung meines Problems... :cry:
|
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... |
Re: Prozedur in einer Prozedur starten
Delphi-Quellcode:
Wäre nett wenn mir jemand sagen könnte was ich falsch mache :oops: :cry:
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. |
Re: Prozedur in einer Prozedur starten
Delphi-Quellcode:
Das verursacht den Fehler, da das Formular in FormCreate (beim ersten Aufruf) nicht sichtbar ist.
Form1.ActiveControl := Produkt;
[Falls du an einer eleganten Methode für deinen 5-Sekunden Timeout interessiert bist, zieh dir mal die Dokumentation vom Typ TDateTime rein ;)] |
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:
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...
a := random [10];
woran liegt das? |
Re: Prozedur in einer Prozedur starten
Du musst den Zufallsgenerator initialisieren mit Randomize() (aber nur genau einmal)
|
Re: Prozedur in einer Prozedur starten
an welcher stelle und wie sieht diese prozedur aus??
|
Re: Prozedur in einer Prozedur starten
![]() |
Re: Prozedur in einer Prozedur starten
vielen Dank :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:59 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