Hallo Andreas,
also ich würde versuchen in das Event (kBefore) eine Überprüfung zu implementieren. Dabei würde ich Context (NameValueMap) überwachen, und zwar den Wert davon (The full filename that document is being saved to). So nun geht man davon aus, dass wir einen Speichervorgang aus zwei Zuständen starten können:
1. Die Datei ist bereits gespeichert – in dem Fall existiert ein FullFileName
2. Die Datei ist noch nicht gespeichert – hier existiert kein FullFileName
Wenn wir die Situation 1 haben, entsprechen meiner Meinung nach alle 3 Speichermöglichkeiten der Speichermöglichkeit „Speichern“. Beispiel: Neue Datei erstellen und mit „Kopie speichern unter“ speichern. Wenn man jetzt die Datei schließt wird man nicht mehr gefragt ob die Datei gespeichert werden soll. Also es wurde nicht eine Kopie gespeichert, da es die Datei physikalisch nie gab, sondern eben die Datei selbst. Also das gleiche wie normales „Speichern“ oder „Speichern unter“. Warum da alle Optionen aktiv sind, weiß ich nicht. Richtig wäre nur die Option „Speichern“ einzublenden. Aber egal. So wenn das Dokument kein FullFileName hat, dann kann man den Speichervorgang immer als „Speichern“ betrachten. Aber diese Überprüfung reicht nicht, da man auch wenn die Datei existiert „Speichern“ auslösen kann. Und hier kommt dann NameValueMap ins Spiel, denn wenn der Wert (The full filename that document is being saved to) gleich Document.FullFileName ist, dann ist es wieder ein „Speichern“. Wenn nicht, dann ist es wohl „Speichern unter“ bzw. „Kopie speichern unter“. Also praktisch (vorsicht ohne den Editor erstellt):
Code:
If(BeforeOrAfter == kBefore)
If(oDoc.FullFileName == "" | | oDoc.FullFileName == Context.Value)
Ist nur ein "Speichern"
Aber, wie gesagt, war das nur eine Überlegung. Ob die Theorie stimmt, musst du mal prüfen.
------------------
Grüße Igor
FX64 Software Solutions
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP