GetDepartment. Интерфейс работы с каталогом подразделений |
Файл: Example\Src\VIP\Staff\GetDepartment.vip
Издание 01.2007. Добавлены директивы документирования.
Издание 01.2006. Исправлена ошибка: событие cmInsert, возникавшее в главном окне (окно выбора) по F7, не передавалось в окно редактирования winGetDepartmentEdit. Вместо этого оно обрабатывалось в главном окне после закрытия окна winGetDepartmentEdit. Добавлена переменная bInsMode - режим открытия окна редактирования. Значение переменной устанавливается в главном окне. Обработка cmInsert в главном окне подавляется. В окне winGetDepartmentEdit событие cmInsert дублируется в обработчике cmInit.
Издание 01.2006. Убрана панель (как лишняя сущность). Соответствующие табличные события вынесены в обработчик tableEvent.
//****************************************************************************** // (c) корпорация Галактика // Демопроект 1.0 - Управление персоналом // Интерфейс работы с каталогом подразделений (выбор, ввод и корректировка) //****************************************************************************** #component "C_STAFF" //****************************************************************************** objInterface objGetDepartment; end; vipInterface GetDepartment implements objGetDepartment licensed(free); //****************************************************************************** #doc Интерфейс работы с каталогом подразделений (выбор, ввод и корректировка). #end interface GetDepartment 'Каталог подразделений' escClose, cyan, doAccept; show at (0,0,25,15); create view var bInsMode : boolean; // режим открытия окна winKatMaterialsEdit: true - добавить запись, false - редактировать cTmp : comp; as select KatDeps.* from KatDeps ; parameters cTmp; //============================================================================== // winGetDepartmentEdit //============================================================================== window winGetDepartmentEdit 'Каталог подразделений' (,, scGetDepartmentEdit); show at (1,1,24,14); browse brwGetDepartment; table KatDeps; fields KatDeps.Name #3'Подразделение' : [20], noProtect; end; handleEvent cmInit: // если вошли по cmInsert, то в этом окне ее надо продублировать if (bInsMode) PutCommand (cmInsert); end; tableEvent table KatDeps cmUpdateRecord: if (update current KatDeps <> tsOK) message('Ошибка при выполнении операции.' + chr(13) + 'Повторите ввод данных.', OkButton+Error); cmInsertRecord: if (insert current KatDeps <> tsOK) message('Ошибка при выполнении операции.' + chr(13) + 'Повторите ввод данных.', OkButton+Error); cmDeleteRecord: if (delete current KatDeps <> tsOK) message('Ошибка при выполнении операции.' + chr(13) + 'Повторите удаление данных.', OkButton+Error); end; // tableEvent end; // window winGetDepartmentEdit //============================================================================== // Main Window //============================================================================== browse brwGetDepartment2 (,,scGetDepartmentSelect); show at (1,1,24,14); table KatDeps; fields KatDeps.Name #3'Подразделение' : [20], protect; end; // browse brwGetDepartment2; //------------------------------------------------------------------------------ handleEvent cmInsert: { bInsMode := true; // открыть окно в режиме добавления записи runWindow(winGetDepartmentEdit); stop; // заблокировать стандартную обработку cmInsert в этом окне } cmDepartmentEdit: { bInsMode := false; // открыть окно в режиме редактирования runWindow(winGetDepartmentEdit); } cmDone: cTmp := KatDeps.NRec; end; end.