• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Программно отписаться от события

Автор SerGoVec, 24.10.16, 19:00:00

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

SerGoVec

Всем привет!

Мне очень нужно подписаться на события для панели свойств PropertyManagerEvent и на события от окна документа DocumentFrameEvent. Примеры подписки и отписки от событий есть в примерах step12 и cube. За основу был взят пример Cube. Они замечательно работают по отдельности. Мне же нужно объединить эти 2 события для своего проекта. Подписаться у меня получилось - см. 2 рисунок.

Но как теперь отписаться? При попытке отписаться возникает вот такая ошибка (cBaseEvents.pas) - см. 1 рисунок.

Для того, чтобы подписаться на события PropertyManagerEvent и DocumentFrameEvent в cBaseEvents.pas переопределил конструктор cBaseEvent.CreateByObj, так как события PropertyManagerEvent и DocumentFrameEvent принимают разное количество параметров - см. 3 рисунок.

Конструктор DocumentFrameEvent - см. 6 рис.
Конструктор PropertyManagerEvent  - см. 7 рис.

Подписка/отписка на события панели свойств (PropertyManagerEvent ) осуществляется в главном файле Cube1.pas при подключении/отключении библиотеки -см. 8 рис.

Как можно решить эту проблему?

SerGoVec

8 рисунок

Нужно отписаться от IDocumentFrameNotify раньше, чем закроется документ, плюс проверять, что отписка прошла успешно, в примерах проверки нет.

SerGoVec

Вроде решилось очень просто). Надо было принудительно еще закрывать события cBaseEvent и событие панели свойств PropertyManager в событии приложения ApplicationEvent.ApplicationDestroy(). Причем в step 12 так и было, я не заметил просто.