Teilformulare mit Hilfe der Methoden des Instanzmanagers steuern

Dieses Beispiel demonstriert, wie Sie mit den Methoden des Instanzmanagers (der zum XML Form Object Model gehört) zur Laufzeit Vorgänge für Teilformularobjekte durchführen. Beispielsweise können Sie Instanzen eines bestimmten Teilformulars, einer Tabelle oder einer Tabellenzeile hinzufügen oder entfernen.

Im folgenden Formular verwendet der Formularbenutzer die vier Schaltflächen, um die verschiedenen Skriptmethoden des Instanzmanagers zu einzusetzen. Wenn der Formularbenutzer beispielsweise auf die Schaltfläche "Hinzufügen" klickt, wird dem Formular eine neue Subform2-Instanz hinzugefügt.

Hinweis: Die Schaltfläche "Verschieben" ordnet die ersten beiden Subform2-Instanzen neu an und die Schaltfläche "Einrichten" zeigt die Höchstanzahl der Subform2-Instanzen an. In beiden Fällen müssen Sie möglicherweise Teilformulare hinzufügen oder entfernen oder die Daten in den Textfeldern ändern, um die auf die Subform2-Instanzen angewendeten Änderungen sehen zu können.

Skripten zum Feststellen, ob einem Formular die Höchstanzahl von Teilformularen hinzugefügt wurde

Das folgende Skript ermittelt, ob die maximal unterstützte Anzahl von Subform2-Instanzen bereits im Formular vorhanden ist. Falls ja, wird eine entsprechende Meldung eingeblendet. Falls nein, wird dem Formular eine neue Subform2-Instanz hinzugefügt.

    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); 
}

Sie können dieses Skript auch mit der Unterstrich-Notation (_) schreiben, um die Eigenschaften und Methoden des Instanzmanagers zu referenzieren, wie in diesem Beispiel:

    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); 
}

Skripten zum Feststellen, ob aus dem Formular weitere Teilformulare entfernt werden können

Das folgende Skript ermittelt, ob das Formular Subform2-Instanzen enthält. Falls nein, wird eine entsprechende Meldung eingeblendet. Falls ja, wird die erste Instanz aus dem Formular entfernt.

    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); 
    }

Sie können dieses Skript auch mit der Unterstrich-Notation (_) schreiben, um die Eigenschaften und Methoden des Instanzmanagers zu referenzieren, wie in diesem Beispiel:

    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); 
    }

Skripten zum Festlegen, dass im Formular vier Teilformularinstanzen erscheinen sollen

Das folgende Skript bewirkt, dass im Formular vier Subform2-Instanzen erscheinen, unabhängig davon, wie viele Instanzen zurzeit vorhanden sind:

methods.Subform2.instanceManager.setInstances(4);

Sie können dieses Skript auch mit der Unterstrich-Notation (_) schreiben, um die Eigenschaften und Methoden des Instanzmanagers zu referenzieren, wie in diesem Beispiel:

Methoden._Subform2.setInstances(4);

Skripten zum Vertauschen des ersten und zweiten Teilformulars im Formular

Das folgende Skript weist die erste und zweite Subform2-Instanz an, auf dem Formular die Position zu tauschen.

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

Sie können dieses Skript auch mit der Unterstrich-Notation (_) schreiben, um die Eigenschaften und Methoden des Instanzmanagers zu referenzieren, wie in diesem Beispiel:

Methoden._Subform2.moveInstance(0,1);