Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Inhalt von Formular bleibt nach "Close"-Ereignis vorhanden!? (https://www.delphipraxis.net/25387-inhalt-von-formular-bleibt-nach-close-ereignis-vorhanden.html)

Stefan H. 5. Jul 2004 20:17


Inhalt von Formular bleibt nach "Close"-Ereignis v
 
Hallo Leute,

ich hoffe, dass mir jemand bei meinem folgenden Problem helfen kann.

Ich habe zwei Formulare. Bei dem ersten Formular werden Datensätze in einer ListBox angezeigt. Wird ein Doppelklick auf einen der Datensätze aus der ListBox ausgelöst, so öffnet sich das zweite Formular und zeigt weitere Details in dem neuen Formular an, bis der Benutzer das zweite Formular wieder schließt. Bis dahin funktioniert alles prima.
Folgendes Problem:
Wenn ich einen neuen bzw. weiteren Datensatz aus der ListBox auswähle so öffnet sich zwar wieder das zweite Formular doch stellenweise sind noch die Daten von dem vorherigen öffnen vorhanden.
Obwohl das Formular beim ersten Mal mit "Close" beendet wurde sind beim erneuten Aufruf des Formulars die Daten noch immer vorhanden.

Normalerweise müssten doch wenn ich ein Formular mit "Close" beende alle Daten in den Steuerelementen verschwinden bzw. zurückgesetzt sein.
Bei VB hatte ich nie die Probleme bzw. kenne ich dieses Problem nicht.

Im Moment setze ich im Formular-Ereignis "OnShow" alle bzw. einige Steuerelemente auf null zurück.

Kann mir evtl. dazu jemand eine andere Lösung geben => Formulareinstellungen usw.

Danke im Voraus,
Stefan H.

rantanplan99 5. Jul 2004 20:28

Re: Inhalt von Formular bleibt nach "Close"-Ereign
 
Hallo Stefan

Das Verhalten ist normal. mit Close setzt du glaube ich nur das Visible auf False. Jedenfalls wird das Formular nicht Destroy-ed, und die Komponenten in deinem Formular bleiben erhalten, ebenso Ihre Werte.

Entweder Zerstörst du Formular anstatt es mit Close zu schliessen, musst es dann aber jedesmal wenn du es benutzt vorher wieder erzeugen (Create), oder du musst im onShow alle werte löschen.

rantanplan

Stefan H. 5. Jul 2004 20:45

Re: Inhalt von Formular bleibt nach "Close"-Ereign
 
Hallo rantanplan99,

vielen Dank für die schnelle Antwort. :thuimb:

Ich habe mal versucht das zweite Formular mit "Destroy" zu beenden, das Fenster hat sich zwar geschlossen doch dann bekam ich die Fehlermeldung "Abstrakter Fehler" und die Anwendung hat sich aufgehangen. :thuimb:

Kann es daran liegen, dass ich das zweite Formular nicht mit "Create" erstellt habe? :gruebel:
Warum soll ich ein Formular mit Create erstellen, wenn es doch schon vorhanden ist????? :gruebel:

Sorry, im Moment verstehe ich nicht den Zusammenhang mit Close, Create und Destroy. :gruebel:
Kann es evtl. daran liegen, dass ich mein zweites Formular mit ShowModal öffne?

Gruß,
Stefan H.

MrKnogge 5. Jul 2004 21:02

Re: Inhalt von Formular bleibt nach "Close"-Ereign
 
Schau dir mal "Projekt" -> "Quelltext anzeigen" an. Standardmäßig ist es so, dass dein zweites Formular gleich beim Start deiner Anwendung erstellet wird (create) mit Show/ShowModal zeigst du es nun an, und mit Close schliest du es wieder. (Bei dem Hauptformular wird die Anwendung beendet)

Entferne am besten in der Projektdatei ("Projekt" -> "Quelltext anzeigen") den Eintrag der dein 2. Formular erstellt, und zeige dein 2. Formlular folgendermaßen an:

Delphi-Quellcode:
Form2 := TForm2.Create(self); // erstellen
try
  Form2.ShowModal; // anzeigen
finally
  Form2.Free; // freigeben
  Form2 := nil;
end;
Das 2. Formular musst du mit Close schliesen, damit es anschliesend wieder freigegeben wird.

Achtung: Wenn du auf dein 2. Formluar zugreifst, ohne es vorher zu erstellen, bekommst du eine Fehlermeldung.

[edit]Aber was hat das mit Datenbanken zu tun :gruebel: [/edit]

DP-Maintenance 5. Jul 2004 21:09

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "Datenbanken" nach "VCL-Komponenten und Controls" verschoben.

Stefan H. 5. Jul 2004 21:42

Re: Inhalt von Formular bleibt nach "Close"-Ereign
 
Hallo MrKnogge,

ich habe Dein Beispiel abgeleitet und es funktioniert jetzt einwandfrei.
Vielen Dank nochmals an MrKnogge und rantanplan99 die mir beide geholfen haben.

Tschaui

Gruß,
Stefan H.

PS. Das mit den Datenbanken war nur ein Beispiel.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 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