Inherited::HandleEvent( cmExprFieldChanged );
не нужно вызывать для ваших полей. Там правда еще контроль может быть на возможность редактирования.
Abort - это чтобы если есть еще где то обработчик следом за вашим он тоже не сработал.
Может быть панельный. оконный. табличный, интерфейсный. Если не уверены наверняка - лучше стопорнуть.
Всё об интерфейсе L_SOPRDOC::SOPRDOCB
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 554
- Зарегистрирован: 17 июл 2012, 11:56
- Откуда: Республика Беларусь, г.Могилев
Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB
Т. е. надо сделать:Inherited::HandleEvent( cmExprFieldChanged );
не нужно вызывать для ваших полей.
Код: Выделить всё
cmExprFieldChanged:
{
Case CurField of
…
else
{ Inherited::HandleEvent( cmExprFieldChanged ); }
end; // case
}
А куда поставить Abort? Вопрос задаю, т. к. в реальном исходнике еще добавляются объекты и в Browse BRSELECT, и в верхнюю панель накладной.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB
Вот чтобы не лепить в каждом поле я и предлагаю в else переменной изменить значение с True на False.
И если останется в True прервать.
И если останется в True прервать.
-
- Местный житель
- Сообщения: 554
- Зарегистрирован: 17 июл 2012, 11:56
- Откуда: Республика Беларусь, г.Могилев
Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB
Эдуард, извините. Правильно ли я понимаю, что:
-переменной присвоить True – сделать в cmInit окна
-«в case полей добавить else и сбросить переменную» — сделать в cmExprFieldChanged
-если она останется в True, то сделать Abort – сделать в cmClose окна.
-переменной присвоить True – сделать в cmInit окна
-«в case полей добавить else и сбросить переменную» — сделать в cmExprFieldChanged
-если она останется в True, то сделать Abort – сделать в cmClose окна.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB
путей может быть множество
я бы сделал так
cmExprFieldChanged :
{
var _boMyFld : boolean = True;
case CurField of
...
else
{
_boMyFld := False;
}
end;
if _boMyFld
{
Abort;
Exit;
}
}
Abort и Exit обычно хватает чего то одного, но для каждой команды по разному - чтобы не гадать пишу и Abort и Exit если не знаю точно.
Мож этого и не нужно сейчас - но потом может понадобится.
Кстати и Inherited::HandleEvent( cmExprFieldChanged полезно проверять и если там прервали, о нужно прерывать и у себя
Например для cmInit (и в большинстве других обработчиков)
case Inherited::HandleEvent(cmInit) of
heAbort : Abort;
heStop : Exit;
end;
я бы сделал так
cmExprFieldChanged :
{
var _boMyFld : boolean = True;
case CurField of
...
else
{
_boMyFld := False;
}
end;
if _boMyFld
{
Abort;
Exit;
}
}
Abort и Exit обычно хватает чего то одного, но для каждой команды по разному - чтобы не гадать пишу и Abort и Exit если не знаю точно.
Мож этого и не нужно сейчас - но потом может понадобится.
Кстати и Inherited::HandleEvent( cmExprFieldChanged полезно проверять и если там прервали, о нужно прерывать и у себя
Например для cmInit (и в большинстве других обработчиков)
case Inherited::HandleEvent(cmInit) of
heAbort : Abort;
heStop : Exit;
end;