Ocultar y mostrar objetos

Este ejemplo muestra cómo ocultar botones al imprimir un formulario. También muestra cómo ocultar y mostrar objetos modificando los valores de presencia en tiempo de ejecución.

Nota: también puede utilizar el cuadro de diálogo Action Builder del menú Herramientas para ocultar y mostrar objetos en formularios con presentación flexible sin necesidad de escribir secuencias de comandos. para obtener información, consulte Generación de acciones en formularios

En este ejemplo, todos los objetos de formulario se muestran en el formulario.

La persona que rellena el formulario puede utilizar las listas desplegables del área de valores de presencia para mostrar y ocultar los objetos. En el siguiente diagrama, el campo de dirección está oculto y la presentación del formulario se muestra ajustada. El botón Imprimir formulario tampoco es visible.

Nota: Para mostrar y ocultar en tiempo de ejecución, es preciso guardar el formulario como Formulario PDF dinámico de Acrobat.

Para ver este ejemplo de secuencias de comandos y otros, visite LiveCycle Developer Center.

Creación de secuencia de comandos para los valores de presencia de subformularios

La secuencia de comandos para los valores de presencia de subformularios utiliza una sentencia switch para controlar las tres opciones de presencia que la persona que rellena el formulario puede aplicar al objeto de subformulario:

switch(xfa.event.newText) { 
    case 'Invisible': 
        Subform1.presence = "invisible"; 
        break; 
    case 'Hidden (Exclude from Layout)': 
        Subform1.presence = "hidden"; 
        break; 
    default: 
        Subform1.presence = "visible"; 
        break; 
}

Creación de secuencia de comandos para los valores de presencia de campos de texto

La secuencia de comandos para los valores de presencia de campos de texto requiere dos variables. La primera variable almacena el número de objetos contenidos en Subform1:

    var nSubLength = Subform1.nodes.length;

La segunda almacena el nombre del campo de texto seleccionado por la persona que rellena el formulario en la lista desplegable Campos de texto:

    var sSelectField = fieldList.rawValue;

La siguiente secuencia de comandos utiliza el método replace para quitar todos los espacios del nombre del campo almacenado en la variable sSelectField, que permite que el valor de la lista desplegable coincida con el nombre del objeto de la paleta Jerarquía:

    sSelectField = sSelectField.replace(' ', '');

Esta secuencia de comandos utiliza un bucle For para recorrer todos los objetos contenidos en Subform1:

    for (var nCount = 0; nCount < nSubLength; nCount++) {

Si el objeto actual de Subform1 es de tipo field y tiene el mismo nombre que el objeto seleccionado por la persona que rellena el formulario, se llevarán a cabo las siguientes acciones:

     if ((Subform1.nodes.item(nCount).className == "field") & (Subform1.nodes.item(nCount).name == sSelectField)) {

La siguiente secuencia de comandos utiliza una sentencia switch para controlar los tres valores de presencia que la persona que rellena el formulario puede aplicar a los objetos de campo de texto:

        switch(xfa.event.newText) { 
            case 'Invisible': 
                Subform1.nodes.item(nCount).presence = "invisible"; 
                break; 
            case 'Hidden (Exclude from Layout)': 
                Subform1.nodes.item(nCount).presence = "hidden"; 
                break; 
            default: 
                Subform1.nodes.item(nCount).presence = "visible"; 
                break; 
        } 
    } 
}

Creación de secuencia de comandos para los valores de presencia de botones

La secuencia de comandos para los valores de presencia de botones requiere dos variables. Esta variable almacena el número de objetos contenidos en Subform1:

    var nSubLength = Subform1.nodes.length;

Esta variable almacena el nombre del botón seleccionado por la persona que rellena el formulario en la lista desplegable Botones:

var sSelectButton = buttonList.rawValue;

La siguiente secuencia de comandos utiliza el método replace para quitar todos los espacios del nombre del botón almacenado en la variable sSelectField, que permite que el valor de la lista desplegable coincida con el nombre del objeto de la paleta Jerarquía:

     sSelectButton = sSelecButton.replace(/\s/g, '');

Esta secuencia de comandos utiliza un bucle For para recorrer todos los objetos contenidos en Subform1:

for (var nCount = 0; nCount < nSubLength; nCount++) {

Si el objeto actual de Subform1 es de tipo field y tiene el mismo nombre que el objeto seleccionado por la persona que rellena el formulario, se llevarán a cabo las siguientes acciones:

    if ((Subform1.nodes.item(nCount).className == "field") & 
    Subform1.nodes.item(nCount).name == sSelectButton)) {

Esta secuencia de comandos utiliza una sentencia switch para controlar los cinco valores de presencia que la persona que rellena el formulario puede aplicar a los objetos de botón.

Nota: la propiedad correspondiente indica si un objeto debe aparecer al imprimir el formulario.
        switch(xfa.event.newText) { 
            case 'Invisible': 
                Subform1.nodes.item(nCount).presence = "invisible"; 
                break; 
            case 'Hidden (Exclude from Layout)': 
                Subform1.nodes.item(nCount).presence = "hidden"; 
                break; 
            case 'Visible (but Don\'t Print)': 
                Subform1.nodes.item(nCount).presence = "visible"; 
                Subform1.nodes.item(nCount).relevant = "-print"; 
                break; 
            case 'Invisible (but Print Anyway)': 
                Subform1.nodes.item(nCount).presence = "invisible"; 
                Subform1.nodes.item(nCount).relevant = "+print"; 
                break; 
            default: 
                Subform1.nodes.item(nCount).presence = "visible"; 
                break; 
        }     
    } 
}

Secuencia de comandos para restaurar listas desplegables

Utilice el método resetData para restaurar todas las listas desplegables a sus valores predeterminados:

    xfa.host.resetData();

Utilice el método remerge para volver a combinar el diseño y los datos de formulario. En este caso, el método devuelve de forma eficaz los objetos del área de objetos de formulario a sus estados originales:

    xfa.form.remerge();