Domino 9 und frühere Versionen > ND7: Entwicklung
RichText. formatierten Text kopieren
bikerboy:
Gegen Frontend spricht, dass ich den Vorgang vllt 20 oder mehr wiederholen muss. kackt mir der code irgendwo ab muss ich per ErrorHandling sicherstellen, dass wirklich wieder alles zu geht.
Naja und Backend ist mir einfach lieber, will nicht das der User denkt dass sein Bildschirm flackert
Gandhi:
--- Zitat ---muss ich per ErrorHandling
--- Ende Zitat ---
Äh...wie schrecklich.... ;)
Demian:
habe mir die Klassen eben mal näher angeschaut und etwas rumprobiert. Wenn du ein Quelldoc mit zum Beispiel einer Zeile rot formatiertem Text hast, kannst du die Formatierung über NotesRichTextRange in ein neues doc übernehmen:
Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim docSource As NotesDocument
Dim rtitemSource As NotesRichTextItem
Dim rtrangeSource As NotesRichTextRange
Dim styleSource As NotesRichTextStyle
Dim navsource As NotesRichTextNavigator
Dim Text As String
Dim docNew As NotesDocument
Dim rtitemNew As NotesRichTextItem
Dim rtrangeNew As NotesRichTextRange
Set db = s.CurrentDatabase
Set view = db.GetView("lkpBodyDoc")
'get old
Set docSource = view.GetFirstDocument
Set rtitemSource = docSource.GetFirstItem("Table")
Set rtrangeSource = rtitemSource.CreateRange
Text = rtrangesource.TextRun
Set StyleSource = rtrangeSource .Style
'set new
Set docNew = db.CreateDocument
docNew.form = "libTest"
docNew.Nr = "2"
Set rtitemNew = docNew.CreateRichTextItem("Table")
Call rtitemNew.AppendText(Text)
Set rtrangeNew = rtItemNew.CreateRange
Call rtrangeNew.SetStyle(StyleSource)
Call docNew.Save(True,False)
Das drumherum fehlt halt noch.
EDIT: Stelle gerade fest, wenn der Debugger angeschaltet ist übernimmt er die Formatierungen nicht. Nur wenn der aus ist. Zumindest bei mir (Version 7.0).
pram:
Könntest du nicht das RT-Item aus Doc1 und Doc2 in ein TempDoc kopieren (ggf. umbenennen) , dann die Form auf eine Dummyform setzen welche Doc2Rtitem und darunter Doc1Rtitem enthält und dann per renderToRtItem das TmpDoc wieder ins RT-Item von Doc1 zurückrendern. Dies dürfte dir aber zu 99% die Randeinstellungen irgendwie verschieben. Hier ist probieren angesagt.
(Ich tipp mal, man muss den Rand auf 1,905 stellen, das ist der Wert, dass bei einer Dialogbox, welche 100% breit ist, kein horizontaler Scrollbalken kommt)
Eine andere Möglichkeit wäre noch, beide Dokumente in einen DXL-Stream zu exportieren und die RT-Items per DOM-Parser oder XSLT zu "verwursteln"
Gruß
Roland
Thomas Schulte:
Alle Lösungswege die hier versucht werden, haben wir ebenfalls versucht. Fakt ist, es ist, ausser mit der C API, die Geniisoft verwendet, NICHT möglich ein RTITEM im Backend an eine BELIEBIGE Stelle in ein anderes RTITEM einzuügen.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln