All Forums
 Категория Visio
 Форум Вопросы и ответы
 событие изменение шейпа
Author Previous Topic Topic Next Topic  

evgenia_e

Germany
22 Posts

Posted - 05/24/2004 :  17:44:50
Народ, помогите! как отследить измение формы шейпа, например, растягивание?

Спасибо

Tumanov

Russia
1198 Posts

Posted - 05/24/2004 :  18:35:35
Возможные кандидаты:

FormulaChanged Sheet.1!PinX
CellChanged Sheet.1!PinX
FormulaChanged Sheet.1!PinY
CellChanged Sheet.1!PinY
FormulaChanged Sheet.1!Width
CellChanged Sheet.1!Width
FormulaChanged Sheet.1!Height
CellChanged Sheet.1!Height
CellChanged Sheet.1!LocPinX
CellChanged Sheet.1!LocPinY
CellChanged Sheet.1!Geometry1.X2...
Go to Top of Page

evgenia_e

Germany
22 Posts

Posted - 05/25/2004 :  14:26:04
не подскажете, как этим пользоваться? Нужно, чтобы каждый раз отслеживалось растягивание селектированного шейпа. Я объявляю шейп с событиями : Dim WithEvents shpObj As Visio.Shape

куда надо прописать эти возможные кандидаты?
Что нужно сделать, чтобы срабатывало selectionadded?
Спасибо
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 05/25/2004 :  17:27:33
Последовательность действий следующая:
1. Объявить некоторый объект WithEvents
Например, Dim WithEvents shpObj As Visio.Shape
2. После этого в VBA в том окошке, где сейчас есть только General и Document появится Ваш объект shpObj и в правом окошке можно будет выбрать событие, для которого можно написать обработчик. Например, CellChanged.
3. Написать этот обработчик
4. Связать Ваш новый тип с конкретным объектом
Например, Set shpObj = ActivePage.Shapes(1)
Пункт 4 обычно вставляется в обработчик DocumentOpened или что-нибудь похожее. Можно его всунуть в отдельный макрос и выполнить через меню. В общем как угодно, но только после его выполнения события от этого объекта начнут отслеживаться.

Если Вы хотите привязать событие не к одному шейпу, а к нескольким, то WithEvents нужно объявлять не для шейпа, а для чего-то более серьезного, например, для страницы. Нужно только учитывать, что источников события сразу станет побольше и их придется отфильтровывать (например, отловить только события от шейпов заданного типа).

Так же выбирается и selectionadded. У шейпа такого события естественно не будет, а вот у страницы - есть.
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)