Beenden Menu

Hallo,
bin gerade etwas verzweifelt über das Beenden Menu.

Folgende Anwendung:
Die Datenbankmethode On Startup Methode startet einen neuen Prozess, in dem ein Fenster gezeigt wird:
Code :
Open window(130;60;130+380;60+150;4;“Database”;“ZUHauptbild”)
DIALOG([Layouts];“Startfenster”)
CLOSE WINDOW
ZUProzess

Im eigenen Ablage-Menü existiert ein Eintrag Beenden mit der Abkürzung Befehl-Q

Die Datenbankmethode On Exit ruft den Prozess „ZUProzess“ auf, der im wesentlichen wie folgt aussieht:
Code :
For ($i;3;Count tasks) //ehemals 3
RESUME PROCESS($i)
CALL PROCESS($i)
End for

CANCEL

If (Application type=4D Remote mode)
QUIT 4D
End if

Dazu gibt es eine Methode MenuManager, der bei Auswahl des Items „Beenden“ ebenfalls die Methode „ ZUProzess“ aufruft.

Nun stosse ich auf folgendes Verhalten:

4D v15R4:
Im Ablage Menü wird der Kurzbefehl Q angezeigt.
Befehl-Q über die Tatstatur eingegeben beendet 4D, wenn am Server angemeldet, und geht in den Designmodus, wenn in 4D Applikation geöffnet.
Das Menu-Item mit der Maus ausgewählt: gleiches Verhalten, wie mit Befehl-Q

4D v16R2:
Im Ablage Menü wird der Kurzbefehl Q nicht angezeigt.
Befehl-Q über die Tatstatur eingegeben beendet 4D, wenn am Server angemeldet, und geht aber nicht in den Designmodus, wenn in 4D Applikation geöffnet.
Das Menu-Item mit der Maus ausgewählt: gleiches Verhalten, wie mit Befehl-Q, jedoch wird der Designmodus geöffnet, wenn in 4D Applikation geöffnet

4D v16R4:
Im Ablage Menü wird der Kurzbefehl Q nicht angezeigt.
Befehl-Q über die Tatstatur eingegeben beendet 4D nicht, wenn am Server angemeldet, und geht nicht in den Designmodus, wenn in 4D Applikation geöffnet.
Das Menu-Item mit der Maus ausgewählt: beendet 4D nicht, wenn am Server angemeldet, und geht nicht in den Designmodus, wenn in 4D Applikation geöffnet.

Wie kann ich das gleiche Verhalten wie in v15R4 erhalten?
Danke für die Unterstützung!

Beste Grüße
J. Puff

Suchen Sie die Standardaktionen?
Dazu
http://doc.4d.com/4Dv16/4D/16.2/Menus-verwalten.300-3433190.de.htmlMe
üs verwalten>

: Handbuch

Sie können einem Menübefehl auch eine Standardaktion und eine
Projektmethode zuweisen. Dann wird die Standardaktion nie ausgeführt;
4D benutzt die Aktion jedoch, um den Menübefehl je nach Kontext zu
aktivieren/deaktivieren und um je nach Plattform eine spezifische
Operation zuzuweisen. Im Anwendungsmenü unter Mac OS wird z.B. die
Aktion Voreinstellungen übergeben.

Hallo Herr Zillgen,
wo die Standardaktion definiert wird ist mir bewusst.

Vielleicht als Ergänzung zu meiner Beschreibung:
im Menü-Editor ist für den Eintrag Beenden keine Standard-Aktion und keine Projektmethode konfiguriert.

Was ich suche: dass 4D v16 sich verhält wie v15R4.

Denn so ist es im Handbuch beschrieben:
Weisen Sie einer Menüzeile keine Projektmethode oder Standardaktion zu und wählt der Anwender diese Zeile aus, verlässt 4D die Anwendungsumgebung und wechselt zur Designumgebung. Ist nur die Anwendungsumgebung verfügbar oder hat der Benutzer keinen Zugriff auf die Designumgebung, wird das Programm beendet.

Nur das tut es eben unter v16 nicht.
Jedenfalls nicht in meiner Anwendung.

Nicht spezifisch für Ihre Anwendung da ich diese nicht kenne - sondern allgemein wie ich es lösen würde:

bitte dazu NICHT die On Exit Methode nehmen, das ist zu spät. Hier läuft eigentlich schon der Exit.
Sie wird aufgerufen wenn beendet wird - dann ist es schon zu spät sich anders zu entscheiden.
Sie wird z. B. aufgerufen wenn QUIT 4D ausgeführt wird.
Sie rufen nun in On Exit nochmal eine Methode auf die den Exit auslöst - oder verhindern soll?

Die Schleife mit Resume Process ist übrigens auch überflüssig, 4D führt dies bei ON EXIT automatisch durch (alle Prozesse werden geweckt, Delay/Pause wird ignoriert).

Stattdessen:
Weisen Sie dem Menü-Eintrag die Standard-Aktion beenden zu. Damit bekommt der Eintrag einen Flag und wird (Mac) ins Anwendungs-Menü verschoben.
Weisen Sie außerdem eine eigene Methode zu - diese wird dann statt der automatischen Aktion ausgeführt.

In der Methode können Sie Cancel an alle offenen Formulare senden.
Der Befehl CANCEL wie Sie in ausführen nützt hier nicht immer etwas, da er ein Post-Event ist. Er wird nach Ende der Methode ausgeführt.
Besser ist per CALL FORM eine Methode mit CANCEL im Kontext jedes Formulars ausführen, bis diese Fenster geschlossen sind.

Abschließend nun noch entweder Beenden oder in Design-Modus wechseln.
Beenden über QUIT 4D, Design-Modus über INVOKE ACTION(ak return to design mode)

Hallo Herr Maul,
danke für die Beschreibung und Hilfe.

Es gab früher einmal eine Muster-DB (ich glaube Sie hieß Airport o.ä., es ging um Flüge etc.) aus der ein typisches Applikations-Modell ersichtlich wurde, mit Palette, Hauptfenster, Menüs etc.

An der gesamten Steuerung hat sich ja einiges geändert, gibt es eine solche Muster-DB auch zu der aktuellen Version?
Vielleicht übersehe ich ja etwas …

einfach unter dem Ablagemenu eine Zeile beenden mit der aktion 4d beenden anfügen
diese wird nicht angezeigt und bewirkt das von Ihnen gewünschte Verhalten