Este exemplo demonstra como usar os métodos do Gerenciador de instâncias (que faz parte do Modelo de objeto de formulário XML) para executar operações nos objetos de subformulários em tempo de execução. Por exemplo, é possível adicionar e remover instâncias de um subformulário, tabela ou linha de tabela específicos.
No formulário a seguir, o usuário usa os quatro botões para acessar os diversos métodos de script do Gerenciador de instâncias. Por exemplo, quando o usuário clica no botão Adicionar, uma nova instância do Subform2 é adicionada ao formulário.
Nota: O botão Mover reorganiza as duas primeiras instâncias do Subform2 e o botão Definir exibe o número máximo de instâncias no Subform2. Em ambos os casos, talvez seja preciso adicionar ou remover subformulários ou fazer alterações nos dados dos campos de texto para visualizar as alterações aplicadas às instâncias do Subform2.
Script para determinar se você adicionou o número máximo de subformulários a um formulário
O script a seguir determina se o número máximo suportado de instâncias do Subform2 consta no formulário. Se houver, o script exibirá uma mensagem. Caso contrário, uma nova instância do Subform2 será adicionada ao formulário.
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);
}
Você também pode gravar esse script usando o underscore (_) para fazer referência às propriedades e aos métodos do Gerenciador de instâncias, da seguinte maneira:
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);
}
Script para determinar se existem mais subformulários a serem removidos do formulário
O script a seguir determina se existe alguma instância do Subform2 no formulário. Se não existir, o script exibirá uma mensagem indicando que não há instâncias. Se existir, o script removerá a primeira instância do formulário.
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);
}
Você também pode gravar esse script usando o underscore (_) para fazer referência às propriedades e aos métodos do Gerenciador de instâncias, da seguinte maneira:
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);
}
Script para forçar a exibição das instâncias de subformulário no formulário
O script a seguir força a exibição de quatro instâncias do Subform2 no formulário independente da quantidade de instâncias existentes no momento:
methods.Subform2.instanceManager.setInstances(4);
Você também pode gravar esse script usando o underscore (_) para fazer referência às propriedades e aos métodos do Gerenciador de instâncias, da seguinte maneira:
methods._Subform2.setInstances(4);
Script para forçar o primeiro e o segundo subformulário a alternar locais no formulário
O script a seguir força a primeira e a segunda instâncias do Subform2 a alternarem os locais no formulário.
methods.Subform2.instanceManager.moveInstance(0,1);
Você também pode gravar esse script usando o underscore (_) para fazer referência às propriedades e aos métodos do Gerenciador de instâncias, conforme exemplo a seguir.
methods._Subform2.moveInstance(0,1);