Difference between revisions of "ZH/Documentation/BASIC Guide/Other Instructions"

From Apache OpenOffice Wiki
Jump to: navigation, search
 
Line 12: Line 12:
 
''struct'' (结构)是数据字段的集合,可作为单个条目操作,可将其想象成一个记录或部分记录。
 
''struct'' (结构)是数据字段的集合,可作为单个条目操作,可将其想象成一个记录或部分记录。
  
[[ZH/Documentation/BASIC_Guide/API_Intro/|API]] 经常使用预定义结构,但那些是 ''UNO 结构'',一种特殊类型的结构。
+
[[ZH/Documentation/BASIC_Guide/API_Intro|API]] 经常使用预定义结构,但那些是 ''UNO 结构'',一种特殊类型的结构。
 
=== 定义===
 
=== 定义===
  

Latest revision as of 04:30, 23 September 2009

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