Последний вопрос. Представим ситуацию, когда на полосе найдено несколько строк, удовлетворяющих условию поиска. Что переносить в колонтитул? Наиболее оптимальный вариант- первую и последнюю строки, при этом понадобится их как-то разделять. Предусмотрим свободу' выбора, создав набор разделителей. Для других случаев (занесение только первого или только последнего найденного) разделители не пригодятся.

В случае’ когда текст с заданным стилем на странице не найден, колонтитул будут дублироваться с предыдущей страницы - до тех пор, пока не будет заменен текстом, найденным на текущей странице.

Итак, описательную часть считаем законченной, переходим непосредственно к написанию скрипта (листинг 5.26).

[ Листинг 5.26. Расстановка скользящих колонтитулов

var pS_name = new Array ();

var labels = new Array("L", "R");

var div = new Array "»") ;

var check = false; with(app){

if ( (selection, length!=1) | | (selection. length==l && selection[0].constructor.name!="TextFrame")){ alert("Ничего не выделено или выделено более одного объекта, или выделенный объект не является текстовым фреймом"); exit() ;

)

sel = арр.activeDocument.selection[0];

pS = app.activeDocument.paragraphStyles

for (i=0; i<pS.length; i++) pS_name[i] = pS[i].name;

var DLG = dialogs.add();

with (DLG.dialogColumns.add()) {

with (dialogRows.add().borderPanels.add().dialogColumns.add()) { with (dialogRows.add()) {

staticTexts.add({staticLabel: "Искать стиль:"}); var DLG_pS = dropdowns.add({stringList:pS_name}); dropdowns[0].selectedlndex =

Math.ceil(dropdowns[0].stringList.length/2)

}

with (myRadioButtons = radiobuttonGroups.add()) {

radiobuttonControls.add({staticLabel:"Первый на стр."});

radiobuttonControls.add({staticLabel:"Последний на стр."}); radiobuttonControls.add({checkedState:true, staticLabel:"Все на стр."});

}

with (dialogRows.add()) {

staticTexts.add({staticLabel: "Разделитель подразделов: "}) ; var DLG_div = dropdowns.add((stringList:div, selectedlndex: 0});

}

}

}

var myResult = DLG.show(); findPreferences = null; changePreferences = null;

findPreferences.appliedParagraphStyle = pS [DLG__pS. selectedlndex]; do{

s = sel.search(); do{

if(s.length==0) {break} switch(myRadioButtons.selectedButton){ case 0:

s =s[0].contents; break; case 1:

s =s[s.length-1].contents; break; case 2:

s = s[0].contents; for(i=l; i<s.length; i++)

s += " " + div[DLG_div.selectedlndex] + " " + s[i].contents; s = s.replace(/\r/, "");

}

} while (false) page = sel.parent

colonTitle = page.textFrames.item(labels[page.documentOffset%2]); MasterTF = page.appiiedMaster.textFrames if (colonTitle==null SS

MasterTF.item(labels[page.documentOffset%2]) != null) {

colonTitle = MasterTF.item(

labels[page.documentOffset%2]).override(page);

}

try {colonTitle.contents = c} catch(err){

if(check==false) {

alert ("На стр. " + page, name + " нет ^требуемого фрейма!")


⇐ вернуться назад | | далее ⇒