Aktuelle Form zurücksetzen(Delphi 2006)

Hallo zusammen,

ich habe folgendes Problem:

Ich habe unter Delphi 2006 ein Formular (Form) erzeugt, auf dem verschiedene Aktionen ablaufen. Nun möchte ich per ButtonClick, also per Knopfdruck, das Formular in seine Ausgangsposition bringen.
Ich möchte quasi das fenster neu aufrufen oder erzeugen lassen.

Kann mir vielleicht mal jemand auf die Sprünge helfen?
Vielen Dank im Voraus.

Gruß
Florian

Hallo Florian,

beim Öffnen eines Formulars wird eine Menge Code ausgeführt (FormCreate), z.B. werden alle Komponenten erzeugt und auf die in der DFM-Datei gespeicherten Ausgangswerte gesetzt. Dieser Code ist weder lesbar noch editierbar. Die einzige Möglichkeit dürfte wirklich sein, das Formular zu schliessen und neu aufzurufen. Nach einem inherited FormCreate o.ä. wären die Komponenten wahrscheinlich doppelt vorhanden und es entstünden Speicherlecks.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Florian,

wie Reinhard schon sagte, ist das nicht so einfach.

Nun möchte ich per
ButtonClick, also per Knopfdruck, das Formular in seine
Ausgangsposition bringen.

Meinst Du damit wirklich nur die Position (Left, Top, Height und Width)? Das wäre allerdings billig zu haben.

Ich denke mal, dass dem nicht so ist.
Dann würde ich Dir empfehlen das Form modal zu öffnen und über einen „Reload“-Button ein bestimmtes Ergebnis zurückzugeben, auf das Du entsprechend reagierst. Schau auch mal in die Hilfe unter ShowModal.

Voraussetzung ist natürlich, dass das Form auch Modal verwendet werden kann.

Das ganze könnte dann z.B. so aussehen:

Procedure Test;
Var
 iResult : Integer;
Begin
// der "Reload"-Button in Form1 muss dann ModalResult = mrYes haben
 iResult := mrYes;
 While iResult = mrYes do Begin
 form1 := Tform1.Create( self );
 Try
 iResult := form1.ShowModal;
 Finally
 form1.Release;
 End;
 End;
End;

Und nicht vergessen, den OK-, Abbruch- und sonstwas-Buttons auch entsprechende ModalResult zu geben, sofern sie zum (endgültigen) schließen des Fensters dienen sollen.

Gruß
Christian

Hallo,

Ich habe unter Delphi 2006 ein Formular (Form) erzeugt, auf
dem verschiedene Aktionen ablaufen. Nun möchte ich per
ButtonClick, also per Knopfdruck, das Formular in seine
Ausgangsposition bringen.
Ich möchte quasi das fenster neu aufrufen oder erzeugen
lassen.

zunächst wäre mal wissenswert ob es sich um das Hauptformular handelt. Dann könntest du es nicht so einfach schließen, da dann die Anwendung beendet wird.
Ist es nicht das Hauptformular, sollte man wissen ob der „Reset“-Knopf sich auf dem Formular selbst befindet oder auf einem übergeordneten Formular. Im zweiten Fall wäre es einfach indem man das zu erneuernde Formular nicht automatisch sondern dynamisch erzeugen lässt (mit MyForm.Create(Application)) und es beim Reset einfach entfernt und dann wieder neu erzeugt.
Das gleiche geht auch, wenn sich der Knopf auf dem Formular selbst befindet. Dann ist aber eine Variable als Flag notwendig, die dem übergeordneten Formular sagt, dass jetzt ein Reset erfolgen muss.

Gruß, Niels

Danke, anders gelöst…
Hallo und danke noch mal für Eure Lösungsvorschläge.
Ich habe das Ganze jetzt etwas anders realisiert. Und zwar, in dem ich einen Teil der Aktionen auf eine andere Form verlagert habe und dann diese einfach wieder schließe und die erste (neu) aufrufe.

Danke

Gruß
Florian