7 返信 最新の回答 日時: Nov 20, 2006 2:04 PM ユーザー:(samsam)

    配列の参照ができません。

      WindowsXPでDesigner7.0を使っています。

      フォームにフィールドをコピーペーストして貼り付けると、フィールド名がTextField1[0]のように表示されていましたので、
      値を参照するため「TextField1[0].access」のように「フィールド名[nnn].***」の形で記述したのですが、PDFプレビューすると、「TextField1[0]に はプロパティがありません。」
      というエラーメッセージがでて実行されません。

      ヘルプを見ると、上記の形で参照ができるようなのですが、、、
      どなたかおしえていただけますでしょうか?
        • 1. Re: 配列の参照ができません。
          Level 1
          Adobe Designerはインストールしただけで未使用状態なので、見当違いも大いにあり。

          わかりづらいので、[ファイル/新規/テンプレートを使用]から適当なテンプレートを使って説明できませんか?

          > TextField1[0].access

          こういう宣言は敢えて必要かな?
          これはprotectedとかreadOnlyにしたいとき、あるいはそれから変更してデフォルトのopenにする時だけにすればよいのでは?
          デフォルトがopenだから最初は参照できると思うが。

          > フォームにフィールドをコピーペーストして貼り付けると、フィールド名がTextField1[0]のように表示されていましたので、

          名前が同じなものを配列で区別していると思う。よって、コピーされたものはTextField1[1]という具合になるのでは?

          参考までに、以下のところに「FormCalc ユーザリファレンス」というPDF文書がある(Windowsの場合)。

          C:¥Program Files¥Adobe¥Acrobat 7.0¥Designer 7.0¥Documentation¥JA¥FormCalc.pdf
          本マニュアルの内容:
          これは、Designer を使用し、FormCalc 演算をフォームに組み込みたいと考えているフォーム開発者向けのガイドです。このガイドは FormCalc 関数のリファレンスであり、関数の分類に従って章別に編成されています。また、FormCalc 言語と、FormCalc の式を構成する構築ブロックの概要について説明しています。
          • 2. Re: 配列の参照ができません。
            Level 1
            undefined
            • 3. Re: 配列の参照ができません。
              Level 1
              メッセージ、ありがとうございました。

              FormCalcではなく、JavaScriptでスクリプトを書いています。

              具体的には、チェックボックスがチェックされたら、複数のTextFieldへの入力を許可/拒否するような処理を追加したいと考えています。

              for(i=0;i<20;i++){
                TextField[i].access="open";
              }
              というような感じで処理をしたいのです。

              ところが、どうしても、TextField[i].access のところでエラーが発生してしまいます。
              TextField[0].access="open"としても同じでした。
              • 4. Re: 配列の参照ができません。
                Level 1
                いまどのように作り上げているかを書かないと、どこに問題があるかわからないでしょう。

                新規作成から一番単純な例で説明してください。

                本当に作成手順に問題がないのかを確認する必要があるでしょう。
                ボタンをクリックするとメッセージが出るというような一番簡単なものはすでに出来るということでしょうか?
                • 5. Re: 配列の参照ができません。
                  Level 1
                  次のようなFormで試してみました。

                  新規Form上に、TextField1[0]、TextField1[1]、CheckBox1の3つのオブジェクトを用意しました。

                  CheckBox1のchangeイベントに次のようなスクリプト(JavaScript)を準備しました。
                  ---form1.#subform[0].CheckBox1::change - (JavaScript, client) ---
                  TextField1[0].access="readOnly";
                  TextField1[1].access="readOnly";

                  PDFでプレビューし、ボタンをクリックすると、次のようなエラーがでます。
                  TypeError: TextField1[0] has no properties
                  1:XFA:form1[0].#subform[0].CheckBox1[0]:change

                  どうぞ、よろしくお願いします。
                  • 6. Re: 配列の参照ができません。
                    Level 1
                    米国のユーザフォーラムに同じような書込みがありました。それによると、

                    NG:
                    TextField1[0].access="readOnly";
                    TextField1[1].access="readOnly";
                    OK:
                    TextField1.all.item(0).access="readOnly";
                    TextField1.all.item(1).access="readOnly";

                    お騒がせしてすみませんでした。
                    いろいろありがとうございました。
                    • 7. Re: 配列の参照ができません。
                      WindowsXPでDesigner7.0を使っています。

                      配列の参照についてですが、Robinsonさんの書込みを参照しましたが、旨くいきません。

                      新規Form上に、TextField1[0]、TextField1[1]、Button1の3つのオブジェクトを用意しました。

                      ----form1.#subform[0].Button1::click ----(JavaScript, client)

                      if ((textfiled1.rawValue == null) || (textfiled1.rawValue == "")) {
                      app.alert("Please enter a value in the textfield.");
                      xfa.resolveNode("textfiled1.ui.#textEdit.border.edge").stroke = "solid";
                      xfa.resolveNode("textfiled1.ui.#textEdit.border.fill.color").value = "255,100,50";
                      }

                      上記の場合、ボタンクリックで、textfiled1[0]が色が変わりますが、
                      textfiled1 →textfiled1[0]もしくは、textfiled1[1]に変えると
                      色が変わらなくなり、配列が参照出来きません。
                      どこがおかしいのでしょうか?

                      どうぞ宜しくお願いします。