All Forums
 Категория Visio
 Форум Вопросы и ответы
 Document_ShapeAdded как отфильтровать copy-paste ?
Author Previous Topic Topic Next Topic  

bdfy

Belarus
267 Posts

Posted - 05/02/2010 :  16:20:45
quote:

Private Sub Document_ShapeAdded(ByVal vsoShape As Visio.IVShape)
'Debug.Print vsoShape.GeometryCount
geom_c = vsoShape.GeometryCount
geom1_r = vsoShape.RowCount(visSectionFirstComponent)

If Not ActivePage.name = "исх. схема" Then Exit Sub

If geom_c = 1 And geom1_r = 3 Then
....

т.е если нужная мне страница и шейп есть линия - запускается какой то код. проблема если я скопирую руками или через макрос приличный кусок чертежа. скрипт тогда запускается множество раз - оно мне не нужно.
Как этого избежать ? Document_ShapeAdded можно вкл/выкл. программно ?
отфильтровать что фигура вставлена из буфера именно а не нарисована может можно ?

Tumanov

Russia
1198 Posts

Posted - 05/02/2010 :  18:50:20
Насчет фильтрации вставки из буфера - не знаю. А обработчики выключать можно.
Например, использовать не Document_ShapeAdded, а объект, назначенный через WithEvents. Ту же страницу, если она только одна нужна.
Dim WithEvents evPage As Visio.Page
Тогда, используя в нужное время
Set evPage = ActivePage
и
Set evPage = Nothing
можно включать и отключать обработчик evPage_ShapeAdded
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)