Как переписать табличное событие
Модераторы: m0p3e, edward_K, Модераторы
Как переписать табличное событие
Народ, подскажите пожалуйста, как можно у галактического интерфейса переписать табличное событие. Нужно обработать событие cmDelOnProtect у интерфейса soprhoz с учетом выделенных инсертом записей (PickVip).
Re: Как переписать табличное событие
alter interface, не?
Re: Как переписать табличное событие
Переписываю обоработку события cmDelOnProtect в tableevent для того, чтобы можно было обработать записи, выделенные инсертом (в pickVip), но обработка tableevent не работает. Работает обработчик cmDelOnProtect handleevent интерфейса, и это событие срабатывает после обработки выделенных инсертом записей. Как можно обработать выделенные инсертом записи?????
Вот мой alter:
#component "F_SOPRHOZ"
alter interface SoprHoz;
create view
as select soprhoz.nrec
from
soprhoz
where
((
pickVip.pickrec == soprhoz.nrec
))
;
tableEvent
cmDelOnProtect:
{
message('table.cmDelOnProtect');
if curtable = #soprhoz then message('table soprhoz');
if (inherited :: handleevent(cmDelOnProtect)<>heOK) then abort;
}
end; // tableevent
//------ interface -------------
handleevent
cmDelOnProtect:
{
_loop PickVip
message(pickVip.pickRec + '--' + soprhoz.nrec);
message('interface.cmDelOnProtect');
if (inherited :: handleevent(cmDelOnProtect)<>heOK) then abort;
}
end
end.
Вот мой alter:
#component "F_SOPRHOZ"
alter interface SoprHoz;
create view
as select soprhoz.nrec
from
soprhoz
where
((
pickVip.pickrec == soprhoz.nrec
))
;
tableEvent
cmDelOnProtect:
{
message('table.cmDelOnProtect');
if curtable = #soprhoz then message('table soprhoz');
if (inherited :: handleevent(cmDelOnProtect)<>heOK) then abort;
}
end; // tableevent
//------ interface -------------
handleevent
cmDelOnProtect:
{
_loop PickVip
message(pickVip.pickRec + '--' + soprhoz.nrec);
message('interface.cmDelOnProtect');
if (inherited :: handleevent(cmDelOnProtect)<>heOK) then abort;
}
end
end.
Re: Как переписать табличное событие
сделала синоним для soprhoz - кажется заработало.
только теперь вопрос - куда сохраняются нреки выделенных записей?????????? pickVip - пустой.
только теперь вопрос - куда сохраняются нреки выделенных записей?????????? pickVip - пустой.
Re: Как переписать табличное событие
Как узнали?Unique писал(а):pickVip - пустой.
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Как переписать табличное событие
Конечно не работает cmDelOnProtect - это не табличное событие.Unique писал(а):Переписываю обоработку события cmDelOnProtect в tableevent для того, чтобы можно было обработать записи, выделенные инсертом (в pickVip), но обработка tableevent не работает. Работает обработчик cmDelOnProtect handleevent интерфейса, и это событие срабатывает после обработки выделенных инсертом записей. Как можно обработать выделенные инсертом записи?????
насколько помню там пометка идет посредством объекта recMarker а выбранные записи еще к тому же хранятся во времянке SelNums
Re: Как переписать табличное событие
насчет pickvip - подсказали (со слов доброжелателя так было в старых исходниках)
Re: Как переписать табличное событие
а где нужно обработать cmDelOnProtect?Конечно не работает cmDelOnProtect - это не табличное событие.
насколько помню там пометка идет посредством объекта recMarker а выбранные записи еще к тому же хранятся во времянке SelNumsDen
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Как переписать табличное событие
Unique писал(а): а где нужно обработать cmDelOnProtect?
cmDelOnProtect - согласно документации , окошковое событие. По хорошему, его описывают в обработчике окна именно, а не tableevent(или HE Panel-и)
Я заглянул в soprhoz немного...там не все так просто. Видимо как то исторически оно описано в панели и в HE Interfaсe делают ему stop и это накладывает некоторые особенности поведения (точнее, быстрее всего это баги...).
Вообщем словиться хоть как то вот так примерно
Код: Выделить всё
alter interface soprhoz;
Panel panSoprHoz
Table SoprHoz;
handleevent
cmDelOnProtect:{
Message('CmDelOnProtect PANEL recinmarker='+IMarker(pMarker).Count+'|'+recordsintable(tnSelNums));
inherited :: handleevent(CmDelOnProtect)
}
end;
end;
handleevent
CmDelOnProtect:{
}
end;
end.
Re: Как переписать табличное событие
спасибо за ответ.
Еще такой вопрос: при пометке нескольких записей и попытке отвязать ТХО выходит сообщение "Будьте ОСОБЕННО внимательны! " + #13 + "Выделена группа записей" + #13 + "Выполнить операцию по всем выделенным?" - да/нет. Это сообщение похоже обрабатывается в cmDelOnProtect? Мне нужно выполнить определенные действия, если на это сообщение ответят утвердительно. Это возможно?
Еще такой вопрос: при пометке нескольких записей и попытке отвязать ТХО выходит сообщение "Будьте ОСОБЕННО внимательны! " + #13 + "Выделена группа записей" + #13 + "Выполнить операцию по всем выделенным?" - да/нет. Это сообщение похоже обрабатывается в cmDelOnProtect? Мне нужно выполнить определенные действия, если на это сообщение ответят утвердительно. Это возможно?
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Как переписать табличное событие
Код: Выделить всё
....
overload
Function CanDelOnProtect: boolean;
end;
...
Function CanDelOnProtect: boolean;
{
Result := False;
if (IMarker(pMarker).Count <> 0)
{ // если есть пометка, то текущую запись не анализируем
if (message('Будьте ОСОБЕННО внимательны!'#13 +
'Выделена группа записей.'#13#13 +
'Выполнить операцию по всем выделенным?', YesNo + Confirmation) = Yes)
{
Result := True;
}
// права дроступа на групповые записи обрабатываются в самих функциях
Exit;
}
if ((iPermission.wProtect = cgProt_Date) and (CurField = #ShowHozOpName))
Result := true; // Можно отвязывать ТХО в закрытом периоде
else
Result := CanEditSoprHoz(cgMessage);
}
...
Re: Как переписать табличное событие
спасибо, очень помогли!
Может еще подскажете как лучше работать с маркером. Для обработки выбранных записей я создаю маркер и импортирую в него выбранные записи ( IMarker(pMarker).ExportTo() ). Но экспорт по времени идет очень долго. Может можно по-другому обработать выбранные записи?
Может еще подскажете как лучше работать с маркером. Для обработки выбранных записей я создаю маркер и импортирую в него выбранные записи ( IMarker(pMarker).ExportTo() ). Но экспорт по времени идет очень долго. Может можно по-другому обработать выбранные записи?
Re: Как переписать табличное событие
Den, есть еще сообщение 'Отменить типовую хозяйственную операцию по документу?', не подскажите как ее обработать?