この例は、フォームの印刷時にボタンを非表示にする方法、および実行時に配置の値を変更してオブジェクトの表示と非表示を切り替える方法を示しています。
注意: ツールメニューのアクションビルダーダイアログボックスを使用すると、スクリプトを記述しないで、編集可能なレイアウトを含むフォームのオブジェクトの表示と非表示を切り替えることができます。詳しくは、「
フォームのアクションの作成」を参照してください。
この例では、フォームのすべてのオブジェクトがフォーム内に表示されています。
フォームの入力者は、「実際の値」領域のコンボボックスを使用してオブジェクトの表示と非表示を切り替えることができます。次のダイアグラムでは、「住所」フィールドが非表示になっており、フォームのレイアウトがそれに合わせて調整されています。また、「フォームを印刷」ボタンも表示されていません。
注意: 実行時にオブジェクトの表示と非表示を切り替えるには、Acrobat ダイナミック PDF フォームファイルとしてフォームを保存する必要があります。
このスクリプティング例とその他の情報については、LiveCycle デベロッパーセンターを参照してください。
サブフォームの配置の値のスクリプティング
サブフォームの配置の値のスクリプトでは、switch ステートメントを使用して、フォームの入力者がサブフォームオブジェクトに適用できる 3 つの配置オプションを処理します。
switch(xfa.event.newText) {
case 'Invisible':
Subform1.presence = "invisible";
break;
case 'Hidden (Exclude from Layout)':
Subform1.presence = "hidden";
break;
default:
Subform1.presence = "visible";
break;
}
テキストフィールドの配置の値のスクリプティング
テキストフィールドの配置の値のスクリプトには 2 つの変数が必要です。1 つ目の変数は、Subform1 に格納されるオブジェクトの数を保存します。
var nSubLength = Subform1.nodes.length;
2 つ目の変数は、フォームの入力者が「テキストフィールド」コンボボックスで選択するテキストフィールドの名前を保存します。
var sSelectField = fieldList.rawValue;
次のスクリプトでは、replace メソッドを使用して、sSelectField 変数に保存されているフィールドの名前からスペースをすべて削除します。これにより、コンボボックスの値を階層パレットのオブジェクトの名前に一致させることができます。
sSelectField = sSelectField.replace(' ', '');
次のスクリプトでは、For ループを使用して、Subform1 に格納されているすべてのオブジェクトを繰り返し処理します。
for (var nCount = 0; nCount < nSubLength; nCount++) {
Subform1 の現在のオブジェクトのタイプが field で、フォームの入力者が選択したオブジェクトと現在のオブジェクトの名前が同じである場合は、次の switch の case が実行されます。
if ((Subform1.nodes.item(nCount).className == "field") & (Subform1.nodes.item(nCount).name == sSelectField)) {
次のスクリプトでは、switch ステートメントを使用して、フォームの入力者がテキストフィールドオブジェクトに適用できる 3 つの配置の値を処理します。
switch(xfa.event.newText) {
case 'Invisible':
Subform1.nodes.item(nCount).presence = "invisible";
break;
case 'Hidden (Exclude from Layout)':
Subform1.nodes.item(nCount).presence = "hidden";
break;
default:
Subform1.nodes.item(nCount).presence = "visible";
break;
}
}
}
ボタンの配置の値のスクリプティング
ボタンの配置の値のスクリプトには 2 つの変数が必要です。次の変数は、Subform1 に格納されるオブジェクトの数を保存します。
var nSubLength = Subform1.nodes.length;
次の変数は、フォームの入力者が「ボタン」コンボボックスで選択するボタンの名前を保存します。
var sSelectButton = buttonList.rawValue;
次のスクリプトでは、replace メソッドを使用して、sSelectField 変数に保存されているボタンの名前からスペースをすべて削除します。これにより、コンボボックスの値を階層パレットのオブジェクトの名前に一致させることができます。
sSelectButton = sSelecButton.replace(/¥s/g, '');
次のスクリプトでは、For ループを使用して、Subform1 に格納されているすべてのオブジェクトを繰り返し処理します。
for (var nCount = 0; nCount < nSubLength; nCount++) {
Subform1 の現在のオブジェクトのタイプが field で、フォームの入力者が選択したオブジェクトと現在のオブジェクトの名前が同じである場合は、次の switch の case を実行します。
if ((Subform1.nodes.item(nCount).className == "field") &
Subform1.nodes.item(nCount).name == sSelectButton)) {
次のスクリプトでは、switch ステートメントを使用して、フォームの入力者がボタンオブジェクトに適用できる 5 つの配置の値を処理します。
注意: relevant プロパティは、フォームの印刷時にオブジェクトを表示する必要があるかどうかを示します。
switch(xfa.event.newText) {
case 'Invisible':
Subform1.nodes.item(nCount).presence = "invisible";
break;
case 'Hidden (Exclude from Layout)':
Subform1.nodes.item(nCount).presence = "hidden";
break;
case 'Visible (but Don\'t Print)':
Subform1.nodes.item(nCount).presence = "visible";
Subform1.nodes.item(nCount).relevant = "-print";
break;
case 'Invisible (but Print Anyway)':
Subform1.nodes.item(nCount).presence = "invisible";
Subform1.nodes.item(nCount).relevant = "+print";
break;
default:
Subform1.nodes.item(nCount).presence = "visible";
break;
}
}
}
コンボボックスのリセットのためのスクリプティング
すべてのコンボボックスをデフォルト値にリセットするには、resetData メソッドを使用します。
xfa.host.resetData();
フォームデザインとフォームデータを再結合するには、remerge メソッドを使用します。この場合、このメソッドはフォームオブジェクト領域のオブジェクトを効率的に元の状態に戻します。
xfa.form.remerge();