Страница 2 из 2
Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB
Добавлено: 15 фев 2023, 14:21
edward_K
Inherited::HandleEvent( cmExprFieldChanged );
не нужно вызывать для ваших полей. Там правда еще контроль может быть на возможность редактирования.
Abort - это чтобы если есть еще где то обработчик следом за вашим он тоже не сработал.
Может быть панельный. оконный. табличный, интерфейсный. Если не уверены наверняка - лучше стопорнуть.
Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB
Добавлено: 15 фев 2023, 14:40
Irina_
Inherited::HandleEvent( cmExprFieldChanged );
не нужно вызывать для ваших полей.
Т. е. надо сделать:
Код: Выделить всё
cmExprFieldChanged:
{
Case CurField of
…
else
{ Inherited::HandleEvent( cmExprFieldChanged ); }
end; // case
}
?
А куда поставить Abort? Вопрос задаю, т. к. в реальном исходнике еще добавляются объекты и в Browse BRSELECT, и в верхнюю панель накладной.
Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB
Добавлено: 15 фев 2023, 15:34
edward_K
Вот чтобы не лепить в каждом поле я и предлагаю в else переменной изменить значение с True на False.
И если останется в True прервать.
Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB
Добавлено: 15 фев 2023, 16:42
Irina_
Эдуард, извините. Правильно ли я понимаю, что:
-переменной присвоить True – сделать в cmInit окна
-«в case полей добавить else и сбросить переменную» — сделать в cmExprFieldChanged
-если она останется в True, то сделать Abort – сделать в cmClose окна.
Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB
Добавлено: 15 фев 2023, 17:20
edward_K
путей может быть множество
я бы сделал так
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;