Объектные модели

  • Автор темы Автор темы BIGRED
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

BIGRED

Топикстартер
10 лет на форуме
Сообщения
231
Реакции
0
Доброе время суток. есть прога которая делает указатель, там есть кусок кода

var FR1 = app.activeDocument.textFrames.item(Lb_FR1);
var FR2 = app.activeDocument.textFrames.item(Lb_FR2);
FR2.select();
FR2.contents = '';
Смысл такой, есть два фрейма, которые прогой периодически выбираются по лэйблу. Все работало на CS3, перешел на CS6,
выдает ошибку №45 (Недопустимый объект). при FR2.select();
Я так понимаю объектная модель изменилась и теперь не создаются объекты FR1 и FR2.
Подскажите как в CS6 создать их.
 
Ответ: Объектные модели

Надо найти эти объекты в "слоях" и там дать им имена.
 
Ответ: Объектные модели

Ого, теперь еще один уровень? А подскажите пожалуйста кому принадлежит слой и как к нему обращаться. Конструкция какая должна быть?
 
Ответ: Объектные модели

Та же конструкция, ничего в скрипте менять не надо. Надо зайти в слои (F7) и там объектам прописать то, что раньше прописывалось в "Script Label".
И обращение к свойству теперь не obj.label, а obj.name.
 
Ответ: Объектные модели

Объекты вижу, а вот текстовых фреймов там нет
 
Ответ: Объектные модели

objinLayers.jpg
 
Ответ: Объектные модели

Понял, он фрэйм подсвечивает квадратиком, нашел, фрэйм есть назван правильно, спасибо за подсказку, а то я раньше через прогу переименовывал, создал конструкци.
var FR1 = app.activeDocument.textFrames.Name(Lb_FR1); не работает, name не функция
 
Ответ: Объектные модели

Подскажите пожалуйста конструкцию, как выбрать фрэйм?
 
Ответ: Объектные модели

Так, как в первом посте, ничего не менять. Ну, если очень хочется что-то поменять, то не на Name, а на itemByName:
Код:
var FR1 = app.activeDocument.textFrames.itemByName("Lb_FR1");
Это при условии, что имя фрейма задано в палитре слоёв. И, кстати, сейчас заметил, что у Вас Lb_FR1 написано без кавычек. Это переменная, или настоящее имя фрейма?
 
Ответ: Объектные модели

Спасибо большое. ошибка перестала вылазить, но программа теперь не работает, вернее она работает, но рузальтата нет. Изначально задача была такая. Есть справочник с фирмами, в конце указатель, программа по списку фирм которые находились в текстовом файле, через поиск находила их на каких страницах они находятся и добавляла в указатель, вод код подпрограммы
Код:
function fileWork(myFile) {
    var FR1 = app.activeDocument.textFrames.itemByName('osn');
    var FR2 = app.activeDocument.textFrames.itemByName('ukaz');
    FR2.select();
    FR2.contents = '';
    myFile.open('r');
     myFile.readln();
do {
 var str = myFile.readln();
 if (str.length > 0) {
 s = str.split('\t',15);
  if(s[14]!='') {
  var leter='#' + s[14]+'#';  // добавляем решетку к названию для отсеивания ненужных
  FR1.select();
  app.findTextPreferences = NothingEnum.nothing;
  app.findTextPreferences.findWhat = leter;
var myWords = app.activeDocument.selection[0].parentStory.findText();
var k=leter + '	';
var NP2='';
for (i=0; i<(app.activeDocument.selection[0].parentStory.findText().length); i++)
{ var myPage = myWords[i].parentTextFrames[0].parent;
var NP1=myPage.name;
if 	( NP1 !=NP2 )     {  k=k + ', '+ NP1;   NP2=NP1; }   }
FR2.select();					
FR2.insertionPoints.lastItem().contents;
FR2.insertionPoints.lastItem().contents = k + '\r';
FR2.paragraphs.lastItem().appliedParagraphStyle = app.activeDocument.paragraphStyles.item(Head_Ukaz); } }				} while(myFile.eof == false);
	myFile.close();
Теперь прога вставляет в указатель названия, но ни одной странице, похоже это опять связано с изменением объектной модели?
 
Ответ: Объектные модели

Строку
Код:
var myPage = myWords[i].parentTextFrames[0].parent;
давайте для начала заменим на
Код:
var myPage = myWords[i].parentTextFrames[0].parentPage;
 
Ответ: Объектные модели

УРААААА! Заработало, спасибо большущее!!!!
И еще маленький вопрос, как отключить, чтобы во время работы программы она визуально не скакала между фреймами?
 
Ответ: Объектные модели

А еще забыл вот этот код
FR2.contents = '';
почему то не удаляет предыдущий текст
 
Статус
Закрыто для дальнейших ответов.