我们从下往上来了解UNO。
先把我们的宏理解为客户端(Client),和UNOs的接口(Interface)打交道。
接口(Interface)
每个接口由一系列的方法组成,我们可以使用这些方法来:
- 获取或设置参数
- 控制接口定义的任何功能性的操作
每个接口包含在一个服务(Service)中。
服务(Service)
一个服务是一个UNO部件—OOo Calc的一个组成部分。每个服务由一个或多个服务组成,它还包含一系列的属性。
我们可以发现服务有四个类型的属性:
- 常数(Constants)
- 枚举(Enums)
- 例外(Exceptions)
- 结构(Structs)
模块
UNO 服务按层级结构在模块中分组。我们现在已经从UNO的最底级来到了最高级。很多模块嵌套在另外一个模块中。而所有的模块嵌套在一个最高级的模块— com.sun.star。这个模块就像Excel中的Application对象。
开始使用UNO
到了这里我们基本上对OpenOffice.org对象模型有了一个基本的了解。我们可以先使用一个简单的例子(打开和关闭一个电子表格)来了解怎样使用 UNO。
我们先需要了解:
- 每个服务保存在一个模块中。
- 所有的模块保存在一个中央模块中— com.sun.star。
- 一个服务由函数createUnoService创建。
- 我们将使用frame模块中的 Desktop服务。
Sub OpenAndClose
Dim oDesk as Object
Dim oDoc as Object
Dim oUrl as String
oDesk = createUnoService ("com.sun.star.frame.Desktop")
oUrl = "private:factory/scalc"
oDoc = oDesk.loadComponentFromURL (oUrl, "_blank", 0, Array() )
oDoc.close(true)
End Sub
这个代码打开一个空白电子表格然后关闭它,没什么用处,但是告诉我们怎样操作电子表格。
其实,UNO只是定义的一种规范,如果自己要写UNO组件就得遵守这个规范。