Вопрос: Последовательность чтения TextBox-рамок | Добавлено: 05.10.07 16:24 |
Автор вопроса: ![]() |
Word-страница оформлена в виде TextBox-рамок с текстом, не связанных между собой.
При импорте в другие программы такая страница читается согласно последовательности нумерации TеxtBox-рамок (как мне кажется), и текст следует в этой же последовательности. Но до импорта поработать с текстом внутри рамок - поредактировать текст, немного расширить или передвинуть рамку(-ки), то последовательность импорта текстовых рамок меняется, причем как-то произвольно. Возможно причина в чем-то другом, но полагаю, что данная последовательность зависит от последовательности установленных якорей Anchor в тексте для каждой рамки. Но вот не могу придумать как поменять эту последовательность согласно требуемой исходной. Пож-ста, подскажите! |
Ответы | Всего ответов: 39 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 31 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 05.10.07 18:43 |
Причем якоря Anchors для всех рамок установлены в позиции первого абзаца страницы.
Вопрос - как изменить последовательность якорей, а значит и Текстбоксов? |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 31 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 05.10.07 18:47 |
Пробовал делать перевод Текстбоксов в рамки, а затем обратно. Не помогает и сбивается общее оформление. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 05.10.07 19:44 |
____ Сомнительно, что это тексбоксы.
____ А как Вы делаете на чистом листе эту рамку-текстбокс с текстом? Может тогда я пойму, о чём идёт разговор. |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 31 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 05.10.07 20:49 |
Да просто:
открываем Word, в панели Рисование тыкаю иконку Надпись. P.S. Возможно лучше называть ее именно Надпись, но в макросах это Shape типа msoTextBox. Обращаюсь так ActiveDocument.Shapes(1) или ActiveDocument.ShapeRange(1) И таких несвязанных надписей много на каждой странице. Связывать (линковать) их нельзя - весь текст "поедет". Предполагаю, что теоретически есть три варианта решения: 1) через перестановку относительных позиций якорей Anchor для Надписей. Но как? 2) м.б. через свойство TabIndex, но такого свойства я не нашел для Shape (msoTextBox). Хотя при нажатии Tab фокус переносится на следующую надпись. 3) через другое лаконичное решение, которое мне пока неизвестно. Пож., помогите. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 31 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 05.10.07 21:01 |
Но на самом деле эти Надписи (текст-боксы) создаю не я, они создаются автоматически. Я беру готовый документ уже с ними.
Еще возможно можно как-то сделать по 4-му способу: 4) Перевести все Надписи (текст-боксы) в рамки (Frames) и там чтото с ними делать, но в этом случае слетает все форматирование документа, а последовательность течения текста по рамкам Frame сохраняется. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 31 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 05.10.07 21:04 |
Под якорем Anchor я имею в виду привязку объекта (к строке). |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 05.10.07 21:24 |
____ То есть, все рамки идут не в потоке текста. А за текстом, перед текстом и т.п.? |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 31 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 05.10.07 22:04 |
Да, именно так.
Но когда документ читается другой программой или экспортируется в TXT, то формируемый текстовый поток не соответствует требуемому. Последовательность перемешивается. Соответственно, у меня задача поставить надписи (или их привязки) так, чтобы они читались в нужном порядке. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 31 |
Web-сайт: Профиль | Цитата | #9 | Добавлено: 05.10.07 22:12 |
Если привязки, скажем, двух объектов находятся на одной строке (а привязки устанавливаются построчно), то нужно как-то их приоритетность чтения поменять местами.
Есть неудобный метод: врчную копировать один объект, затем удалить второй объект, вставить первый и потом вставить второй объект. Таким образом, возможно изменится их "приоритетность" чтения. Это даже можно программно сделать, это очень неудобно - для 100 страниц по 15-20 надписей, каждая со своими координатами и т.п. Причем не факт, что это поможет. |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #10 | Добавлено: 05.10.07 22:42 |
____ А как (чем) производится экспорт в txt. При обычном сохранении из Word рамки не сохраняются.
____ Я вот подумал — может надо кнопочку с макросом сделать Создать txt-файл, "прошерстить" все рамки, отсортировать их по положению и "выкинуть" содержимое в созданный txt ? ____ Я проверил сейчас свойства top и left у этих рамок — всё работает. В каких единицах — не знаю, но это ведь и не важно. Главное — возможность создать массив ссылок на эти Shape'ы и отсортировать его по координате левого верхнего края каждой рамки. |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 31 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 05.10.07 23:06 |
1) Технически ситуация вкратце вот в чем. Есть два документа - на английском языке и его русский перевод. Так вот после перевода все рамочки остаются внешне на своих местах, если не считать что переводчик их иногда двигал и расширял, чтоб вместить текст.
Теперь, когда есть два "идентичных" текста их импортируем в Трaдoc, чтобы сделать их выравнивание, т.е. создать базу англ=рус предложений. В нормальных текстах все предложения встают последовательно и в результате совпадают. А данном случае они не совпадают, т.к. рамочки при импорте считывались не одинаковой последовательности. А последовательность эта изменилась после перевода. 2) вариант с "прочесыванием" и экспортом в TXT мне понравился. На данный момент, это пока лучший вариант, хотя не совсем удобный на первый взгляд. 3) Судя по всему приоритетность чтения текстовых рамок определяется не координатами, а чем-то еще - привязкой, старшинством создания, скрытым Tab-индексом или чем-то еще. |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #12 | Добавлено: 05.10.07 23:22 |
____ Я не знаю, что такое Традос и потому интересуюсь, а каков процесс импорта. Это ведь не средствами Word? |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 2 Ответов: 31 |
Web-сайт: Профиль | Цитата | #13 | Добавлено: 05.10.07 23:40 |
Вообще это программа для создания и накопления базы памяти переведенных фрагментов (предложений).
Там есть возможность автоматического импорта RTF-файлов исходника и его перевода, в результате получается база англ. предложений и им соответствующих русских. Но она также может учитывать форматирование отдельных фрагментов текста. Сам процесс импорта естественно недоступен для изучения. Но основная загвоздка как раз в том, чтобы импортируемые файлы были идентичны, и тогда они правильно считыватся. |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #14 | Добавлено: 05.10.07 23:52 |
____ Все рамки находятся в коллекции ActiveDocument.Shapes().
____ Все параграфы находятся в коллекции ActiveDocument.Paragraphs(). ____ Все рамки привязанные к конкретному параграфу (абзацу) находятся в ActiveDocument.Paragraphs(номер).Range.ShapeRange(). ____ У Вас все рамки привязаны к одному параграфу? Или по несколько к одному? ____ Может быть в процессе чего-то происходит переиндексация рамок в коллекциях ActiveDocument.Paragraphs(номер).Range.ShapeRange(). ____ Можно ещё перед переводом создать массив-слепок состояния каждой рамки, то есть: положение якоря и координаты рамок. ____ А может быть достаточно будет создать массив-слепок не рамок, а по каждому параграфу массив-слепок коллекции привязанных к нему рамок. |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 5 Ответов: 276 |
Web-сайт: Профиль | Цитата | #15 | Добавлено: 05.10.07 23:55 |
____ Я правильно понял, что на момент перевода файл выходит из-под контроля Word'а? |
|