You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lotus Notes富文本添加带样式时间戳失效及光标位置问题求助

Lotus Notes富文本时间戳样式修复及光标定位解决方案

一、富文本样式不生效的问题修复

你的代码中样式未生效的核心原因是富文本样式的应用方式错误,NotesRichTextStyle需要通过BeginStyledText和EndStyledText包裹目标文本,才能确保样式正确绑定到文本内容上。另外代码存在未声明变量的语法问题,一起修正如下:

关键修改点:

  • 补全未声明的uidoc、doc变量
  • 使用BeginStyledText/EndStyledText包裹需要加粗的时间戳和用户名文本
  • 调整样式设置的顺序,确保样式只作用于目标内容

二、光标定位到富文本底部的解决方案

关闭重开文档后光标回到顶部的问题,可通过NotesRichTextNavigator定位到富文本末尾,再结合GotoRichTextItem方法将光标移动到该位置。

完整修正后的代码

Function TimeStampBold(fieldname As String)
    Dim session As New NotesSession
    Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim uidocNew As NotesUIDocument
    Dim doc As NotesDocument
    Dim rti As NotesRichTextItem
    Dim rtiStyle As NotesRichTextStyle
    Dim rtNav As NotesRichTextNavigator

    Set uidoc = workspace.CurrentDocument
    uidoc.Refresh True
    Set doc = uidoc.Document
    Set rti = doc.GetFirstItem(fieldname)
    Set rtiStyle = session.CreateRichTextStyle()
    
    ' 设置加粗、小字号样式
    rtiStyle.Bold = True
    rtiStyle.Fontsize = 8
    
    ' 追加空行或直接添加时间戳
    If (Len(uidoc.FieldGetText(fieldname)) = 0) Then
        Call rti.BeginStyledText(rtiStyle)
        Call rti.AppendText(Format$(Now(), "d-mmm-yy h:mm"))
        Call rti.EndStyledText()
    Else
        Call rti.AddNewline(2)
        Call rti.BeginStyledText(rtiStyle)
        Call rti.AppendText(Format$(Now(), "d-mmm-yy h:mm"))
        Call rti.EndStyledText()
    End If
    
    ' 追加用户名(保持加粗)
    Call rti.BeginStyledText(rtiStyle)
    Call rti.AppendText(" " & session.CommonUserName & " - ")
    Call rti.EndStyledText()
    
    ' 保存并重新打开文档
    rti.Update
    doc.SaveOptions = "0"
    Call uidoc.Close(True)
    Set uidocNew = workspace.EditDocument(True, doc,,,,True)
    uidocNew.Document.RemoveItem("SaveOptions")
    
    ' 定位光标到富文本底部
    Set rtNav = uidocNew.Document.GetFirstItem(fieldname).CreateNavigator()
    If rtNav.FindLastElement(RTELETYPE_TEXTPARAGRAPH) Then
        Call uidocNew.GotoRichTextItem(fieldname, rtNav)
    Else
        Call uidocNew.GotoField(fieldname)
    End If
End Function

代码说明:

  1. 样式生效:通过BeginStyledText启动样式上下文,包裹需要应用样式的文本,EndStyledText结束上下文,确保样式只作用于目标内容,避免被富文本原有样式覆盖。
  2. 光标定位:创建NotesRichTextNavigator,找到富文本的最后一个段落元素,再通过GotoRichTextItem将光标直接定位到该位置,实现打开文档时光标停在富文本底部。

内容的提问来源于stack exchange,提问作者Mark Maden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:58:20