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