声明一个属性。
<property name="propertyName" [internalName="propertyVariable"] />
或者
<property name="propertyName"> <get [internalName="getFunctionName"] /> <put [internalName="putFunctionName"] /> </property>
提示 在 XML,可以实现没有内容的元素 (如 <property> 元素),方法是用 /> 来结束元素。
属性可以作为简单值来说明。在这种情况下,属性将作为脚本部件文件内的全局变量来处理。
也可以将属性作为过程(函数或子程序)来实现,这样可以计算属性的值,以及控制属性是否为只读、只写或是可读写的。在这种技术中,属性将在单独的 <script> 元素内作为过程(函数或子程序)实现。<property>元素将属性名称映射到用来实现该属性的过程。过程的名称必须与在 <property> 元素中指定的内部名称一致。
当调用 putFunctionName 时,该函数将传递一个参数,其中包含了用来设置给该属性的值。
除了以上所示的标准语法,您可以使用速记符号指定由子标记(child tags)添加的信息。例如,如果您想声明一个具有和属性相同名字的"get" 和 "put" 访问者属性,您可以使用以下语法:
<property name="myproperty" get put/>
它在功能上相当于:
<property name="myproperty">
<get/> <put/></property>
如果您想明确地不以默认名称命名这些访问者,您可以使用以下语法:
<property name="myproperty" get="testget" put="testput"/>
要指定缺省属性,只需在 <property> 元素中包含 dispid="0" 这个属性。详细信息请参阅说明属性。
下面的脚本部件片段演示了四个属性 (sname、age、dateOfBirth 以及 mstatus) 的定义。sname 属性为一个简单值。age 属性是只读的,由 readAge 函数实现。dateOfBirth 属性是可读写的,由 readDOB 和 writeDOB 两个函数实现。最后, mstatus 属性由缺省函数 get_mstatus 以及 put_mstatus 实现。
注意 CDATA 项是必需的,以使 <script> 元素中的脚本成为不透明的。详细信息请参阅脚本部件文件和 XML 一致性。
<public> <property name="sname"/> <property name="age"> <get internalName="readAge"/> </property> <property name="dateOfBirth"> <get internalName="readDOB"/> <put internalName="writeDOB"/> </property> <property name="mstatus"> <get/> <put/> </property> </public> <script language="VBScript"> <![CDATA[ Dim sname ' 可读写的 sname 属性(没有函数)。 Dim gDOB ' 用来保存出生日期的全局变量。 Dim gMStatus ' 用来保存材料状态的全局变量。 Function readDOB() ' Gets value of dateOfBirth property. readDOB = gDOB End Function Function writeDOB(newDOB) ' 设置 dateOfBirth 属性的值。 If isDate(gDOB) Then ' 错误检查。 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 Function get_mstatus() ' 读取 mstatus 属性的值。 get_mstatus = gMStatus End Function Function put_mstatus(s) ' 写入 mstatus 属性的值。 If s = "M" Or s = "S" Then gMStatus = s Else gMStatus = "?" End If End Function ]]> </script>
<event> 元素 | <method> 元素 | 说明事件 | 说明方法 | 说明属性