![]() |
Neustart
Hey Leute,
ich hab mal ne kleine dumme Frage, die Antwort wurde hier sicher schon 100 Mal geschrieben, aber ich weiß nicht, wonach ich suchen soll... Wie kann ich mein Programm neustarten, also an den Anfang zurücksetzen, sozusagen FormCreate noch einmal ausführen... Ihr wisst schon was ich meine :wink: Danke im Vorraus Lars |
Re: Neustart
Einfach
Delphi-Quellcode:
Form.Free;
Form := <Form-Klasse).Create; |
Re: Neustart
Zitat:
|
Re: Neustart
Es soll aber im Hauptform sein.
Ich kam mit dem Vorschlag auch nicht so recht weiter... Mein Quelltext sieht ungefähr so aus:
Delphi-Quellcode:
if MessageDlg('Noch einmal?', mtWarning, [mbYes, mbNo], 0) = mryes then begin //Neustart end else Form1.Close; |
Re: Neustart
Wilst du die ganze Anwendung neustarten? Das ginge so:
Delphi-Quellcode:
Mfg
procedure Neustart;
begin PostMessage(Application.Handle, WM_CLOSE, 0, 0); ShellExecute(0, 'open', PChar(ParamStr(0)), nil, nil, SW_SHOW); end; |
Re: Neustart
Man könnte auch nur .Create() noch einmal aufrufen, dann wird es nicht als Konstruktor, sondern als Klassenmethode angewendet
|
Re: Neustart
Warum willst du denn unbedingt FormCreate noch mal ausführen? Du könntest doch einfach eine Methode schreiben, die bei Klick auch "Nochmal" alles "auf Anfang" setzt, ohne Neustart. Diese würde ich dann zusätzlich auch aus FormCreate aufrufen.
|
Re: Neustart
Das war nur mein erster Gedanke mit dem FormCreate.
Wie sollte das denn ungefähr aussehen? Bei dem Vorschlag von mkinzler
Delphi-Quellcode:
kommt die Meldung: Nicht genügend wirkliche Parameter.
Form1.Create(); //wenn er das so meinte
Allerdings weiß ich nicht so recht, was in die Klammern muss (Sender: TObject) geht ja nicht. |
Re: Neustart
Delphi-Quellcode:
Form1.Create( Form1.Owner);
|
Re: Neustart
Frage: Was willst du damit überhaupt erreichen? Es gibt bestimmt einen besseren Weg, als das Create nochmal aufzurufen.
|
Re: Neustart
Zitat:
|
Re: Neustart
Es soll ein Quiz werden, wenn man eine bestimmte Anzahl von Fragen beantwortet hat, soll man halt noch einmal von vorne anfangen können, dafür müssen ja sowohl alle Punktstände auf 0 gesetzt werden, als auch die Fragen wieder neu ausgewählt werden, da hielt ich es für einfacher, das ganze Programm noch einmal von vorne starten zu lassen.
|
Re: Neustart
Zitat:
Im OnCreate() oder zu einem späteren Zeitpunkt initialisiert du Variablen, die Fragen etc. Diese müssen nur wieder neu initialisiert werden. |
Re: Neustart
Aber was ist denn gegen einen Neustart einzuwenden? Ich müsste sonst auch wieder die Arrays neu belegen, Schleifen müssten wieder von vorne anfangen usw... da ist ein Neustart einfach weniger aufwendig
Delphi-Quellcode:
funktioniert übrigens nicht, da eine Exception auftritt: Komponente mit der Bezeichnung Form1 existiert bereits.
Form1.Create(Form1.Owner);
|
Re: Neustart
Zitat:
Wenn du alles ein mal initialisierst, kannst du das doch auch 2, 3, 4 .... 1000000 mal. Packe den dazu notwendigen Code in eine eigene Methode und rufe diese aus FormCreate und bei "Nochmal" auf. Hab ich schon versucht, dir nahe zu legen. |
Re: Neustart
Aah :dancer: jetzt verstehe ich auch, was du meintest.
Hatte die Idee schon mal, dann doch aber wieder verworfen. Klappt aber so :thumb: Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:24 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 by Thomas Breitkreuz