Working with Forms

From Apache OpenOffice Wiki
< IT
Jump to: navigation, search


Apache OpenOffice 可能包含文字字段、列表框、单选按钮和一系列其他控制元素,可以直接插入在文字或工作表文档。 表单功能工具栏用于编辑表单。

一个 Apache OpenOffice 表单可以采用以下两种模式:“草稿模式和显示模式。 在草稿模式下,控制元素可以更改其属性可以对其进行编辑使用属性窗口。

表单功能工具栏还可用于切换模式之间。

确定对象表单

Apache OpenOffice 定位控制元素的表格绘图对象级。 实际的对象进行访问的表单列表在画级别。 访问这些对象所示文本文档:

Dim Doc As Object
Dim DrawPage As Object
Dim Form As Object

Doc = StarDesktop.CurrentComponent
DrawPage = Doc.DrawPage
Form = DrawPage.Forms.GetByIndex(0)

GetByIndex 方法将返回与表单的索引号为0。

使用工作表,中间阶段所需的工作表级别,因为绘图并不直接位于文档,但在各个工作表:

Dim Doc As Object
Dim Sheet As Object
Dim DrawPage As Object
Dim Form As Object

Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets.GetByIndex(0)
DrawPage = Sheet.DrawPage
Form = DrawPage.Forms.GetByIndex(0)

为已建议的 GetByIndex 方法名称、文档可以含有多个表单。 这非常有用,例如,如果不同数据库的内容就会显示在一个文档,或者1:n的数据库关系中显示一个表单。 创建子表单,还提供了用于此目的。

这三个方面的控制元素表单

一个控制元素表单都有三个方面:

  • 模型 的控制元素是密钥对象的 Apache OpenOffice Basic程序员当使用控制元素表单。
  • 与此相对应的 视图 ,控制元素管理着显示信息。
  • 由于控制元素表单在文档内的管理类似于一个特殊的绘图元素,还有一个 Shape对象 ,用于反映该绘图元素属性控制元素(特别是它的位置和大小)。

访问的控制模型元素表单

模型的控制元素表单可通过下列 GetByName 方法对象表单:

Dim Doc As Object
Dim Form As Object
Dim Ctl As Object

Doc = StarDesktop.CurrentComponent
Form = Doc.DrawPage.Forms.GetByIndex(0)
Ctl = Form.getByName("MyListBox")

此示例确定了模型 MyListBox 控制元素,它位于第一种形式的文本文档当前处于打开状态。

如果您不确定的表单的控制元素,您可以将选项用于搜索所有表单的控制元素:

Dim Doc As Object
Dim Forms As Object
Dim Form As Object
Dim Ctl As Object
Dim I as Integer

Doc = StarDesktop.CurrentComponent
Forms = Doc.Drawpage.Forms

For I = 0 To Forms.Count - 1
  Form = Forms.GetbyIndex(I)
  If Form.HasByName("MyListBox") Then
    Ctl = Form.GetbyName("MyListBox")
    Exit Function
  End If
Next I

此示例使用 HasByName 方法检查所有形式的文本文档以确定它们是否包含一个控制元素模型调用 MyListBox。 如果相应的模型,将执行引用这个保存在 Ctl 变量和终止搜索。

访问查看的控制元素表单

要访问的视图控制元素表单,则需要关联模型。 "视图控制元素,可以将协助确定的模型使用文档控制器。

Dim Doc As Object
Dim DocCrl As Object
Dim Forms As Object
Dim Form As Object
Dim Ctl As Object
Dim CtlView As Object
Dim I as Integer

Doc = StarDesktop.CurrentComponent
DocCrl = Doc.getCurrentController()
Forms = Doc.Drawpage.Forms

For I = 0 To Forms.Count - 1
  Form = Forms.GetbyIndex(I)
  If Form.HasByName("MyListBox") Then
    Ctl = Form.GetbyName("MyListBox")
    CtlView = DocCrl.GetControl(Ctl)
    Exit Function
  End If
Next I

以下代码中列出的示例是很相似的代码的用于确定控制元素模型。 它使用的 Doc 文档对象,而且还将 DocCrl 文档控制器对象来引用当前文档窗口。 借助此控制器对象的模型控制元素,它将使用 GetControl 方法确定了视图(CtlView 变量)控制元素表单。

访问的Shape对象控制元素表单

方法来访问Shape对象的控制元素也使用相应绘图级文档。 要确定一个特殊的控制元素,则所有绘图元素绘图级必须搜索。

Dim Doc As Object
Dim Shape as Object
Dim I as integer

Doc = StarDesktop.CurrentComponent

For i = 0 to Doc.DrawPage.Count - 1
  Shape = Doc.DrawPage(i)
  If HasUnoInterfaces(Shape, "com.sun.star.drawing.XControlShape") Then
    If Shape.Control.Name = "MyListBox" Then
      Exit Function
    End If
  End If
Next

此示例检查所有绘图元素以确定它们是否支持/所需的接口控制元素表单。 如果出现这种情况,则 Control.Name 属性会接着检查的名称是否在控制元素 MyListBox。 如果是,函数将结束搜索。

确定与大小和位置的控制元素

如前所述,该大小和位置的控制元素可以确定使用相关 shape 对象。 控制元素的Shape,与所有其他 shape 对象,还提供了 SizePosition 属性"使此目的:

Size (struct)
控制元素的大小(/数据结构)
Position (struct)
控制元素的位置(/数据结构)

以下示例显示了如何使用的位置和大小的控制元素可以设置使用关联的Shape对象:

Dim Shape As Object
Dim Point As New com.sun.star.awt.Point
Dim Size As New com.sun.star.awt.Size

' ... Initialize Shape object, as previously shown ...

Point.x = 1000
Point.y = 1000
Size.Width = 10000
Size.Height = 10000

Shape.Size = Size
Shape.Position = Point

shape 对象的"控制元素必须为已知的代码是在函数。 如果不是这样,则它必须确定使用以上代码。


Content on this page is licensed under the Public Documentation License (PDL).



Personal tools