Autor Thema: Suchen und Ersetzen in einem RichTextFeld und Formatierung ändern  (Gelesen 2041 mal)

Offline snore

  • Aktives Mitglied
  • ***
  • Beiträge: 107
Hallo Forum,
schon wieder so ein Sch...

Ich bekomme automatisiert per eMail Informationen in ein Body-Field einer Mail-In-Datenbank und möchte nun einen Agenten bauen, welcher mir nach Eingang neuer Mail den Text im Body durchsucht und Werte darin ersetzt bzw. ergänzt. Der 1. grobe manuelle Test klappt soweit!
Ich scheitere aktuell daran den Text, welchen ich einfügen möchte "Fett" und "Farbig" zu machen...

...
Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim body As NotesRichTextItem
Dim SucheText1 As String
Dim ErsetzeText1 As String
Dim rtnav As NotesRichTextNavigator
Dim rtrange As NotesRichTextRange
Dim rtpStyle As NotesRichTextParagraphStyle
Dim richStyle As NotesRichTextStyle


Sub Initialize
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set dc = db.UnprocessedDocuments
   
   If dc.Count = 0 Then
      Exit Sub
   End If
   
   Set doc = dc.GetFirstDocument
   Set body = doc.GetFirstItem("Body")
   Set rtnav = body.CreateNavigator
   Set rtpStyle = session.CreateRichTextParagraphStyle   
   Set richStyle = session.CreateRichTextStyle
   
   SucheText1 = ( "Hans" )
   ErsetzeText1 = ( "Franz" )

????? ..wie bringe ich nun den Franz in Schriftgröße 12 und farbig ????
   richStyle.FontSize = 12
   richStyle.NotesColor = COLOR_DARK_RED
   
   
   Call rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
   n% = 0
   Set rtrange = body.CreateRange
   
   While rtrange.FindAndReplace(SucheText1, ErsetzeText1, RT_FIND_CASEINSENSITIVE) > 0
         n% = n% + 1
         Call body.Update
      Wend
      
   If n% > 0 Then
      Call body.Compact
      Call doc.Save(True, True)
      End If
      
End Sub


Danke !!
snore

Offline Flachmann

  • Senior Mitglied
  • ****
  • Beiträge: 284
  • Geschlecht: Männlich
  • Mal wieder: Flachmann ist Schuld!
Hmm, ich habe es nicht gemacht, aber .FindAndReplace() macht genau das, nämlich einen Text austauschen. Da gibt es keine zusätzliche Formatierung.

Um den Text noch mit Styles zu "verschönern" musst Du die Stelle suchen und einen Range erstellen. .FindAndReplace() setzt den Range auf den gesuchten Text. Innerhalb des Ranges kannst Du dann den Text löschen und die gewünschten Styles vorher und hinterher mit NotesRichTextItem.AppendStyle() einfügen (Du brauchst noch einen weiteren Style zum Zurücksetzen). - Das ganze Handling ist halt irre umständlich.

Da ich den Hintergrund Deiner Anforderung nicht kenne, ist es schwierig nach einfacheren Lösungen zu suchen. Wenn Dich nur interessiert, ob ein bestimmtes Wort vorkommt, könntest Du das Vorhandensein beispielsweise in der Ansicht/im Order flaggen; alternativ einen Schalter über der Mail, die den Text durchsucht und anzeigt, ob und welcher Text vorkommt.
Gruß,
  __________
  _/_
  /lachmann

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz