im Script unterscheidet man zwischen Front End und Back End Klassen. Front End Klassen sind bildlich gesprochen für all das zuständig, was der User direkt am Bildschirm sieht und "visuell" machen kann.
LS arbeitet dabei stets hierarchisch...
im Front End Script muß man zunächst die Arbeitsoberfläche notesintern bekannt machen. Vorher kann man nicht auf Datenbanken und dort wiederum auf einzelne Elememte zugreifen. Also immer von "Oben nach unten" hangeln. Denn, da Notes dumm ist, muß man es quasi mit der Nase draufstoßen....
User: "das ist dein Arbeitsbereich.."
Notes: "aha und jetzt?"
User: "und jetzt öffne mir ne DB daraus"
Notes: "und was dort"
User: "mach mir ne Ansicht auf"
Notes: "warum?"
User: "Klappe..."
(Notes Help)
This script opens the database PLAN.NSF in the NEW directory on the server Algiers. The database is opened to the All by Category view, scrolled to the category called Current.
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace Call workspace.OpenDatabase _
( "Algiers", "new\plan", "All by Category", _
"Current", False, False )
End Sub
Das "Call" (s.o. den Code) ist dabei ein Aufruf einer Methode. LS unterscheidet zwischen Eigenschaften und Methoden. Mit dem statement "dim ws as new notesuiworkspace" sagst Du Notes "Achtung, es geht um meine Arbeitsoberfläche" und "wenn Du die hast, mach = call mir eine Datenbank". Das ist dann das "opendatabase" Statement.
Wie machst Du nun ein neues Doc?
Dazu gibt es in der Klasse NotesUIWorkspace eine Methode "ComposeDocument".
Set notesUIDocument = notesUIWorkspace.ComposeDocument( [ server$ [, file$ [, form$ [, windowWidth# [, windowHeight# ]]]]] )
Beispiel:
This form action script copies the contents of the current document's Topic field to the Clipboard. It composes a new Memo document in HERE.NSF on server Rio (changing the value of the uidoc object), and pastes the contents of the Clipboard into the new document's Subject field.
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
'Notes!, mach die Arbeitsoberfläche auf
Dim uidoc As NotesUIDocument
'Achtung, gleich kommt ein Document, wa du lesen sollst
Set uidoc = workspace.CurrentDocument
' und zwar das jetzige Dokument, wo ich drin bin
Call uidoc.GotoField( "Topic" )
'geh zum Feld Topic
Call uidoc.SelectAll
'markiere da alles
Call uidoc.Copy
'kopiere es
Set uidoc = workspace.ComposeDocument _
( "Rio", "here.nsf", "Memo" )
'und nun Notes, mach ein neues Doc auf dem Server Rio, in der DB here.nsf mit der Maske Memo
Call uidoc.GotoField( "Subject" )
'gehe zum Feld "Subject"...aber ist Subject jetzt das Feld im neuen Doc oder aus dem Doc, wo ich herkomme?
'dazu: ACHTUNG: jetzt bzw. einen Step vorher wechselte Notes "uidoc" aus...ausgehend vom ersten Dokument bezog sich uidoc auf eben das im Userfenster sichtbare Doc, aber mit " Set uidoc = workspace.ComposeDocument _
( "Rio", "here.nsf", "Memo" )" hast Du Notes ein anderes uidoc aufgezwungen. Nämlich das Doc, was jetzt im Userfenster sichtbar ist. Wozu? Damit Notes weiß, daß es jetzt im neuen Doc etwas tun muß.
Call uidoc.Paste
'nämlich den Inhalt aus dem Zwischenspeicher = "Call uidoc.GotoField( "Topic" )" ins Feld "Subject" einzutragen
End Sub