Uso di Instance Manager per controllare i sottomoduli durante l'esecuzione

Questo esempio illustra come utilizzare le proprietà e i metodi di instance manager per recuperare informazioni sui sottomoduli ed eseguire operazioni sugli oggetti sottomodulo durante l'esecuzione.

In questo esempio, il compilatore utilizza i pulsanti per eseguire varie azioni utilizzando le istanze di Subform3. Ad esempio, quando il compilatore fa clic sul pulsante Aggiungi riga sotto, sotto l'istanza corrente viene aggiunta una nuova istanza Subform3.

Nota: Può essere necessario aggiungere o rimuovere sottomoduli, oppure apportare modifiche ai dati nei campi di testo per visualizzare le modifiche apportate alle istanze di Subform3.
Nota: Se nel modulo non esistono istanze di un determinato sottomodulo, è necessario utilizzare la notazione carattere di sottolineatura (_) fornita con ciascuno degli esempi riportati di seguito. Per ulteriori informazioni sull'utilizzo della notazione con carattere di sottolineatura (_), consultare la Guida di Designer.

Scripting del pulsante Aggiungi nuovo sottomodulo

Lo script seguente determina se sul modulo è presente il numero massimo supportato di istanze Subform3. Se è presente il numero massimo supportato di istanze, lo script visualizza un messaggio. Altrimenti, al modulo viene aggiunta una nuova istanza Subform3.

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

Questo script può essere scritto anche utilizzando la notazione carattere di sottolineatura (_) per fare riferimento alle proprietà e ai metodi di instance manager, come illustrato:

    if (advanced._Subform3.count == advanced._Subform3.max) { 
        xfa.host.messageBox("You have reached the maximum number of items 
        allowed.", "Combining Instance Manager Concepts", 1); 
    } 
    else { 
        advanced._Subform3.addInstance(1); 
        xfa.form.recalculate(1); 
    }

Scripting del pulsante Rimuovi sottomodulo

Lo script seguente determina se sul modulo sono presenti istanze Subform3. In caso negativo, lo script visualizza un messaggio ad indicare che non è presente alcuna istanza. In caso siano presenti istanze, lo script rimuove la prima istanza dal modulo.

    if (advanced.Subform3.instanceManager.count == 0) { 
        xfa.host.messageBox("There are no subform instances to remove.",  
        "Combining Instance Manager Concepts", 1);     
    } 
    else { 
        advanced.Subform3.instanceManager.removeInstance(0); 
    }

Questo script può essere scritto anche utilizzando la notazione carattere di sottolineatura (_) per fare riferimento alle proprietà e ai metodi di instance manager, come illustrato:

    if (advanced._Subform3.count == 0) { 
        xfa.host.messageBox("There are no subform instances to remove.", 
        "Combining Instance Manager Concepts", 1);     
    } 
    else { 
        advanced._Subform3.removeInstance(0); 
    }

Scripting del pulsante Aggiungi istanza sotto

La seguente istruzione if-else impedisce che lo script proceda in caso il modulo contenga attualmente il numero massimo di istanze di Subform3:

    if (Subform3.instanceManager.count < Subform3.instanceManager.occur.max) { 
//oNewInstance stores an instance of Subform3 created by the addInstance() method. 
    var oNewInstance = Subform3.instanceManager.addInstance(1); 
//nIndexFrom and nIndexTo store the before and after index values to use with the moveInstance() method.  
    var nIndexFrom = oNewInstance.index; 
    var nIndexTo = Subform3.index + 1;

In questo caso, quando lo script si riferisce al valore di nIndexFrom, la nuova istanza di Subform3 viene aggiunta al modulo nella posizione specificata dal metodo moveInstance:

        Subform3.instanceManager.moveInstance(nIndexFrom, nIndexTo); 
    } 
    else { 
        xfa.host.messageBox("You have reached the maximum number of items 
        allowed.", "Combining Instance Manager Concepts", 1); 
    }

Questo script può essere scritto anche utilizzando la notazione carattere di sottolineatura (_) per fare riferimento alle proprietà e ai metodi di instance manager, come illustrato:

    if (_Subform3.count < _Subform3.occur.max) { 
    var oNewInstance = _Subform3.addInstance(1); 
    var nIndexFrom = oNewInstance.index; 
    var nIndexTo = Subform3.index + 1; 
    _Subform3.moveInstance(nIndexFrom, nIndexTo); 
    } 
    else { 
    xfa.host.messageBox("You have reached the maximum number of items allowed.",         "Combining Instance Manager Concepts", 1); 
    }

Scripting del pulsante Cancella istanza

La seguente istruzione if-else impedisce che lo script proceda in caso il modulo contenga attualmente il numero minimo di istanze di Subform3:

    if (Subform3.instanceManager.count > Subform3.instanceManager.occur.min) {

Questo script utilizza il metodo removeInstance per rimuovere un'istanza di Subform3.

Nota: Questo script utilizza il valore parent.parent.index per indicare l'istanza Subform3 che deve essere rimossa. Il riferimento parent indica il contenitore dell'oggetto che utilizza il riferimento. In questo caso, utilizzando il riferimento parent.index si indicherebbe il sottomodulo senza titolo contenente i pulsanti Aggiungi istanza sotto, Cancella istanza, Sposta riga in alto e Sposta riga in basso.
        Subform3.instanceManager.removeInstance(parent.parent.index); 
    } 
    else { 
        xfa.host.messageBox("You have reached the minimum number of items 
        allowed.", "Combining Instance Manager Concepts", 1); 
    }

Questo script può essere scritto anche utilizzando la notazione carattere di sottolineatura (_) per fare riferimento alle proprietà e ai metodi di instance manager, come illustrato:

    if (_Subform3.count > _Subform3.occur.min) { 
    Subform3.removeInstance(Subform3.index); 
    } 
    else { 
    xfa.host.messageBox("You have reached the minimum number of items allowed.",  
    "Combining Instance Manager Concepts", 1); 
    }

Scripting del pulsante Sposta riga in alto

La seguente istruzione if-else impedisce che lo script proceda nel caso in cui l'istanza di Subform3 venga visualizzata come prima istanza dell'elenco:

    if (Subform3.index != 0) { 
//nIndexFrom and nIndexTo store the before and after index values to use with the moveInstance method.  
        var nIndexFrom = Subform3.index; 
        var nIndexTo = Subform3.index - 1; 
        Subform3.instanceManager.moveInstance(nIndexFrom, nIndexTo); 
    } 
    else { 
        xfa.host.messageBox("The current item cannot be moved because it is the  
        first instance in the list.", "Combining Instance Manager Concepts", 1); 
    }

Questo script può essere scritto anche utilizzando la notazione carattere di sottolineatura (_) per fare riferimento alle proprietà e ai metodi di instance manager, come illustrato:

    if (Subform3.index != 0) { 
        var nIndexFrom = Subform3.index; 
    var nIndexTo = Subform3.index - 1; 
    Subform3.moveInstance(nIndexFrom, nIndexTo); 
    } 
    else { 
    xfa.host.messageBox("The current item can't be moved since it already is the     first instance in the list.", "Combining Instance Manager Concepts", 1); 
    }

Scripting del pulsante Sposta riga in basso

Questa variabile memorizza il valore di indice dell'istanza di Subform3:

    var nIndex = Subform3.index;

La seguente istruzione if-else impedisce che lo script proceda nel caso in cui l'istanza di Subform3 venga visualizzata come ultima istanza dell'elenco:

    if ((nIndex + 1) < Subform3.instanceManager.count) { 
    // nIndexFrom and nIndexTo store the before and after index values to use with the moveInstance() method.  
        var nIndexFrom = nIndex; 
        var nIndexTo = nIndex + 1; 
     
        Subform3.instanceManager.moveInstance(nIndexFrom, nIndexTo); 
        } 
        else { 
        xfa.host.messageBox("The current item cannot be moved because it is the last 
        instance in the list.", "Combining Instance Manager Concepts", 1); 
        }

Questo script può essere scritto anche utilizzando la notazione carattere di sottolineatura (_) per fare riferimento alle proprietà e ai metodi di instance manager, come illustrato:

    var nIndex = Subform3.index; 
    if ((nIndex + 1) < Subform3.instanceManager.count) { 
    var nIndexFrom = nIndex; 
    var nIndexTo = nIndex + 1; 
    _Subform3.moveInstance(nIndexFrom, nIndexTo); 
    } 
    else { 
    xfa.host.messageBox("The current item can't be moved since it already is the 
    last instance in the list.", "Combining Instance Manager Concepts", 1); 
    }