Dit voorbeeld laat zien hoe u eigenschappen en methoden van Instance Manager gebruikt om informatie over subformulieren op te halen. Ook ziet u hoe u bij uitvoering bewerkingen uitvoert op subformulierobjecten.
In dit voorbeeld kan de invuller van het formulier de knoppen gebruiken om verschillende handelingen uit te voeren op Subform3-exemplaren. Als de invuller bijvoorbeeld op de knop Exemplaar toevoegen onder klikt, wordt onder het huidige exemplaar een Subform3-exemplaar toegevoegd.
Opmerking: wellicht is het nodig om subformulieren toe te voegen of te verwijderen, of moet u de gegevens in het tekstveld aanpassen om de wijzigingen in de Subform3-exemplaren weer te geven.
Opmerking: Als er geen instanties van een bepaalde subformulier bestaan op uw formulier, moet u een liggend streepje (_) gebruiken zoals in de voorbeelden hieronder. Zie Help bij Designer voor meer informatie over het gebruik van het liggend streepje (_).
Een script maken voor de knop Een subformulier toevoegen
Met het volgende script kunt u bepalen of het ondersteunde maximum aantal Subform3-exemplaren op het formulier voorkomt. Als dit het geval is, wordt er een bericht weergegeven. Anders wordt er een Subform3-exemplaar aan het formulier toegevoegd.
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);
}
U kunt in dit script ook een liggend streepje (_) gebruiken om naar de eigenschappen en methoden van Instance Manager te verwijzen, zoals u hier ziet:
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);
}
Een script maken voor de knop Subformulier verwijderen
Met het volgende script wordt bepaald of er Subform3-exemplaren op het formulier voorkomen. Als dit niet het geval is, wordt hiervan melding gemaakt in een bericht. Zijn er wel Subform3-exemplaren, dan wordt het eerste exemplaar van het formulier verwijderd.
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);
}
U kunt in dit script ook een liggend streepje (_) gebruiken om naar de eigenschappen en methoden van Instance Manager te verwijzen, zoals u hier ziet:
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);
}
Een script maken voor de knop Exemplaar toevoegen onder
Met de volgende if-else-instructie wordt voorkomen dat het script wordt voortgezet wanneer het maximum aantal Subform3-exemplaren is gebruikt:
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;
Wanneer het script naar de waarde van nIndexFrom verwijst, wordt het nieuwe Subform3-exemplaar aan het formulier toegevoegd op de positie die wordt aangeduid met de methode moveInstance:
Subform3.instanceManager.moveInstance(nIndexFrom, nIndexTo);
}
else {
xfa.host.messageBox("You have reached the maximum number of items
allowed.", "Combining Instance Manager Concepts", 1);
}
U kunt in dit script ook een liggend streepje (_) gebruiken om naar de eigenschappen en methoden van Instance Manager te verwijzen, zoals u hier ziet:
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);
}
Een script maken voor de knop Dit exemplaar verwijderen
Met de volgende if-else-instructie wordt voorkomen dat het script wordt voortgezet wanneer het minimum aantal Subform3-exemplaren is gebruikt:
if (Subform3.instanceManager.count > Subform3.instanceManager.occur.min) {
In dit script wordt de methode removeInstance gebruikt om een exemplaar van Subform3 te verwijderen.
Opmerking: De waarde parent.parent.index in het script geeft aan welk Subform3-exemplaar moet worden verwijderd. Met de verwijzing parent wordt de container aangeduid van het object dat de verwijzing gebruikt. In dit geval verwijst parent.index naar het naamloze subformulier met de knoppen Exemplaar toevoegen onder, Dit exemplaar verwijderen, Rij omhoog en Rij omlaag.
Subform3.instanceManager.removeInstance(parent.parent.index);
}
else {
xfa.host.messageBox("You have reached the minimum number of items
allowed.", "Combining Instance Manager Concepts", 1);
}
U kunt in dit script ook een liggend streepje (_) gebruiken om naar de eigenschappen en methoden van Instance Manager te verwijzen, zoals u hier ziet:
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);
}
Een script maken voor de knop Rij omhoog
Met de volgende if-else-instructie wordt voorkomen dat het script wordt voortgezet wanneer het Subform3-exemplaar het eerste exemplaar in de lijst is:
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);
}
U kunt in dit script ook een liggend streepje (_) gebruiken om naar de eigenschappen en methoden van Instance Manager te verwijzen, zoals u hier ziet:
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);
}
Een script maken voor de knop Rij omlaag
Met deze variabele wordt de indexwaarde van het Subform3-exemplaar opgeslagen:
var nIndex = Subform3.index;
Met de volgende if-else-instructie wordt voorkomen dat het script wordt voortgezet wanneer het Subform3-exemplaar het laatste exemplaar in de lijst is:
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);
}
U kunt in dit script ook een liggend streepje (_) gebruiken om naar de eigenschappen en methoden van Instance Manager te verwijzen, zoals u hier ziet:
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);
}