Tumanov
Russia
1198 Posts |
Posted - 02/25/2004 : 17:48:41
|
Это уже где-то было, повторю фрагмент из старых записей:
Все параметры шейпов в Visio отображаются и меняются в шейп-листе (ShapeSheet). Если не знаете, как сделать что-то программно, делайте это вручную и смотрите, как это отражается в шейп-листе. Потом пытайтесь внести такое же изменение в ячейку шейп-листа программно. Например. Рисуем на листе только один квадрат, пишем в нем 1234567890. Открываем шейп лист. Находим секцию Character (на будущее). Теперь на листе рисунка красим текст в красный цвет. В шейп листе тут же в ячейке Color секции Character появляется 2 (номер красного цвета). Делаем вывод - если записать в ячейку Color значение 2, текст станет красным. Проверяем. Отменяем ручные изменения и выполняем макрос Sub ttt() ActivePage.Shapes(1).Cells("Char.Color").Result("") = "2" End Sub Убеждаемся, что текст после этого макроса опять становится красным. Точно также можно работать и с другими атрибутами секции Character: Font, Size, Scale и т.д. Примечание. Если в одном шейпе текст имеет разное форматирование (например 3 буквы красные, потом 5 синих), то в секции Character это будет отражено двумя строчками и можно менять параметры каждой группы текста отдельно. Больше групп - больше строчек. Короче общая рекомендация - смотрите шейп-лист - там все видно. -------------------------------------------------------------------------------- Спасибо за предыдущий ответ. С этим я разобрался, но вопрос остается. Когда в шейпе текст уже отформатирован двумя шрифтами, то изменить их не представляет сложности, но когда шрифт в шейпе стоит один, что соответствует одному ряду в секции Character,а мне нужно этот текст разбить двумя шрифтами, то возникающая проблема состоит в том, что я не могу добавить еще одну строку в эту секцию, т.к. добавление рядов в данную секцию запрещено. -------------------------------------------------------------- Действительно проблема. В документации прямо указывается, что добавление и удаление строк из четырех секций запрещено (visSectionCharacter, visSectionParagraph, visSectionTextField, or visSectionTab). Не знаю Вашей конкретной ситуации, но может получится заранее заготовить шейпы с нужным числом строк. Если известно, что в каком-то типе шейпа может понадобиться менять форматирование фрагмента текста - взять и подправить мастер-шейп, то-есть внести несколько строк в секцию еще на уровне мастер-шейпа. Будет специальный мастер. А на рисунке уже работать с подготовленными секциями. Вот только разметка позиций будет фиксированной. Еще один кривой вариант - работать с группой. В принципе наверно можно иметь несколько шейпов-текстовых блоков, менять их размер в зависимости от введенного текста (типа Width = GUARD(EVALTEXT(TheText)) и позиционировать один за другим. Тогда каждый будет управляться сам по себе, а выглядеть это будет как одна текстовая строка (сам не пробовал, но почему бы не работать). |
|
|