Windows Script Components  

Exponer propiedades

Puede exponer propiedades de dos formas:

También puede marcar una propiedad como el valor predeterminado de un componente de secuencia de comandos.

Para exponer una propiedad como un valor

  1. Cree un elemento <public> como secundario del elemento <component>.
  2. En el elemento <public>, incluya un elemento <property> que especifique la variable que se utilizará para almancenar el valor de la propiedad.
  3. Para inicializar el valor de una propiedad simple, cree una variable global en el elemento <script> con un nombre que coincida con nombreDePropiedad (o variableDePropiedad, si la especificó) y asígnele un valor.
  4. El siguiente fragmento de componente de secuencia de comandos muestra dos propiedades (name y tag) expuestas como valores. Las propiedades se inicializan mediante variables globales en el elemento <script>.
    Nota   Es necesario incluir una sección CDATA para hacer opaca la secuencia de comandos del elemento <script>. Para obtener más información, consulte Archivos de componentes de secuencia de comandos y compatibilidad XML.
    <public>
       <property name="name"/>
       <property name="tag" internalName="tagVar"/>
    </public>
    
    <script language="VBScript">
       <![CDATA[
       Dim name
       name = "componente de secuencia de comandos"   ' Inicializa el valor de la propiedad name.
       Dim tagVar
       tagVar = "10"   ' Inicializa el valor de la propiedad tag.
       ]]>
    </script>

Exponer una propiedad mediante funciones es parecido a exponer un método.

Para exponer una propiedad mediante funciones

  1. En el elemento <public> del archivo componente de secuencia de comandos, incluya un elemento <property> que contenga un elemento <get> para definir la función de lectura y un elemento <put> para definir la función de escritura. Si no incluye el elemento <put>, la propiedad será de sólo lectura. Si no incluye el elemento <get>, la propiedad será de sólo escritura.
  2. Escriba procedimientos en un elemento <script> fuera del elemento <public> para implementar las funciones. La función para establecer el valor de la propiedad (la función put) debe aceptar un único parámetro, el valor al que se desea establecer la propiedad.

    Los nombres de los procedimientos deben coincidir con los nombres internos que especificó en el elemento <property>. Si no especificó un atributo internalName, los nombres de las funciones deben ser el nombre de la función con el prefijo get_ para una función de lectura y con un prefijo put_ para la función de escritura.

  3. Por ejemplo, el siguiente fragmento de componente de secuencia de comandos es un ejemplo de archivo componente de secuencia de comandos que expone tres propiedades: apellido, fechaDeNacimiento y edad. La propiedad fechaDeNacimiento se define mediante funciones, por lo que puede incluir comprobación de errores. La propiedad edad es calculada y, por lo tanto, está definida como de sólo lectura.
    Nota   Es necesario incluir una sección CDATA para hacer opaca la secuencia de comandos del elemento <script>. Para obtener más información, consulte Archivos de componentes de secuencia de comandos y compatibilidad XML.
    <public>
       <property name="apellido"/>
       <property name="edad">
          <get internalName="leerEdad"/>
       </property>
       <property name="fechaDeNacimiento">
          <get internalName="leerFDN"/>
          <put internalName="escribirFDN"/>
       </property>
    </public>
    
    <script language="VBScript">
    <![CDATA[
    Dim sname   ' Propiedad apellido de sólo lectura (sin funciones).
    Dim gDOB   ' Variable global que se utiliza para almacenar la fecha de nacimiento.
    
    Function leerFDN()
       ' Obtiene el valor de la propiedad fecgaDeNacimiento.
       leerFDN = gDOB
    End Function
    
    Function escribirFDN(nuevaFDN)
       ' Establece el valor de la propiedad fechaDeNacimiento.
       If isDate(gDOB) Then
          'Comprobación de errores
          gDOB = nuevaFDN
       End If
    End Function
    
    Function leerEdad()
       ' Calcula la propiedad de sólo lectura edad.
       If isDate(gDOB) Then
          fdnM = DatePart("m", gFDN)
          fdnD = DatePart("d", gFDN)
          fdnA = DatePart("yyyy", gFDN)
          hoyA = DatePart("yyyy", Date)
          edad = hoyA – fdnA
    
          ' Ajustar si todavía no se han cumplido los años este año.
          cumplir = DateValue(fdnM & "/" & fdnD & "/" & hoyA)
          If DateDiff("d", cumplir, DateValue(Date)) < 0 Then
             edad = edad - 1
          End If
          leerEdad = edad
       End If
    End Function
    ]]>
    </script>

Puede especificar una propiedad predeterminada para un componente de secuencia de comandos, con lo que la aplicación host puede obtener o establecer el valor de la propiedad sin llamar explícitamente a la propiedad. Por ejemplo, si ha expuesto una propiedad denominada apellido y la ha marcado como la predeterminada, puede trabajar con ella en Visual Basic de cualquiera de las formas siguientes:

Set componente = CreateObject("Componente.MiComponente")
n = componente.apellido   ' Obtiene la propiedad de forma explícita.
n = componente   ' Obtiene el valor de apellido como predeterminado.

Para especificar una propiedad determinada, incluya un atributo que asigne un identificador de envío (un dispId) al método. Para obtener más información acerca de los identificadores de envío, consulte Exponer eventos.

Para especificar una propiedad predeterminada

Consulte también

Exponer eventos | Exponer métodos | Contenido de los archivos de componentes de secuencia de comandos | Archivos de componentes de secuencia de comandos y compatibilidad XML

Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com.