Autor Thema: [Formelsprache] @Command vs. @PostedCommand  (Gelesen 11473 mal)

Glombi

  • Gast
[Formelsprache] @Command vs. @PostedCommand
« am: 23.01.04 - 09:57:47 »
Autor(en):               Glombi
Stand:                     23.01.2004
Version:                  1.00
Notes-Versionen:    4.x, 5.x, 6.x
Atnotes-Thread(s):  Thread

Historisches zu @Command:
In der Notes Version 3 wurde ein neue Gruppe von Befehlen innerhalb der @Formelsprache eingeführt, die sogenannten @Command-Befehle. Mit diesen Befehlen ließen sich die Menübefehle programmtechnisch ausführen: Man konnte Dokumente öffnen, speichern und schließen, Datenbanken und Ansichten öffnen usw.

Für die @Command-Befehle galt jedoch folgende Einschränkung: Diese Befehle konnten zwar an beliebiger Stelle im Programmcode implementiert werden, ausgeführt wurden diese jedoch erst am Ende der gesamten Formel. Die @Command-Befehle wurden dann in der Reihenfolge ihres Auftretens im Programmcode ausgeführt.

Seit der Notes-Version 4 werden die @Command-Befehle an der Stelle im Programmcode eingeführt, an der sie stehen.

Aus Kompatibilitätsgründen wurden in Notes 4 die @PostedCommand-Befehle ausgeführt, die das gleiche Verhalten wie die @Commands unter Notes 3 haben.

@Command-Befehle in Formeln, die unter Notes 3 entwickelt wurden, werden beim Kompilieren durch einen Notes 4 Client automatisch in @PostedCommand umbenannt.
Andersherum können @Command-Befehle, die in Notes 4 oder höher implementiert werden, mit einem Notes 3 Client nicht ausgeführt werden.

Besonderheiten:
Es gibt einige @Command-Befehle, die nicht an der Stelle ihres Auftretens im Programmcode ausgeführt werden. Dieses ist z.B. der Befehl @Command([FileCloseWindow]).

Die Notes-Hilfe sagt dazu:
Ausführungsreihenfolge
Dieser Befehl wird nur nach der Auswertung der gesamten Formel ausgeführt, unabhängig davon, ob @Command oder @PostedCommand verwendet wird.

Diese Aussage ist irreführend, da der Befehl absolut gesehen natürlich nicht unbedingt am Ende der gesamten Formel ausgeführt wird. Gibt es nämlich im Porgrammcode unterhalb des @Command([FileCloseWindow]) oder @PostedCommand([FileCloseWindow]) weitere @PostedCommand-Befehle, so wird das @Command([FileCloseWindow]) vor diesen Befehlen ausgeführt.

Typische Anwendungen:
Sie möchten ein Dokument speichern, schließen und ein neues Dokument erstellen. Da bei Verwendung der @Command-Befehle das Speichern und Erstellen an der Stelle im Programmcode ausgeführt wird, das Schließen aber erst am Ende der Formel, lässt sich die Reihenfolge nicht erzwingen. Daher muss für alle Befehle - zumindest nach dem FileSave - das @PostedCommand verwendet werden.
Beispiel:
@PostedCommand([FileSave]);
@PostedCommand([FileCloseWindow]);
@PostedCommand([Compose]; "Name der Maske)

Erweiterungen in Notes 6:
In der Notes-Version 6 wurden etliche neue @Command-Befehle eingeführt, um die missliche Lage, dass bestimmte @Command erst am Ende ausgeführt werden, zu verbessern.
Eine Übersicht der @Commands ist angehängt. Zu finden ist diese in der Notes 6 Designer Hilfe unter "Order of evaluation for formula statements"

Insbesondere sollte man sich dort auch das Thema "What's new in Domino Designer 6" ansehen.
« Letzte Änderung: 12.11.04 - 21:25:21 von Glombi »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz