Проблема с Alter интерфейса Dogovor

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Buddy
Постоянный обитатель
Сообщения: 122
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

Проблема с Alter интерфейса Dogovor

Сообщение Buddy »

Появилась задача написать альтер интерфейса Dogovor и изменить в нём поведение стандартного фильтра.

Фильтр в интерфейсе реализован с помощью condition:

Код: Выделить всё

Condition Filters  = CheckDogFilter(Dogovor1.Buffer)
Функция CheckDogFilter объявлена в секции public vipInterface:

Код: Выделить всё

VipInterface Dogovor implements TDocument, tDogovorObjInterfaceV2, IMenuMakerParameters, IExtMenu
…
Public:
…
  Function  CheckDogFilter(buf: type$Dogovor) : boolean;
…
End;
Пишу альтер следующим образом:

Код: Выделить всё

Alter interface Dogovor;
Overload
  function CheckDogFilter(buf: type$Dogovor) : boolean;
end;

Function CheckDogFilter(buf: type$Dogovor) : boolean;
{
  message('CheckDogFilter');
  result := false;
}
end.
И ожидаю, что при попытке установить фильтр увижу множество сообщений, но этого не происходит. Фильтр продолжает работать как и работал – очевидно, вызывается функция из оригинального интерфейса, а не моя. С соседними функциями такой проблемы не возникло – все нормально переопределялись.

Я не могу понять, что такого особенного в этой функции, что не позволяет мне её переопределить.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Проблема с Alter интерфейса Dogovor

Сообщение Den »

Buddy писал(а):И ожидаю, что при попытке установить фильтр увижу множество сообщений, но этого не происходит
Вряд ли дело в неправильно описанном Alter (по правилам , описанным в документации он верен, по большому счету).
Значит не активизируется Condition Filters. Вот и все. Видимо, прикладной код при некоторых условиях накладывает только этот кондишн (и, соответсвенно, вызов метода идет этого только тогда...).
Buddy
Постоянный обитатель
Сообщения: 122
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

Re: Проблема с Alter интерфейса Dogovor

Сообщение Buddy »

Спасибо, завтра проверим.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Проблема с Alter интерфейса Dogovor

Сообщение Den »

Ctrl+F4
ConditionActiveInLeave(tcFilters, tnDogovor1)
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Проблема с Alter интерфейса Dogovor

Сообщение edward_K »

Добавьте свои ограничения. и лучше в bounds
Установку пропишите в
Function SetFilterBounds : boolean;
Та срабатывает не при всех фильтрах.
Buddy
Постоянный обитатель
Сообщения: 122
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

Re: Проблема с Alter интерфейса Dogovor

Сообщение Buddy »

Спасибо, проблему решили!
Ответить