Author |
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, то Вы можете включить его и наблюдать возникновение этого события. |
|
|
Gardener
19 Posts |
Posted - 02/22/2008 : 08:19:01
|
Спасибо. Событие вызывается. |
|
|
Gardener
19 Posts |
Posted - 02/25/2008 : 08:45:41
|
Да нет, не работает. Первый раз событие вызывается, а потом нет. т.е. создаем shape, выбираем пункт меню - событие вызывается. Повторный выбор пункта меню событие не вызывает. По поводу Action. Свойства у него есть. Выполняем Window->Show ShapeSheet. Затем находим Action. Меню Edit->Action. Откроется окно свойств. Действий никаких не вписано. Как раз интересует какие нужно вписать действия, чтобы вызывалось событие. Event Monitor у меня отсутствует. |
|
|
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 и пользуйтесь. Полезная вещь. |
|
|
Gardener
19 Posts |
Posted - 02/25/2008 : 14:42:09
|
С QUEUEMARKEREVENT() все работает.
|
|
|
|
Topic |
|
|
|