LibreOffice Basic 从表单中获取元素

Posted

技术标签:

【中文标题】LibreOffice Basic 从表单中获取元素【英文标题】:LibreOffice Basic get Elements from form 【发布时间】:2016-09-29 09:24:08 【问题描述】:

我正在尝试从表单上的文本字段中获取值。

sub Test(oEv)

oForm = oEv.Source.Model.Parent
textBox = oForm.getByName("Description")
MsgBox textBox.Text

end sub

“textBox = oForm.getByName”行有一个异常:“Type: com.sun.star.container.NoSuchElementException”。我在同一个表单上有一个名为“描述”的文本字段,我按下以运行此宏的按钮在哪里。这里有什么问题?

【问题讨论】:

【参考方案1】:

检查名称是否相同,而不是description

另外,使用Form Navigator 来确定控件是否在层次结构中的窗体下。

您是否尝试过使用诸如MRI 或XrayTool 之类的自省工具来查看oForm 的属性?使用该工具,展开表单以查看它是否包含 Description 控件。

通常在 Base 中,最好将表单作为记录集处理,而不是读取控件。下面是一些示例代码:

Sub ButtonClickHandler(oEvent as Object)
    'com.sun.star.comp.forms.ODatabaseForm
    oForm = oEvent.Source.Model.Parent
    lDescriptionCol = oForm.findColumn("DESCRIPTION")  ' from underlying query or table
    Print(oForm.getString(lDescriptionCol))
    BasicLibraries.LoadLibrary("XrayTool")
    xray(oForm)
End Sub

有关更多想法,请参阅https://forum.openoffice.org/en/forum/viewtopic.php?f=39&t=38725。

【讨论】:

感谢您的建议。我尝试了 MRI,但它无法帮助我找到解决方案。然后我尝试重新启动 LibreOffice - 一切正常!不知道是什么导致了这个问题。

以上是关于LibreOffice Basic 从表单中获取元素的主要内容,如果未能解决你的问题,请参考以下文章

在 LibreOffice 宏的 Basic 中获取文档路径

使用 LibreOffice Basic 迭代控件

从 python 运行 Libreoffice BASIC 宏

从 python 执行 LibreOffice Calc Basic 宏

从 Base (Libreoffice) 中的宏中获取按钮

如何在 Basic 中使用 LibreOffice 功能?