sauberes Beenden einer VFP-Anwendung

09/10/2007 - 16:06 von Winfried Wolf | Report spam
Hallo,

Ich will erreichen, dass meine VFP-Anwendung unter möglichst allen
Umstànden sauber beendet wird. Ich hab mir - mit viel probieren - das
zwar einigermaßen hingefummelt, aber vielleicht gibt's ja auch noch
Möglichkeiten zur Verbesserung, die ich übersehen habe.
Unter anderem geht es mir darum, beim Programm-Ende noch eine
Tabellen-Operation zu machen.
Und auf keinen Fall will ich es dem User zumuten zu erleben, dass er die
Meldung bekommt "VFP kann nicht beendet werden."

Um den Fall eines normalen Programm-Endes vom Menü aus geht's natürlich
nicht, sondern:

1) Der User beendet über das Schließen-Kreuz des Hauptfensters: Er soll
die Frage bekommen: "Wollen Sie wirklich beenden?" und im NEIN-Fall soll
alles weitergehen. Im JA-Fall soll dann sauber beendet werden.

2) Das Programm wird beendet, weil der Rechner runtergefahren wird. Die
Frage "Wollen Sie wirklich beenden?" soll NICHT erscheinen, sondern das
Programm soll gleich sauber beenden. Das über das Timeout der Messagebox
zu regeln ist ungünstig, da bei ausreichender Timeout-Einstellung die
Windows-Meldung "Programm reagiert nicht" früher kommt.

So, und nun das saubere Beenden des Programms selber. Ich mach das über
"ON SHUTDOWN". Für meine abschließende Tabellen-Operation möchte ich ne
saubere Umgebung, sprich, alle sonstigen Tabellen sollten zu sein. Da
aber eventuell Formulare auf Tabellen zugreifen, muss ich die alle
erstmal schließen. Das kann ich z.B. mit:

DO WHILE TYPE("_Screen.ActiveForm")='O' AND !ISNULL(_Screen.ActiveForm)
_Screen.RemoveObject(_Screen.ActiveForm)
ENDDO

Ist das so sinnvoll? An welcher Stelle beim Shutdown setzt man am Besten
das CLEAR EVENTS ab?

Gruß,
WiWo.
 

Lesen sie die antworten

#1 Hans-Peter Grözinger
09/10/2007 - 16:29 | Warnen spam
Hallo Winfried !

2) Das Programm wird beendet, weil der Rechner runtergefahren wird.
Die Frage "Wollen Sie wirklich beenden?" soll NICHT erscheinen,
sondern das Programm soll gleich sauber beenden.



Füge im Init deines Startprogrammes oder Applikationsobjektes
folgendes hinzu:

#DEFINE WM_CLOSE 0x0010

*-- Handler fürs Schließen per Windows-Nachricht WM_CLOSE setzen
BINDEVENT( _VFP.HWND, WM_CLOSE, goApp, 'OnAppClose', 2 )

In den Handler OnAppClose fürs Schließen per Windows-Nachricht
WM_CLOSE fügst du den notwendigen Code hinzu, damit deine Abfrage
nicht kommt.

Hans-Peter Grözinger
TOFU ist gedankenlose Resourcenverschwendung.
http://einklich.net/usenet/zitier.htm
http://support.microsoft.com/defaul...GNetikette

Ähnliche fragen