Domino 9 und frühere Versionen > ND9: Entwicklung
RichText Variable wird nicht überschrieben?
schroederk:
Hallo,
ganz bestimmt eine Anfängerfrage, ich habe ein Problem beim überschreiben einer RichText-Variable.
Innerhalb einer Schleife hole ich mir aus einem Feld den Inhalt eines RichText-Felds.
Dieser wird zur Laufzeit bearbeitet und soll dann mit jedem Lauf durch die Schleife wieder den Ausgangsinhalt erhalten.
Das funktioniert aber bei mir nicht. Beim ersten Aufruf der Messagebox zur Anzeige von strVorlagentext wird noch das Original angezeigt, beim 2. Aufruf wird der veränderte Inhalt gezeigt, nicht wieder das Original.
Warum überschreibt Set rtiVorlagentext = doc.GetFirstItem("Vorlagentext") nicht den Inhalt?
Hier der Auszug aus dem Script:
--- Zitat ---...[schnipp]
Dim rtiVorlagentext As NotesRichTextItem
...[schnipp]
While Not ( qdoc Is Nothing )
Set rtiVorlagentext = doc.GetFirstItem("Vorlagentext")
strVorlagentext = rtiVorlagentext.GetFormattedText(False,False)
Messagebox strVorlagentext
...[schnipp]
Set rtnav = rtiVorlagentext.CreateNavigator
Set rtrange = rtiVorlagentext.CreateRange
Call rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
Call rtrange.SetBegin(rtnav)
If rtrange.FindAndReplace (m.Value, item.Text, RT_REPL_ALL + RT_FIND_CASEINSENSITIVE) > 0 Then
' Call rtiVorlagentext.Compact
End If
...[schnipp]
If Messagebox (rtiVorlagentext.GetFormattedText(False,False),MB_OKCANCEL,"Vorschau") = IDCANCEL Then
Messagebox ("abgebrochen")
Exit Sub
End If
Set qdoc = empflist.GetNextDocument (qdoc)
Wend
--- Ende Zitat ---
schroederk:
Ergänzung:
Auch wenn ich mir den Inhalt vorher wegsichere, funktioniert es nicht.
Ich steh echt auf dem Schlauch :-\
--- Zitat ---Set rtiBackup = doc.GetFirstItem("Vorlagentext")
...
While Not ( qdoc Is Nothing )
Set rtiVorlagentext = rtiBackup
strVorlagentext = rtiVorlagentext.GetFormattedText(False,False)
Messagebox strVorlagentext
...
--- Ende Zitat ---
Peter Klett:
Du veränderst in Deinem Script das Item.
Probier das mal so:
--- Code: ---Dim unid As String
unid = doc.UniversalID
While Not ( qdoc Is Nothing )
Delete doc
Set doc = db.GetDocumentByUnid (unid)
Set rtiVorlagentext = doc.GetFirstItem("Vorlagentext")
strVorlagentext = rtiVorlagentext.GetFormattedText(False,False)
Messagebox strVorlagentext
--- Ende Code ---
EDIT:
Alternative wäre (ich vermute, dass Du das Richtextitem im qdoc verarbeitest, ansonsten verstehe ich den Sinn nicht), erst das Item in qdoc zu kopieren und dann dort zu verändern, anstatt im Vorlagendokument
schroederk:
Ziel:
Der Anwender erstellt einen Vorlagentext.
Im doc steht das aktuelle nicht gespeicherte Dokument. mit dem Vorlagentext.
Der Anwender klickt auf Vorschau.
Hier wählt er eine bis mehrere Adressen aus.
Die gewählten Dokumente stehen in qdoc.
Im Vorlagentext sind Platzhalter im Format %Name% angegeben.
Für jeden gewählten Adresseintrag (also qdoc) wird eine Vorschau erstellt,
bei der die Platzhalter durch den Inhalt der Felder aus qdoc ersetzt werden.
Wenn ich das richtig verstehe, werde ich durch Dein Beispiel das in Bearbeitung befindliche Dokument zerstören.
Dadurch gehen also auch die aktuellen Änderungen des Anwenders verloren, oder?
Wenn ich ein alternatives "xdoc" verwende und über GetDocumentByUnid den Inhalt von "Vorlagentext" hole,
habe ich auch nicht aktuellen Änderungen des Anwenders.
Ich kann dem Anwender natürlich vorschreiben, dass er die Vorschau nur mit einer gespeicherten Vorlage anzeigen kann,
aber das ist imho nicht das Ziel einer Vorschau.
Ich verstehe nicht, inwiefern ich den Inhalt vom Dokumentenfeld "Vorlagentext" verändere, wenn ich die imho unabhängige Variable rtiVorlagentext verändere. Oder wird mit Set rtiVorlagentext = doc.GetFirstItem("Vorlagentext") keine Wert-Zuweisung sondern eine inhaltliche Verknüpfung geschaffen?
Peter Klett:
Ok, Ansatz verstanden. Ich dachte, es handelt sich um eine gespeicherte Vorlage, die der Benutzer irgendwo auswählt.
Durch das Delete würdest Du das Dokument aus dem Speicher löschen und auch nicht wieder nachladen können, da es ja nicht gespeichert ist.
Ist der Text in der Vorschau ein Richtext oder nur ein Text?
Wenn Du aus der Vorlage nur den Text brauchst (ohne Formatierung), könntest Du den Text mit rtitem.GetUnformattedText in eine Textvariable schreiben und dort mit Replace die Platzhalter austauschen.
rtiVorlagentext ist nicht unabhängig von dem Richtextitem, sondern es ist es.
Verwendest Du stattdessen
Set rtiVorlagentext = doc.GetFirstItem ("Vorlagentext")
strVorlagentext = rtiVorlagentext.GetUnformattedText
Dann ist strVorlagentext ein Text, der unabhängig vom Richtextitem ist.
Falls Du die Formatierungen auch brauchst, müssten wir nochmal weiter drüber nachdenken
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln