Windows 脚本部件  

说明属性

可以用两种方式来说明属性:

还可以将属性标记为脚本部件的缺省值。

要作为简单值来说明一个属性

  1. 创建一个 <public> 元素,将其作为 <component> 元素的子元素。
  2. 在 <public> 元素中,包含一个指定用来存储属性值的变量的 <property> 元素。
  3. 要初始化一个简单属性的值,请在 <script> 元素中创建一个与 propertyName (或 propertyVariable ,如果指定了这个名字)匹配的名字的全局变量,并给其指定一个值。
  4. 下面的脚本部件片段演示了两个作为简单值说明的属性 (name and tag)。这两个属性是在 <script> 元素中使用全局变量来初始化的。
    注意   CDATA 项是必需的,以使 <script> 元素中的脚本成为不透明的。详细信息请参阅脚本部件文件和 XML 一致性
    <public>
       <property name="name"/>
       <property name="tag" internalName="tagVar"/>
    </public>
    <script language="VBScript">
       <![CDATA[
       Dim name
       name = "script component"   ' Initializes the value of name property.
       Dim tagVar
       tagVar = "10"   ' Initializes the value of tag property.
       ]]>
    </script>

使用函数来说明属性与说明方法的方式类似。

要使用函数来说明一个属性

  1. 在脚本部件文件的 <public> 元素中,包括一个 <property> 元素,其中可以包含一个 <get> 元素来定义只读函数,一个 <put> 元素来定义写入函数。如果没有定义 <put> 元素,则该属性就是只读的。如果没有包括 <get> 元素,则该属性就是只写的。
  2. 在 <public> 之外的 <script> 元素内编写过程来实现这个函数。设置属性值的函数 — 即 put 函数 — 必须接收一个参数,该属性将被设置为这个值。

    该过程的名称必须与在 <property> 元素中指定的内部名称一致。如果没有指定 internalName 属性,则对于读取函数,函数名称必须是该函数的名字再加上 get_ 前缀,对于写入函数,则应加上 put_ 前缀。

  3. 例如,下面的脚本部件片段是一个说明了三个属性的脚本部件文件示例,这三个属性为: sname、dateOfBirth 以及 age 。dateOfBirth 属性是作为函数定义的,因此它可以包括错误检查。age 属性是计算得到的,因此被定义为只读的。
    注意   CDATA 项是必需的,使 <script> 元素中的脚本称为不透明的。详细信息请参阅 脚本部件文件和 XML 一致性
    <public>
       <property name="sname"/>
       <property name="age">
          <get internalName="readAge"/>
       </property>
       <property name="dateOfBirth">
          <get internalName="readDOB"/>
          <put internalName="writeDOB"/>
       </property>
    </public>
    <script language="VBScript">
    <![CDATA[
    Dim sname   ' 可读写的 sname 属性(非函数)。
    Dim gDOB   ' 用来存储生日日期的全局变量。
    Function readDOB()
       ' 取 dateOfBirth 属性的值。
       readDOB = gDOB
    End Function
    Function writeDOB(newDOB)
       ' 设置 dateOfBirth 属性的值。
       If isDate(gDOB) Then
          'Error checking
          gDOB = newDOB
       End If
    End Function
    Function readAge()
       ' 计算只读的 age 属性。
       If isDate(gDOB) Then
          dobM = DatePart("m", gDOB)
          dobD = DatePart("d", gDOB)
          dobY = DatePart("yyyy", gDOB)
          todayY = DatePart("yyyy", Date)
          age = todayY - dobY
          ' 如果今年还没过生日,则进行调整。
          bday = DateValue(dobM & "/" & dobD & "/" & todayY)
          If DateDiff("d", bday, DateValue(Date)) < 0 Then
             age = age - 1
          End If
          readAge = age
       End If
    End Function
    ]]>
    </script>

可以给脚本部件指定一个缺省属性,以便宿主应用程序不必显式地写出属性的名字就可以获取或设置该属性的值。例如,如果已声明了一个称为 sname 的属性,并将其标记为缺省的,则可以在 Visual Basic 中用下述任何一种方式来使用该属性:

Set component = CreateObject("Component.MyComponent")
n = component.sname   ' 显式地获取属性。
n = component   ' 按缺省情况获取 sname 的值。

要指定缺省属性,请包括一个将特殊的派遣标识符(dispid)指定给该方法的属性。关于 dispid 的详细信息,请参阅说明事件

要指定一个缺省属性

请参阅

说明事件 | 说明方法 | 脚本部件文件的内容 | 脚本部件文件和 XML 一致性