All Forums
 Категория Visio
 Форум Вопросы и ответы
 Actions. Custom. Есть ли событие ?
Author Previous Topic Topic Next Topic  

Gardener

19 Posts

Posted - 02/19/2008 :  14:47:44
Возникла такая проблема. Есть Shape, к которому через ShapeSheet добавлен пункт к контекстному меню. В свойстве Action к этому пункту выбран тип custom.
Вопрос: при выборе этого пункта формируется какое-либо событие или нет?
Если нет, то можно ли событие сформировать как-нибудь по другому?

Tumanov

Russia
1198 Posts

Posted - 02/19/2008 :  16:20:49
quote:
В свойстве Action к этому пункту выбран тип custom.

Этого я не понял. У пункта нет свойств. Куда и что Вы добавили? Что за тип "custom"?
----------
Тем не менее... Если предположить, что Вы вписали в строку секции Actions какие-то невыполняемые действия и интересуетесь событиями...
Событие при выборе пункта должно возникнуть. Это будет событие CellChanged.
Если у Вас установлен Visio SDK и есть Event Monitor, то Вы можете включить его и наблюдать возникновение этого события.
Go to Top of Page

Gardener

19 Posts

Posted - 02/22/2008 :  08:19:01
Спасибо.
Событие вызывается.
Go to Top of Page

Gardener

19 Posts

Posted - 02/25/2008 :  08:45:41
Да нет, не работает. Первый раз событие вызывается, а потом нет.
т.е. создаем shape, выбираем пункт меню - событие вызывается.
Повторный выбор пункта меню событие не вызывает.
По поводу Action. Свойства у него есть.
Выполняем Window->Show ShapeSheet.
Затем находим Action. Меню Edit->Action. Откроется окно свойств.
Действий никаких не вписано. Как раз интересует какие нужно вписать действия, чтобы вызывалось событие.
Event Monitor у меня отсутствует.
Go to Top of Page

test111

1 Posts

Posted - 02/25/2008 :  09:53:34
quote:
Да нет, не работает. Первый раз событие вызывается, а потом нет.

Такое обычно происходит, когда текст обработчика события содержит ошибку. Попробуйте упростить его до безобразия, и увидите, что вызывается и потом.
quote:
По поводу Action. Свойства у него есть.
Выполняем Window->Show ShapeSheet.

Ух, какой продолговатый способ :) Действительно никогда не пользовался... Но это не свойства, а утилитка, помогающая пользователю вписать формулу в ячейку шейп-листа. Я обычно вписываю напрямую, руками.
quote:
Как раз интересует какие нужно вписать действия, чтобы вызывалось событие

Вообще-то Microsoft предлагает для генерации событий из шейп-листа пользоваться функцией QUEUEMARKEREVENT.
Делается это примерно так:
- В ячейку вписывается =QUEUEMARKEREVENT()
(при необходимости можно еще и параметры добавить)
- Объявляете с WithEvents, например, Application и отлавливаете его событие MarkerEvent.
Если в VBA написать нижеприведенный код и однократно выполнить ttt, то с этого момента начнет запускаться обработчик.
Dim WithEvents Ap As Visio.Application
Sub ttt()
Set Ap = ActivePage.Application
End Sub
Private Sub Ap_MarkerEvent(ByVal app As IVApplication, ByVal SequenceNum As Long, ByVal ContextString As String)
'Здесь будет обработчик события
End Sub
quote:
Event Monitor у меня отсутствует.

А это плохо. Скачайте Visio 2003 SDK и пользуйтесь. Полезная вещь.
Go to Top of Page

Gardener

19 Posts

Posted - 02/25/2008 :  14:42:09
С QUEUEMARKEREVENT() все работает.
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)