Имя: Пароль:
IT
 
В 7.7 - СтатусВозврата(0), в 8.0 - СтандартнаяОбработка = Ложь. А КАК В VBA
0 Разумов
 
23.05.07
18:10
Всем привет!
   Хочу: отловить событие документа Visio "BeforeShapeTextEdit" и редактирование текста шейпа заменить своей функциональностью.
   Получается: добавляется моя функциональность, выполняющаюся перед редактированием текста шейпа, а после этого Visio всё-же предлагает отредактировать этот текст. А мне это НЕ НУЖНО.
   Кто знает, как, так сказать, отключить стандартную обработку события в VBA, подскажите, пожалуйста.
1 asady
 
23.05.07
18:17
(0)
попробуй

Cancel=True
2 Разумов
 
23.05.07
18:25
(1) Не работает.
Даже если посмотреть значение Cancel, говорит, что <Expression not defined in context>
3 Разумов
 
23.05.07
19:19
(+0, +2) В Excel'е 2003 в обработчиках событий параметр Cancel почему-то есть, а вот в Visio - почему-то нет. Я догадываюсь, что в Visio 2003 это сделали как-то по-другому. Кто знает как?
4 Разумов
 
24.05.07
10:53
(3) Ну, где вы, знатоки программирования? :)
5 asady
 
24.05.07
10:54
(4) ну щелкни по панели событий и выбери процедуру обработчик этого события и запости сюда ее (как есть) - посмотрим...
6 Разумов
 
24.05.07
11:16
(5) Если я не правильно понял, прошу пинать не больно :)

Процедура вот такая (без тела):
Private Sub Document_BeforeShapeTextEdit(ByVal Shape As IVShape)
End Sub
Как видите, параметр Cancel в процедуру не приходит. Я вчера нашел только одно событие в Visio, куда Cancel приходит.

А посмотрим как обстоят дела в Excel'е. Так там почти в любое событие приходит Cancel, например:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
End Sub

Есть ли догадки, почему такая разница?
7 Разумов
 
24.05.07
11:39
Думаем, думаем :)
8 Херрес
 
24.05.07
11:41
Визио, на сколько я помню, был куплен у кого-то. Кажись у неизвестной израильской фирмы. Ну и результат - объектная и событийная модель в другом стиле
9 asady
 
24.05.07
11:43
(7)
1. или есть глобальный объект с методом
типа СтатусВозврата() который устанавливает переменную типа Отказ=истина

2. или в классе IVShape есть что-то подобное
10 Разумов
 
24.05.07
11:44
(8) Похоже на правду, спасибо.
11 Разумов
 
24.05.07
11:52
(9.1) Может и есть, но как его найти? По подстроке Cancel ничего такого не нахожу.
(9.2) Тоже не нашел, скорее всго такого нету. :(
12 774816
 
24.05.07
12:20
СтатусВозврата(0) или Возврат = Exit Sub
13 Разумов
 
24.05.07
12:54
(12) Что Вы имеете ввиду?
14 IUnknown
 
24.05.07
13:11
(13)http://msdn2.microsoft.com/en-us/library/dz1z94ha(VS.80).aspx

зы: Но для Визио тоже взлетает.
15 IUnknown
 
24.05.07
13:13
Вот из справки по Визио

Exit Statement
     

Exits a block of Do…Loop, For...Next, Function, Sub, or Property code.

Syntax

Exit Do

Exit For

Exit Function

Exit Property

Exit Sub

The Exit statement syntax has these forms:

Statement Description
Exit Do Provides a way to exit a Do...Loop statement. It can be used only inside a Do...Loop statement. Exit Do transfers control to the statement following the Loop statement. When used within nested Do...Loop statements, Exit Do transfers control to the loop that is one nested level above the loop where Exit Do occurs.
Exit For Provides a way to exit a For loop. It can be used only in a For...Next or For Each...Next loop. Exit For transfers control to the statement following the Next statement. When used within nested For loops, Exit For transfers control to the loop that is one nested level above the loop where Exit For occurs.
Exit Function Immediately exits the Function procedure in which it appears. Execution continues with the statement following the statement that called the Function.
Exit Property Immediately exits the Property procedure in which it appears. Execution continues with the statement following the statement that called the Property procedure.
Exit Sub Immediately exits the Sub procedure in which it appears. Execution continues with the statement following the statement that called the Sub procedure.



Remarks

Do not confuse Exit statements with End statements. Exit does not define the end of a structure.
16 Разумов
 
24.05.07
13:26
(14,15) Если Вы, IUnknown, имеете ввиду, что нужно написать:
Private Sub Document_BeforeShapeTextEdit(ByVal Shape As IVShape)
   Exit Sub
End Sub
, то сообщаю, что таким образом желаемый результат тоже не достигается. Эффект тот-же самый, как и без Exit Sub.
Если Вы имели ввиду что-то другое, то прошу пояснить, что именно.
17 smaharbA
 
24.05.07
13:33
(14)(15) что надо (0) не сделает
(16) поставь таймер и убивай окна
18 774816
 
24.05.07
13:36
Exit Sub или Exit Function  это выход из обработки процедуры т.е идентично 1с функ. Возврат, СтатусВозврата(0)
но в данном случае если в событии нет операторов то вывод сообщение, происходит автоматически, средствами Visio, и смотреть нужно в установках программы, или в свойствах объекта Shape к сожалению со свойствами объектов Visio не знаком
19 smaharbA
 
24.05.07
13:38
(18) ты не в теме
20 smaharbA
 
24.05.07
13:38
+(19) ненадо ему прерывать
21 IUnknown
 
24.05.07
13:42
(20)Тоже не догнал. (((
22 smaharbA
 
24.05.07
13:45
(0) как вариант посмотреть есть ли метод сендкей и в конце процедуры послать его, чтобы закрыть окно вопроса (говорю незная визион никак)
23 Разумов
 
24.05.07
14:50
(22) smaharbA, ТЫ ГЕНИЙ!!! РАБОТАЕТ!!!

Private Sub Document_BeforeShapeTextEdit(ByVal Shape As IVShape)
   SendKeys "{ESC}"
End Sub