it-swarm.com.de

Warum kann Microsoft Word nicht geschlossen werden, wenn ein Dialogfeld geöffnet ist?

Ich erhalte gelegentlich die Fehlermeldung, die Word ausgibt, wenn ich versuche, ein Dokument mit einem anderen geöffneten Dialogfeld zu schließen, aber ich konnte whyit happen.

27
John

Weil die meisten Dialogfelder als " modal " betrachtet werden, was bedeutet, dass die Steuerung nicht an das Hauptprogramm oder den aufrufenden Container zurückgegeben wird, bis der Dialog selbst geschlossen wird. Dies ist beabsichtigt und der Programmierer hat die Option, ein Fenster modal oder nicht modal zu machen. Normalerweise wird ein Fenster als modal definiert, wenn das Hauptprogramm nicht fortfahren kann oder soll, bis der geöffnete Dialog entweder durch Auswahl (Ok) oder Abbrechen (Abbrechen) bearbeitet wird.

60
Bill Hileman

Das Dialogfeld könnte etwa so lauten:

Sie haben Änderungen an Ihrem Dokument vorgenommen. Möchten Sie diese speichern? (Ja Nein)

Hier gibt es keine offensichtliche richtige Antwort. Möglicherweise haben Sie Ihr Dokument versehentlich beschädigt (z. B. die Katze ist über die Tastatur gegangen). In diesem Fall lautet die Antwort "Nein". In diesem Fall haben Sie möglicherweise Stunden damit verbracht, Änderungen einzugeben. In diesem Fall lautet die Antwort "Ja".

Das Sicherste, was Word tun kann, ist, das Schließen zu verweigern, bis Sie die Frage beantwortet haben.

20
Nick Gammon

Da das Programm auf diese Weise entworfen wurde, möchte der Benutzer möglicherweise keine Maßnahmen ergreifen.

Normalerweise wird ein Dialogfeld angezeigt, in dem der Benutzer eine Aktion ausführen muss. Das Schließen eines nicht gespeicherten Dokuments ist ein hervorragendes Beispiel: In einem Dialogfeld können Sie die Änderungen speichern, verwerfen oder das Schließen abbrechen und zur Bearbeitung zurückkehren. Das Programm weigert sich absichtlich, das Programm zu schließen, ohne diese Frage zu beantworten, da durch das Schließen einige Maßnahmen erzwungen werden. Das Programm kann nicht selbst entscheiden, z. Verwerfen Sie die zuletzt vorgenommene Bearbeitung oder überschreiben Sie im Gegenteil die richtige Version mit der Tastaturtastatur.

Selbst wenn wir einen Dialog betrachten, der nicht mit dem Schließen zusammenhängt, bedeutet dies normalerweise, dass ein Prozess im Gange ist, der noch nicht abgeschlossen wurde und der Benutzer entscheiden muss, welchen Weg er einschlagen soll. Es kann nicht "einfach abgebrochen" werden, da das Abbrechen auch eine Aktion ist, die der Benutzer möglicherweise nicht gemeint hat.

Dies vereinfacht auch das Design des Programms, da die Entwickler nicht für jede Funktion einen "sicheren Ausweg" schaffen müssen.

Heutzutage sind die meisten Dialoge im technischen Sinne nicht modal (das Programm bleibt verantwortlich), aber es ist immer noch einfacher, sie im weiteren Sinne des logischen Flusses des Programms modal zu gestalten.

1
Agent_L

Ich könnte mich irren, aber ich vermute, dass dies auf das alte allgemeine Dialogsteuerungsverhalten zurückgeht.

Einige von denen, die abrupt getötet wurden, ohne dass sie zurückkehrten, hatten unangenehme Nebenwirkungen, manchmal sogar außerhalb des jetzt toten Programms, und es gab nicht in jedem Fall eine Möglichkeit, ihnen höflich zu entkommen, wenn sie etwas auf Systemebene taten, das Benutzereingaben erforderte.

Was den Grund betrifft, warum dies immer noch so ist, haben sich die Leute daran gewöhnt, die Entwickler haben jahrzehntelang mit dieser Annahme programmiert und, was noch wichtiger ist, Nicht-Programmierer haben diese Dialoge in ihren Skripten für die Büroautomatisierung verwendet, und Microsoft ist nichts, wenn nicht eine strikte Einhaltung der Ziele in Bezug auf Abwärtskompatibilität .

0
Bill

Hinter den Kulissen erstellt das Programm (in unserem Fall MS Word) beim Erstellen des Fensters einen "X-Button-Click-Event-Handler". Wenn ein Dialogfeld angezeigt wird, zeichnet Word dies auf. Wenn Sie dann im X-Button-Handler auf den X-Button klicken, wird nach aufgezeichneten geöffneten Dialogfenstern gesucht. Wenn es welche gibt, bricht der Handler den Schließvorgang ab. Ist dies nicht der Fall, wird das Programm beendet und das Betriebssystem räumt den vom Programm belegten Speicher auf. So funktioniert es.

0