Всё об интерфейсе L_SOPRDOC::SOPRDOCB

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB

Сообщение edward_K »

Inherited::HandleEvent( cmExprFieldChanged );
не нужно вызывать для ваших полей. Там правда еще контроль может быть на возможность редактирования.
Abort - это чтобы если есть еще где то обработчик следом за вашим он тоже не сработал.
Может быть панельный. оконный. табличный, интерфейсный. Если не уверены наверняка - лучше стопорнуть.
Irina_
Местный житель
Сообщения: 547
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB

Сообщение Irina_ »

Inherited::HandleEvent( cmExprFieldChanged );
не нужно вызывать для ваших полей.
Т. е. надо сделать:

Код: Выделить всё

cmExprFieldChanged:
  {
     Case CurField of
        …
        else
          { Inherited::HandleEvent( cmExprFieldChanged ); }
     end; // case
  }
?
А куда поставить Abort? Вопрос задаю, т. к. в реальном исходнике еще добавляются объекты и в Browse BRSELECT, и в верхнюю панель накладной.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB

Сообщение edward_K »

Вот чтобы не лепить в каждом поле я и предлагаю в else переменной изменить значение с True на False.
И если останется в True прервать.
Irina_
Местный житель
Сообщения: 547
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB

Сообщение Irina_ »

Эдуард, извините. Правильно ли я понимаю, что:
-переменной присвоить True – сделать в cmInit окна
-«в case полей добавить else и сбросить переменную» — сделать в cmExprFieldChanged
-если она останется в True, то сделать Abort – сделать в cmClose окна.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5185
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Всё об интерфейсе L_SOPRDOC::SOPRDOCB

Сообщение 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;
Ответить