All Forums
 Категория Visio
 Форум Вопросы и ответы
 Форматирование текста
Author Previous Topic Topic Next Topic  

Tatyana

Russia
19 Posts

Posted - 02/25/2004 :  07:09:20
Помогите пожалуйста!
Как можно программно изменить формат части текста в шейпе?
Например, мне нужно часть текста написать курсивом, а другую часть - нет.
Спасибо.

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)) и позиционировать один за другим. Тогда каждый будет управляться сам по себе, а выглядеть это будет как одна текстовая строка (сам не пробовал, но почему бы не работать).
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)