Einzelnen Beitrag anzeigen

BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

Form1 aus Form2 schluießen

  Alt 5. Mär 2009, 14:29
Hallo nochmal,

hab ein weiteres Problem über welchem ich sitze, wo ich dachte, eigentlich ziemlich trivial, aber ist nicht so.

ersteinmal zur Erklärung der Programmaufbau:

-----------|--------------------Form1-------------------|--------------> // dient nur der Überwachung
| |
-----------|--------Thread---------|---------> // Arbeitsthread
| |
----------Form2---------> // Bedienoberfläche

Also hoffe mit dieser kleinen Grafik kann ich die jetzt folgenden Worte etwas anschaulischer darstellen. Ich möchte, dass sich mein Programm SAUBER schließt, wenn der Bediener die Form2 beendet. Ich habe versucht, dies mittels eines Events zu tun, was allerdings zu reihenweisen Fehlermeldungen führt. Bin jetzt auf dem Stand, dass anscheinend meine Art, d.h. so wie ich die Events derzeit verwende zwar funktionieren (es wird realisiert, dass die Form2 geschlossen wird) aber nachdem in der Form1 dieses realisiert wird:

Delphi-Quellcode:
procedure TForm1.Beenden; // Procedure, in die beim Auftreten des Events gesprungen wird
begin
  close;
end; <-- hier springt er anscheinend zurück in die Eventfunktion in Form2, obwohl sie geschlossen ist
scheint sie auf die Form2 nocheinmal zugreifen zu wollen, was nicht geht, da die Form2 schon geschlossen ist. Das Event wird bei mir wie folgt in der Form2 ausgelöst:

Delphi-Quellcode:
 
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if assigned(Schliessevent) then Schliessevent;
end;
Kann mir jemand sagen, wie ich dies eventuell abändern kann, damit sich das Programm vollständig schließt? oder hat jemand eventuell eine gängigere Methode, wie ich in z.B. meinem Thread überprüfen kann, ob die Form2 noch existiert oder schon geschlossen wurde?

Vielen Dank
BAMatze

Edit1: Die grafik wird leider nicht so dargestellt, wie ich mir das dachte. Im Endeffekt ist Form1 der Hauptthread, in dem der Arbeitsthread erzeugt wird und in diesem wird die Form2 erzeugt.
  Mit Zitat antworten Zitat