Uso de los métodos de instance manager para controlar subformularios

En este ejemplo se muestra cómo utilizar los métodos de instance manager (que forma parte del Modelo de objetos de formulario XML) para llevar a cabo operaciones en objetos de subformulario en tiempo de ejecución. Por ejemplo, la incorporación o eliminación de instancias de un subformulario, tabla o fila de tabla concretos.

En el siguiente formulario, la persona que rellena el formulario utiliza los cuatro botones para usar los distintos métodos de secuencia de comandos de instance manager. Por ejemplo, cuando la persona que rellena el formulario hace clic en el botón Agregar, se agrega una nueva instancia de Subform2 al formulario.

Nota: el botón Mover reordena las dos primeras instancias de Subform2 y el botón Definir muestra el número máximo de instancias de Subform2. En ambos casos, es posible que necesite agregar o quitar subformulario, o realizar cambios en los datos de los campos de texto para ver cómo se aplican a las instancias de Subform2.

Secuencia de comandos para determinar si se ha agregado el número máximo de subformularios a un formulario

La siguiente secuencia de comandos determina el existe en el formulario el número máximo admitido de instancias de Subform2. Si existe el número máximo, la secuencia de comandos muestra un mensaje. En caso contrario, se agrega una instancia de Subform2 nueva al formulario.

    if (methods.Subform2.instanceManager.count == 
    methods.Subform2.instanceManager.max) { 
    xfa.host.messageBox("You have reached the maximum number of items allowed.", 
    "Instance Manager Methods", 1); 
} 
    else { 
    methods.Subform2.instanceManager.addInstance(1); 
    xfa.form.recalculate(1); 
}

También puede escribir esta secuencia de comandos con notación de subrayado (_) para hacer referencia a las propiedades y los métodos de instance manager, tal como se indica a continuación:

    if (methods._Subform2.count == methods._Subform1.max) { 
         xfa.host.messageBox("You have reached the maximum number of items  
        allowed.", "Instance Manager Methods", 1); 
} 
    else { 
        methods._Subform2.addInstance(1); 
        xfa.form.recalculate(1); 
}

Secuencia de comandos para determinar si hay más subformularios que quitar del formulario

La siguiente secuencia de comandos determina si existe alguna instancia de Subform2 en el formulario. Si no existe ninguna, la secuencia de comandos muestra un mensaje indicándolo. Si existe alguna, la secuencia de comandos quita la primera instancia del formulario.

    if (methods.Subform2.instanceManager.count == 0) { 
        xfa.host.messageBox("There are no subform instances to remove.", 
        "Instance Manager Methods", 1);     
    } 
    else { 
        methods.Subform2.instanceManager.removeInstance(0); 
        xfa.form.recalculate(1); 
    }

También puede escribir esta secuencia de comandos con notación de subrayado (_) para hacer referencia a las propiedades y los métodos de instance manager, tal como se indica a continuación:

    if (methods._Subform2.count == 0) { 
        xfa.host.messageBox("There are no subform instances to remove.", 
        "Instance Manager Methods", 1);     
    } 
    else { 
        methods._Subform2.removeInstance(0); 
        xfa.form.recalculate(1); 
    }

Secuencia de comandos para forzar la aparición de cuatro instancias de subformulario en el formulario

La siguiente secuencia fuerza la aparición de cuatro instancias de Subform2 en el formulario, independientemente del número de instancias que existan:

    methods.Subform2.instanceManager.setInstances(4);

También puede escribir esta secuencia de comandos con notación de subrayado (_) para hacer referencia a las propiedades y los métodos de instance manager, tal como se indica a continuación:

    methods._Subform2.setInstances(4);

Secuencia de comandos para forzar el cambio de ubicación del primer y segundo subformulario en el formulario

La siguiente secuencia de comandos fuerza el cambio de ubicación de la primera y segunda instancia de Subform2 en el formulario.

    methods.Subform2.instanceManager.moveInstance(0,1);

También puede escribir esta secuencia de comandos con notación de subrayado (_) para hacer referencia a las propiedad y los métodos de instance manager, tal como se indica a continuación.

    methods._Subform2.moveInstance(0,1);