4 返信 最新の回答 日時: Oct 9, 2015 12:52 AM ユーザー:jasming

    GUI実行時のモーダルダイアログエラー

    jasming Level 1

      CC2015、ESTK使用です。

       

      数値を指定する単純なGUIを作成し、onClickのイベントで関数を呼び出して自動処理をしたいと考えています。

      関数内では新たにドキュメントを作成し、それをGUIでの指定回数ページやテキストフレームを追加するのですが、

      「モーダルダイアログまたは警告がアクティブなために、要求された操作を処理できません」とエラーが発生します。

      ステップで確認したところ、呼びだされた関数の最初の「docobj = app.documents.add()」で上記エラーが出るようです。

       

      ダイアログが消えていないのがまずいのかと思い、関数の冒頭にcloseを挟んでも結果は変わりませんでした。

      app~addはダメですが、alert等は関数内でも問題ないのでここがダメなのはわかるのですが・・・

      (なお、関数自体はjsx内で数値を指定して実行する分には想定通りの動作はしています)

       

      どなたかご指摘よろしくお願いいたします。

        • 1. Re: GUI実行時のモーダルダイアログエラー
          ryusei kouki Level 3

          > どなたかご指摘よろしくお願いいたします。

           

          コーディングの質問で、ソースコードの一部分を切り取って書き込んで頂いたようですが、

          全体が見えない中、どのように書いているのかが分からない状態でのお返事になりますので、ご了承下さい。

           

          数ヶ月前、別の掲示板で上がった内容に似ておりますので、

          InD-Boardを、ご確認ください。解決に至れば良いのですが。

           

          > docobj = app.documents.add()

          var を付けていますか? またどこか別の行で宣言しておられますか?

          スコープという概念がありまして、グローバル変数 にするか ローカル変数 にするかということです。

          • 2. Re: GUI実行時のモーダルダイアログエラー
            jasming Level 1

            //----------テキストフレーム追加GUI----------//

            var dlg = new Window('dialog','サンプルGUI',[100,300,500,600]);

            dlg['item0'] = dlg.add('panel',[10,10,160,170,],'ページ設定');

            dlg['item1'] = dlg.add('statictext',[20,95,80,125,],' 余白上');

             

            //数値を関数へ、return使用?

            var item6 = dlg.add('edittext',[20,120,80,150,],'20');

            var call_func = dlg.add('button',[200,200,290,250,],'入力完了');

             

            //----------イベント----------//

            call_func.onClick = function (){

                frame_repeat();

            }

            dlg.center();

            dlg.show();

             

            //----------関数----------//

            function frame_repeat(){

                docobj = app.documents.add();

                app.documentPreferences.pageWidth = '210mm';

                app.documentPreferences.pageHeight = '297mm';

             

                //iem6の入力を反映(とりあえず左辺のみ)

                var left = parsrInt(item6.txt)

                var height = 20

                var width = 170

                var f_height = 26

                var dankan = 5

                var dan= 8

                var page = 3

                var done_flag = ""

             

                //指定ページ数処理

                for (p = 0 ; p < page ; p++){

                    app.activeDocument.pages.add(1701733408);

                    app.activeDocument.documentPreferences.facingPages = false;

             

                    //指定段数処理

                    for ( i=0 ; i < dan ; i++){

                        tfobj = app.activeDocument.pages[p].textFrames.add();

                        tfobj.parentStory.storyPreferences.storyOrientation = HorizontalOrVertical.vertical ;

                   

                        y1 = height + (i * (f_height +dankan));

                        y2 = y1 + f_height;

                        x1 = left;

                        x2 = x1 + width

                        tfobj.geometricBounds = [y1,x1,y2,x2];

             

                        //初回のみ処理をスキップ

                        if ( done_flag != ''){

                            tf_old.nextTextFrame = tfobj

                        }

                        done_flag = 'done';

                        tf_old = tfobj;

                        tf_old.parentStory.storyPreferences.frameType = FrameTypes.FRAME_GRID_TYPE

                    }

                }

            //余った最終ページを削除

            app.activeDocument.pages[page].remove();

            }

            • 3. Re: GUI実行時のモーダルダイアログエラー
              ryusei kouki Level 3

              ご確認ありがとうございます。

               

              > コードの不要部分を削除して貼付しますので、この辺りを直せというご指摘いただけるとありがたいです。

               

              InDesignのScriptだとコードから解釈できましたので、

              #target indesign

              #targetengine "test.20151008"

              を先頭に追加しました。この辺りは適切に書き換えて下さい。

               

              大きくコードを変更せずに動かそうとするならば、提示されたコードの

              var dlg = new Window('dialog','サンプルGUI',[100,300,500,600]);

              var dlg = new Window('palette','サンプルGUI',[100,300,500,600]);

              に書き換えますと、動くようになります。

              ※モーダルダイアログではない状態にしてしまえば、このエラーは解決できます。安直ですけど…

              • 4. Re: GUI実行時のモーダルダイアログエラー
                jasming Level 1

                早速のご指摘ありがとうございました。

                paletteに変更しての動作確認しました。

                GUIとしての役割のみ期待していましたので、エラーがでなければそれだけで十分です。