Domino 9 und frühere Versionen > ND8: Entwicklung
RichTextFeld RTF aus Backend in Frontend importieren
Alexander 28:
--- Zitat von: Tode am 10.10.12 - 15:51:18 ---Das geht recht einfach, wenn Dein Dokument, in das Du einfügen willst, zum Bearbeiten geöffnet ist. Dann kannst Du ganz einfach über die (nicht dokumentierte) Funktion "NotesUIDocument.ImportItem" gehen (verwendet im InsertSignature- Code des Mailtemplater, man kann also davon ausgehen, dass das Funktioniert. Hier ein Auszug aus der CoreEmailClasses- ScriptLib:
--- Code: ---Call uiDoc.ImportItem(profileDoc, "Signature_Rich")
--- Ende Code ---
Musst nur schauen, dass Dein Cursor per uiDoc.GotoField() im Richtext- Feld steht...
--- Ende Zitat ---
Hi Tode, herzlichen Dank für diesen Hinweis. Davon habe ich ja überhaupt noch nie etwas gehört!? Werde ich heute auf jeden Fall einmal ausprobieren und ein kurzes Feedback geben. Vielen Dank dafür.
Alexander 28:
--- Zitat von: pram am 10.10.12 - 17:26:39 ---dritte Möglichkeit: du machst ein Reopen, dann kannst du in der Zeit in der das Doc zu ist, das RT-Feld verändern.
Gruß
Roland
--- Ende Zitat ---
Hi Roland, das habe ich nicht wirklich verstanden!? Reopen ohne vorher zu speichern?! Keine Ahnung wie du das meinst ...
Tode:
Reopen geht nur mit speichern... und wegen "ImportItem": Davon haben nur diejenigen was gehört, die zufälligerweise mal am Signatur- Code von IBM was machen mussten, oder eben einen Blog- Eintrag zu dem Thema gelesen haben... Leider verschweigt uns IBM diese einigermassen geniale Funktion beharrlich (wie auch einige andere, die man nur durch Zufall im Mail- Template- Code findet)
pram:
Thorsten, hier irrst du, Reopen geht auch ohne speichern, in dem man zuerst das Dokument neu öffnet und dann das alte schließt.
Ich skizziere mal die Vorgehensweise:
--- Code: ---' Globale Variablen
Set myUiDoc = .... ' Dies ist das gerade geöffnete UI-Document und muss z.B. im PostOpen der Maske gesetzt werden, evtl geht auch ws.currentDocument
Set myBackendDoc = myUiDoc.Document ' das zugehörige BackendDoc
function reopen()
Call myUIDoc.Refresh(True) ' Update richtext aus UI ins backend
' An dieser Stelle kann myBackendDoc verändert werden (auch Richtext)
Set oldUiDoc = myUiDoc
Set myUiDoc = ws.editDocument(true, myBackendDoc) ' wir öffnen das aktuelle Backend-Doc nochmals
set myBackendDoc = myUiDoc.document ' und holen uns das BackendDoc vom UIDoc (dies ist zwar das gleiche Dokument aber ein neues Objekt. s.u.!)
' Altes UIDoc schließen:
oldUiDoc.document.SaveOptions = "0" ' Wichtig oldUIDoc.document != myBackendDocument (auch wenn es die gleiche UNID hat)
call oldUiDoc.close(true)
end function
--- Ende Code ---
@Alexander: Wichtig für dich ist vielleicht noch, dass die Methode ImportItem erst ab Notes 8.5 (evtl schon ab 8.0) zur Verfügung steht.
Gruß
Roland
Alexander 28:
Hab uiDoc.ImportItem ausprobiert und bin begeistert. Warum nur ist diese Funktion nicht dokumentiert. Hab's schon so oft vermisst!!!!
Tausend Dank, Tode (und an alle anderen für die Hilfe ;) )
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln