Domino 9 und frühere Versionen > ND8: Entwicklung

DocLink aus Zwischenspeicher einfügen

(1/3) > >>

buzi:
Hallo,

wie kann ich per Lotus Script auf den Zwischenspeicher zugreifen? Der User kopiert sich ein Dokument in den Zwischenspeicher und möchte es dann an anderer Stelle per Button in ein (Rich-)Textfeld einfügen lassen. Ich weiß es klingt umständlich aber sie wollen es so. Die Frage ist, wie ich auf das Dokument im Zwischenspeicher zugreifen kann ich denke den Rest krieg ich hin.

DANKE!!

Keydins:
Du möchtest in dem Zusammenhang mit

Call notesUIDocument.Paste

arbeiten.

Gruß
Dirk

buzi:
Danke für den Tip. Ich krieg die Fehlermeldung das Dokument sei nicht gespeichert, ein Save vorher bringt aber auch nichts....

Der Arbeitsablauf geht weiter. Ist der DocLink in das Richtext-Feld eingefügt (momentan manuell STRG+V), muss er mit dem heutigen Datum versehen in ein anderes Richtext-Feld kopiert werden. Muss ich dazu den Inhalt des RT-Felds auslesen, und den Link als Link ins andere RT-Feld kopieren oder geht das direkt, den ganzen Inhalt zu kopieren? Sorry - Der Umgang mit Richtext Feldern fällt mir schwer.

Keydins:
Der Code ist quasi direkt aus der NotesHilfe (paar Zeilen rausgenommen und direkt das Zielfeld angegeben)


--- Code: ---Sub Click(Source As Button)

Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Call uidoc.GotoField ("RTFeld")
Call uidoc.Paste

End Sub
--- Ende Code ---

Funktioniert mit allen möglichen Inhalten in der Zwischenablage: Text,  NotesLinks, die ich mir über den Rechsklickdialog "Als Dokumentenlink kopieren" erstelle, Screenshots u.s.w.

Da hat sich mein Posting mit deinem Edit überschnitten :-)

Ebenfalls aus der Hilfe:

--- Zitat ---Rich text items are an exception. Modifications made to rich-text items in the back-end document do not appear in the front-end until the document is closed and reopened.
--- Ende Zitat ---

Also Speichern, Schließen, Öffnen und dann weiter mit der nächsten Kopieraktion.


Alternativ kannst du das 2. Feld aber auch direkt befüllen, denn der Link ist ja noch in der Zwischenablage. Ausgeehnd von dem Beispiel einfach Call uidoc.FieldAppendText ("RTFeld", " - " & Today) am Ende anhängen und schon ist das Tagesdatum hinter dem Link.



Gruß
Dirk

buzi:
Es geht jetzt (fast) gut. In dem RichText Feld möchte ich mehrere solcher Einträge speichern können in der Form

DOCLINK - 01.01.2015
DOCLINK - 02.02.2015
...

Mein Code dafür fummelt im Frontend und im Backend herum weil ich den Paste()-Befehl im Frontend mache, das Einfügen der neuen Zeile aber im Backend. Und das nur, weil ich keine entsprechenden Funktionen fand. Derzeit sieht das Ergebnis so aus:

DOCLINK DOCLINK

Es werden also die Änderungen im Backend gar nicht übernommen. Was fehlt mir?

Sub InsertLink()
   
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim rti As NotesRichTextItem
   Dim nav As NotesRichTextNavigator
   Dim docLinkItem As NotesRichTextDocLink
   
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.Document
   
   ' paste doc link to rich text field
   
   Call uidoc.GotoField ("rtField")
   Call uidoc.Paste   
   Call uidoc.Save()
   
   ' add date to link and new line on top to rich text field
   
   Set rti = doc.Getfirstitem("rtField")
   Set nav = rti.Createnavigator()
   Set docLinkItem = nav.GetFirstElement(5)
   
   Call rti.BeginInsert(docLinkItem, True) ' insert date after first doc link
   Call rti.Appendtext(" - " & Today)
   Call rti.EndInsert()
   
   Call rti.BeginInsert(docLinkItem, False) ' insert newline before first doc link
   Call rti.Addnewline(1)
   Call rti.EndInsert()
   
   Call doc.Save(True, False, False)
   Call uidoc.Close(True)
   
   Call workspace.EditDocument(True)
   
End Sub


Also das Problem ist eigentlich die neue Zeile einzufügen. Kriege ich das auch ohne Backend hin?

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln