Teilformulare mit Hilfe des Instanzmanagers zur Laufzeit steuern

Dieses Beispiel zeigt, wie Sie mit den Eigenschaften und Methoden des Instanzmanagers zur Laufzeit Informationen über Teilformulare abrufen und Vorgänge für Teilformularobjekte durchführen.

In diesem Beispiel verwendet der Formularbenutzer die Schaltflächen, um mit Hilfe von Subform3-Instanzen verschiedene Aktionen auszuführen. Wenn ein Formularbenutzer beispielsweise auf die Schaltfläche "Instanz unten einfügen" klickt, wird unterhalb der aktuellen Instanz eine neue Subform3-Instanz eingefügt.

Hinweis: Möglicherweise ist es erforderlich, Teilformulare hinzuzufügen oder zu entfernen oder die Daten im Textfeld ändern, um die auf die Subform3-Instanzen angewendeten Änderungen sehen zu können.
Hinweis: Wenn keine Instanzen eines bestimmten Teilformulars in Ihrem Formular existieren, müssen Sie die Unterstrich-Notation (_) verwenden (siehe nachfolgende Beispiele). Weitere Informationen zur Verwendung der Unterstrich-Notation (_) finden Sie in der Designer-Hilfe.

Skripten für die Schaltfläche „Neues Teilformular hinzufügen“

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

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

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

Skripten für die Schaltfläche „Teilformular entfernen“

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

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

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 (advanced._Subform3.count == 0) { 
        xfa.host.messageBox("There are no subform instances to remove.", 
        "Combining Instance Manager Concepts", 1);     
    } 
    else { 
        advanced._Subform3.removeInstance(0); 
    }

Skripten für die Schaltfläche „Instanz unten einfügen“

Die folgende if-else-Anweisung verhindert die Fortsetzung des Skriptes, falls das Formular zurzeit die maximal zulässige Anzahl von Subform3-Instanzen enthält:

    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 diesem Fall wird, wenn das Skript den Wert für nIndexFrom referenziert, dem Formular an der von der Methode moveInstance angegebenen Stelle eine neue Instanz von Subform3 hinzugefügt:

        Subform3.instanceManager.moveInstance(nIndexFrom, nIndexTo); 
    } 
    else { 
        xfa.host.messageBox("You have reached the maximum number of items 
        allowed.", "Combining Instance Manager Concepts", 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 (_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); 
    }

Skripten für die Schaltfläche „Diese Instanz löschen“

Die folgende if-else-Anweisung verhindert die Fortsetzung des Skriptes, falls das Formular zurzeit die mindestens erforderliche Anzahl von Subform3-Instanzen enthält:

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

Dieses Skript entfernt mit Hilfe der Methode removeInstance eine Instanz von Subform3.

Hinweis: Dieses Skript gibt mit dem Wert parent.parent.index an, welche Subform3-Instanz entfernt werden muss. Die parent-Referenz bezeichnet den Container des Objekts, das die Referenz verwendet. In diesem Fall würde die Referenz parent.index das unbenannte Teilformular bezeichnen, das die Schaltflächen „Instanz unten einfügen“, „Diese Instanz löschen“, „Eine Zeile nach oben“ und „Eine Zeile nach unten“ enthält.
        Subform3.instanceManager.removeInstance(parent.parent.index); 
    } 
    else { 
        xfa.host.messageBox("You have reached the minimum number of items 
        allowed.", "Combining Instance Manager Concepts", 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 (_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); 
    }

Skripten für die Schaltfläche „Eine Zeile nach oben“

Die folgende if-else-Anweisung verhindert die Fortsetzung des Skriptes, falls die Instanz von Subform3 als erste Instanz in der Liste aufgeführt wird:

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

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

Skripten für die Schaltfläche „Eine Zeile nach unten“

Diese Variable speichert den Indexwert der Subform3-Instanz:

    var nIndex = Subform3.index;

Die folgende if-else-Anweisung verhindert die Fortsetzung des Skriptes, falls die Instanz von Subform3 als letzte Instanz in der Liste aufgeführt wird:

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

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

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