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

时间:2015-04-14 07:53:43

标签: macros libreoffice

libreoffice Base 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 个答案:

答案 0 :(得分:0)

术语'形式'在LibreOffice / OpenOffice中令人困惑,因为它既指向整个文档(通常是Writer文件),也指向该文档中的每组表单控件。因此,每个表单文档中可以包含多种形式(意味着一组控件),而表单(控件组)可以具有子表单。

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

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

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

替换" MainForm"与您的实际表单名称 - 这里的表单意味着一组控件。通过打开“表单导航”窗口,可以看到表单文档中的表单和子表单的名称。确保工具栏表单设计可见;表单导航器图标是左侧或顶部的第六个图标,看起来像一个右上角带有指南针的矩形。

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

ThisComponent.close