Lotus notes 在LotusScript中,如何在富格文本字段中的光标当前位置插入文本和可能的富格文本?

Lotus notes 在LotusScript中,如何在富格文本字段中的光标当前位置插入文本和可能的富格文本?,lotus-notes,lotusscript,Lotus Notes,Lotusscript,首先,表单中有一个已经输入了文本的富文本字段(对于这个场景,“hello world”)。我已将光标放在“hello”的字母“o”之后。我有一个按钮,它将打开一个带有一个文本字段的对话框,我想知道您如何能够将对话框中该字段的文本插入富文本字段中光标的当前位置 到目前为止,我掌握的代码是: Sub Click(Source As Button) Dim workspace As New NotesUIWorkspace Dim s As New NotesSession D

首先,表单中有一个已经输入了文本的富文本字段(对于这个场景,“hello world”)。我已将光标放在“hello”的字母“o”之后。我有一个按钮,它将打开一个带有一个文本字段的对话框,我想知道您如何能够将对话框中该字段的文本插入富文本字段中光标的当前位置

到目前为止,我掌握的代码是:

Sub Click(Source As Button)
    Dim workspace As New NotesUIWorkspace
    Dim s As New NotesSession
    Dim db As NotesDatabase
    Set db = s.currentdatabase
    Dim docFill As New notesdocument(db)
    Call workspace.DialogBox _
    ( "Test", True, True, False, False, _
    False, False, "Test Insert text at current position in rich text field", docFill, True, False, True )

    Dim string1 As String

    string1 = docFill.sampleText1(0)

    Dim rts As NotesRichTextStyle
    Set rts = s.CreateRichTextStyle

    End Subs
End Sub
假设我在sampleText1文本字段中输入了“stackoverflow”。单击“确定”后,它将插入富文本字段中光标的位置。因此,结果将是“hellostackoverflow world”


还有一个问题。比方说,我还希望文本是红色或其他字体,因此我将使用notesrichtextstyle类等来设计它。如果是这种情况,您如何才能在富格文本字段中的光标位置插入富格文本?

第一个问题是,当您单击“操作”按钮时,您将失去富格文本字段的焦点,因此无法知道光标在何处

我还建议您不要像这样使用扩展符号: string1=docFill.sampleText1(0) 改用NotesDocument类的GetItemValue方法(出于几个原因,包括性能和代码的未来验证)

如果您只想让用户输入一些文本,为什么不使用InputBox函数呢

最后,在富文本的中间插入文本不是一个简单的方法。在富文本字段中执行一个特定文本字符串的替换要容易得多。我曾经创建了一个LutuScript类来执行邮件合并(基于模板创建一个字母和一个带有字段名和命令的表单字母),您可以在这里找到:

也许这会对你有所帮助。但这必须在后端完成,除非你使用Midas LSX frpn Ben Langhinrichs(),否则你不能在前端做太多的富文本工作。我认为他有一些UI功能


但您最大的问题将是第一个问题,即如何在不丢失富文本字段焦点的情况下触发代码。我认为这不是一个好的解决方案。您可能需要重新考虑您的设计/方法。

您可以在剪贴板的帮助下在当前光标位置插入文本。只需让用户在对话框中插入文本即可x、 单击“确定”后选择文本,复制文本,然后将其粘贴到表单中RichText字段的当前光标位置

要实现这一点,请使用LotusScript代码在表单的操作栏中创建一个操作“插入文本”

子单击(源代码为按钮)
将工作区设置为新工作区
Dim uidoc作为NotesUIDocument
标注文档作为注释文档
设置uidoc=workspace.CurrentDocument
Set doc=uidoc.Document
If workspace.DialogBox_
(“Dlg”,真,真,假,真_
真,假,“测试插入文本”,文档,真,假,真)然后
uidoc.粘贴
如果结束
端接头
操作栏中的操作的优点是,它们不会更改单击事件时文档中的光标位置。因此,光标仍保留在当前位置,例如在RichText字段中单击操作按钮

然后,为带有文本或RichText字段“Text”的对话框创建表单“Dlg”。将以下公式代码添加到表单的Postrecalc事件中(在“确定”按钮单击时执行):

使用“复制粘贴”方法将内容放入剪贴板有很多选项:

  • 在后端创建文本并将其直接放入剪贴板
  • 在临时文档中创建一个RichText项目,使用您可以想到的所有内容和样式选项,在UI中打开文档,将RichText项目内容复制到剪贴板,然后关闭文档而不保存
  • 让用户在文档中创建文本片段。让他们选择其中一个,单击“插入文本”按钮-只需打开所选文档,将内容复制到剪贴板并关闭即可

如果使用操作栏中的按钮,则焦点将保留在富文本字段中。然后可以使用
uidoc.InsertText(“”
在光标的当前位置插入文本

你可以用。。。 调用
uidoc.InsertText(docFill.sampleText1(0))

@Command([EditGotoField]; "Text");
@Command([EditSelectAll]);
@Command([EditCopy])