// Выделение конкретного фрейма document.select(myFrame); Таким образом, полный листинг будет выглядеть гак, как представлено в листинге 5.21.
Листинг 5.21. Полный текст скрипта, обрабатывающего переполнение ‘ фреймов
var myStories = арр.documents[0].stories lastFrames = [] overflowArray = [] overflowPages = []
for(var i = 0; i < myStories.length; i++) {
if (myStories[i].overflows)(
lastFrame = myStories[i].textFrames.lastltem() overflowPage = lastFrame.parent
lastFrames.push(lastFrame) overflowPages.push(overflowPage) overflowArray.push(overflowPage.name) ;
)
}
dig = app.dialogs.add({name: " Поиск фреймов с переполнением", 'З?
canCancel:true}); column = dig.dialogColumns.add(); row = column.dialogRows.add();
row.staticTexts.add({staticLabel:"Выберите страницу, в которой переполнение, и нажмите ОК для перехода на нее"});
row = column.dialogRows.addO;
dropdown = row.dropdowns.add( {minWidth:50, stri ngList: overf lowArray, 'З? selectedlndex:0}};
if (dig.show()){
document.layoutWindows[0].activePage = overflowPages[dropdown.selectedlndex];
document. select (lastFr-ames [dropdown, selectedlndex] ) ;
}
dig.destroy(); Массив overflowPaqes был введен ПО той причине, что объектом activePage может быть только страница (сам объект, а не ее помер), поэтому для удобства пользователя мы отображаем в диалоговом окне (рис. 5.3) номера страниц (из массива cverflowPageNumbers), а в InDesign передаем сами объекты (из
overf lowPages).
Рис. 5.3. Вот как выглядит диалоговое окно с результатами проверки.
Выбор страницы переносит вас на нее, одновременно выделяется фрейм, вызвавший ошибку
5.11. Создание заякоренных фреймов
Заякоренные фреймы отличаются от свободно размещенных тем, что они жестко привязаны к конкретному месту в тексте. Родителем заякоренного фрейма является, таким образом, точка вставки (insertionPoint), а сам он ведет себя как обычный символ. Все в полном логическом соответствии: вспомните, как создаются такие фреймы в публикации. Один из вариантов состоит в копировании текстового фрейма в системный буфер, затем, если поместить курсор в текст и содержимое буфера вставить, в этом месте появится заякоренный фрейм. Передвигается он так же, как любой другой символ: при вставке символов он смещается по строке и, при необходимости, переходит на другую строку.
Таким образом, получить ссылку на родителя заякоренного объекта можно так:
mylnsertionPoint = myAnchoredTextFrame.parent
Чтобы создать какой-либо заякоренный объект, нужно сначала определить место в тексте, куда он должен быть вставлен, а затем использовать традиционный метод для добавления элементов add(), например:
myTextFrame.insertionPoints[0].rectangles.add()
или же
myTextFrame.paragraphs[3].words[2].rectangles.add()
Соответственно для вставки текстового фрейма, заякоренного в месте курсора:
myTextFrame.selection[0].textFrames.add()
Рассмотрим листинг 5.22.
Листинг 5.22. Создание in-line-фрейма в первом фрейме на первой странице I
var myDocument = арр.documents[0]; var myPage = myDocument.pages[0] ; var myTextFrame = myPage.textFrames[0] ; var mylnlineFrame =