Form schliessen und wieder öffnen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Form schliessen und wieder öffnen

Beitrag von Marc »

Hallo Zusammen.

Habe eine Form die ich mehrmals aufrufen möchte (Aus einer Schlaufe für Dateneingabe).

Wenn ich diese mit close; schliesse und mit Form2.ShowModal wieder öffne sehe ich wieder den Zustand den ich beim schliessen hatte (inkl eingegebener Daten).
Die wiedergeöffnete Form scheint auch die Einträge von FormCreate zu überspringen.

Gibt es eine Funktion die die Form wieder auf die Werte setzt die ich im Objektinspektor angegeben habe? Einen Reset sozusagen?
Good code comes from experience, experience comes from bad code.

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: Form schliessen und wieder öffnen

Beitrag von theo »

Marc hat geschrieben:Wenn ich diese mit close; schliesse und mit Form2.ShowModal wieder öffne sehe ich wieder den Zustand den ich beim schliessen hatte (inkl eingegebener Daten).
Die wiedergeöffnete Form scheint auch die Einträge von FormCreate zu überspringen.

Wenn Form2 nicht das Hauptformular ist, wird es nur geschlossen, nicht destroyed. Mit ShowModal wird es auch nicht erzeugt.
Etwas in der Art sollte klappen:

Code: Alles auswählen

  FreeAndNil(Form2);
  Form2 := TForm2.Create(Application);
  Form2.Show;

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Form schliessen und wieder öffnen

Beitrag von Marc »

Hallo Theo

Vielen Dank für die schnelle Hilfe!

Ich hab es jetzt so gemacht :

Code: Alles auswählen

 Form2 := TForm2.CREATE(Application);
 Form2.ShowModal;
 FreeAndNil(Form2);

Das scheint zu funktionieren.
Good code comes from experience, experience comes from bad code.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Form schliessen und wieder öffnen

Beitrag von pluto »

Normalerweise setzt man die Eingaben Manuell zurück. Zum Beispiel:

Code: Alles auswählen

Edit1.Text:='';
Edit2.Text:='';

Bei anderen Komponenten geht es natürlich ähnlich z.b. CheckButton1.Checked:=False.

Das muss du "nur" im onShow machen z.b.
MFG
Michael Springwald

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Form schliessen und wieder öffnen

Beitrag von Marc »

Auf alle Fälle Danke für die vielen Antworten.

Mir war so nur

Code: Alles auswählen

 close;
bekannt.

Die Form ist etwas interaktiv gestaltet. Dh. je nach dem was man tut werden Buttons sichtbar oder Eingabefelder.
Das alles einzeln wieder Zurechtzurücken wäre schon ein Aufwand.
Daher ist es besser die Form wird einfach gelöscht und eine neue kommt daher.
Good code comes from experience, experience comes from bad code.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Form schliessen und wieder öffnen

Beitrag von m.fuchs »

Moderationshinweis: Ich habe mir mal erlaubt, die Diskussionen zu with in ein neues Thema zu verschieben.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Form schliessen und wieder öffnen

Beitrag von Mathias »

Die Form ist etwas interaktiv gestaltet. Dh. je nach dem was man tut werden Buttons sichtbar oder Eingabefelder.
Das alles einzeln wieder Zurechtzurücken wäre schon ein Aufwand.

Mich würde dies nicht abhalten. Wen man einen Dialog anhand einer INI-Datei initialisieren muss, hat man diesen Aufwand auch. :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten