Задача: заменить текст в RichTextItem. Например, есть какой-то шаблон с тегами, в котором динамически происходит подстановка значений.
Поиск и замену всех тегов указанного значения можно выполнить вот в таком цикле:
Саму замену можно произвести вот так:
НО. В таком случае при выполнении rtRange.Remove() мы теряем стилевую информацию и вставка происходит со значениями по-умолчанию. Перенос rtRange.Remove() не помогает. Нужно вместе с этим сохранить стиль. Полный код замены значения выглядит вот так:
Дополнения и комментарии приветствуются!
Поиск и замену всех тегов указанного значения можно выполнить вот в таком цикле:
Dim rtRange As NotesRichTextRange Dim rtNav As NotesRichTextNavigator Set rtRange = rtItem.Createrange() Set rtNav = rtItem.Createnavigator() While rtNav.Findfirststring(TAGKEY) //Замена значения Set rtRange = rtItem.Createrange() Set rtNav = rtItem.Createnavigator() Wend, где rtItem - переданный NotesRichTextItem.
Саму замену можно произвести вот так:
Call rtRange.Setbegin(rtNav)
Call rtRange.Setend(rtNav)
Call rtRange.Remove()
Call rtItem.Begininsert(rtNav)
Call rtItem.Appendtext(VALUE) //Добавляем текстовое значение.
Call rtItem.Endinsert()
НО. В таком случае при выполнении rtRange.Remove() мы теряем стилевую информацию и вставка происходит со значениями по-умолчанию. Перенос rtRange.Remove() не помогает. Нужно вместе с этим сохранить стиль. Полный код замены значения выглядит вот так:
Dim rtRange As NotesRichTextRange Dim rtNav As NotesRichTextNavigator Dim rtStyle As NotesRichTextStyle Set rtRange = rtItem.Createrange() Set rtNav = rtItem.Createnavigator() While rtNav.Findfirststring(TAGKEY) Call rtRange.Setbegin(rtNav) Call rtRange.Setend(rtNav) Set rtStyle = rtRange.Style Call rtItem.Begininsert(rtNav) Call rtItem.AppendStyle(rtStyle) Call rtItem.Appendtext(VALUE) //Добавляем текстовое значение. Call rtItem.Endinsert() Call rtRange.Remove() Set rtRange = rtItem.Createrange() Set rtNav = rtItem.Createnavigator() Wend
Дополнения и комментарии приветствуются!
Комментарии
Отправить комментарий