この例は、(XML フォームオブジェクトモデルに含まれる)インスタンスマネージャーのメソッドを使用して、実行時にサブフォームオブジェクトで操作を行う方法を示しています。例えば、特定のサブフォーム、テーブルまたはテーブル行のインスタンスを追加および削除できます。
次のフォームには、フォームの入力者がインスタンスマネージャーの様々なスクリプティングメソッドを使用するための 4 つのボタンが用意されています。例えば、フォームの入力者が「追加」ボタンをクリックすると、新しい Subform2 のインスタンスがフォームに追加されます。
注意: 「移動」ボタンは Subform2 の最初の 2 つのインスタンスの順序を変更し、「設定」ボタンは Subform2 のインスタンスの最大数を表示します。どちらの場合も、サブフォームを追加または削除するか、テキストフィールド内のデータを変更して、Subform2 のインスタンスに適用されたその変更を確認する必要がある可能性があります。
最大数のサブフォームをフォームに追加したかどうかを判断するためのスクリプティング
次のスクリプトでは、サポートされている最大数の Subform2 のインスタンスがフォームに存在するかどうかを判断します。最大数のインスタンスが存在する場合は、スクリプトによってメッセージが表示されます。それ以外の場合は、新しい Subform2 のインスタンスがフォームに追加されます。
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);
}
次に示すように、アンダースコア(_)を使用してインスタンスマネージャーのプロパティとメソッドを参照することにより、このスクリプトを記述することもできます。
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);
}
削除するサブフォームがフォームに存在するどうかを判断するためのスクリプティング
次のスクリプトでは、Subform2 のインスタンスがフォームに存在するかどうかを判断します。インスタンスが存在しない場合は、そのことを示すメッセージがスクリプトによって表示されます。インスタンスが存在する場合は、スクリプトによって最初のインスタンスがフォームから削除されます。
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);
}
次に示すように、アンダースコア(_)を使用してインスタンスマネージャーのプロパティとメソッドを参照することにより、このスクリプトを記述することもできます。
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);
}
4 つのサブフォームのインスタンスを強制的にフォームに表示するためのスクリプティング
次のスクリプトでは、現在のインスタンス数に関係なく、4 つの Subform2 のインスタンスを強制的にフォームに表示します。
methods.Subform2.instanceManager.setInstances(4);
次に示すように、アンダースコア(_)を使用してインスタンスマネージャーのプロパティとメソッドを参照することにより、このスクリプトを記述することもできます。
methods._Subform2.setInstances(4);
フォーム上の最初と 2 つ目のサブフォームの位置を強制的に切り替えるためのスクリプティング
次のスクリプトでは、フォーム上の最初と 2 つ目の Subform2 のインスタンスの位置を強制的に切り替えます。
methods.Subform2.instanceManager.moveInstance(0,1);
次に示すように、アンダースコア(_)を使用してインスタンスマネージャーのプロパティとメソッドを参照することにより、このスクリプトを記述することもできます。
methods._Subform2.moveInstance(0,1);