其他指令

From Apache OpenOffice Wiki
Jump to: navigation, search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
doc OOo
Book.png

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的开始处(第一个SubFunction 之前)定义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).



Personal tools