Clevere Aktionsschaltflächen in Masken (3/3)
Herzlich Willkommen!/Tipps & Tricks/Clevere Aktionsschaltflächen in Masken (3/3)

Clevere Aktionsschaltflächen in Masken (3/3)

Im dritten Teil des Tipps geht es um die Aktionsschaltfläche "Abbruch und schliessen". Naja – werden Sie denken – wo ist da ein Problem? Eine @Command- Anweisung und die Sache ist erledigt…
notion image
 

Problematik mit dieser Art von Aktionsschaltflächen


Die meisten Entwickler würden wohl spontan folgende Formel verwenden:
@Comamand([FileCloseWindow])
Funktioniert das immer? Wird das Fenster ohne wenn und aber geschlossen und ggf. durchgeführte Änderungen verworfen?
Genau DAS funktioniert mit dieser Formel eben NICHT.
Sobald der Endanwender bei einem neuen Dokument auch nur ein Zeichen in ein Feld eingegeben hat oder alternativ bei einem bestehenden Dokument eine Änderung in einem Feld durchgeführt hat – fragt der Notes-Client immer nach, ob man denn diese Änderungen auch Speichern möchte.
 
notion image
Grundsätzlich ist dieses Verhalten des Notes-Clients OK. So verliert man in der Praxis keine möglicherweise wichtigen, geänderten und noch nicht gespeicherten Daten.
Die Aktionsschaltfläche heisst aber "Abbruch und schliessen" – wer diese anklickt, erwartet nicht, dass er gefragt wird, ob er abbrechen möchte. 😉
 

Lösung


Der nachfolgende Formel-Code sorgt für das gewünschte Verhalten im Notes-Client. Es gibt nach einem Klick auf die Aktionsschaltfläche – was auch immer im Dokument geändert wurde – garantiert keine weiteren Fragen mehr. Das Fenster wird einfach geschlossen – es passiert also genau das, was man auch erwartet hatte.
FIELD SaveOptions := "0"; @Command([FileCloseWindow])
 
Wie funktioniert das?
Beim Feldname "SaveOptions" handelt es sich um einen reservierten System-Feldnamen. Es ist tatsächlich so, das Notes automatisch mit bestimmten Feldnamen bestimmte Funktionen oder Verhaltensweisen verbindet.
Grundsätzlich stammen die meisten dieser Feldnamen aus dem Bereich des Mailroutings (SendTo, CopyTo, BlindCopyTo, DeliveryPriority, Encrypt, ReturnReceipt usw.) – was aber nicht bedeutet, dass man die Felder nur in diesem Kontext verwenden darf.
 
Die Regel ist recht einfach:
Sobald sich in der Maske (oder in unserem Beispiel: im Dokument) ein solches Feld mit einem bestimmten Inhalt (siehe hierzu die Designer-Hilfe-DB) befindet, reagiert Notes entsprechend.
 
Für das Feld SaveOptions bedeutet der Feldinhalt:
"1" – es wird IMMER gespeichert und "0" – es wird NIE gespeichert
 
Genau die zweite Variante (verwenden Sie bitte keine numerische 0) wird in unserer Formel verwendet.
Wir fügen während der Ausführung der Formel unserem Dokument ein Feld ‚SaveOptions‘ mit dem Wert „0“ hinzu. Das bedeutet für Notes: es wird nichts gespeichert. Anschliessend wird die Anweisung @Command([FileCloseWindow]) ausgeführt.
Die Maske wird also OHNE eine weitere Rückfrage – wie beabsichtigt – geschlossen.