AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
27.02.20 - 21:38:17
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News: Jetzt mit HCL Notes / Domino 11 und einem Extraboard für Nomad!
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino Sonstiges
| |-+  Projekt Bereich (Moderator: Hoshee)
| | |-+  @Command vs. @PostedCommand
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: @Command vs. @PostedCommand  (Gelesen 7640 mal)
Glombi
Gast
« am: 13.01.04 - 16:23:09 »

Ausgangslage ist der Thread:
http://www.atnotes.de/index.php?board=7;action=display;threadid=13268;start=0;boardseen=1

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)

Weitere Ausführungen bzw. Fragen sind willkommen.

Andreas
« Letzte Änderung: 14.01.04 - 08:37:08 von Glombi » Gespeichert
Glombi
Gast
« Antworten #1 am: 13.01.04 - 16:38:05 »

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: 13.01.04 - 16:39:28 von Glombi » Gespeichert
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #2 am: 13.01.04 - 20:44:44 »

Hi Andreas,

gute Idee dass Du das Thema aufgreifst. Spontan fällt mir grad leider nichts erwähnenswertes bzw. interessante Beispiele ein, aber das kommt bestimmt noch ;-)

Etwas ist noch widersprüchlich:
Zitat
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.
Soweit klar, genau so bin ich das auch gewohnt.

Zitat
Daher muss für alle Befehle das @PostedCommand verwendet werden.
Beispiel:
@PostedCommand([FileSave]);
@PostedCommand([FileCloseWindow]);
@PostedCommand([Compose]; "Name der Maske)

Widerspruch zum 1. Quote, weil ja lt. Text auch @Command([FileSave]) gehen würde.
Ich hätte jetzt auch gemeint, dass es egal ist, ob hier in diesem Beispiel das FileSave mit @PostedCommand oder @Command ausgeführt wird.

Vielleicht kannst Du das noch im Detail erklären.

Danke,
Matthias

Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

Glombi
Gast
« Antworten #3 am: 13.01.04 - 21:00:20 »

Hi Matthias,
Du hast Recht, es geht auch
@Command([FileSave]);
@PostedCommand([FileCloseWindow]);
@PostedCommand([Compose]; "Name der Maske)

aber ich finde es irgendwie ästhetischer, wenn man dann alles als @PostedCommand schreibt.

Andreas
Gespeichert
TMC
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3660


meden agan


« Antworten #4 am: 13.01.04 - 21:08:00 »

aber ich finde es irgendwie ästhetischer, wenn man dann alles als @PostedCommand schreibt.

Stimmt  Grin
Gespeichert

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.

Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: