Страница: 1 | 2 | 3 |
Вопрос: Последовательность чтения TextBox-рамок
Добавлено: 05.10.07 16:24
Автор вопроса: ferico | Web-сайт:
Ответы
Всего ответов: 39
Номер ответа: 31
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #31
Добавлено: 06.10.07 01:11
____ Не позволяет Word переписыватьShape'ы в коллекциях с одного места (индекса) на другой. Остаётся только завести "рабочий" абзац, перевести все якоря shape'ов из заданного абзаца на него и потом снова "завести" якоря на исходный абзац, но уже в нужной последовательности.
____ Надеюсь программно якоря передвигаются?
Номер ответа: 32
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #32
Добавлено: 06.10.07 01:23
Проверил такой вариант:
по очереди проставить привязки для каждой рамочки согласно нужной последовательности.
Ничего не изменилось.
Т.е. якоря рамок зафиксировались в той же позиции, как и были.
Может быть, можно знаете, как отсортировать состав коллекции ShapeRange ?
Номер ответа: 33
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #33
Добавлено: 06.10.07 02:10
Возможно придется попробовать через "рабочий" абзац.
Вручную перетащив якоря ничего не меняет.
Номер ответа: 34
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #34
Добавлено: 06.10.07 03:19
В одном из экспериментов удалсоь сделать так:
переместить все рамки на абзац ниже, а затем (вручную мышкой) передвинуть якоря рамок на верхний абзац в порядке следования, обратном требуемому.
После этого последовательность чтения рамок становится правильной.
Вывод: всетаки на последовательность считывания потока текста влияет именно порядок установки якорей рамок.
А теперь самое главное - свойство Anchor является "readonly", т.е. его самому установить нельзя.
Значит, опять стоит вопрос об альтернативном способе установки якоря рамки в нужное место.
Номер ответа: 35
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #35
Добавлено: 06.10.07 10:46
____ Да, но может быть что-то можно сделать через дальнейшие свойства Anchor.
Номер ответа: 36
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #36
Добавлено: 06.10.07 12:26
Дальнейших свойств Anchor, полезных для топика, почти нет.
Интересно, что данная проблема довольно редкая и трудно формулируемая. Но зато в рунете и зарубежных форумах часто встречается смежная проблема перемещения (move) объекта (изображения) внутри документа.
Из всего, что удалось найти, можно сделать единственный вывод, что уже установленный объект переместить нельзя.
(хотя еще хочу проверить возможность перемещения самого Range параграфа с якорями объектов).
Номер ответа: 37
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #37
Добавлено: 06.10.07 20:36
____ Мне тоже не удалось передвинуть программно якорь.
____ Зато совершенно спокойно можно программно создать новый Word-файл и через буфер копирования перекатать туда все рамки в необходимой последовательности из исходного файла.
____ Может быть эта мысль плмжет решению проблемы?
Номер ответа: 38
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #38
Добавлено: 06.10.07 21:01
У меня получилось по-другому (правда пока наполовину вручную):
Обращаюсь к каждому объекту Shape на странице в требуемой последовательности (точнее в обратном порядке к требуемой последовательсности, т.е. начиная с последнего элемента), считываю координаты, копирую объект
но можно и так:
Таким образом, якоря становятся на первый параграф страницы, но в нужной последовательности. И текстовый поток сохраняется.
В общем это почти тоже самое, что скопировать объекты в другой документ, но зато не нужно настраивать параметры страниц и колонтитулы.
Номер ответа: 39
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #39
Добавлено: 07.10.07 18:56
Спасибо за советы. В конечном счете все получилось, хотя и косвенным путем через дупликацию объектов.
это хорошо, если объекты все на одной странице. Но в общем случае, когда нужно объект переместить на другую страницу, нужно искать альтернативный способ.
Жаль, что в MSWord не предусмотрено такой функции для перемещения текстовых рамок или для работы с якорями объектов. На крайний случай можно было предусмотреть перевод одних объектов в другие с такими свойствами и потом обратный перевод в исходное состояние объекта, но уже на новом месте.
Например, если объект Shape перевести в рамку Frame, заатем ее переместить с помощью Move в другое место документа, и затем обратно преобразовать в Shape. Только обратное преобразование MSWord не позволяет.