ResourcesTab. Интерфейс работы с ресурсами текущего этапа |
Файл: Example\Src\VIP\PrjMng\ResourcesTab.vip
Издание 01.2007. Добавлены директивы документирования.
Издание 03.2005. В интерфейсе работы с ресурсами текущего этапа ResourcesTab в операторах new создания экземпляра интерфейса добавлено указание на компонентную принадлежность создаваемых интерфейсов. См. обработчик события cmOnVipLoad.
//****************************************************************************** // (c) корпорация Галактика // Демопроект 1.0 - Управление проектами // Интерфейс работы с ресурсами текущего этапа //****************************************************************************** #include IPrjResources.vih #include IResources.vih //****************************************************************************** #doc Интерфейс работы с ресурсами текущего этапа.</brief> Данный интерфейс объединяет в одну панель экранные редакторы для работы с разными ресурсами и представляет их интерфейсу-контейнеру (<link interface C_PRJMNG::ProjectsMain>ProjectsMain</link>) в виде обобщенного ресурса с универсальными характеристиками (стоимость). #end interface ResourcesTab 'Ресурсы'; create view var iResMaterials : C_CORE::MaterialsEdit noAuto; iResPersons : C_CORE::ExecutorsEdit noAuto; ; //------------------------------------------------------------------------------ #doc <p>В контейнере сменился текущий хозяин ресурсов.</brief> <p>Параметры: <ul> <li>cNewParent - NRec нового хозяина </ul> #end procedure MasterChanged(cNewMaster : comp); { iResMaterials.MasterChanged(cNewMaster); iResPersons.MasterChanged(cNewMaster); } //------------------------------------------------------------------------------ #doc <p>Обработка события "изменилась плановая стоимость ресурсов по текущему этапу проекта".</brief> Просто передаем событие вышестоящему контейнеру. <p>Параиетры: <ul> <li>d - величина изменения </ul> #end procedure ResourceSumChanged (d : double); { SumChanged(d); } //------------------------------------------------------------------------------ #doc <p>Функция проверяет наличие ресурсов у заданного владельца.</brief> <p>Параметры: <ul> <li>cMaster - NRec владельца ресурсов </ul> <p>Возвращаемое значение: <ul> <li>true - у владельца нет ресурсов <li>false - у владельца есть ресурсы </ul> #end function IsEmpty(cMaster : comp) : boolean; { if (not iResMaterials.IsEmpty(cMaster)) IsEmpty := false; else if (not iResPersons.IsEmpty(cMaster)) IsEmpty := false; else IsEmpty := true; } //------------------------------------------------------------------------------ #doc <p>Функция удаляет все ресурсы у заданного владельца.</brief> <p>Параметры: <ul> <li>cMaster - NRec владельца ресурсов </ul> <p>Возвращаемое значение: <ul> <li>true - удаление прошло успешно <li>false - в противном случае </ul> #end function DeleteAll(cMaster : comp) : boolean; { if (not iResMaterials.DeleteAll(cMaster)) DeleteAll := false; else if (not iResPersons.DeleteAll(cMaster)) DeleteAll := false; else DeleteAll := true; } //------------------------------------------------------------------------------ #doc <p>Функция копирует ресурсы владельца cFrom владельцу cTo.</brief> Если копируемый ресурс у владельца-приемника уже есть, то его количество увеличивается, новая запись не создается. <p>Параметры: <ul> <li>cFrom - NRec владельца, чьи ресурсы копируются <li>cTo - NRec владельца, куда ресурсы копируются <li>status - вид расчета (значение поля Status) <li>sumP - общая плановая стоимость ресурса <li>sumF - общая фактическая стоимость ресурса </ul> <p>Возвращаемое значение: <ul> <li>true - копирование прошло успешно <li>false - в противном случае </ul> #end function CopyAll(cFrom, cTo : comp; status : byte; var sumP, sumF : double) : boolean; { sumP := 0; sumF := 0; var sumP1 : double; var sumF1 : double; CopyAll := false; if (iResMaterials.CopyAll(cFrom, cTo, status, sumP1, sumF1)) { sumP := sumP + sumP1; sumF := sumF + sumF1; } else exit; if (iResPersons.CopyAll(cFrom, cTo, status, sumP1, sumF1)) { sumP := sumP + sumP1; sumF := sumF + sumF1; } else exit; CopyAll := true; } //--------------------------------------------------------- tabbedsheet TOP tabExpensEdit; embedded embResMat 'Материалы' interface iResMaterials; end; embedded embResPsn 'Исполнители' interface iResPersons; end; end; // tabExpensEdit //--------------------------------------------------------- handleEvent cmOnVipLoad: { iResMaterials := new (C_CORE::MaterialsEdit, InitMasterCode(resProject)); iResPersons := new (C_CORE::ExecutorsEdit, InitMasterCode(resProject)); BindEvent (ResourceSumChanged, iResMaterials.SumChanged); BindEvent (ResourceSumChanged, iResPersons.SumChanged); } cmOnVipUnload: { UnBindEvent (ResourceSumChanged, iResMaterials.SumChanged); UnBindEvent (ResourceSumChanged, iResPersons.SumChanged); } end; // handleEvent end.