Hallo,
ich möchte gerne ein RichTextFeld, in welchem Text und Anhänge sein können, von einem Dokument in ein anderes Dokument kopieren. Solange ich beim eingeben vom Text keine ENTER-Taste benutze klappt es auch einwandfrei.
Wird im zu kopierende RichTextFeld jedoch mit der ENTER-Taste ein Absatz gemacht, so wird alles nach der Enter-Taste beim kopieren weggelassen.
Im zu kopierenden RichtTextFeld soll noch vor dem eingefügten Inhalt eine Text mit dunkelroter Farbe stehen, mit den Mitarbeiter wer das eingefügt hat.
Hier die betreffenden Codezeilen
'Richtextitem aus Doc1 holen
Set rtitemInt=doc1.GetFirstItem(Betreff)
'Farbe auf Dunkelrot stellen und gewünschten Text in neues RichTextItem schreiben
'damit ich es vor dem eingefügten Inhalt stellen kann.
richStyle.NotesColor=COLOR_DARK_RED
Call rtitemText.AppendStyle(richStyle)
Call rtitemText.AppendText(strInfo)
'Ein neues RichTextItem erstellen und zuerst den roten Text einfügen und dann den Inhalt des anderen Richtextfeldes
'dann dieses RichTextItem in das doc2 kopieren.
Set rtitemBericht=docGespr.CreateRichTextItem("value")
Call rtitemBericht.AppendRTItem(rtitemText)
Call rtitemBericht.AppendRTItem(rtitemInt)
Call rtitemBericht.CopyitemtoDocument(doc2,"Bericht")
Zur Veranschaulichung die Screenshots
Bild1: RichTextFeld aus Doc1 mit Text und Bild, ohne Verwendung der ENTER-Taste
Bild2: RichTextFeld aus Doc2 in welchem richtig hineinkopiert wurde.
Bild3: RichTextFeld aus Doc1 mit Text und Bild, mit Verwendung der ENTER-Taste, damit Bild in eigener Zeile steht
Bild4: RichTextFeld aus Doc2, wo alles nach der ENTER-Taste nicht mitkopiert wurde.
Hallo,
das kenne ich auch. Richtextstyles verhalten sich manchmal seltsam. Ich habe die Erfahrung gemacht, dass Styles nicht auf leere Richtextitems angewendet werden können, sondern dass dort schon etwas drin stehen muss. Zum Beispiel eine Leerzeile.
Also anstatt:
Set rti = doc.GetFirstItem("Comment")
Call rti.AppendStyle(rtsBold)
Call rti.AppendText("Text der nicht fett wird wenn Comment vorher leer war")
... eine Leerzeile einfügen:
Set rti = doc.GetFirstItem("Comment")
Call rti.AddNewline(1)
Call rti.AppendStyle(rtsBold)
Call rti.AppendText("Text wird fett, auch wenn Comment vorher leer war")
Ursachenforschung habe ich nicht betrieben, der Workaround reichte mir aus.
Gruß,
Mitch
@Tode: habe jetzt NotesRichtextItem.Update eingebaut und es kopiert jetzt auch den Teil nach dem Enter
Das "rtItemText" benutzte ich um als erste Zeile das Datum und den User in dunkelroter Farbe zu schreiben.
strInfo="> " +strDatum + " " + user + " Intensivierungsgespräch:" + Chr(10)
Ich Frage zuerst ab ob es as "rtItem Text" gibt oder nicht. Und sicherheitshalbe lösche ich es auch immer nach dem Aufruf der Methode
strInfo="> " +strDatum + " " + user + " Intensivierungsgespräch:" + Chr(10)
..
If Not doc1.HasItem("red") Then
Set rtitemText=docGespr.CreateRichTextItem("red")
Else
Set rtitemText=docGespr.GetFirstItem("red")
End If
Call rtitemText.AppendStyle(richStyle)
Call rtitemText.AppendText(strInfo)
..
..
Call doc1.save(True,False)
Call rtitemText.remove
Ich benutze die ganzen Richtext-Items, da es wenn es im doc2 bereits was im RichtextFeld steht, der zu kopierende Teil, am Anfang angehängt werden soll. Und das ist mir anders nicht gelungen. Da hat es mir den kopierten Teil immer ans Ende eingefügt.
Muss diesen Teil des Skripts aber erst noch mal inplementieren, da ich dort auch das Problem mit der Enter-Taste hatte und das zuerst lösen wollte.
Inzwischen Danke für die Hinweise.
Danke inzwischen
Da habe ich mich wohl zu früh gefreut.
Wenn ich im RichTextFeld Text und Bilder habe, dann wird alles korrekt kopiert (mit den Absätzen, also Text vor und nach der Enter Taste).
Wenn ich nur Text im zu kopierenden RichTextFeld habe, dann wird der Text nach der Enter-Taste nicht mit kopiert.
Folgender Code funktioniert für Text und Bild
Set rtitemInt=doc1.GetFirstItem(Betreff)
richStyle.NotesColor=COLOR_DARK_RED
Call rtitemBericht.AppendStyle(richStyle)
Call rtitemBericht.AppendText(strInfo)
Call rtitemBericht.Update
Call rtitemBericht.AppendRTItem(rtitemInt)
Call rtitemBericht.Update
Call rtitemBericht.CopyitemtoDocument(doc2,"Bericht")
Wieso wird, wenn im rtitemInt nur Text steht, der Text, welcher nach einer Enter-Taste steht nicht mitkopiert?
Oder hat jemand einen Tip wie ich es anders lösen kann?
Danke