Пример использования интерфейса 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.