Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Form mit allem Inhalt zurücksetzen ... (https://www.delphipraxis.net/82553-form-mit-allem-inhalt-zuruecksetzen.html)

HolgerCW 15. Dez 2006 14:30


Form mit allem Inhalt zurücksetzen ...
 
Hallo zusammen,

wie kann ich eine Form und die dadrauf enthaltenen Objekte wieder in den Urzustand zurücksetzen ?

Soll heissen: So, wie die Form war, als Sie das erste mal aufgerufen wurde.

Gruss

Holger

mkinzler 15. Dez 2006 14:32

Re: Form mit allem Inhalt zurücksetzen ...
 
Zerstören und neu Erzeugen!

Mavarik 15. Dez 2006 14:51

Re: Form mit allem Inhalt zurücksetzen ...
 
DFM File Editieren und alle geänderten Felder löschen..

Frank

mkinzler 15. Dez 2006 14:54

Re: Form mit allem Inhalt zurücksetzen ...
 
@HolgerCW: Du solltest dien Frage genauer stellen. Denn wie du siehst habe ich und Mavarik die Frage anders verstanden.

HolgerCW 15. Dez 2006 15:07

Re: Form mit allem Inhalt zurücksetzen ...
 
Alles klar.

Ich werde mein bestes geben.

Wenn ich aber Form1.Destroy mache, kommt ein Fehler.

Und was sind DFM Files ?

Gruss

Holger

mkinzler 15. Dez 2006 15:11

Re: Form mit allem Inhalt zurücksetzen ...
 
Zitat:

Wenn ich aber Form1.Destroy mache, kommt ein Fehler.
Numm Lieber .Free oder FreeAndNil()
Zitat:

Und was sind DFM Files ?
Die Datei, in der Formdesigner der IDE die gemachten Einstellungen (Eigenschaften) der Unterkomponenten der Form ablegt.

HolgerCW 15. Dez 2006 15:16

Re: Form mit allem Inhalt zurücksetzen ...
 
Auch bei

Form1.Free kommt eine Zugriffsverletzung bei Adresse ...

Muss ich mit den Objekten die auf der Form liegen vorher noch was machen ???

Gruss

Holger

HolgerCW 15. Dez 2006 15:17

Re: Form mit allem Inhalt zurücksetzen ...
 
Habe es jetzt hinbekommen.

Habe die Form vorher mit

Delphi-Quellcode:
Form1.Showmodal;
gestartet.

Wenn ich nur

Delphi-Quellcode:
Form1.Show;
nehme, klappt es.

Wie geht es auch mit Showmodal;

Gruss

Holger

SirThornberry 15. Dez 2006 15:21

Re: Form mit allem Inhalt zurücksetzen ...
 
Die Zugriffsverletzung kommt weil nach dem ShowModal auf das Formular zugegriffen wird welches du aber innerhalb des ShowModal zerstörst. Du musst also einfach das Formular normal schließen und nach dem ShowModal das Formular frei geben.
Delphi-Quellcode:
DeinFormular.ShowModal();
DeinFormular.Release();
nicht
Delphi-Quellcode:
DeinFormular.ShowModal();
[...]
procedure DeinFormular.Irgendwas();
begin
  Self.Free;
end;

HolgerCW 15. Dez 2006 15:31

Re: Form mit allem Inhalt zurücksetzen ...
 
Klappt irgendwie nicht.

Starte die Form1 aus einem Menü heraus mit

Delphi-Quellcode:
Form1.Showmodal;
Form1.Release;
Danach schliesse ich die Form1 über das Rote Kreuz oben rechts.
In dem OnClose - Ereignis habe ich

Delphi-Quellcode:
Form1.Free;
Wenn ich das Form1.Free weglasse, kann ich jetzt nciht mal mehr das Fenster nochmal starten.

Wie genau klappt das ???

Gruss und schon mal danke

Holger

Hansa 15. Dez 2006 15:44

Re: Form mit allem Inhalt zurücksetzen ...
 
Ihr rackert euch ganz schön ab :P , dabei genügt das :

Delphi-Quellcode:
procedure Tfrm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
end;
Ich beziehe mich nur auf Beitrag #2.

HolgerCW 18. Dez 2006 09:35

Re: Form mit allem Inhalt zurücksetzen ...
 
Auch diese Variante klappt nicht.

Beim nochmaligen aufrufen der Form kommt wieder die Fehlermeldung ...

Gruss

Holger

SnuffMaster23 18. Dez 2006 09:42

Re: Form mit allem Inhalt zurücksetzen ...
 
Damit gibsts dus ja nur beim schließen frei.
Bevor dus nochmal aufrufst musst dus natürlich wieder erzeugen ;)

HolgerCW 18. Dez 2006 10:55

Re: Form mit allem Inhalt zurücksetzen ...
 
Wie rufe ich es denn auf, damit es wieder erzeugt wird.

So ja nicht, da die Form1 ja schon beim starten des Programms erzeugt wird.

[/delphi]
Create(Form1);
Form1.Showmodal;
[delphi]

Gruss

Holger

Hansa 18. Dez 2006 11:34

Re: Form mit allem Inhalt zurücksetzen ...
 
Na gut, etwas ausführlicher :

Delphi-Quellcode:
procedure Tfrm.Button3Click(Sender: TObject);
begin
  frm2 := Tfrm2.Create (Self); // Form erzeugen
  frm2.Show;
end;

procedure Tfrm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;  // Form wird zerstört, alle Variablen usw. freigegeben
end;
Mehr ist das nicht. Ich bin zwar kein Freund von "dynamisch erzeugen", aber die Forms sind die berühmte Ausnahme von der Regel. Auf Forms sind manchmal so viele Sachen. Comboboxen, die gefüllt werden müssen, Labels müssen in Abhängigkeit von irgendeiner Eingabe beschriftet werden usw. Bevor man das jetzt alles zurücksetzt ist es IMHO besser komplett neu anzufangen. Die Frage an sich ist nämlich wirklich berechtigt.

HolgerCW 18. Dez 2006 12:50

Re: Form mit allem Inhalt zurücksetzen ...
 
Jetzt klappt alles,

das geht auch mit Showmodal.

Vielen Dank.

Gruss

Holger

Hansa 18. Dez 2006 15:55

Re: Form mit allem Inhalt zurücksetzen ...
 
Zitat:

Zitat von HolgerCW
Jetzt klappt alles,...

Welch ein Wunder. :mrgreen: Der Vollständigkeit halber noch ein Tip : schiebe die Form mit dem vordefinierten caFree in die Objektablage und leite nur noch davon ab. Das wird sich auf Dauer lohnen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz