可以用兩種方式來(lái)說(shuō)明屬性:
還可以將屬性標(biāo)記為腳本部件的缺省值。
要作為簡(jiǎn)單值來(lái)說(shuō)明一個(gè)屬性
注意 CDATA 項(xiàng)是必需的,以使 <script> 元素中的腳本成為不透明的。詳細(xì)信息請(qǐng)參閱腳本部件文件和 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>
使用函數(shù)來(lái)說(shuō)明屬性與說(shuō)明方法的方式類似。
要使用函數(shù)來(lái)說(shuō)明一個(gè)屬性
該過(guò)程的名稱必須與在 <property> 元素中指定的內(nèi)部名稱一致。如果沒(méi)有指定 internalName 屬性,則對(duì)于讀取函數(shù),函數(shù)名稱必須是該函數(shù)的名字再加上 get_ 前綴,對(duì)于寫入函數(shù),則應(yīng)加上 put_ 前綴。
注意 CDATA 項(xiàng)是必需的,使 <script> 元素中的腳本稱為不透明的。詳細(xì)信息請(qǐng)參閱 腳本部件文件和 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 屬性(非函數(shù))。
Dim gDOB ' 用來(lái)存儲(chǔ)生日日期的全局變量。
Function readDOB()
' 取 dateOfBirth 屬性的值。
readDOB = gDOB
End Function
Function writeDOB(newDOB)
' 設(shè)置 dateOfBirth 屬性的值。
If isDate(gDOB) Then
'Error checking
gDOB = newDOB
End If
End Function
Function readAge()
' 計(jì)算只讀的 age 屬性。
If isDate(gDOB) Then
dobM = DatePart("m", gDOB)
dobD = DatePart("d", gDOB)
dobY = DatePart("yyyy", gDOB)
todayY = DatePart("yyyy", Date)
age = todayY - dobY
' 如果今年還沒(méi)過(guò)生日,則進(jìn)行調(diào)整。
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>
可以給腳本部件指定一個(gè)缺省屬性,以便宿主應(yīng)用程序不必顯式地寫出屬性的名字就可以獲取或設(shè)置該屬性的值。例如,如果已聲明了一個(gè)稱為 sname 的屬性,并將其標(biāo)記為缺省的,則可以在 Visual Basic 中用下述任何一種方式來(lái)使用該屬性:
Set component = CreateObject("Component.MyComponent")
n = component.sname ' 顯式地獲取屬性。
n = component ' 按缺省情況獲取 sname 的值。
要指定缺省屬性,請(qǐng)包括一個(gè)將特殊的派遣標(biāo)識(shí)符(dispid)指定給該方法的屬性。關(guān)于 dispid 的詳細(xì)信息,請(qǐng)參閱說(shuō)明事件。
要指定一個(gè)缺省屬性
<property name="sname" dispid="0"/>
注意 這個(gè)技術(shù)可用來(lái)指定一個(gè)缺省方法或一個(gè)缺省屬性,但不能同時(shí)指定。在腳本部件中只能有一個(gè)元素的 dispid 為零。