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

gromozeka

11 Posts

Posted - 11/07/2005 :  14:10:37
День добрый...
Надо узнать размер строки (длину) в миллиметрах или в чем нить еще, подскажите пожалуйста...
делаю, как в FAQ написано:
Sub Text_width()
Dim shpObj As Visio.Shape
Set pagsObj = ThisDocument.Pages
Set pagObj = pagsObj.Item(1)
Set selectObj = ActiveWindow.Selection
Set shpObj = ActiveWindow.Selection.Item(1)
shpObj.Text = "Text here" 'пишем текст в фигуру или оставляем
shpObj.AddSection visSectionUser 'добавляем раздел
shpObj.AddRow visSectionUser, visRowUser + 0, 0 'добавляем строку
Set celObj = shpObj.Cells("User.Row_1") 'назначаем ячейку
celObj.Formula = "TEXTWIDTH(TheText)" 'забиваем формулу
TextWTH = celObj.Result(visMillimeters) 'забираем результат
MsgBox TextWTH, , "Text width" 'показываем результат
End Sub

но на AddSection вылетает исключение,, если сначала секцию удалять , а потом добавлять (или просто не добавлять секцию, я так понимаю она уже есть), то проходим дальше...
Но в строке
Set celObj = shpObj.Cells("User.Row_1")
-unexpected END of file...
Что можно сделать, что я не правильно делаю, подскажите пожалуйста?!

спасибо

brace

Russia
358 Posts

Posted - 11/07/2005 :  14:34:15
размер строки это же ширина прямоугольника в котором
текст записан. А ширину и высоту любого шейпа узнаем через
Size & Position window
Go to Top of Page

gromozeka

11 Posts

Posted - 11/07/2005 :  15:05:57
у меня текст в самом шейпе,, как его длину определить!?
Go to Top of Page

gromozeka

11 Posts

Posted - 11/07/2005 :  15:07:05
извиняюсь, я не уточнил в вопросе это...)
Go to Top of Page

brace

Russia
358 Posts

Posted - 11/07/2005 :  17:09:49
обычно если текст внутри шейпа то по ширине он не вылезает за границы шейпа
а уж ширину шепа см. Size & Position window.
Go to Top of Page

gromozeka

11 Posts

Posted - 11/07/2005 :  17:27:11
мне нужно в зависимости от размера текста , создавать шейп...
т.е. если строка длинная, то я определяю её размеры,и создаю такой шейп, чтобы текст поместился в одну строку в шейпе, перенос мне не нужен....
Как это сделать?
В шейп может запихнуться сколь угодно длинную строку, мне нужно посчитать размер строки, а потом шейп растянуть, чтоб строка влезла
Go to Top of Page

Julia

Russia
23 Posts

Posted - 11/08/2005 :  11:40:36
quote:
Originally posted by gromozeka

мне нужно в зависимости от размера текста , создавать шейп...
т.е. если строка длинная, то я определяю её размеры,и создаю такой шейп, чтобы текст поместился в одну строку в шейпе, перенос мне не нужен....
Как это сделать?
В шейп может запихнуться сколь угодно длинную строку, мне нужно посчитать размер строки, а потом шейп растянуть, чтоб строка влезла


в шейп-листе это выглядит так в секции преобразовании формы в ячейке WIDTH: TEXTWIDTH(TheText)
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 11/08/2005 :  19:33:02
На свежем шейпе макрос работает без вопросов. Ошибки начинаются, когда секция или строка уже существуют.
Нужно учиться проверять наличие секций и строк. Это делается через свойства SectionExists и RowExists.
А второй вариант, как подсказывает Julia, - установить width=GUARD(TEXTWIDTH(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)