Страница: 1 | 2 | 3 |
Вопрос: Последовательность чтения TextBox-рамок
Добавлено: 05.10.07 16:24
Автор вопроса: ferico | Web-сайт:
Ответы
Всего ответов: 39
Номер ответа: 16
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #16
Добавлено: 06.10.07 00:01
Сама база может сохраняться в XML-формате, что теоретически дает возможность самим делать всю процедуру и создавать нужную базу в нужном формате.
Но это уже другая работа, требующая более глобальных трудозатрат. Поэтому вариант с TXT-остается на самый крайний случай.
Поэтому пытаемся понять способ расстановки текстовых рамок.
Может быть существует скрытый или недокументируемый метод объекта:
1) метод объекта Shape для установки порядка следования.
2) метод объекта ShapeRange для сортировки порядка следования Shape-объектов
3) метод коллекции Shapes для той же сортировки, например, по имени.
Номер ответа: 17
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #17
Добавлено: 06.10.07 00:07
Файл из-под контроля не совсем выходит. Перевод делается в Word, но с использованием панели инструментов того же Трaдocа, т.е. при переводе каждого предложения он его обрабатывает и что-то меняет.
Номер ответа: 18
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #18
Добавлено: 06.10.07 00:15
Структура страницы следующая:
1) есть всего один пустой параграф (абзац) на каждой странице. После него сразу идет разрыв раздела с переходом на след. страницу.
2) на странице есть текстовые рамки, а якорь для каждой рамки соответсвенно висит на этом абзаце.
Т.е. все рамки на странице привязаны к одному параграфу.
3) смотрим в свойствах рамок (надписей):
вкладка Положение, обтекание - "Вокруг рамки". И стоит флажок "Разрешить перекрытие". Привязка не установлена.
Номер ответа: 19
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #19
Добавлено: 06.10.07 00:18
____ То есть, можно попытаться зафиксировать состояние коллекций по каждому параграфу ActiveDocument.Paragraphs(номер).Range.ShapeRange(), а потом либо восстановить состояние, либо в txt выгрузить.
____ Раз Традос работает в рамках Word, скорее всего он использует объектную модель Word и именно поэтому весьма возможно, что в коллекциях происходит "перемешивание" рамок.
____ Попробуйте эксперимент из одного листа с несколькими рамками, но перед процессом в ручную поставьте якоря рамок на разные (последовательные) абзацы и посмотрите, нарушится ли потом порядок. Если всё будет в порядке, то можно далее думать.
Номер ответа: 20
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #20
Добавлено: 06.10.07 00:19
Делаем пробный пример:
1) на пустой странице создаем несколько текстовых рамок (надписей). В цикле смотрим их последовательность - и запоминаем.
Затем начинаем их двигать, менять текст и т.д.
Повторяем цикл - последовательность уже другая.
Номер ответа: 21
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #21
Добавлено: 06.10.07 00:20
Т.е. перемешивание происходит в Word во время перевода текста.
Номер ответа: 22
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #22
Добавлено: 06.10.07 00:26
Если сделать несколько абзацев(для разных) якорей, то положение рамок начинает смещаться(хотя это исправимо программно).
Я сделал визуальное отображение потока текста в виде стрелок от одной рамки к другой. Очень получилось наглядно.
Своеобразное РЕШЕНИЕ нашлось такое:
устанавливаем в цикле для каждой текстовой рамки привязку (т.е. чтобы у каждого якоря появился замочек вверху справа):
После этого проводим вышеупомянутый опыт с изменением рамок и их текста. Направление последовательности вроде бы сохраняется.
Номер ответа: 23
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #23
Добавлено: 06.10.07 00:29
____ Я подумал, что если перемешивание происходит только в рамках коллекции одного абзаца (а не между абзацами, что вряд ли, потому как укорь не должен менять своего места), то можно перед началом процесса выполнить макрос с вводом на страницу необходимого количества "маленьких" абзацев и привязки рамок по одной к каждому. Однако это, видимо, сместит сами рамкина листе.
____ Поэтому мне думается лучше вариант — кнопочка "запомнить порядок рамок в абзацных коллекциях" и кнопочка "Восстановить порядок".
Номер ответа: 24
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #24
Добавлено: 06.10.07 00:30
____ Ну, надеюсь помог, хотя бы сочуствием.
Номер ответа: 25
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #25
Добавлено: 06.10.07 00:38
Но это решение не решает задачу для уже имеющихся текстов.
Полагаю, что перемешивание происходит из-за того,что рамки являются обтекаемыми и при наложении "как магниты" друг на друга вияют и меняются очередностью.
Думаю, что вариант
ActiveDocument.Paragraphs(номер).Range.ShapeRange() подходит для прочесывания отдельных параграфов, т.е. страниц в документе. Но как "потом восстановить состояние" коллекций в другом документе согласно первому?
Номер ответа: 26
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #26
Добавлено: 06.10.07 00:42
В любом случае большое Вам спасибо за идеи.
Помощь есть уже в самом обсуждении, так как самостоятельные размышления не всегда быстро приводят к лаконичному решению.
Номер ответа: 27
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #27
Добавлено: 06.10.07 00:48
Я могу взять порядок следования текстовых рамок из первого документа.
Но никак не могу представить, как этот порядок применить к рамкам в другом документе.
Имена рамок Name в обоих документах совпадают.
Номер ответа: 28
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #28
Добавлено: 06.10.07 00:55
Слушай хватит черточки писать зодолбался уже удалять
Номер ответа: 29
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #29
Добавлено: 06.10.07 00:58
Это мне?
Номер ответа: 30
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #30
Добавлено: 06.10.07 01:04
ну посмотри кто тут больше всего черточек написал!