All Forums
 Категория Visio
 Форум Вопросы и ответы
 Дублируются ли свойства?
Author Previous Topic Topic Next Topic  

vis

47 Posts

Posted - 11/20/2009 :  06:53:33
Вопрос к гуру. Создаю прямоугольник, ширина которого меняется в зависимости от длины его текста. В добавок, ширина округляется до целого значения в миллиметрах. Для этого в шейп листе в поле width прописал =ROUND(TEXTWIDTH(TheText),0).
Все хорошо работает. Если этот шейп копировать Ctrl+C и вставлять потом Ctrl+V, то его способность менять ширину остается.
А вот при копировании шейпа при помощи мыши и зажжатым Ctrl приводит к тому, что эта способность исчезает. ПОчему????

vis

47 Posts

Posted - 11/20/2009 :  10:40:23
и еще вопросик позвольте вопрос.... у меня в визио 2007 эта строка
width=ROUND(TEXTWIDTH(TheText),0) округляет ширину прямоугольника до целого числа миллиметров
а если этот файл открывается в визио 2003, то там округление производится в дюймах, хотя в настройках документа единица измерения установлена "миллиметр"
как быть?
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 11/21/2009 :  07:18:15
quote:
Если этот шейп копировать Ctrl+C и вставлять потом Ctrl+V, то его способность менять ширину остается. А вот при копировании шейпа при помощи мыши и зажжатым Ctrl приводит к тому, что эта способность исчезает. ПОчему????

Интересная особенность. Не знал. Вместо формулы в Width появляется значение. Возможно, это как-то связано с порядком вычисления...
Но поставьте Guard и все будет нормально.
quote:
там округление производится в дюймах, хотя в настройках документа единица измерения установлена "миллиметр"

Попробуйте жестко задать пересчет через FORMATEX. Надо бы проверить, как это будет себя вести во всех случаях, но примерно вот так:
=Guard(ROUND(FORMATEX(TEXTWIDTH(TheText), "0.00 u", "in", "mm"),0))
Go to Top of Page

vis

47 Posts

Posted - 11/23/2009 :  09:07:56
Спасибо....
Как всегда все заработало
Go to Top of Page

vis

47 Posts

Posted - 12/08/2009 :  12:33:30
Заработало с GUARD, однако вариант с FORMATEX не привел к положительному результату - как и ранее Visio 2003 ширину шейпа округляет в дюймах. Это приводит к тому, что ширина его приравнивается к нулю, когда текст состоит из пары символов

Edited by - vis on 12/08/2009 12:34:37
Go to Top of Page

vis

47 Posts

Posted - 01/21/2010 :  06:36:41
Так и не смог я решить эту проблему до конца - повис вопрос с округлением.
эта строка FORMATEX(TEXTWIDTH(TheText), "0.00 u", "in", "mm") выдает мне размер шейпа в миллиметрах...
Далее мне надо округлить это значение до целого числа, использую
ROUND(FORMATEX(TEXTWIDTH(TheText), "0.00 u", "in", "mm"),0), вот тут то и облом...
сначала визио переводит миллиметры, полученные FORMATEX(TEXTWIDTH(TheText), "0.00 u", "in", "mm"), в дюймы, а потом округляет.
Допустим ширина текста в шейпе 18,5мм. Шейп должен быть шириной 19 мм, а получаю я 0 дюймов, что соответствует 0 мм.
Помогите решить проблему.........
VISIO2003

Edited by - vis on 01/21/2010 06:37:06
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 01/22/2010 :  15:39:28
Попробовал тоже в Visio 2003. Не работает.
Работает вот такая формула
=GUARD(ROUND(TEXTWIDTH(TheText)*25.4+1,0)/25.4)
Go to Top of Page

vis

47 Posts

Posted - 01/23/2010 :  08:41:16
спасибо за формулу - ее я уже давно сам использовал, но необходимо, чтобы ширина прямоугольника = ЦЕЛОМУ числу миллиметров...
а в данном случае, оно дробное - а это не подходит
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 01/23/2010 :  09:43:21
А выглядит, как целое. Если просто наблюдать, как изменяется ширина при вводе разного количества символов.
А на основе чего делается заключение, что оно дробное?
Go to Top of Page

vis

47 Posts

Posted - 01/23/2010 :  10:53:33
Пардон.... я ошибся....по формуле все верно..
я просто при проверке визио2007 запустил, а там уже эта формула не приводит к нужному результату..
СПАСИБО!
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)