FormCalc 参照構文のショートカット

オブジェクトのプロパティに簡単にアクセスできるように、参照を作成する場合に煩雑さを省くためのショートカットが FormCalc に含まれています。このセクションでは、FormCalc の参照構文のショートカットを説明しています。

現在のフィールドまたはオブジェクト

現在のフィールドまたはオブジェクトを参照します。

表記法

$

$ = "Tony Blue"

上の例では現在のフィールドまたはオブジェクトの値を Tony Blue に設定します。

データモデル xfa.datasets.data のルート

データモデル xfa.datasets.data のルートを表します。

表記法

$data

$data.purchaseOrder.total

は、以下と等価です。

xfa.datasets.data.purchaseOrder.total

フォームオブジェクトのイベント

現在のフォームオブジェクトのイベントを表します。

表記法

$event

$event.name

は、以下と等価です。

xfa.event.name

詳しくは、イベントモデルの使用を参照してください。

フォームモデルのルート

フォームモデル xfa.form のルートを表します。

表記法

$form

$form.purchaseOrder.tax

は、次のステートメントと等価です。

xfa.form.purchaseOrder.tax

ホストのオブジェクト

ホストのオブジェクトを表します。

表記法

$host

$host.messageBox("Hello world")

は、以下と等価です。

xfa.host.messageBox("Hello world")

詳しくは、ホストアプリケーションの使用を参照してください。

レイアウトモデルのルート

レイアウトモデル xfa.layout のルートを表します。

表記法

$layout

$layout.ready

は、次のステートメントと等価です。

xfa.layout.ready

データレコードのコレクション

XML ファイルといったデータコレクション内の現在のデータを表します。

表記法

$record

$record.header.txtOrderedByCity

は、txtOrderedByCity ノード(現在の XML データの header ノード内)を参照します。

テンプレートモデルのルート

テンプレートモデル xfa.template のルートを表します。

表記法

$template

$template.purchaseOrder.item

は、以下と等価です。

xfa.template.purchaseOrder.item

xfa.datasets のデータモデルのルート

データモデル xfa.datasets のルートを表します。

表記法

!

!data

は、以下と等価です。

xfa.datasets.data

すべてのフォームオブジェクトを選択

名前と無関係にサブフォームなどの任意のコンテナ内にあるフォームオブジェクトをすべて選択したり、類似の名前を持つオブジェクトをすべて選択したりします。

「*」(アスタリスク)構文は、resolveNode メソッドでは、JavaScript と共に使用できます。

表記法

*

以下の式はフォームに item という名前を持つすべてのオブジェクトを選択します。

xfa.form.form1.item[*]

サブコンテナの一部のオブジェクトの検索

参照構文の任意の場所に 2 つのピリオドを入力すると、現在のコンテナオブジェクトのサブコンテナを構成するオブジェクト(サブフォームなど)を検索できます。

「..」(2 つのピリオド)構文は、resolveNode メソッドでは、JavaScript と共に使用できます。

表記法

..

Subform_Page..Subform2 という式は、(通常どおりに)ノード Subform_Page を検索し、Subform_Page の子孫 Subform2 を検出することを意味します。

上記のサンプルツリーを使用すると、

Subform_Page..TextField2

は、以下と等価です。

Subform_Page.Subform1[0].Subform3.TextField2[0]

これは、TextField2[0] が、FormCalc が検索で遭遇する最初の Subform1 ノードにあるからです。2 つ目の例として、

Subform_Page..Subform3[*]

は、4 つの TextField2 オブジェクトをすべて返します。

名称未設定オブジェクトを示すか、またはプロパティを指定します

番号記号(#)表記は、参照構文で次のいずれかの項目を表します。

  • 名称未設定オブジェクト

  • プロパティとオブジェクトが同じ名前の場合、参照構文でプロパティを指定します。

「#」(番号記号)構文は、resolveNode メソッドでは、JavaScript と共に使用できます。

表記法

#

次の参照構文は名称未設定のサブフォームにアクセスします。

xfa.form.form1.#subform

サブフォームに name という名称のフィールドも含まれている場合、次の参照構文はサブフォームの name プロパティにアクセスします。

xfa.form.form1.#subform.#name

オブジェクトのオカレンス値

角括弧([ ])表記はオブジェクトのオカレンス値を表します。

アラビア語、ヘブライ語、タイ語およびベトナム語に特化したフォームでは、(右から左に表記する言語であっても)参照構文が常に右側にあります。

表記法

[ ]

オカレンス値の参照を作成するには、オブジェクト名の後ろに角括弧([ ])を置き、括弧内に以下のいずれかの値を入れます。

  • [ n ]n は、0 から始まる、オカレンスの絶対インデックス番号です。オカレンス値が範囲外の場合は何も値を返しません。以下に例を示します。

    xfa.form.form1.#subform.Quantity[3]

    は、Quantity オブジェクトの 4 番目のオカレンスを参照します。

  • [ +/- n ]n は、参照を作成するオブジェクトのオカレンスと相対的なオカレンスを示します。正の値を指定するとオカレンス値は大きくなり、負の値を指定するとオカレンス値は小さくなります。以下に例を示します。

    xfa.form.form1.#subform.Quantity[+2]

    この参照では、参照を作成するコンテナのオカレンス値よりもオカレンス値が 2 だけ大きい Quantity の値が出力されます。例えば、この参照を Quantity[2] オブジェクトに追加すると、参照は以下と同じになります。

    xfa.template.Quantity[4]

    計算されたインデックス番号が範囲外の場合は、エラーを返します。

    この構文は、特定のオブジェクトの前または次のオカレンスを検索するときに最も一般的に使用します。例えば、Quantity オブジェクトのオカレンス(1 つ目は除く)はすべて、Quantity[-1] を利用して前の Quantity オブジェクトの値を得ます。

  • [*] はオブジェクトの複数のオカレンスを示します。名前が付いた最初のオブジェクトが検出され、そのオブジェクトの兄弟で同名のオブジェクトが返されます。この表記法を使用すると、オブジェクトのコレクションが返されます。以下に例を示します。

    xfa.form.form1.#subform.Quantity[*]

  • この式は、参照で検出された最初の Quantity の兄弟で、Quantity という名前を持つすべてのオブジェクトを参照します。

上記のツリーを参照した場合、以下の式が返すオブジェクトはそれぞれ次のとおりです。

  • Subform_Page.Subform1[*] は両方の Subform1 オブジェクトを返します。

  • Subform_Page.Subform1.Subform3.TextField2[*] は、2 つの TextField2 オブジェクトを返します。Subform_Page.Subform1 は左側の最初の Subform1 オブジェクトに解決され、TextField2[*]Subform3 オブジェクトを基準にして評価されます。

  • Subform_Page.Subform1[*].TextField1 は両方の TextField1 インスタンスを返します。Subform_Page.Subform1[*] は両方の Subform1 オブジェクトに解決され、TextField1 は、Subform1 オブジェクトを基準にして評価されます。

  • Subform_Page.Subform1[*].Subform3.TextField2[1]returns the second and fourthTextField2objects from the left.Subform_Page.Subform1[*] は両方の Subform1 オブジェクトに解決され、TextField2[1]Subform3 オブジェクトを基準にして評価されます。

  • Subform_Page.Subform1[*].Subform3[*] は両方の Subform3 オブジェクトのインスタンスを返します。

  • Subform_Page.*Subform1 オブジェクトおよび Subform2 オブジェクトを返します。

  • Subform_Page.Subform2.*NumericField2 オブジェクトの 2 つのインスタンスを返します。

  • [ ]」(角括弧)構文は、resolveNode メソッドでは、JavaScript と共に使用できます。