|
В 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
|
||||
|
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 |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |