Skip to main content
December 23, 2020
Question

scriptUIパネルのキー入力無効化

  • December 23, 2020
  • 3 replies
  • 652 views

illustratorのscriptUIを使ってpanel(常に表示しておくタイプ)を作成したのですが、

スペースキーを押すと選択しているエリアのボタンが、勝手に動作してしまいます。

キー入力を無効にすることは可能でしょうか?

This topic has been closed for replies.

3 replies

Ten A
Community Expert
Community Expert
December 23, 2020

再度showした時にpaletteのactiveプロパティをfalseにするとどうでしょう?

December 24, 2020
mainDlg.active = falseを追加したらいけました。
助かりました。ありがとうございます。
Ten A
Community Expert
Community Expert
December 23, 2020

バタバタして良いのなら各ボタンonClickでmainDlgをcloseしてから再度showするとか…

ajabon grinsmith
Community Expert
Community Expert
December 23, 2020

いけてますね。

var mainDlg;
mainDlg=new Window('palette', 'test' , [0, 0, 181, 234]);
mainDlg.center();
setBtn=mainDlg.add('button' , [123, 26, 165, 49] , 'セット');
stText=mainDlg.add('statictext' , [28.5, 31, 98.5, 49] , '未選択' , {multiline : false});
mainDlg.add('panel' , [10, 59, 170, 102] , '垂直方向');
var grpV=mainDlg.add('group' , [10, 59, 170, 102] );
var dlgRB_V = {};
dlgRB_V["T"]=grpV.add('radiobutton' , [15, 18, 45, 36] , '上');
dlgRB_V["C"]=grpV.add('radiobutton' , [49, 18, 79, 36] , '中');
dlgRB_V["B"]=grpV.add('radiobutton' , [83, 18, 113, 36] , '下');
dlgRB_V["N"]=grpV.add('radiobutton' , [117, 18, 147, 36] , '無');
applyBtn=mainDlg.add('button' , [10, 206, 60, 226] , '実行' , {name: 'ok'});

setBtn.onClick = function(){
    alert("set");
    duscess();
    }

applyBtn.onClick = function(){
    alert("aply");
    duscess();
    }

function duscess(){
    mainDlg.close();
    mainDlg.show();
    }
mainDlg.show();

 

あと、ものがPaletteなのでapplyBtnの{name: 'ok'} は当初から機能していないようです。

 

関係ないですが自分のスレッド発掘しましたw よろしければこちらも

https://community.adobe.com/t5/indesign/how-to-keep-edittext-active-after-an-event-on-cc/m-p/11544095?page=1#M401104

ajabon grinsmith
Community Expert
Community Expert
December 23, 2020

これ、ご使用のOSやIllustratorのバージョンを明記いただくのが必須な案件ですね。

ScriptUIはCC2015、CC2019と節目ごとに挙動が怪しくなってきてますが、

2020でエレメントの表示が逆順になったりと、かなり要注意な感じになってきています。

差し支えなければボタンをWindowオブジェクト直下に配置する(Groupなどに入れない)、

CEPエクステンションへの移行を検討するなど必要かもしれません。

とりあえずは、バージョンがわからない、コードの開示がないとなんも言えません。

December 23, 2020

ありがとうございます。

OS 10.11.6

CS6で進めていましたが、試しにCC2018でやっても同じ現象です。

CC2018だと文字が切れてたりしますが、とりあえず簡略版ソースです。

セットボタンや実行ボタンを押した後にスペースキーを押すと各々直近に使用したボタンがが反応します。

 

var mainDlg;
mainDlg=new Window('palette', 'test' , [0, 0, 181, 234]);
mainDlg.center();
setBtn=mainDlg.add('button' , [123, 26, 165, 49] , 'セット');
stText=mainDlg.add('statictext' , [28.5, 31, 98.5, 49] , '未選択' , {multiline : false});
mainDlg.add('panel' , [10, 59, 170, 102] , '垂直方向');
var grpV=mainDlg.add('group' , [10, 59, 170, 102] );
dlgRB_V["T"]=grpV.add('radiobutton' , [15, 18, 45, 36] , '上');
dlgRB_V["C"]=grpV.add('radiobutton' , [49, 18, 79, 36] , '中');
dlgRB_V["B"]=grpV.add('radiobutton' , [83, 18, 113, 36] , '下');
dlgRB_V["N"]=grpV.add('radiobutton' , [117, 18, 147, 36] , '無');
applyBtn=mainDlg.add('button' , [10, 206, 60, 226] , '実行' , {name: 'ok'});
mainDlg.show();
ajabon grinsmith
Community Expert
Community Expert
December 23, 2020

※未定義エラーが出たので、8行目の前に

var dlgRB_V = {};

を追加して実行してみました。

macOSX10.14.6、CC2019で試してみましたが、

おっしゃる通りの挙動となりました。

 

これ、実は自分もInDesign用ScriptUIで同様の挙動に悩んで英語のほうのフォーラムで外人どもの知見を頼ったのですが、ACPのロクに試しもしない心のこもっていないリプライがついたのみでスレッドが流れていきました。諦めてCEP開発に取り組んでいます。

こちらはCC2015を区切りにおかしな動きとなりました。現在も解決に至っておりません。

 

お力になれず申し訳ございません。

有志の剽軽な回避策が出ればありがたいですね。