Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [n] Formulare erzeugen - das geht ja noch, aber schliessen?? (https://www.delphipraxis.net/15654-%5Bn%5D-formulare-erzeugen-das-geht-ja-noch-aber-schliessen.html)

meggles 2. Feb 2004 11:31


[n] Formulare erzeugen - das geht ja noch, aber schliessen??
 
Hi,
meine MainForm eines email-Clients soll verschiedene (=n) Emails gleichzeitig öffnen können. In einer Prozedur "Speichern und Schließen" im Email-Fenster soll nach dem Speichern, ja richtig, das Fenster geschlossen werden.
Delphi-Quellcode:
self.free
scheint nicht zu gehen, da kriege ich ne Zugriffsverletzung - wieso? :gruebel:
Danke!
Simon

Luckie 2. Feb 2004 11:33

Re: [n] Formulare erzeugen - das geht ja noch, aber schliess
 
Zeig mal Code wie du sie erstellest. Ohne kann man schlecht sagen warum es nicht geht.

Verwaltest du sie in einem Array?

Jens Schumann 2. Feb 2004 11:34

Re: [n] Formulare erzeugen - das geht ja noch, aber schliess
 
Hallo,
lass mal self.free weg und schreibe in das OnClose-Event Action:=caFree

meggles 2. Feb 2004 13:18

Re: [n] Formulare erzeugen - das geht ja noch, aber schliess
 
Hallo,
sorry, wenn ich das jetzt zu schwammig formuliert habe:

Aaaalso, im Hauptfenster erzeuge ich z.b. ein Fenster füür "neue Email":
Delphi-Quellcode:
procedure TfHaupt.AcNeueEmailExecute(Sender: TObject);
var vfNeueEmail : TfEmail;
begin
  vfNeueEmail := TfEmail.Create(Application);
  vfNeueEmail.Show;
end;
Das kann ich natürlich auch mehrmals hintereinander machen.
Jedes erzeugte Email-Fenster hat eine Aktion "Speichern und schließen":

Delphi-Quellcode:
procedure TfEmail.ActspeichernExecute(Sender: TObject);
begin
  //email-insert (bei noch nicht gespeicherter Email)
  //email-update (wenn schon mal gespeichert wurde)
  // und jetzt natürlich das Fenster schließen:
  self.Free;
end;
self.free direkt bringt keine Zugriffsverletzung - die kommt in dem Moment, wo ich diese Prozedur verlasse. Das kommt, befürchte ich von der onCloseQuery, mit der ich ja auch beim manuellen Schließen der Form fragen muss, ob gespeichert werden soll.
Wie also kann ich das Formular vonhand schließen, ohne dass beim Schließen noch ein Ereignis ausgelöst wird...? :gruebel:
Danke!
Simon

Mario 2. Feb 2004 13:21

Re: [n] Formulare erzeugen - das geht ja noch, aber schliess
 
Einfach nur Self.Close oder besser noch Self.Release aufrufen. Bei Self.Free überspringst Du meines Wissens nach das OnClose und OnCloseQuery.

meggles 2. Feb 2004 13:31

Re: [n] Formulare erzeugen - das geht ja noch, aber schliess
 
Zitat:

Bei Self.Free überspringst Du meines Wissens nach das OnClose und OnCloseQuery.
Hmmmm.... aber da bekomme ich ja - wie erwähnt, die zugriffsverletzung. M.E. deshalb, weil ich die Form freigebe. Das einzige, was ich mir als Fehlerquelle vorstellen kann, ist in der Tat das onClose-Ereignis (einer Form, die es nichtmehr gibt)

Ich werd das mal onclose-Zeuch mal auskommentieren, und sehen, ob ich keine ZV bekomme.

Vielen Dank Euch trotzdem!


Simon

SirThornberry 2. Feb 2004 13:43

Re: [n] Formulare erzeugen - das geht ja noch, aber schliess
 
Benutz mal die suche der DP. Da hatten wir schonmal das thema eines selbst zerstörenden Objectes. Im gunde genommen ist es nicht möglich weil du ja das form benutzt, dann free sagst aber deine klickprocedure oder wie immer du das machst ist ja zu dem zeitpunkt auch noch in benutzung und nach dem klckereignis ist die formkomponente immer noch in der OnClickroutine die du ja aber eigentlich schon aufgelöst hast...

Jens Schumann 2. Feb 2004 13:47

Re: [n] Formulare erzeugen - das geht ja noch, aber schliess
 
Hallo,
und noch einmal.
Anstatt Self.Free Close aufrufen.
Im OnClose-Event Action auf caFree setzen.

meggles 2. Feb 2004 14:10

Re: [n] Formulare erzeugen - das geht ja noch, aber schliess
 
Potzblitz - danke! :hello:


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