PickMaterials. Интерфейс ведения каталога материалов и выбора материала из каталога |
Файл: Example\Src\VIP\Sklad\KatMaterials.vip
Издание 01.2007. Добавлены директивы документирования.
Издание 01.2006. Исправлена ошибка: событие cmInsert, возникавшее в главном окне (окно выбора) по F7, не передавалось в окно редактирования winKatMaterialsEdit. Вместо этого оно обрабатывалось в главном окне после закрытия окна winKatMaterialsEdit. Добавлена переменная bInsMode - режим открытия окна редактирования. Значение переменной устанавливается в главном окне. Обработка cmInsert в главном окне подавляется. В окне winKatMaterialsEdit событие cmInsert дублируется в обработчике cmInit.
Издание 01.2006. В интерфейсе ведения каталога материалов PickMaterials убрана панель (как лишняя сущность). Соответствующие табличные события вынесены в обработчик tableEvent.
//****************************************************************************** // (c) корпорация Галактика // Демопроект 1.0 - Управление снабжением // Интерфейс работы с каталогом материалов (выбор, ввод и корректировка) //****************************************************************************** #component "C_SKLAD" //****************************************************************************** objInterface objPickMaterials; end; vipInterface PickMaterials implements objPickMaterials licensed(free); //****************************************************************************** #doc Интерфейс работы с каталогом материалов (выбор, ввод и корректировка). #end interface PickMaterials 'Каталог материалов' EscClose, Cyan, DoAccept; show at (0,0,79,20); create view var bInsMode : boolean; // режим открытия окна winKatMaterialsEdit: // true - добавить запись, false - редактировать cTmp : comp; as select KatMaterials.* from KatMaterials ; parameters cTmp; //============================================================================== // winKatMaterialsEdit //============================================================================== window winKatMaterialsEdit 'Каталог материалов' (,, scKatMaterialsEdit); show at (1,1,78,18); browse brwKatMaterials; table KatMaterials; fields KatMaterials.Name #3'Наименование материала' ('Наименование материала') : [40], noProtect; KatMaterials.EI #3'Ед.изм.' ('Единица измерения') : [10], noProtect; KatMaterials.Price #3'Цена' ('Цена за единицу') : [10], noProtect; end; // browse brwStages; //------------------------------------------------------------------------------ handleEvent cmInit: // если вошли по cmInsert, то в этом окне ее надо продублировать if (bInsMode) PutCommand (cmInsert); end; // handleEvent tableEvent table KatMaterials cmUpdateRecord: if (update current KatMaterials <> tsOK) message('Ошибка при выполнении операции.' + chr(13) + 'Повторите ввод данных.', OkButton+Error); cmInsertRecord: if (insert current KatMaterials <> tsOK) message('Ошибка при выполнении операции.' + chr(13) + 'Повторите ввод данных.', OkButton+Error); cmDeleteRecord: if (delete current KatMaterials <> tsOK) message('Ошибка при выполнении операции.' + chr(13) + 'Повторите удаление данных.', OkButton+Error); end; // tableEvent end; // window winKatMaterialsEdit //============================================================================== // Main Window //============================================================================== browse brwKatMaterials2 (,,scKatMaterialsSelect); show at (1,1,78,19); table KatMaterials; fields KatMaterials.Name #3'Наименование материала' ('Наименование материала') : [40], protect; KatMaterials.EI #3'Ед.изм.' ('Единица измерения') : [10], protect; KatMaterials.Price #3'Цена' ('Цена за единицу') : [10], protect; end; //------------------------------------------------------------------------------ handleEvent cmInsert: { bInsMode := true; // открыть окно в режиме добавления записи runWindow(winKatMaterialsEdit); stop; // заблокировать стандартную обработку cmInsert в этом окне } cmSkladEdit: { bInsMode := false; // открыть окно в режиме редактирования runWindow(winKatMaterialsEdit); } cmDone: cTmp := KatMaterials.NRec; end; // handleEvent end.