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

Форум по вопросам применения и программирования в Visio
Текущее время: 19 авг 2017, 22:39

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


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


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)



Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
 Заголовок сообщения: Автонумерация обозначений шейпов
СообщениеДобавлено: 01 дек 2014, 01:49 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 428
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Вот. Старенький макрос раскопал. Там есть нюанс. Либо все время копировать/дублировать шейпы с листа, либо все время тащить из трафарета. А то нумерация сбивается. В свое время так и не смог пофиксить. Visio как-то различает событие добавления шейпа из стенсила и событие копирования/дублирования. А я не смог различить :cry: .
Вложение:
Комментарий к файлу: Не понял почему файл без названия?
.7z [33.58 Кб]
Скачиваний: 65


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автонумерация обозначений шейпов
СообщениеДобавлено: 01 дек 2014, 13:35 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
действительно, RUNMACRO не срабатывает как событие при копировании шейпа. SETF в данной ситуации
работает одинаково при вытаскивании шейпа из стенсила и при копи/пасте.
попробовал вместо RUNMACRO использовать CALLTHIS. не вышло не понял, что там за параметры надо в
шейпшите задавать для его запуска…

чтоб в твоем сообщении появилось название файла нужно, кликнуть по кнопке Вставить в текст сообщения
Изображение


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автонумерация обозначений шейпов
СообщениеДобавлено: 01 дек 2014, 17:35 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 428
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Цитата:
действительно, RUNMACRO не срабатывает как событие при копировании шейпа.

Не не, Surrogate, Runmacro срабатывает при копировании и при дублировании тоже(это которое Ctlr+D). Вот вытащи одну фигурку на лист, и копируй ее. Нумерация прекрасно увеличивается.
А вот если все время вытаскивать из стенсила то первый шейп будет например Р1, второй опять Р1, а уже третий и далее нормально перенумеровываются. Но общее количество данных шейпов естественно не совпадает с нумерацией. Вот, только что еще раз попробовал.
Гложет меня мысль - мой косяк! Подумал что из-за того что в стенсиле шейп без номера. Нет, не в этом дело.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автонумерация обозначений шейпов
СообщениеДобавлено: 01 дек 2014, 17:41 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
у меня при вытаскивании на лист работает так. первые два шейпа имеют номер 1, потом идет увеличение номера на единицу.
при дублировании шейпа выдается правильный номер… т.е. перескакивает через единицу


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автонумерация обозначений шейпов
СообщениеДобавлено: 01 дек 2014, 18:10 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 428
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
у меня при вытаскивании на лист работает так. первые два шейпа имеют номер 1, потом идет увеличение номера на единицу.
при дублировании шейпа выдается правильный номер… т.е. перескакивает через единицу

Ну вот я об этом. Где-то я накосячил. Надо пересмотреть код, он давнишний.
По моему кто-то уже спрашивал, но тем не менее - чем делаешь гифки?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автонумерация обозначений шейпов
СообщениеДобавлено: 01 дек 2014, 18:28 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
я код посмотрел, очень изысканно. но в чем косяк не понял…
а гифки делаю прогой LiceCap


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автонумерация обозначений шейпов
СообщениеДобавлено: 01 дек 2014, 18:34 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 428
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
я код посмотрел, очень изысканно. но в чем косяк не понял…
а гифки делаю прогой LiceCap

Изысканно? Ну не знаю. Лично мне было немного стыдновато его выкладывать. Разве что писалось это давно.
Но спасибо за оценку. Ха! Только он неправильно работает! :)


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автонумерация обозначений шейпов
СообщениеДобавлено: 01 дек 2014, 20:23 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 428
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Есть еще НЮАНС :wall: Не из области программирования , а что-то из области логической несуразицы!

Пример:
Создаем 5 шейпов от Р1 до Р5

For i=1 to 4
____Удаляем шейп с обозначением меньше Р5
____Копируем любой из оставшихся шейпов
Next

Результат = все шейпы с обозначением Р5 :cry:


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автонумерация обозначений шейпов
СообщениеДобавлено: 01 дек 2014, 22:23 
Не в сети
Ветеран

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 428
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Короче, я выяснил интересное поведение Visio.
Мой код после вызова из добавляемого шейпа подсчитывает количество шейпов с определенным обозначением на листе. Так вот:

При копировании/дублировании подсчитываются все подходящие по критерию(обозначение) шейпы, включая только что вставленный, откуда и был вызов макроса.
При вытаскивании и бросании шейпа из стенсила, подсчитываются только уже лежащие на листе шейпы, но не бросаемый. Ощущение что код отрабатывается до того как шейп "упал" на лист. Шейпа на листе еще нет, но код спровоцированный этим шейпом уже выполнился. Как-то так.

Вот поэтому идет неправильная нумерация. Или скажем, в сильной степени поэтому. Да, нет! Точно из за этого.
Никто не замечал такого казуса?


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автонумерация обозначений шейпов
СообщениеДобавлено: 01 дек 2014, 23:51 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 880
Очков репутации: 100576

Добавить очки репутацииУменьшить очки репутации
Не может это быть связано с тем, что при копировании шейпа активным является окно рисунка (то есть тот же документ), а при работе с мастером - другой документ - трафарет? Ну или что-то в таком роде.


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 428
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Не может это быть связано с тем, что при копировании шейпа активным является окно рисунка (то есть тот же документ), а при работе с мастером - другой документ - трафарет? Ну или что-то в таком роде.

Нет! Я усе выяснил!
А вот это попрошу забыть!
Цитата:
Короче, я выяснил интересное поведение Visio.

Это у меня в мозгах к вечеру интересное поведение :D .
Вот строка где собака порылась:
Код:
(Я там немного переделал - PrDes это строка "Prop.Designation")
If shpObj.CellExistsU(PrDes, 1) Then

А надо:
Код:
If shpObj.CellExistsU(PrDes, 0) Then

Из документации по свойству CellExistsU:
If fExistsLocally is non-zero (True), the CellExists property value is True only if the object contains the cell locally; if the cell is inherited, the CellExists property value is False.
If fExistsLocally is zero (False), the CellExists property value is True if the object either contains or inherits the cell.


В общем когда тащишь из стенсила, свойство Prop.Designation оригинально, а когда копируешь, то это свойство наследуется. Из за этого строка If shpObj.CellExistsU(PrDes, 1) Then с параметром 1 давала неправильное поведение кода.
Вот так подобная невнимательность к мелочам, приводит к замене планов на вечер. ;) . Тем не менее, определенное удовольствие получил. Архив обновил.


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 428
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Я не могу вложить файл с названием! Поэтому там же:
https://yadi.sk/d/qbpj9WI9d2eqF


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

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Digitall в скайпе писал(а):
В visio 2013 на этой строчке тормознулся макрос таблиц.
Код:
ThemeE = ActivePage.ThemeEffect
в модуле MainModule

он выкосил все упоминания о темах из кода и заработало в 2013 ! Передает респект создателю


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 428
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
Digitall в скайпе писал(а):
В visio 2013 на этой строчке тормознулся макрос таблиц.
Код:
ThemeE = ActivePage.ThemeEffect
в модуле MainModule

он выкосил все упоминания о темах из кода и заработало в 2013 ! Передает респект создателю

Странно. У меня было мало возможностей проверять код на visio 2013. А теперь и вовсе нет возможности.
А вообще-то в оригинале строка ThemeE = ActivePage.ThemeEffect, выглядит так
Код:
ThemeE = ActivePage.ThemeEffects

С буквой "s" в конце.
Эти фрагменты кода важны только если на листе используются эффекты и цвета тем. И только при создании таблиц. Просто управляющие ячейки немного не Ok будут.


Изображение


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 428
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Появилась возможность иногда работать в Visio 2013.
Оказывается файлы .vsd открытые в V13, это не то же что файлы .vsdx и .vsdm по крайней мере в плане работы с эффектами тем и цветов.

Вот вкладка Конструктор для .vsd:
Изображение

а вот для того же файла сохраненного в .vsdx:
Изображение

Соответственно код работающий для .vsd, вызывает ошибку для .vsdx и .vsdm.
Объектная модель приложения чуток изменилась. Так что все надо тестировать. (Ваш кэп :) )


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Автонумерация обозначений шейпов
СообщениеДобавлено: 08 янв 2015, 16:19 
Не в сети
Administrator

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 3362
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Связь
Должность: Бывший проектировщик
Уровнь квалификации: ShapeSheet, VBA
Кэп, а ты уверен что темы главное в данном коде?


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

Зарегистрирован: 30 июл 2014, 14:28
Сообщений: 428
Использую Visio c: 2008
Очков репутации: 97

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
Кэп, а ты уверен что темы главное в данном коде?

Если ты про заголовок темы, то да, маненько не туды.
Просто я наконец врубился почему у Digitall ошибка появлялась.


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

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



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

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


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

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