可以用两种方式来说明属性:
还可以将属性标记为脚本部件的缺省值。
要作为简单值来说明一个属性
注意 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>
使用函数来说明属性与说明方法的方式类似。
要使用函数来说明一个属性
该过程的名称必须与在 <property> 元素中指定的内部名称一致。如果没有指定 internalName 属性,则对于读取函数,函数名称必须是该函数的名字再加上 get_ 前缀,对于写入函数,则应加上 put_ 前缀。
注意 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 的详细信息,请参阅说明事件。
要指定一个缺省属性
<property name="sname" dispid="0"/>
注意 这个技术可用来指定一个缺省方法或一个缺省属性,但不能同时指定。在脚本部件中只能有一个元素的 dispid 为零。
说明事件 | 说明方法 | 脚本部件文件的内容 | 脚本部件文件和 XML 一致性