Пример использования интерфейса IModify Назад В начало Вперед
// ---------------- Описание --------------------

objInterface ITest;
 property pName : string[20] read write;
 index iByName = pName;
end;

// ---------------- Реализация ------------------

#include IModify.vih

vipInterface cTest1 implements IModify,ITest;

interface cTest1;
 create view as
  select * from x$files;

 property pName : string[20] absolute xf$name read write;

 index iByName auto;

 function IModify.DoInsert : word;
 {
  if IsPropertyModified(pnITest_pName) = true then
  begin
// Здесь можно вставить запись в таблицу x$files, но лучше этого не делать
  end;
  PropertiesAreModified(false);
  result := tsOk;
 }

 function IModify.DoUpdate : word;
 {
  if IsPropertyModified(pnITest_pName) = true then
  begin
// Здесь можно внести корректировки в таблицу x$files, но лучше этого не делать   
  end;
  PropertiesAreModified(false);
  result := tsOk;
 }

 function IModify.DoFlush : word;
 {
  if IsPropertyModified(pnITest_pName) = true then
  begin
// Здесь можно внести корректировки в таблицу x$files, но лучше этого не делать
// MTFlush(#xSfiles);
  end;
  PropertiesAreModified(false);
  result := tsOk;
 }

 function IModify.DoDelete : word;
 {
  if IsPropertyModified(pnITest_pName) = true then
  begin
// Здесь можно удалить запись из таблицы x$files, но лучше этого не делать
  end;
  PropertiesAreModified(false);
  result := tsOk;
 }

end.

// ---------------- Использование ---------------

// Использование объектных возможностей языка VIP.
interface test1;
 var pTest : ITest(cTest1) new;

create view as
select * from pTest
order by pName;

panel p0
show at (,,,15);
  table pTest;
   browse b0 'Пример использования интерфейса модификации Vip-объекта в БД';
	fields
		pName 'pName';
   end;
end;
handleEvent
cmInsertRecord:
{
 IModify(pTest).DoInsert;
}
cmUpdateRecord:
{
 IModify(pTest).DoUpdate;
}
cmDeleteRecord:
{
 IModify(pTest).DoDelete;
}
end;

end.

// Используя реляционные и навигационные свойства объектов.
interface test2;
 var pTest : ITest(cTest1) new;

create view as
select * from pTest
order by pName;

panel p0
show at (,,,15);
  table pTest;
   browse b0 'Пример использования интерфейса модификации Vip-объекта в БД';
	fields
		pName 'pName';
   end;
end;
handleEvent
cmInsertRecord:
{
 insert current pTest;
}
cmUpdateRecord:
{
 update current pTest; 
}
cmDeleteRecord:
{
 delete current pTest;
}
end;

end.

Версия : Атлантис 5.0.02.