InDesign CS3を使用しています。
自動処理用のユーザーインターフェイスを作成していますが、
2つ目のダイアログに入力した文字列を受け渡しできなくて困っています。
以下コードを抜粋しました。
//最初に表示されるダイアログ
var myDialog = app.dialogs.add({name:"test"});
var CR = String.fromCharCode(13);
with(myDialog){
with(dialogColumns.add()){
with(borderPanels.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"枠数:"});
}
with(dialogColumns.add()){
var myinteger1 = integerEditboxes.add({editValue:1})
}
}
with(borderPanels.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"列数:"});
}
var myinteger2 = integerEditboxes.add({editValue:2});
}
with(borderPanels.add()){
var Rb = radiobuttonGroups.add();
with(Rb){
var Rb1 = radiobuttonControls.add({staticLabel:"標準作成", checkedState:true});
var Rb2 = radiobuttonControls.add({staticLabel:"入力作成"});
}
}
}
}
if(myDialog.show() == true){
myStd();
}
//次に表示されるダイアログ
function myStd(){
var myDialog1 = app.dialogs.add({name:"test"});
var myint1 = myinteger1.editValue;
var myint2 = myinteger2.editValue;
with(myDialog1){
with(dialogColumns.add()){
if(myint1 != 1){
with(borderPanels.add()){
staticTexts.add({staticLabel:"(1)文字を入力してください。"});
}
with(borderPanels.add()){
for(i=0; i<myint1; i++){
with(dialogColumns.add()){
var myStr = textEditboxes.add({editContents:""});
}
}
}
}
with(borderPanels.add()){
staticTexts.add({staticLabel:"文字を入力してください。"});
}
for(j=1; j<myint2; j++){
with(borderPanels.add()){
for(i=0; i<myint1; i++){
with(dialogColumns.add()){
var myStr2 = textEditboxes.add({editContents:""})
}
}
}
}
}
}
myDialog1.show();
var myStr1 = myStr.editContents;
alert(myStr1);
}
1つ目のダイアログで入力した枠数を2つ目のダイアログで自動作成したところまではいいのですが、
実行結果のアラートには2つ目のダイアログに入力した最後の文字だけ受け渡されてしまいます。
editContentsを定義していないからだろうと思っているのですが、
どうやって定義していいかわからないのです。
実行結果のアラートにそれぞれ入力した文字を受け渡すにはどのようにすればよろしいのでしょうか。
ご教示よろしくお願いいたします。
>editContentsを定義していないからだろうと思っているのですが、
ループの中でmyStrをガンガン上書きしているからです。
fanctionの最初に
var myStr = new Array();
とでも宣言しておいて、該当部分を
myStr[i] = textEditboxes.add({editContents:""});
とでもするといいと思います。
呼び出すときは
for (var i = 0; i< myStr.length; i++) {
alert(myStr[i].editContents);
}
みたいに呼び出します。
気になった事が2つ。
dialogがちゃんと片付けられていないこと。表示しおわったときと、キャンセル終了したとき。
もうひとつは、グローバル変数が使われていること。fanctionの中からそれを呼んでしまっています。
seuzo様
ありがとうございます。
無事格納されました。
またそれ以外のアドバイスもありがとうございます。
Copyright © 2010 Adobe Systems Incorporated. All rights reserved.
Use of this website signifies your agreement to the Terms of Use and Online Privacy Policy (updated 07-14-2009).