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

jetsnake

3 Posts

Posted - 05/26/2003 :  12:47:24
Помогите чайнику 2
И в самом деле как?
Помогите подсчитать программно сколько в тексте на шейпе wrapped строк.

Tumanov

Russia
1198 Posts

Posted - 05/26/2003 :  13:59:20
Вот такая штуковина
Sub ttt()
s = ActivePage.Shapes(1).Text
i = 1
While i > 0
i = InStr(i, s, vbLf) + 1
MsgBox i - 1
Wend
End Sub
Вот по такому тексту шейпа
Раз строка
Два строка
Три строка
Говорит последовательно: 11, 22, 0. То есть переводы строк на 11, 22 позиции, а больше нету.
Go to Top of Page

jetsnake

3 Posts

Posted - 05/27/2003 :  06:45:41
Прошу прощения, наверное я неправильно выразился.
Чайник он и в Африке чайник.
При добавлении текста на прямоугольник получается автоматический перенос строк(wrap) по ширине шейпа. Вопрос состоит в подсчете получившегося количества строк, независимо от нажатий <Enter> при вводе этого текста.
Извините, если что не так.
Спасибо.
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 05/27/2003 :  12:28:03
Это гораздо сложнее.
Если в предыдущем примере вычислялся точный результат, то здесь вычисления могут быть только приближенными. Существует функция, которая выдает расчетную высоту текста с учетом ограничения текстового блока по ширине и прочих параметров форматирования.
TEXTHEIGHT(shapename!TheText,maximumwidth)
В принципе, пользуясь ей и зная высоту одной строки, можно рассчитать и число строк. Только не забыть все делать в одинаковых единицах измерения и помнить, что отступы текстового блока тоже входят в высоту.
Go to Top of Page

mormax

Russia
18 Posts

Posted - 01/27/2005 :  10:04:22
Подскажите, как работать с формулой
TEXTHEIGHT(shapename!TheText,maximumwidth).
Подставлял ее в ячейку HEIGHT шейпа с различными параметрами, и из примера с msdn вставлял, а визио в ответ все время пишет, что формула не верна. В чем дело, как правильно ее вставить?
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 01/27/2005 :  18:52:07
А что именно Вы пытались писать?
Вот, например, работает такая конкретная формула
=TEXTHEIGHT(TheText;1)
Здесь ссылка идет на тот хе самый шейп.
Вот такая работает, если ссылка на шейп с именем Sheet.2
=TEXTHEIGHT(Sheet.2!TheText;1)
Может просто неточно ссылались?
Go to Top of Page

mormax

Russia
18 Posts

Posted - 01/28/2005 :  13:27:27
Получилось!
Спасибо!
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)