Для того чтобы триггеры навигации могли корректно работать необходимо, прежде всего, установить свойства, связанные с навигацией:
• модуль формы:
- Movse navigation limit;
- first navigation block;
• блок:
- Navigatin style;
- Next navigation block;
- Previous navigation block;
• элемент:
- Enabled;
- Navigatable;
- Mouvse navigate;
- Next/previous navigation item.
Свойство Movse Navigation limit имеет значение для элементов Button, check box, List item, Radio group, Custom item (VBX, OLE2 Container).
Устанавливается:
• в True – Forms обеспечивает навигацию в новый элемент, соответст-вующие триггеры срабатывают;
• в False – Forms не обеспечивает навигацию, когда пользователь акти-вирует новый элемент мышью.
Навигация бывает внешняя и внутренняя. Внешняя навигация видна пользователю, например, перемещение курсора в форме на следующий эле-мент. Внутренняя навигация включает последовательности событий:
• вход в форму;
• вход в блок;
• вход в запись;
• вход в элемент.
Когда Вы фиксируете ввод, модификацию или удаление в БД, Вы не видите движение курсора, но при этом происходят события, связанные с внутренней навигацией, прежде чем запускается механизм фиксации: выход из элемента, выход из записи, выход из блока (рис. 2.10).
Рис. 2.10. Внутренняя навигация
Навигационные триггеры:
• PRE и POST – срабатывают во время навигации;
не срабатывают, если уровень единицы проверки
(Validation Unit) выше уровня объекта триггера;
допускают применение встроенных подпрограмм;
в случае ошибки возвращает точку ввода на исходный
объект;
• WHEN – NEW – объект –INSTANCE – срабатывают после навигации;
срабатывают, если уровень единицы проверки выше, чем
объект триггера;
допускают встроенные подпрограммы;
ошибка ничего не меняет.
PRE и POST навигационные триггеры срабатывают при входе или выхо-де из элемента, имя которого является именем триггера. Например, PRE – TEXT – ITEM триггер срабатывает при входе в текстовый элемент.
Объекты WHEN – NEW – объект – INSTANCE триггера это: ITEM, RECORD, BLOCK, FORM – срабатывают после успешной навигации в объект. Используйте эти триггеры с подпрограммой SET – object – PROPERTY (рис. 2.11).
1 – PRE и POST
2 – When – New –объект - Instance
Рис. 2.11. Навигационные триггеры
Пример
Триггер WHEN – NEW – ITEM – INSTANCE
if CHECKBOX_CHECKED ('order.order_filled')
THEN SET_ITEM_PROPERTY ('order.date_ordered',
updateable, property_true);
GO_ITEM ('order.date_shipped');
end if;
Триггер PRE – TEXT – ITEM
if CHECKBOX_CHECKED ('order.order_filled')
THEN SET_ITEM_PROPERTY ('order.date_ordered',
updateable, property_true);
GO_ITEM ('order.date_shipped');
end if;
Вы можете инициировать навигацию программно, вызывая подпрограммы из следующего списка:
GO_FORM – для многократных приложений навигация в открытую форму;
GO_BLOCK, GO_ITEM, GO_RECORD, NEXT_BLOCK, NEXT_ITEM, NEXT_KEY – навигация в следующий элемент, связанный с Primary Key;
NEXT_RECORD – навигация в первый элемент следующей записи;
DOWN – навигация в установленный текущим элемент следующей записи;
NEXT_SET – в другой набор записей из БД и др.
Подведем итоги. Управление навигацией осуществляется с помощью свойств. При этом различают внутреннюю и внешнюю навигацию. Триггеры навигации WHEN – NEW – объект – INSTANCE, PRE- и POST. Вы можете организовать контроль за навигацией и навигацию в триггерах. |