<連結されているテキストフレームの取得>

 

連結されているテキストフレーム中、任意のフレームから連結されている最初のフレームを取得するには、startTextFrameプロパティを使います。下の例では最初のフレームの内容を取得しています。

var selObj= app.activeDocument.selection[0]; //連結されたテキストフレームのうち1つが選択されているとして...
var fmObj= selObj.startTextFrame;
$.writeln (fmObj.contents);

 

連結されているテキストフレーム中、任意のフレームから連結されている最後のフレームを取得するには、endTextFrameプロパティを使います。下の例では最後のフレームの内容を取得しています。

var selObj= app.activeDocument.selection[0]; //連結されたテキストフレームのうち1つが選択されているとして...
var fmObj= selObj.endTextFrame;
$.writeln (fmObj.contents);

 

連結されているテキストフレームで、前のテキストフレームを知るにはpreviousTextFrameプロパティを取得します。下の例では前のフレームの内容を取得しています。なお、自分が先頭だった(それより前がない)場合はnullが返ります。

var selObj= app.activeDocument.selection[0]; //テキストフレームが選択されているとして...
var fmObj= selObj.previousTextFrame;
if (fmObj==null) {
    $.writeln ('I am the first.');
} else {
    $.writeln (fmObj.contents);
}

 

連結されているテキストフレームで、次のテキストフレームを知るにはnextTextFrameプロパティを取得します。下の例では次のフレームの内容を取得しています。なお、自分が最後だった(それより後がない)場合はnullが返ります。

var selObj= app.activeDocument.selection[0]; //テキストフレームが選択されているとして...
var fmObj= selObj.nextTextFrame;
if (fmObj==null) {
    $.writeln ('I am the end.');
} else {
    $.writeln (fmObj.contents);
}

 

連結されているテキストフレーム中、任意のフレームが何番目なのかを知るにはtextFrameIndexプロパティを取得します。値はゼロベース(ゼロから始まる)です。

var selObj= app.activeDocument.selection[0]; //連結されたテキストフレームのうち1つが選択されているとして...
var fmIndx= selObj.textFrameIndex;
$.writeln (fmIndx);

 

連結されているテキストフレームの一つから、連結されているすべてのフレームを取得するプロパティは存在しません。それを取得したい場合は、一度parentStoryプロパティからストーリーを取得し、そのtextContainersプロパティからフレーム群を取得します(参照:ストーリーからテキストフレームを取得する)。

var selObj= app.activeDocument.selection[0]; //テキストフレームが選択されているとして...
var stryObj= selObj.parentStory; //ストーリーを取得
$.writeln (stryObj.textContainers.length+' flames'); //選択したフレームと連結されているフレーム数

 

<テキストフレームを連結する>

 

テキストフレーム同士を連結させるには、連結元フレームのnextTextFrameプロパティに連結先フレームを設定します。下の例では「テキストがあるフレーム」と「空のフレーム」が選択されているとして、そのフレームを同士を連結させています。

var selObj= app.activeDocument.selection; //2つのテキストフレームが選択されているとして...
if (selObj[0].contents=='') {
    selObj[1].nextTextFrame= selObj[0];
} else {
    selObj[0].nextTextFrame= selObj[1];
}

実践的には「2以上のフレームが選択されている場合」、「2つともテキストがある場合」などのチェックが必要です。

なお、nextTextFrameプロパティではなく、previousTextFrameプロパティを使って連結することも出来ます。その場合、先の例とは逆の判定になります。

var selObj= app.activeDocument.selection; //2つのテキストフレームが選択されているとして...
if (selObj[0].contents=='') {
    selObj[0].previousTextFrame= selObj[1];
} else {
    selObj[1].previousTextFrame= selObj[0];
}

 

テキストフレームの連結を解除する場合、後方との連結解除はnextTextFrame、前方との連結解除はpreviousTextFrameへnullを設定することで実行できます。

//後方との解除
var selObj= app.activeDocument.selection[0]; //後ろに連結されたテキストフレームがあるとして...
selObj.nextTextFrame= null;
//前方との解除
var selObj= app.activeDocument.selection[0]; //前に連結されたテキストフレームがあるとして...
selObj.previousTextFrame= null;

 

 

Joomla templates by a4joomla