Difference between revisions of "ZH/Documentation/BASIC Guide/Interface Overview"
Line 3: | Line 3: | ||
|ShowPrevNext=block | |ShowPrevNext=block | ||
|ShowPrevPage=block | |ShowPrevPage=block | ||
− | |PrevPage=Documentation/BASIC Guide/UNO Tools | + | |PrevPage=ZH/Documentation/BASIC Guide/UNO Tools |
− | |NextPage=Documentation/BASIC Guide/Documents | + | |NextPage=ZH/Documentation/BASIC Guide/Documents |
|api=block | |api=block | ||
}} | }} | ||
Line 156: | Line 156: | ||
{{PDL1}} | {{PDL1}} | ||
+ | {{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Interface Overview}} | ||
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Interface Overview}} | {{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Interface Overview}} |
Revision as of 22:07, 12 December 2008
在 Apache OpenOffice API 的很多部分中,都可以找到一些 Apache OpenOffice 接口。它们为抽象任务定义了一系列方法,可应用这些方法来解决各种问题。此处简要介绍了最常用的接口。
有关对象的起源将在本指南的后面章节中进行说明。在此,仅介绍这些对象的一些抽象特性,Apache OpenOffice API 为这些对象提供了一些主要接口。
创建上下文相关对象
Apache OpenOffice API 提供了两种创建对象的方法。其中一种方法是本章开头提到的 createUnoService 函数。createUnoService 可以创建通用对象。这些对象和服务也称为上下文无关服务。
除了上下文无关服务以外,还存在上下文相关服务,这些服务的对象只能与其他对象一起使用。例如,电子表格文档的绘图对象只能在这一种文档中存在。
com.sun.star.lang.XMultiServiceFactory 接口
通常,上下文相关对象是通过该对象所依赖的对象方法创建的。XMultiServiceFactory 接口中定义的 createInstance 方法专门用于文档对象。
例如,可以使用电子表格对象按如下方式创建绘图对象:
Dim RectangleShape As Object
RectangleShape = _
Spreadsheet.createInstance("com.sun.star.drawing.RectangleShape")
文本文档中的段落模板是以相同方式创建的:
Dim Style as Object
Style = Textdocument.createInstance("com.sun.star.style.ParagraphStyle")
对下级对象的命名访问
XNameAccess 和 XNameContainer 接口用于包含下级对象的对象,可以使用自然语言名称对这些下级对象进行寻址。
XNamedAccess 允许访问各个对象;而 XNameContainer 用于插入、修改和删除元素。
com.sun.star.container.XNameAccess 接口
电子表格的工作表对象提供了一个使用 XNameAccess 的示例。该示例合并了电子表格中的所有页面。可以使用 XNameAccess 中的 getByName 方法访问各个页面:
Dim Sheets As Object
Dim Sheet As Object
Sheets = Spreadsheet.Sheets
Sheet = Sheets.getByName("Sheet1")
getElementNames 方法简要说明了所有元素的名称。因此,它返回一个包含这些名称的数据字段。以下示例说明了如何通过循环确定并显示电子表格的所有元素名称:
Dim Sheets As Object
Dim SheetNames
Dim I As Integer
Sheets = Spreadsheet.Sheets
SheetNames = Sheets.getElementNames
For I=LBound(SheetNames) To UBound(SheetNames)
MsgBox SheetNames(I)
Next I
XNameAccess 接口的 hasByName 方法揭示了基本对象中是否存在具有特定名称的下级对象。因此,以下示例将显示一条消息,通知用户 Spreadsheet 对象是否包含名为 Sheet1 的页面。
Dim Sheets As Object
Sheets = Spreadsheet.Sheets
If Sheets.HasByName("Sheet1") Then
MsgBox " Sheet1 available"
Else
MsgBox "Sheet1 not available"
End If
com.sun.star.container.XNameContainer 接口
XNameContainer 接口用于插入、删除和修改基本对象中的下级元素。负责完成这些操作的函数为 insertByName、removeByName 和 replaceByName。
下面是此接口的一个实用示例。该示例调用一个文本文档,该文档包含一个 StyleFamilies 对象,并使用该对象提供文档的段落模板 (ParagraphStyles)。
Dim StyleFamilies As Object
Dim ParagraphStyles As Object
Dim NewStyle As Object
StyleFamilies = Textdoc.StyleFamilies
ParagraphStyles = StyleFamilies.getByName("ParagraphStyles")
ParagraphStyles.insertByName("NewStyle", NewStyle)
ParagraphStyles.replaceByName("ChangingStyle", NewStyle)
ParagraphStyles.removeByName("OldStyle")
insertByName 行在 ParagraphStyles 对象中的相同名称下插入 NewStyle 样式。replaceByName 行将 ChangingStyle 后面的对象更改为 NewStyle。最后,removeByName 调用将 OldStyle 后面的对象从 ParagraphStyles 中删除。
对下级对象的基于索引的访问
XIndexAccess 和 XIndexContainer 接口用于包含下级对象并可使用索引对其进行寻址的对象。
XIndexAccess 提供了用于访问单个对象的方法。XIndexContainer 提供了用于插入和删除元素的方法。
com.sun.star.container.XIndexAccess 接口
XIndexAccess 提供了用于调用下级对象的 getByIndex 和 getCount 方法。getByIndex 为对象提供了特定索引。getCount 返回可用对象的数目。
Dim Sheets As Object
Dim Sheet As Object
Dim I As Integer
Sheets = Spreadsheet.Sheets
For I = 0 to Sheets.getCount() - 1
Sheet = Sheets.getByIndex(I)
' Editing sheet
Next I
该示例说明了一个循环,此循环遍历所有工作表元素,并将对每个元素的引用保存在 Sheet 对象变量中。在使用索引时,请注意 getCount 返回元素的数目。不过,getByIndex 中的元素是从 0 开始进行编号的。因此,循环的计数变量是从 0 到 getCount()-1。
com.sun.star.container.XIndexContainer 接口
XIndexContainer 接口提供了 insertByIndex 和 removeByIndex 函数。这些参数的结构与 XNameContainer 中相应函数的结构相同。
对下级对象的交互访问
在某些情况下,对象可能包含一个下级对象列表,但无法通过名称或索引对这些下级对象进行寻址。此时,应使用 XEnumeration 和 XenumerationAccess 接口。它们提供了一种机制来逐步遍历某个对象的所有下级元素,而无需进行直接寻址。
com.sun.star.container.XEnumeration 和 XenumerationAccess 接口
基本对象必须提供 XEnumerationAccess 接口,该接口仅包含 createEnumeration 方法。此方法返回一个辅助对象,而该对象又提供了包含 hasMoreElements 和 nextElement 方法的 XEnumeration 接口。可通过这些方法来访问下级对象。
以下示例将遍历文本的所有段落:
Dim ParagraphEnumeration As Object
Dim Paragraph As Object
ParagraphEnumeration = Textdoc.Text.createEnumeration
While ParagraphEnumeration.hasMoreElements()
Paragraph = ParagraphEnumeration.nextElement()
Wend
该示例首先创建了一个 ParagraphEnumeration 辅助对象。然后,借助此对象通过循环逐步返回文本的各个段落。在 hasMoreElements 方法返回 False 值(表示已到达文本末尾)时,将会立即终止循环。
Content on this page is licensed under the Public Documentation License (PDL). |