Итак, вопрос обновления спецификации решён. Событие cmUpdateRecord берётся из M_UP::NAKL501.editsopr, всё модифицировалось и обновилось.
Далее, хотелось бы понять, как добавить объект (колонку, кнопку) в "дочерний" интерфейс? На событие cmInit реакции нет. Пытался также связку событий построить по документации, но непонятно, как делать в "дочернем" alter interface, в частности, как привязать его к объектному интерфейсу.
Может, у кого- нить есть пример по alter interface NAKL501 c добавлением элементов? Сейчас так:
Код: Выделить всё
#Component "M_UP"
#include Galnet.inc
end;
var cSpSoprNrec, cKatSoprNrec : comp;
scur_obj, scont_inf, sObjType : string;
lcur_obj, MyFieldNum : longint;
objInterface Emb_Events;
event procedure PosChanged (nrec : comp);
procedure pPrint;
end;
alter interface IMNFINTRF;
HandleEvent //События главного окна
cmTableChanged:
{
var ww_nrec:comp;
ww_nrec:=GetNotificationInfoPtr
case ww_nrec of
999998: {message('Запись в спецификации обновлена!');}
999999: {message('SELECTNAKL ==> lcur_obj = '+lcur_obj);}
end;
}
end;
end.
alter interface NAKL501;
function _Zaknar: string; forward;
create view
(ZakNar) as select _Zaknar;
function _Zaknar: string;
{
_Zaknar:= '_ZakNar';
}
HandleEvent
cmInit:
{
if inherited::handleEvent(cmInit) != heOk then {abort; exit;}
if (cfsSetCurrentContainer(cfsGetCurrentContainerSelf) = cfOk) //cfsGetCurrentContainerSelf
{
if cfsGetObjInfo('SELECTNAKL', scur_Obj, lcur_obj, scont_inf, sObjType) = cfOk then
{
}
Notify(cmInit, longint(999999));
Message('NAKL501: '+cfsGetCurrentContainerSelf+' ==> Ok!');
cfsCreateObject('Column', 'SELECTNAKL', 'ZakNar', FALSE, MyFieldNum);
cfsSetProp ( MyFieldNum, cfpVisible,TRUE);
cfsSetProp ( MyFieldNum, cfpTitle, 'Заказ-наряд');
cfsSetProp ( MyFieldNum, cfpFieldName,'ZakNarТекст');
cfsSetProp ( MyFieldNum, cfpMaxLen, 30 );
cfsSetProp ( MyFieldNum, cfpProtect,true);
}
}
end;
TableEvent Table spsopr
cmPositionChanged : {PosChanged (katsopr.nrec);}
end;
window editsopr;
TableEvent Table spsopr
cmUpdateRecord:
{
if inherited::handleEvent(cmUpdateRecord) != heOk then {abort; exit;}
if isvalid(#spsopr) then
{
cSpSoprNrec:= spsopr.nrec
Notify(cmTableChanged, longint(999998));
spsopr.kolopl:= 1111;
spsopr.kolfact:= 1111;
if update current spsopr = tsOk rescanpanel(#spsopr);
}
}
end;
end;
end.