Ein neues UI Dokument öffnen und Felder setzen
Ich habe verschieden Ansichten mit unterschiedlichen Dokumenten die als Vorlage dienen. Alle Vorlagen haben das gleiche Format, sprich die gleichen Felder und sollen deswegen auch die gleiche Maske benutzen. Nun benötige ich aber für die unterschiedlichen Ansichten ein Feld zu Unterscheidung und wollte das beim Anlegen des Dokumentes setzen.
In jeder Ansicht existiert ein Aktionsknopf mit folgender Formel:
@SetTargetFrame("Main"); @Command([Compose];"Vorlage")
Nun wollte ich beim Anlegen ein Feld setzen um die Dokumente trotz gleicher Maske auseinander halten zu können. Also schnell äquivalenter Code in Lotus-Skript erzeugt:
Dim uiws As New NotesUIWorkspace Dim uidoc As NotesUIDocumentCall uiws.SetTargetFrame("Main") Set uidoc = uiws.ComposeDocument("","","Vorlage") Call uidoc.FieldSetText("Typ","Kuvert")
Notes grüßte mit "Zielrahmen ist Vorläufer des Script-Objekts" (Target is ancestor of script), grrr... Eine Möglichkeit wäre bei ComposeDocument das ReturnUIDocument auf False zu setzen aber leider gibt es dann keine Möglichkeit mehr auf das UIDocument zuzugreifen.
Setzen des Zielrahmens in der Aktion wie in der Maske blieben erfolglos. Nach langem Suchen und rumprobieren bin ich dann auf eine anderen Lösung gekommen. Folgende Zeilen innerhalb der Maske "Vorlage" in Postopen erfüllen den Wunsch:
Dim uiws As New NotesUIWorkspace Dim uiview As NotesUIView Set uiview = uiws.CurrentViewCall Source.FieldSetText("Typ",uiview.ViewName)
Falls man andere Werte benutzen möchte als den ViewName lässt sich das natürlich leicht mit IF ... THEN realisieren.