リンクをクリップボードにコピー
コピー完了
illustratorのscriptUIを使ってpanel(常に表示しておくタイプ)を作成したのですが、
スペースキーを押すと選択しているエリアのボタンが、勝手に動作してしまいます。
キー入力を無効にすることは可能でしょうか?
リンクをクリップボードにコピー
コピー完了
これ、ご使用のOSやIllustratorのバージョンを明記いただくのが必須な案件ですね。
ScriptUIはCC2015、CC2019と節目ごとに挙動が怪しくなってきてますが、
2020でエレメントの表示が逆順になったりと、かなり要注意な感じになってきています。
差し支えなければボタンをWindowオブジェクト直下に配置する(Groupなどに入れない)、
CEPエクステンションへの移行を検討するなど必要かもしれません。
とりあえずは、バージョンがわからない、コードの開示がないとなんも言えません。
リンクをクリップボードにコピー
コピー完了
ありがとうございます。
OS 10.11.6
CS6で進めていましたが、試しにCC2018でやっても同じ現象です。
CC2018だと文字が切れてたりしますが、とりあえず簡略版ソースです。
セットボタンや実行ボタンを押した後にスペースキーを押すと各々直近に使用したボタンがが反応します。
リンクをクリップボードにコピー
コピー完了
※未定義エラーが出たので、8行目の前に
var dlgRB_V = {};
を追加して実行してみました。
macOSX10.14.6、CC2019で試してみましたが、
おっしゃる通りの挙動となりました。
これ、実は自分もInDesign用ScriptUIで同様の挙動に悩んで英語のほうのフォーラムで外人どもの知見を頼ったのですが、ACPのロクに試しもしない心のこもっていないリプライがついたのみでスレッドが流れていきました。諦めてCEP開発に取り組んでいます。
こちらはCC2015を区切りにおかしな動きとなりました。現在も解決に至っておりません。
お力になれず申し訳ございません。
有志の剽軽な回避策が出ればありがたいですね。
リンクをクリップボードにコピー
コピー完了
ありがとうございます。
やはり仕様というかバグというか、そんな感じなのですかね。
実現したい機能に対しては何気にちょっとやっかいな現象ですね。
とりあえず別の解決策を探ってみます。
CEPは以前に一度試しましたが、
社内で他の機械に入れるとか考えると何かと面倒っぽかったのでそれ以来試していません。
リンクをクリップボードにコピー
コピー完了
バタバタして良いのなら各ボタンonClickでmainDlgをcloseしてから再度showするとか…
リンクをクリップボードにコピー
コピー完了
いけてますね。
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 よろしければこちらも
リンクをクリップボードにコピー
コピー完了
ありがとうございます。
ajabonさんの改訂版を試させていただいたところ、
CC2018の方は大丈夫でしたが
CS6は押したボタンがアクティブのままになってしまいますね…
リンクをクリップボードにコピー
コピー完了
ajabonさんの過去スレを参考にボタンを押した時に
ラジオボタンを強制的にアクティブにしてみたらいけそうな感じです。
とりあえずラジオボタングループのtrueを制的にアクティブにしてしまえば
問題なく使えそうなのでそれでやってみます。
ありがとうございました。
リンクをクリップボードにコピー
コピー完了
再度showした時にpaletteのactiveプロパティをfalseにするとどうでしょう?
リンクをクリップボードにコピー
コピー完了