All Forums
 Категория Visio
 Форум Вопросы и ответы
 Как откатить удаление шейпа со страницы.
Author Previous Topic Topic Next Topic  

Robinkzn

84 Posts

Posted - 08/16/2011 :  19:37:25
По условию, восстановить шейп, после того как пользователь его удалил. Понятно, что нужно использовать Application.Undo. Какое событие использовать для проверки условия и выполнения комманды?

Tumanov

Russia
1198 Posts

Posted - 08/16/2011 :  20:12:08
В таких случаях пользуются утилитой Event Monitor из состава Visio SDK.
Он показывает вот такие события:
2005 | QueryCancelSelectionDelete Sheet.1 [/doc=1 /page=1]
<-------- Event Monitor's response is: False (don't cancel)
2007 | BeforeWindowSelDelete window[1] Drawing1 Page-1 subtype is 128 [/hwnd=198234]
2009 | BeforeSelectionDelete Sheet.1 [/doc=1 /page=1]
2011 | BeforeShapeDelete Sheet.1 [/doc=1 /page=1 /shape=Sheet.1 /shapeu=Sheet.1]
Напрашивается BeforeShapeDelete или BeforeSelectionDelete. Смотря куда прикручивать и как работать с групповыми удалениями.
Go to Top of Page

Robinkzn

84 Posts

Posted - 08/17/2011 :  06:03:02
Я пробовал использовать BeforeShapeDelete, но получается интересная ситуация, шейп есче не удалили, значит по идее что я могу с ним сделать?)
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 08/17/2011 :  15:59:31
Согласен. Надо использовать QueryCancelSelectionDelete.
Вот такой обработчик разрешает удалять все шейпы на странице кроме последнего.
Private Function Document_QueryCancelSelectionDelete(ByVal Selection As IVSelection) As Boolean
    If ActivePage.Shapes.Count > 1 Then
        Document_QueryCancelSelectionDelete = False
    Else
        Document_QueryCancelSelectionDelete = True
End Function
Go to Top of Page

Robinkzn

84 Posts

Posted - 08/17/2011 :  17:32:12
Спасибо за помощь.
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)