libreoffice 基础宏参数打开关闭获取当前表单名称

Posted

技术标签:

【中文标题】libreoffice 基础宏参数打开关闭获取当前表单名称【英文标题】:libreoffice base macro parametric open close get current form name 【发布时间】:2015-04-14 07:53:43 【问题描述】:

libreoffice 基础 4.3.3.2 按名称打开一个表单页面,然后像这样关闭当前页面表单:

oForm = ThisDatabaseDocument.FormDocuments.getByName("SecondForm") 
oForm.Open 
oFormC = ThisDatabaseDocument.FormDocuments.getByName("CurrentForm") 
oFormC.Close 

但是有没有办法在不手写他的名字的情况下关闭 oFormC?

尝试:

    oFormC = Event.Source.Model.Parent
    oFormC  = ThisDatabaseDocument.FormDocuments.getByName(Event.Source.Model.Parent) 
oFormC = getParent()

返回 var not set 的错误

在文档中找不到任何帮助。

【问题讨论】:

【参考方案1】:

LibreOffice/OpenOffice 中的“表单”一词令人困惑,因为它既指整个文档(通常是 Writer 文件),也指该文档中的每组表单控件。所以每个表单文档里面可以有很多表单(即一组控件),而表单(控件组)可以有子表单。

此代码获取表单文档(嵌入在 Base 文件中的 Writer 文件):

oDoc = ThisDatabaseDocument.FormDocuments.getByName("SecondForm")

此代码获取的表单是一组控件并包含触发宏的控件:oForm = Event.Source.Model.Parent 在触发宏的表单文档中获取一组控件的另一种方法:oForm = ThisComponent.drawpage.forms.MainForm

将“MainForm”替换为您的实际表单名称 - 这里的表单表示一组控件。您可以通过打开“表单导航器”窗口来查看表单文档内的表单和子表单的名称。确保工具栏表单设计可见; Form Navigator 图标在左数或上数第六个,看起来像一个矩形,右上角有一个指南针。

你可能已经从前面的代码中猜到了如何在宏被触发时关闭处于活动状态的文档:

ThisComponent.close

【讨论】:

以上是关于libreoffice 基础宏参数打开关闭获取当前表单名称的主要内容,如果未能解决你的问题,请参考以下文章

LibreOffice 宏总是显示#NULL!重新打开文件后

如何使用 python 宏获取 libreoffice 文档中段落的样式名称?

LibreOffice Macro总是显示#NULL!重新打开文件后

LibreOffice 如何恢复当前元素

OpenOffice.org/LibreOffice Calc 宏:单元格的内容当前是不是溢出?

从 python 执行 LibreOffice Calc Basic 宏