Utilisation du gestionnaire d’instances pour contrôler les sous-formulaires au moment de l’exécution

Cet exemple vous montre comment utiliser les propriétés et les méthodes du gestionnaire d’instances pour récupérer les informations concernant les sous-formulaires et effectuer des opérations sur les objets de sous-formulaire au moment de l’exécution.

Dans cet exemple, l’utilisateur utilise les boutons pour exécuter diverses actions à l’aide des instances de Subform3. Par exemple, lorsque l’utilisateur clique sur le bouton d’ajout d’une rangée au-dessous, une nouvelle instance Subform3 est ajoutée sous l’instance actuelle.

Remarque : vous devez ajouter ou supprimer des sous-formulaires ou effectuer des modifications au niveau des données dans les champs de texte pour que les modifications soient appliquées aux instances Subform3.
Remarque : s’il n’existe aucune instance d’un sous-formulaire donné sur votre formulaire, utilisez le trait de soulignement (_) comme indiqué dans les exemples suivants. Pour plus d’informations sur l’utilisation du trait de soulignement (_), voir l’aide de Designer.

Script pour le bouton d’ajout d’un nouveau sous-formulaire

Le script suivant détermine si le nombre maximal d’instances de Subform3 pris en charge se trouve sur le formulaire. Si c’est le cas, le script affiche un message. Dans le cas contraire, la nouvelle instance de Subform3 est ajoutée au formulaire.

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

Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du gestionnaire d’instances, comme indiqué ci-après :

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

Script pour le bouton de suppression d’un sous-formulaire

Le script suivant détermine s’il existe une instance Subform3 sur le formulaire. S’il n’en existe pas, le script affiche un message indiquant qu’aucune instance n’existe. S’il existe des instances, le script supprime la première instance du formulaire.

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

Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du gestionnaire d’instances, comme indiqué ci-après :

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

Script pour le bouton d’ajout d’une instance au-dessous

L’instruction if-else suivante évite que le script soit traité si le formulaire contient actuellement le nombre maximal d’instances 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;

Dans ce cas, lorsque le script référence la valeur de nIndexFrom, la nouvelle instance de Subform3 est ajoutée au formulaire à l’emplacement spécifié dans la méthode moveInstance :

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

Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du gestionnaire d’instances, comme indiqué ci-après :

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

Script pour le bouton de suppression de l’instance active

L’instruction if-else suivante évite que le script soit traité si le formulaire contient actuellement le nombre minimal d’instances Subform3 :

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

Ce script utilise la méthode removeInstance pour supprimer une instance de Subform3.

Remarque : ce script utilise la valeur parent.parent.index pour indiquer l’instance de Subform3 à supprimer. La référence parent indique le conteneur de l’objet qui utilise la référence. Dans ce cas, l’utilisation de la référence parent.index indique le sous-formulaire sans titre qui contient les boutons d’ajout d’une instance au-dessous, de suppression de l’instance active, de déplacement de rangées vers le haut et de déplacement de rangées vers le bas.
        Subform3.instanceManager.removeInstance(parent.parent.index); 
    } 
    else { 
        xfa.host.messageBox("You have reached the minimum number of items 
        allowed.", "Combining Instance Manager Concepts", 1); 
    }

Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du gestionnaire d’instances, comme indiqué ci-après :

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

Script pour le bouton de déplacement des rangées vers le haut

L’instruction if-else suivante évite que le script soit traité si l’instance de Subform3 s’affiche comme la première instance dans la liste :

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

Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du gestionnaire d’instances, comme indiqué ci-après :

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

Script pour le bouton de déplacement des rangées vers le bas

Cette variable stocke la valeur de l’index de l’instance de Subform3 :

    var nIndex = Subform3.index;

L’instruction if-else suivante évite que le script soit traité si l’instance de Subform3 s’affiche comme la dernière instance dans la liste :

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

Vous pouvez également écrire ce script en utilisant un trait de soulignement (_) pour référencer les propriétés et les méthodes du gestionnaire d’instances, comme indiqué ci-après :

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