Använda instanshanteraren för att kontrollera delformulär under körning

Det här exemplet visar hur du kan använda instanshanterarens egenskaper och metoder för att utföra åtgärder på delformulärsobjekt under körning.

I det här exemplet utnyttjar formuläranvändaren knapparna för att genomföra olika åtgärder med instanser av Subform3. När formuläranvändaren t ex klickar på knappen för att lägga till en ny rad nedanför läggs en ny Subform3-instans till under den aktuella instansen.

Obs! Du kan behöva lägga till och ta bort delformulär, eller redigera informationen i textfältet för att se ändringarna som tillämpats på Subform3-instanserna.
Obs! Om inga instanser finns för ett visst delformulär i ditt formulär är du tvungen att använda understreckbeteckningen (_) som visas i exemplen nedan. Mer information om understreckbeteckningen (_) finns i Designer-hjälpen.

Skript för knappen Lägg till ett nytt delformulär

Följande skript fastställer om formuläret innehåller det maximala antalet Subform3-instanser. Om det maximala antalet föreligger visas ett meddelande. I annat fall läggs en ny Subform3-instans till i formuläret.

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

Du kan även skriva det här skriptet genom att använda understrykning (_) för att referera till instanshanterarens egenskaper och metoder, så som visas här:

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

Skript för knappen Ta bort ett delformulär

Följande skript fastställer om formuläret innehåller någon Subform3-instans. Om det inte finns någon visar skriptet ett meddelande som indikerar att det inte finns några instanser. Om det finns instanser tar skriptet bort den första från formuläret.

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

Du kan även skriva det här skriptet genom att använda understrykning (_) för att referera till instanshanterarens egenskaper och metoder, så som visas här:

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

Skript för knappen Lägg till instans nedan

Följande if-else-uttryck förhindrar att skriptet fortsätter om formuläret redan innehåller det maximala antalet Subform3-instanser:

    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;

När skriptet i det här fallet refererar till värdet för nIndexFrom, läggs den nya instansen av Subform3 till i formuläret i den position som anges i metoden moveInstance :

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

Du kan även skriva det här skriptet genom att använda understrykning (_) för att referera till instanshanterarens egenskaper och metoder, så som visas här:

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

Skript för knappen Ta bort den här instansen

Följande if-else-uttryck förhindrar att skriptet fortsätter om formuläret redan innehåller minimiantalet Subform3-instanser:

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

Det här skriptet använder metoden removeInstance för att ta bort en instans av Subform3.

Obs! Det här skriptet använder värdet removeInstance för att indikera den instans av Subform3 som ska tas bort. Den överordnade referensen indikerar behållaren för det objekt som använder referensen. När du i det här fallet använder referensen parent.index indikeras ett namnlöst delformulär som innehåller knapparna Lägg till instans nedan, Ta bort den här instansen, Flytta rad uppåt och Flytta rad nedåt.
        Subform3.instanceManager.removeInstance(parent.parent.index); 
    } 
    else { 
        xfa.host.messageBox("You have reached the minimum number of items 
        allowed.", "Combining Instance Manager Concepts", 1); 
    }

Du kan även skriva det här skriptet genom att använda understrykning (_) för att referera till instanshanterarens egenskaper och metoder, så som visas här:

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

Skript för knappen Flytta rad uppåt

Följande if-else-uttryck förhindrar att skriptet fortsätter om Subform3-instansen visas som den första instansen i listan:

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

Du kan även skriva det här skriptet genom att använda understrykning (_) för att referera till instanshanterarens egenskaper och metoder, så som visas här:

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

Skript för knappen Flytta rad nedåt

Den här variabeln lagrar indexvärdet för subform3-instansen:

    var nIndex = Subform3.index;

Följande if-else-uttryck förhindrar att skriptet fortsätter om Subform3-instansen visas som den sista instansen i listan:

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

Du kan även skriva det här skriptet genom att använda understrykning (_) för att referera till instanshanterarens egenskaper och metoder, så som visas här:

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