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