Este exemplo demonstra como usar as propriedades e os métodos do Gerenciador de instâncias para recuperar informações sobre subformulários e executar operações em objetos de subformulário em tempo de execução.
Nesse exemplo, o usuário usa os botões para executar diversas ações usando instâncias do Subform3. Por exemplo, quando o usuário clica no botão Adicionar linha abaixo, uma nova instância do Subform3 é adicionada abaixo da instância atual.
Nota: Talvez seja necessário adicionar ou remover subformulários ou fazer alterações de dados no campo de texto para visualizar as alterações aplicadas às instâncias do Subform3.
Nota: Se nenhuma instância de um determinado subformulário existir no seu formulário, você deverá usar a notação sublinhado (_) fornecida com cada exemplo a seguir. Para obter mais informações sobre como usar a notação sublinhado (_), consulte a Ajuda do Designer.
Script do botão Adicionar novo subformulário
O script a seguir determina se o número máximo suportado de instâncias do Subform3 consta no formulário. Se houver, o script exibirá uma mensagem. Caso contrário, uma nova instância do Subform3 será adicionada ao formulário.
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);
}
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 (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 do botão Remover subformulário
O script a seguir determina se existe alguma instância do Subform3 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 (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);
}
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 (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 do botão Adicionar instância abaixo
A declaração if-else a seguir evitará que o script continue seu processo se o formulário tiver o número máximo de instâncias do 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;
Nesse caso, quando o script fizer referência ao valor nIndexFrom, a nova instância do Subform3 será adicionada ao formulário na posição especificada no método moveInstance:
Subform3.instanceManager.moveInstance(nIndexFrom, nIndexTo);
}
else {
xfa.host.messageBox("You have reached the maximum number of items
allowed.", "Combining Instance Manager Concepts", 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 (_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 do botão Excluir esta instância
A declaração if-else a seguir evitará que o script continue seu processo se o formulário tiver o número mínimo de instâncias do Subform3.
if (Subform3.instanceManager.count > Subform3.instanceManager.occur.min) {
Esse script usa o método removeInstance para remover uma instância do Subform3.
Nota: Esse script usa o valor parent.parent.index para indicar a instância do Subform3 a ser removida. A referência parent indica o contêiner do objeto usando a referência. Nesse caso, o uso da referência parent.index indica o subformulário sem nome que contém os botões Adicionar instância abaixo, Excluir esta instância, Mover linha para cima e Mover linha para baixo.
Subform3.instanceManager.removeInstance(parent.parent.index);
}
else {
xfa.host.messageBox("You have reached the minimum number of items
allowed.", "Combining Instance Manager Concepts", 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 (_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 do botão Mover linha para cima
A declaração if-else a seguir evitará que o script continue seu processo se a instância do Subform3 aparecer como a primeira instância na lista:
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);
}
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 (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 do botão Mover linha para baixo
Essa variável armazena o valor de índice da instância do Subform3:
var nIndex = Subform3.index;
A declaração if-else a seguir evitará que o script continue seu processo se a instância do Subform3 aparecer como a última instância na lista:
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);
}
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:
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);
}