Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 17 сен 2019, 10:38

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !
Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Программно задать длину шейпа равную длине текста
СообщениеДобавлено: 12 янв 2016, 11:22 
Не в сети

Зарегистрирован: 22 апр 2015, 21:55
Сообщений: 7
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
А как программно задать длину шейпа равную длине текста? То есть, если я буду печатать текст, то мне необходимо, что бы длина шейпа тоже увеличивалась
Surogate писал(а):
Отделено от темы Странные размеры шэйпа


Последний раз редактировалось Surrogate 12 янв 2016, 14:21, всего редактировалось 4 раз(а).
добавлена ссылка на тему первоначальной публикации


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Странные размеры шэйпа
СообщениеДобавлено: 12 янв 2016, 11:51 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3667
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
если через Shapesheet™ то в поле Width прописать формулу
Width
=GUARD(TEXTWIDTH(TheText))

Изображение
тоже самое, но программно
Код:
Sub ololo()
Dim sh As Shape
Set sh = ActiveWindow.Selection(1)
sh.Cells("Width").FormulaU = "GUARD(TEXTWIDTH(TheText))"
End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Странные размеры шэйпа
СообщениеДобавлено: 12 янв 2016, 12:02 
Не в сети

Зарегистрирован: 22 апр 2015, 21:55
Сообщений: 7
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Спасибо!
А можно еще вопрос: есть слой, необходимо что бы появился шейп с длиной, равной длине названия слоя. каким образом это можно реализовать программно?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Программно задать длину шейпа равную длине текста
СообщениеДобавлено: 12 янв 2016, 13:29 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3667
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
добавить это к написанному для тебя коду в сообщении #6813


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Программно задать длину шейпа равную длине текста
СообщениеДобавлено: 17 июл 2019, 12:48 
Не в сети
Бывалый

Зарегистрирован: 05 апр 2019, 12:47
Сообщений: 103
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Знатоки, а почему в текстовом поле с Cells("Width").FormulaForceU = "GUARD(INT(TEXTWIDTH(TheText)/1.25)*1.25+1.25 mm)" при замене текста макросом ширина поля 1.25 мм пока его мышкой не передвинешь? Тоже самое если вставлять GUARD(INT(TEXTWIDTH(TheText)/1.25)*1.25+1.25 mm) макросом после замены текста.

До этого я вводил текст вручную и все работало нормально. А через макрос получается что TEXTWIDTH(TheText) = 0?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Программно задать длину шейпа равную длине текста
СообщениеДобавлено: 17 июл 2019, 13:54 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3667
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
В версии Visio Online Plan 2, такое поведение не воспроизводится!
О какой версии идет речь?
О какой фигуре идет речь? Если фигура состоит из нескольких фигур, то текст возможно содержится в другой фигуре


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Программно задать длину шейпа равную длине текста
СообщениеДобавлено: 17 июл 2019, 14:18 
Не в сети
Бывалый

Зарегистрирован: 05 апр 2019, 12:47
Сообщений: 103
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
В версии Visio Online Plan 2, такое поведение не воспроизводится!
О какой версии идет речь?
О какой фигуре идет речь? Если фигура состоит из нескольких фигур, то текст возможно содержится в другой фигуре


Visio 2013. Фигура текстовое поле простое.

П.С Дублирование страниц тоже помогает.


Вложения:
Screenshot_3.png
Screenshot_3.png [ 10.45 Кб | Просмотров: 178 ]
Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Программно задать длину шейпа равную длине текста
СообщениеДобавлено: 17 июл 2019, 14:31 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3667
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
TheHeat писал(а):
Фигура текстовое поле простое.
что это за фигура?
Удалось воспроизвести:
1. Рисую два квадрата
2. Создаю из них группу
3. Для групповой фигуры захожу в меню Поведение, снимаю галку напротив пункта Редактировать текст группы.
4. Узнаю ID групповой фигуры, и программно пытаюсь изменить ее текст и прописываю вашу формулу.

Далее фигуру скукоживает, т.к. в итоге текст добавился не к групповой фигуре, а фигуре внутри группы, которая была добавлена последней ! А формула прописалась к групповой фигуре !!!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Программно задать длину шейпа равную длине текста
СообщениеДобавлено: 17 июл 2019, 14:51 
Не в сети
Бывалый

Зарегистрирован: 05 апр 2019, 12:47
Сообщений: 103
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
TheHeat писал(а):
Фигура текстовое поле простое.
что это за фигура?
Удалось воспроизвести:
1. Рисую два квадрата
2. Создаю из них группу
3. Для групповой фигуры захожу в меню Поведение, снимаю галку напротив пункта Редактировать текст группы.
4. Узнаю ID групповой фигуры, и программно пытаюсь изменить ее текст и прописываю вашу формулу.

Далее фигуру скукоживает, т.к. в итоге текст добавился не к групповой фигуре, а фигуре внутри группы, которая была добавлена последней ! А формула прописалась к групповой фигуре !!!

По-моему INT не хочет работать из макроса. Следующий код работает без проблем.
Код:
               
Set vsoSelection = ActiveWindow.Selection
For Each s In vsoSelection
If s.Name Like "XB_TXT*" Then
   s.Text = LE_text
   s.Cells("Width").FormulaForceU = "GUARD((TEXTWIDTH(TheText)/1.25)*1.25+1.25 mm)"
   s.Cells("LockTextEdit") = 1
End If
Next


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Программно задать длину шейпа равную длине текста
СообщениеДобавлено: 17 июл 2019, 15:07 
Не в сети
Бывалый

Зарегистрирован: 05 апр 2019, 12:47
Сообщений: 103
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Кажется что то нащупал. Дело в том что я документ создаю Inkscape'ом из PDF -> svg -> vsdx. Если работать с макросом на этих страницах, то получается как на скрине выше. Но если создать новую страницу, то на ней все корректно


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Программно задать длину шейпа равную длине текста
СообщениеДобавлено: 17 июл 2019, 15:26 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3667
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
TheHeat писал(а):
По-моему INT
странно, своим кодом вы прописываете в ячейку Width, формулу содержащую INT.
TheHeat писал(а):
я документ создаю Inkscape'ом из PDF
в этом случае фигура может представлять из себя набор вложенных групп фигур.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Программно задать длину шейпа равную длине текста
СообщениеДобавлено: 17 июл 2019, 16:00 
Не в сети
Бывалый

Зарегистрирован: 05 апр 2019, 12:47
Сообщений: 103
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
TheHeat писал(а):
По-моему INT
странно, своим кодом вы прописываете в ячейку Width, формулу содержащую INT.
TheHeat писал(а):
я документ создаю Inkscape'ом из PDF
в этом случае фигура может представлять из себя набор вложенных групп фигур.

Нет сложных фигур. Немного не так. Пытался правильно сформулировать. Я беру текст из фигур полученных конвертацией из пдф, но вставляю его в текст дропнутого мастера. Мастер это группа, но она разгруппировывается при вставке на две выделенные фигуры. Среди них я ищу текстовое поле и вставляю сохраненный текст. Я эти фигуры скопировал на свежесозданную страницу или новый документ и все корректно работает.
Я думаю это явно глюк или недочет, так как банальное перемещение фигуры не должно влиять на изменение ее свойств или свойств страницы

П.С. Себе домой купил Visio 2016. :D Проверю вечером


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Программно задать длину шейпа равную длине текста
СообщениеДобавлено: 17 июл 2019, 16:38 
Не в сети
Content manager

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3667
Откуда: оттуда
Использую Visio c: 1998
Отрасль: -
Должность: Безработный
Уровнь квалификации: Ниже нуля
TheHeat писал(а):
беру текст из фигур полученных конвертацией из пдф, но вставляю его в текст дропнутого мастера. Мастер это группа, но она разгруппировывается при вставке на две выделенные фигуры. Среди них я ищу текстовое поле и вставляю сохраненный текст.
это все программно? :shock:
Ну очень это все нетривиально ! :wall:
TheHeat писал(а):
Себе домой купил Visio 2016
однако


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Программно задать длину шейпа равную длине текста
СообщениеДобавлено: 19 июл 2019, 11:03 
Не в сети
Бывалый

Зарегистрирован: 05 апр 2019, 12:47
Сообщений: 103
Использую Visio c: 2013
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
TheHeat писал(а):
беру текст из фигур полученных конвертацией из пдф, но вставляю его в текст дропнутого мастера. Мастер это группа, но она разгруппировывается при вставке на две выделенные фигуры. Среди них я ищу текстовое поле и вставляю сохраненный текст.
это все программно? :shock:
Ну очень это все нетривиально ! :wall:
TheHeat писал(а):
Себе домой купил Visio 2016
однако

Вчера попробовал на 2016 и не обнаружил подобных проблем


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB