其他指令
Type...End Type
struct (结构)是数据字段的集合,可作为单个条目操作,可将其想象成一个记录或部分记录。
API 经常使用预定义结构,但那些是 UNO 结构,一种特殊类型的结构。
定义
使用 Type...End Type 声明,可以定义自己的(非UNO)结构:
Type aMenuItem ' 指定类型名称
' 定义结构内的数据字段,
' 每个定义看起来象一个不使用"Dim" 的Dim声明
aCommand as String
aText as String
End Type 'close the definition
实例 Instance
Type Type 定义仅是个模式或模板,并非一个实际变量的集合,为创建该类型的实例instance,通过实例可读写实际的变量,需要使用Dim as New 声明:
Dim maItem as New aMenuItem
作用域 Scope
如以下示例所示,可在模块module的开始处(第一个Sub 或 Function 之前)定义Type,该定义将对模块内的所有子程序有效。
在OpenOffice.org v3.0中,不同于变量,在模块之外Type定义不起作用。
一个新类型的实例即是一个变量,其遵循变量作用域的通常准则(参见变量的作用域和生命周期)。
在With...End With部分,一个例子将展示如何定义、如何引用实例中的数据字段。
With...End With
修饰符 Qualifiers
通常,例如对象Object,Basic 不访问容器的内部,以获取内部定义的名称。如果想使用该名称,必须告知 Basic 在哪里去获取,可通过使用对象名字作为修饰符qualifier写在内部名称之前,以点号间隔,如:
MyObject.SomeName
由于容器可能包含其他容器,您需要使用多个修饰符,从外到内依序书写修饰符:
OuterObject.InnerObject.FarInsideObject.SomeName
这些名字也可描述成“以点号('.')连接”。
With 方式
With...End With 声明提供书写所有修饰符的可选方式 – API 中有些修饰符可能过长。在 With 声明中指定修饰符,Basic 在End With 声明之前查找部分修饰的名称,该名称以一个点号(一元点号操作符)开始。编译器使用With 处的修饰符,就象他们写在部分修饰的名称之前。
例 1: 用户定义结构
该示例展示如何定义和使用结构,如何使用和不使用With 去引用它。两种方式都需要数据字段的名称(Type定义中)必须被实例的名字(Dim声明中)修饰。
Type aMenuItem
aCommand as String
aText as String
End Type
Sub Main
' 创建用户定义结构的实例
' 注意关键字"New"
Dim maItem as New aMenuItem
With maItem
.aCommand = ".uno:Copy"
.aText = "~Copy"
End With
MsgBox "Command: " & maItem.aCommand & Chr(13) _
& "Text: " & maItem.aText
End Sub
例2: Case 声明
在 单元格和区域中,该示例在Case声明中写出了全部修饰符,以下是更容易的书写方式:
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Doc = StarDesktop.CurrentComponent
Sheet = Doc.Sheets(0)
Cell = Sheet.getCellByPosition(1,1) 'Cell "B2" (0-based!)
Cell.Value = 1000
With com.sun.star.table.CellContentType
Select Case Cell.Type
Case .EMPTY
MsgBox "Content: Empty"
Case .VALUE
MsgBox "Content: Value"
Case .TEXT
MsgBox "Content: Text"
Case .FORMULA
MsgBox "Content: Formula"
End Select
End With
注意:With结构必须完全包含 Select 结构。
Content on this page is licensed under the Public Documentation License (PDL). |