Страница 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;