Подскажите, пожалуйста, про использование Notify...
Я стою в окне редактирования накладной,
жму Ctrl+P... в присоединенной форме вызывается интерфейс, в котором меняются,добавляются спрецификации накладной + изменяется номер накладной.
Но когда я закрываю отчет, то не вижу изменений на экране...
Попробовала
Notify(cmCheckRecord,0)
Notify(cmCheckField,0)
не перерисовывается...
Про Notify
Модераторы: m0p3e, edward_K, Модераторы
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
весь вопрос стоит ли в указанных командах в исходном файле Rescanpanel(#katsopr) ; Rescanpanel(#spsopr). видимо не стоит.
Опять же вы посылаете событие фейсу а не конкретной панели, а эти команды обычно по таблам срабатывают.
Вы еще сделайте свой фейсик с этими событиями и сообщениями в этих событиях. Запустите его немодально. Потом выполните свою форму - по идее этот фейс должен их тоже поймать. А вообще в vipprog.chm я этой функции уже не нашел - могут прекратить ее использование вовсе.
Опять же вы посылаете событие фейсу а не конкретной панели, а эти команды обычно по таблам срабатывают.
Вы еще сделайте свой фейсик с этими событиями и сообщениями в этих событиях. Запустите его немодально. Потом выполните свою форму - по идее этот фейс должен их тоже поймать. А вообще в vipprog.chm я этой функции уже не нашел - могут прекратить ее использование вовсе.
-
- Слесарь-системщик
- Сообщения: 304
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
- Контактная информация:
Зачем прекращать? Полезная вещь Ж:о) Как для себя делал.
Функция рассылает широковещательное сообщение всем вставленным в рабочую область приложения интерфейсам. Обрабатывать оное сообщение следует в обработчике интерфейсных событий (а не табличных или оконных). Если в обработчике вызвать Stop, то рассылка сообщения прервется, и Notify вернет ненулевой результат. Таким образом можно реализовать схему опросов-ответов, так сказать, диалог между интерфейсами.
Но более функциональной мне представляется схема нотификаторов, центральной фигурой которой является разделяемая копия реализации некоторого объектного интерфейса. Эта копия играет роль передатчика сообщений. Выглядит объектный интерфейс приблизительно так:
а его реализация и того проще:
Желающие получать сообщение заводят в своей логической таблице переменную, которая, как уже говорилось, инициализируется ссылкой на разделяемую копию Notifier-а, и подписываются на событие OnNotify. Желающие рассылать сообщение делают то же, но вместо подписки в нужный момент вызывают метод Notify. Таких пар вида "инициация - рассылка" может быть сколь угодно много.
Подобную методу использует, к примеру, мегаинтерфейс редактирования карточек физических лиц в модуле "Кадры" для синхронизации содержимого разных разделов карточки (это теперь отдельные интерфейсы) при изменении позиции в списке персон, удалении или вставке записи и для переключения между разделами. Может и еще для чего, но я всего не помню.
Функция рассылает широковещательное сообщение всем вставленным в рабочую область приложения интерфейсам. Обрабатывать оное сообщение следует в обработчике интерфейсных событий (а не табличных или оконных). Если в обработчике вызвать Stop, то рассылка сообщения прервется, и Notify вернет ненулевой результат. Таким образом можно реализовать схему опросов-ответов, так сказать, диалог между интерфейсами.
Но более функциональной мне представляется схема нотификаторов, центральной фигурой которой является разделяемая копия реализации некоторого объектного интерфейса. Эта копия играет роль передатчика сообщений. Выглядит объектный интерфейс приблизительно так:
Код: Выделить всё
objinterface INotifier;
function Notify(...): boolean; // не путать с зарегистрированной функцией
event function OnNotify(...): boolean;
end;
Код: Выделить всё
vipinterface Notifier implements INotifier;
interface Notifier;
create view Dummy;
function INotifier.Notify(...): boolean;
{
Result := OnNotify(...);
}
end.
Подобную методу использует, к примеру, мегаинтерфейс редактирования карточек физических лиц в модуле "Кадры" для синхронизации содержимого разных разделов карточки (это теперь отдельные интерфейсы) при изменении позиции в списке персон, удалении или вставке записи и для переключения между разделами. Может и еще для чего, но я всего не помню.
Виталий