Alter ObjInterface

Приемы и подходы, обмен опытом

Модераторы: Screw, larin

Ответить
shaidarov
топ-софт
Сообщения: 18
Зарегистрирован: Вт, 29/07/2008 16:09
Имя Фамилия: Шайдаров Игорь
Откуда: ТопСофт
Контактная информация:

Alter ObjInterface

Сообщение shaidarov »

Подскажите, пожалуйста, как при помощи Alter перекрыть функции Интерфейса, описанные в ObjInterface?

Для примера: надо перекрыть функцию SetPosition, описанную следующим образом:

файл ListSoglDog.vih:

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

ObjInterface ListSoglDogObj;
  Function SetPosition(aDogovor: comp; aCanModifyDog: boolean): boolean;
end;

VipInterface ListSoglDog implements ListSoglDogObj licensed(FREE) Parameters(pDogovor: comp; CanModifyDog: boolean);
файл ListSoglDog.vip:

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

#include ListSoglDog.vih
#include ExtAttr.vih
#include GetKau.vih

Interface ListSoglDog 'Лист согласования' (, hcDogEditDogovor, ) EscClose;
...
Function SetPosition(aDogovor: comp; aCanModifyDog: boolean): boolean;
{
  set pDogovor := aDogovor;
  CanModifyDog := aCanModifyDog;
  Result := GetFirst Dogovor = tsOk;
  RereadRecord(#AttrDog);
  if not CheckAttrsLS
    {
      Result := FALSE;
      if not CanModifyDog
        Message('Лист согласования отсутствует!', Information);
    }

  GetAttrsLS;
  SetFieldProtected(#LS_NoReestr  , not CanModifyDog);
}
...
Ged
топ-софт
Сообщения: 76
Зарегистрирован: Вс, 16/09/2007 10:23
Имя Фамилия: Леонид Поликутин
Откуда: Галактика СПб
Контактная информация:

Re: Alter ObjInterface

Сообщение Ged »

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

Alter Interface ListSoglDog ;
  overload
    Function ListSoglDogObj.SetPosition(aDogovor: comp; aCanModifyDog: boolean): boolean;
  end;

Function ListSoglDogObj.SetPosition(aDogovor: comp; aCanModifyDog: boolean): boolean;
{

  if(inherited :: SetPosition(aDogovor,aCanModifyDog)
   {
        // Наш код
   }
}

end.
shaidarov
топ-софт
Сообщения: 18
Зарегистрирован: Вт, 29/07/2008 16:09
Имя Фамилия: Шайдаров Игорь
Откуда: ТопСофт
Контактная информация:

Re: Alter ObjInterface

Сообщение shaidarov »

Ged, большое спасибо за быстрый и содержательный ответ 8-)
Ответить