0

我有这个按预期工作的宏。我在新行上键入任何垃圾词,例如 testd ,将光标放在词的开头并运行宏。该词被添加到标准 dic。我可以验证工具 - 拼写 - 选项 - 标准 dic - 编辑

Sub wort_einfuegen()
V_Cursor = ThisComponent.GetCurrentController.ViewCursor
T_Cursor = ThisComponent.text.createtextcursor()
T_Cursor.gotoRange(V_Cursor,false)

With T_Cursor
    .gotoEndofWord(True)
    re_text = .String
End with

dl = createUnoService ("com.sun.star.linguistic2.DictionaryList")
wb = dl.GetDictionaryByName("standard.dic")
wb.Add(re_text, False, "")

End sub

问题是 - 如果我输入这个词:

testी 

将一个空行添加到 dict 文件中。这是一个错误还是这是预期的行为?


更新:

我认为这一定是一个错误,因为我输入了这两个词:

भारत
इंडिया

将光标放在每个单词的开头并运行相同的宏。第一个词被添加到标准 dic 但第二个词没有。

4

1 回答 1

1

出于某种原因,gotoEndOfWord()似乎比按Ctrl+更不可靠Right Arrow。看起来以非初始梵文元音结尾的单词不起作用。这些确实有效:

इंडिय
इंडियात
testय
testओ

无论如何,关键是这种方式不是很好。一些罗马字也有问题。

那么为什么不使用调度程序来代替呢,这类似于按键。这是一个正确选择इंडिया的示例。

Sub wort_einfuegen()
    frame = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
    dispatcher.executeDispatch(frame, ".uno:WordRightSel", "", 0, Array())
    V_Cursor = ThisComponent.GetCurrentController.ViewCursor
    re_text = V_Cursor.String
    MsgBox """" & re_text & """"
End Sub
于 2021-07-02T13:23:04.110 回答