Опубликован: 25.09.2009 | Доступ: свободный | Студентов: 911 / 84 | Оценка: 3.72 / 2.78 | Длительность: 10:50:00
Лекция 8:

Меню в Oracle Forms

< Лекция 7 || Лекция 8: 123 || Лекция 9 >
Аннотация: В этой лекции слушатель научится создавать меню, определять его структуру, создавать подменю и всплывающее меню. Также в этой лекции слушатель ознакомится с различными типами команд меню, способами обращения к элементам меню и их программированием.

Меню - это набор элементов, позволяющих пользователю осуществлять быстрый доступ к наиболее часто используемым командам: Execute_Query, Exit_Form, Next_Record, Enter_Query или Previous_Item. Если рассматривать стандартное меню - меню (рис. 8.1) по умолчанию, то большинство его команд ассоциировано с функциональными клавишами и встроенными процедурами. Меню Oracle Forms представлено отдельным модулем, который может быть использован совместно и одновременно любым количеством форм. В Forms вы можете не только применять меню по умолчанию, но и создавать свое собственное.

Меню Oracle Forms.

Рис. 8.1. Меню Oracle Forms.

Использование меню по умолчанию

Как уже было сказано ранее, Oracle Forms имеет свое стандартное меню команд, которое еще называется "меню по умолчанию". Вы можете управлять отображением стандартного меню с помощью параметра DEFAULT&SMARTBAR свойства "Menu Module" формы (рис. 8.2). Если вы сотрете это слово, то при последующем запуске формы меню и панель инструментов исчезнет. Для того чтобы отобразить только меню, без панели инструментов, сотрите сочетание " &SMARTBAR ", оставив слово DEFAULT.

Свойство "Модуль меню" формы

увеличить изображение
Рис. 8.2. Свойство "Модуль меню" формы

Создание специальных меню

Несмотря на то что меню по умолчанию содержит солидный набор необходимых команд, все же в большинстве случаев оказывается, что было бы неплохо добавить ту или иную команду, например, запуск отчета, другой формы или выполнение команды операционной системы. Вы не можете изменить стандартное меню (рис. 8.3), поэтому для того чтобы добавить в меню новые команды, вам придется создать собственное меню. Чтобы не делать лишнюю работу и повторно не воспроизводить команды стандартного меню, вы можете править существующий шаблон - OFGMNUT.MMB, который находится в папке DevSuiteHome_1\cgenf61\ ADMIN\. Для подключения шаблона выполните следующие действия:

  1. Найдите файл DevSuiteHome_1\cgenf61\ADMIN\OFGMNUT.MMB.
  2. Откройте шаблон в форме.
Примечание: когда вы подключите к форме собственное меню, панель инструментов исчезнет и вам придется создавать собственную панель.
Шаблон меню OFGMNUT.MMB

увеличить изображение
Рис. 8.3. Шаблон меню OFGMNUT.MMB

Создание меню, пунктов меню и подменю

Для того чтобы научится создавать меню, необходимо знать его структуру, а именно основные объекты, которые его составляют:

  • меню (menu) - это главное меню и подменю. Главное меню - это меню типа "Файл", "Правка", а подменю - это иерархическое меню, ассоциированное с определенным пунктом меню и возникающее при его выборе;
  • пункт, или элемент меню (menu item) - это элементы главного меню или подменю. Вы можете создавать программные единицы для элементов меню.

В зависимости от состояния меню могут быть динамическими и статическими. Правильнее, конечно же, пользоваться статическим меню, так как меню должно быть неизменным и не должно сбивать пользователя с толку. Когда нам нужно, чтобы элементы меню изменялись в зависимости от текущего состояния приложения или действий пользователя, мы используем динамическое меню. Примером такого меню может служить меню "Запрос" стандартного меню, в котором при выборе элемента "Enter Query" остальные пункты подменю становятся недоступными. Такой способ проектирования меню имеет преимущество над статическим, так как исключается выполнение пользователем команд, недопустимых в режиме запроса. Элемент меню, как и любой другой элемент Oracle Forms, имеет свое имя, которое уникально в пределах модуля и используется для обращения к нему в программных единицах.

У каждого меню и пункта меню есть имя, которое однозначно определяет его в модуле меню.

Примечание: не создавайте длинных меню, так как короткие меню более приятны и удобны для восприятия. Также не следует создавать меню с большим уровнем вложенности или со сложной иерархической структурой, так как в таком меню легко потеряться и пользователю будет проще выполнить требуемую команду иным способом.

Редактор меню

Проектировать меню в Forms не составляет особой сложности, так как все действия выполняются с помощью единственного инструмента - Menu Editor ("Редактор меню"), который имеет небольшой набор команд, позволяющих быстро создать меню. Поэтому прежде чем приступить к созданию своего первого меню, ознакомимся с основными характеристиками редактора (рис. 8.4).

Редактор меню

увеличить изображение
Рис. 8.4. Редактор меню

Рассмотрим более подробно управляющие элементы редактора, отображенные на рисунке.

  • Создать ниже (Create Down) - это специальная команда, которая добавляет подменю ниже выбранного пункта меню или подменю. Эта команда аналогична команде главного меню Forms - Edit | Create Down или комбинации клавиш Ctrl+Down.
  • Создать справа (Create Right) - это специальная команда, которая добавляет подменю справа от выбранного пункта меню или подменю. Она аналогична команде главного меню Forms - Edit | Create Right или комбинации клавиш Ctrl+Right.
  • Удалить (Delete) - это специальная команда, которая удаляет выбранный пункт меню. Если вы удаляете пункт меню, который содержит другие подменю, то они будут автоматически удалены вместе с элементом меню, к которому они принадлежат. Эта команда аналогична команде главного меню Forms - Edit | Delete или клавише Delete.
  • Развернуть (Expand) - это специальная команда, которая предназначена для развертывания (отображения) всех элементов подменю, относящихся к текущему элементу меню или подменю. Эта команда аналогична команде главного меню Forms -View | Expand.
  • Свернуть (Collapse) - это специальная команда, которая предназначена для свертывания (скрытия) всех элементов подменю, относящихся к текущему элементу меню или подменю. Эта команда аналогична команде главного меню Forms - View | Collapse.
  • Развернуть все (Expand All) - это специальная команда, которая предназначена для развертывания (отображения) всех элементов меню. Она аналогична команде главного меню Forms - View | Expand All.
  • Свернуть все (Collapse All) - это специальная команда, которая предназначена для свертывания (скрытия) всех элементов меню. Она аналогична команде главного меню Forms - View | Collapse All.
  • Переключить ориентацию (Switch Orientation) - это специальная команда, которая предназначена для изменения ориентации меню. Она позволяет превратить горизонтальное меню в вертикальное и наоборот одним нажатием кнопки.
  • Текущее меню (Display Menu) - это элемент список, который отражает текущее меню, отображаемое в редакторе меню. При выборе элемента появляется список доступных меню модуля меню. Этот элемент предназначен для быстрого переключения между меню модуля.

Создание меню

Теперь, когда мы ознакомились с инструментарием редактора меню и структурой меню, можно приступить к созданию меню. Создайте простое меню с небольшим набором команд, для этого выполните следующие действия:

  1. Создайте модуль меню с помощью команды главного меню File | New | Menu или командой "Create" навигатора объектов, находясь на узле Menus (Меню). Сохраните модуль как FMENU.MMB. По умолчанию после сохранения модуля его название в Навигаторе Объектов изменится со стандартного названия MODULE1 на имя, присвоенное при сохранении. Вы можете изменить имя модуля двойным щелчком левой кнопки мыши по названию модуля и ввести новое.

    Изменение имени модуля в Навигаторе Объектов не влияет на имя файла модуля меню. Модулей меню, как и модулей форм, можно создавать неограниченное количество.

  2. Для того чтобы создать меню, выберите узел Menus модуля FMENU и нажмите кнопку "Create" навигатора объектов. Вы также можете создать меню командой главного меню Edit | Create или нажатием комбинации клавиш Ctrl+Insert. Так же как и имя модуля меню, вы можете изменить имя меню, поэтому, повторяя ранее описанные действия, переименуйте меню с MENU1 на MyMenu. В пределах одного модуля можно создавать неограниченное количество меню.
  3. Щелкните правой кнопкой мыши по названию меню и выберите пункт "Menu Editor" из всплывающего меню для запуска Menu Editor (рис. 8.5).
    Структура меню

    Рис. 8.5. Структура меню
  4. Выберите элемент <New_Item> в окне рисования редактора меню и назовите его "Форма". Нажатием кнопки "Create Right" для создания новых элементов меню справа от текущего элемента выберите (рис. 8.6):
    • Блок;
    • Запись.
    Создание главных элементов меню

    Рис. 8.6. Создание главных элементов меню
  5. Вернитесь к элементу "Форма" и нажатием кнопки "Create Down" создайте подменю, состоящее из элементов:
    • Открыть;
    • Сохранить;
    • Отменить;
    • Вызвать отчет;
    • Выход.
  6. Перейдите к элементу "Блок" и, повторяя действия, описанные в предыдущем примере, создайте подменю из элементов:
    • Следующий блок;
    • Предыдущий блок;
    • Очистить блок.
  7. После создания подменю "Блока" перейдите на следующий элемент - "Запись" и создайте для него подменю следующего содержания:
    • Первая;
    • Последняя;
    • Следующая;
    • Предыдущая;
    • Удалить.
  8. Перейдите в пункт подменю "Выход" элемента "Форма" и нажмите кнопку "Create Right" для создания еще одного подменю. Назовите новый элемент "Сохранить изменения", нажмите "Create Down" для создания пункта подменю ниже текущего и назовите его "Без сохранения изменений". На рис. 8.7 показана итоговая структура меню, которая должна была у вас получиться после выполнения упражнения.
  9. Вы можете изменить ориентацию меню, то есть превратить его в вертикальное, нажав кнопку "Switch Orientation" (рис. 8.8).
Структура меню FMENU.

увеличить изображение
Рис. 8.7. Структура меню FMENU.
Вертикальное меню.

Рис. 8.8. Вертикальное меню.
< Лекция 7 || Лекция 8: 123 || Лекция 9 >
Константин Лукин
Константин Лукин

ошибка: FRM47337  Tree node label can not be null

при выполнении скрипта

DECLARE
 Itree ITEM;
 top_node Ftree.Node;
 new_node Ftree.Node;
 i_value VARCHAR2(30);
BEGIN
 Itree := Find_Item('tree_block.tree_item ');
 new_node := Ftree.Add_Tree_Node(Itree, Ftree.ROOT_NODE,
   Ftree.PARENT_OFFSET, Ftree.LAST_CHILD,
   Ftree.EXPANDED_NODE, i_value, NULL, i_value);
END;

Юлия Малыгина
Юлия Малыгина
приведена функция скрытия URL отчета и ее применение, но применения так и нет