Разработка Web-приложений в Oracle Forms

Инструменты проектирования. Виды и назначения

Показывать лекцию целиком

Цель лекции: ознакомить слушателя с основными инструментами проектирования форм в Forms Developer.

Oracle Forms функционирует в среде графического интерфейса (GUI), например, Microsoft Windows, Linux. Основные инструментальные средства, которые используются для разработки, навигации и изменения свойств формы и элементов, – это Навигатор объектов (Object Navigator), Редактор Разметки (Layout Editor) и Инспектор свойств (Object Properties Sheets). Далее подробнее остановимся на каждом из перечисленных инструментов.

Объектный навигатор (Object Navigator)

Как вы уже смогли убедиться, глядя на рис 5.1, Объектные Навигаторы концептуально между собой ничем не отличаются. В Объектном Навигаторе отображаются все объекты Oracle Forms: элементы блоков данных, модули, блоки, библиотеки, параметры, меню, объекты БД, стандартные встроенные пакеты Forms. Элементами Объектного Навигатора можно манипулировать при помощи кнопок и элементов главного меню. Навигатор представляет собой иерархическое дерево, поэтому внутри Объектного Навигатора компоненты вашего приложения представлены в виде иерархии, что позволяет разработчику видить сгруппированную и упорядоченную структуру создаваемого приложения.

(рис 5.1) Объектный навигатор

В Объектном Навигаторе вы можете выполнять следующие действия:

  • Навигатор представляет собой иерархическое дерево, поэтому в нем осуществляются такие действия, как: раскрывать и сворачивать элементы для быстрого поиска объектов, отображать соответствующие иконки напротив выбранных объектов.
  • Выбирать объекты – выбранный вами объект становится выделенным и в редакторе разметки и таблице свойств (если включен режим синхронизации). При выборе любого элемента в навигаторе главное меню Forms Designer будет подсвечивать только те пункты меню, которые будут соответствовать выбранному вами элементу.
  • Создавать и удалять объекты, библиотеки или элементы в вашем приложении.
  • Возможность перенести один элемент (библиотеку, объект) в другой модуль обычным копированием, то есть возможность перемещать объекты, как в модуле, так и между модулями.
  • Быстро находить объекты с помощью "Быстрого поиска", причем поиск ведется без учета регистра и достаточно ввода одной буквы.
  • Двойным щелчком по триггеру или программному модулю вы можете вызвать Редактор PL/SQL.
  • Быстрый доступ к командам и программным модулям элемента – достаточно нажать правой кнопкой мыши для выпадения всплывающего меню, пункты которого будут соответствовать выбранному элементу.
  • Установка меток – используется для пометки элемента в Навигаторе. Для создания метки достаточно выделить объект в Навигаторе, перейти в меню Navigator, а затем выбрать пункт -> Add Bookmark (добавить метку) или перейти к уже созданной метке командой -> Go to Bookmark.
  • Переименование объектов. Для этого нужно выбрать объект для переименования, затем щелкнуть на его имени, после чего появится прямоугольная область с мигающим курсором, в которой вы присваиваете новое имя вашему объекту. По умолчанию при создании объекта ему присваивается имя с последовательным номером, например, BLOCK1, LOV8 и т. д.
  • Множественное выделение – выделение группы элементов. Для этого нужно с нажатой клавишей Control щелкать левой кнопкой мыши по элементам, которые вы хотите выделить. Перемещаться как часть множественного выбора могут только объекты одного и того же типа.
  • Возможность запуска и генерации приложения. Для этого достаточно выделить любой элемент, принадлежащий тому модулю, который вы хотите запустить или сгенерировать в исполняемый файл меню, библиотеки или формы, а затем выбрать нужную вам команду запуска или генерирования в главном меню Forms'a — "Tools" либо меню "Файл->Администратор…".
  • По умолчанию в Oracle Forms опция Synchronize включена, а это значит, что все открытые Layout Editor, Table Properties и Menus Editor поддерживают одни и те же выбранные объекты. То есть при выборе какого-либо элемента в Навигаторе или Редакторе Разметки он становится текущим везде. Если элемент выбран в Редакторе Разметки, то он также будет выделен в Навигаторе, и наоборот.

    При выключенной синхронизации выбор объекта в Навигаторе или в Редакторе не приведет к выделению этого же элемента в других окнах.

    Элементы, которые не принадлежат ни одной вид-картинке (Canvas), отображаются на Null-канве; точно так же и Canvas, не имеющий своего окна, отображается в Null Window.

    Правила принадлежности копирования и перемещения объектов в пределах одного модуля или между несколькими модулями:

  • При копировании или перемещении объекта вы также перемещаете (копируете) принадлежащие ему объекты. К примеру, при копировании блока копируются также и триггеры, подсоединенные к этому блоку, и все элементы, принадлежащие этому блоку, и триггеры, подсоединенные к этим элементам.
  • Принадлежность объекта и простые связи, которые могут существовать между объектами, нужно отличать, т. к. при создании окна ему назначается вид-картинка, но эта вид-картинка не будет однозначно принадлежать этому окну, т. к. и окно, и Canvas принадлежат форме. Отношения между окном и Canvas – это просто связь, которую вы определяете установкой свойства Canvas Window, можете поменять и переназначить в любой момент и любому окну, и любому блоку.
  • Правила принадлежности для объектов в модулях формы могут быть просто установлены следующим образом: элементы и отношения принадлежат блокам; триггеры могут принадлежать элементам, блокам или формам; все остальные объекты принадлежат формам. Причем при копировании нужно соблюдать согласованность элементов – это значит, что элемент, принадлежащий блоку, нельзя переместить в узел, в котором находятся программные модули, или в узел Parameters.
  • Правила принадлежности для модулей меню: элементы Menu принадлежат меню; меню принадлежат модулям меню; все остальные объекты принадлежат модулям меню.
  • Модули библиотек содержат только подпрограммы и пакеты, которые все принадлежат модулю библиотеки и не могут содержать больше никаких других элементов.
  • Теперь кратко рассмотрим все элементы Навигатора.

    Триггеры (Triggers)

    Триггеры Oracle Forms – это функции, программные блоки PL/SQL, которые выполняются при возникновении какого-либо действия или условия в форме. Например, при запуске формы срабатывает триггер WHEN_NEW_FORM_INSTANCE ("при запуске формы"), что дает вам возможность выполнять какие-либо действия до запуска формы: изменить размеры формы, извлечь данные и т. д. Поэтому эти действия называются событиями, т. к. возникают в ответ на какое-либо действие. Чаще всего триггеры используют для отключения или запрета (запрет на выполнения DML), модификации или расширения значения по умолчанию. Триггеры определяются для формы, блока, записи или для каждого поля в отдельности, причем триггер, созданный для данного элемента, будет срабатывать только для этого элемента. Триггер в Forms'e могут вызывать друг друга, поэтому нужно учитывать приоритеты срабатывания триггера в зависимости от уровня его определения.

    Предупреждения (Alerts)

    Предупреждения используются для вывода дополнительной информации или сообщения, написанного разработчиком для обработки исключительной ситуации, а также различных предупреждений перед выполнением какой-нибудь операции, которая требует ответа или подтверждения от пользователя. Изменять или присваивать какие-либо функции предупреждениям вы можете с помощью таблицы свойств этого компонента, где вам будет предложено выбрать тип предупреждения, количество кнопок в его окне и т. д. Окно свойств этого объекта можно вызвать двойным щелчком мыши, выбрав пункт главного меню Tools->Property Pallete, клавишей F4 или через всплывающее меню. Создается также двойным щелчком по узлу Alerts, через Навигатор или меню Navigator-> Create.

    Библиотеки (Attached Libraries)

    ).

    (рис 5.2) Attche Library

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

  • С помощью кнопки Browse вызвать окно PL/SQL Library File (размещение библиотеки PL/SQL) и выбрать нужную вам библиотеку либо самостоятельно набрать путь к библиотеке и ее имя с расширением *.pll.
  • С помощью радиокнопок выбрать, откуда будет подсоединена библиотека: в нашем случае это File System, то есть из вашей файловой системы, соответственно, Database — из вашей БД, Either – из другого источника.
  • После этого нажмите кнопку Attach – выполнить подсоединение, Cancel – отменить присоединения библиотеки и Help – вызов справки по данному объекту.
  • Блоки (Blocks)

    Блоки – этот узел содержит созданные вами "Блоки данных"; по умолчанию Oracle Forms в качестве названия блока берет имя таблицы (представления), на основе которой он строился. Причем блоки необязательно должны быть привязаны к объекту базы данных (таблице, представлению), поэтому могут быть созданы и при этом не относиться ни к одной таблице – так, например, объект Tree View всегда требует одиночного размещения в блоке данных, а также такие блоки используются для содержания какой-либо временной информации, вспомогательных элементов, могут быть обычным отображателем информации (например "Об авторе"), различных индикаторов и т. д. Базовыми или основными блоками таблицы называются блоки, которые относятся к объекту (таблице, снимку, представлению).

    Элементы блоков (Items)

    Элементы сгруппированы в Навигаторе объектов внутри соответствующих блоков. Элемент соответствует одиночному значению данных или полю. Элементы могут содержать столбцы базы данных или использоваться в качестве контейнера для других связанных данных.

    Связи блоков (Relationships)

    Связи блоков определяют реляционную взаимосвязь между блоками данных формы. Реляционная связь в Oracle Forms рассматривается как объект и имеет свои настраиваемые свойства. Связи, созданные в Forms, существуют только в пределах данного приложения и не распространяются на другие.

    Раскладки объектов (Canvas-Views)

    Раскладка объектов (canvas, от англ. "холст") – структура, предназначенная для размещения объектов формы. Существует 4 типа раскладок: содержательный ( content ), стековый ( stacked ), горизонтальная и вертикальная панель инструментов ( Horizontal/Vertical Toolbar Canvas-Views ). В большинстве случаев используется один из двух типов раскладок – либо содержательный, либо стековый.

  • Содержательная раскладка не предполагает наличия еще каких-либо раскладок, она занимает все окно формы.
  • Стековую раскладку можно размещать поверх других раскладок окна формы.
  • Горизонтальная и вертикальная панель инструментов – набор кнопок-иконок с определенными для них пользовательскими командами.
  • Есть еще один специальный тип раскладки – пустой ( null ). Пустая раскладка используется для размещения объектов, не требующих отображения в окне формы.
  • Редактор (Editor)

    Редактор – это окно для просмотра и изменения объемных полей данных. В таких полях могут содержаться комментарии пользователя, справки, советы, большие коментарии и т. п., которые не вмещаются в поле, отведенное для отображения элемента.

    Списки значений (LOVs)

    Списки значений (LOVslists of values ) предназначены для выбора возможных значений некоторого поля. Списки значений представляют собой данные, содержащиеся в именованном объекте. Список значений может использоваться и как проверка правильности ввода данных пользователем.

    Группы объектов (Object Groups)

    Группы объектов – это специальный механизм упаковки различных объектов формы в так называемый контейнер, который может потом использоваться при создании других форм (важно, что при этом теперь требуется внесение минимума изменений). После создания группы объектов как элемента формы любой из прочих объектов формы может быть скопирован в группу объектов.

    Данная возможность Forms представляет собой один из элементов объектно ориентированного подхода, который значительно повышает качество разработки, т. к. позволяет использовать уже созданные части при разработке нового продукта.

    Параметры (Parameters)

    Параметры можно определить для обеспечения начального ввода данных в форму. Обычно параметры используются для передачи значений из одной формы в другую (в приложениях со многими формами). В ранних версиях Developer/2000 единственным методом передачи значений между формами было применение глобальных переменных, которые очень неэффективно использовали доступную память. Использование глобальных переменных возможно и сейчас, но рекомендуется применять параметры в случаях, когда структура передаваемых данных специфична для конкретных форм (не носит универсальный характер для всех форм приложения).

    Программные модули (Program Units)

    Программные модули – это PL/SQL-процедуры, пакеты или функции, которые можно вызывать из триггеров формы. Программный модуль – понятие, полностью эквивалентное понятию подпрограммы в языках 3-го поколения. Типичным кандидатом в программные модули является фрагмент кода, который используется более чем в одном триггере. Программные модули также могут применяться для разбиения больших программ на логически независимые части.

    Классы свойства (Property Classes)

    Класс свойства определяет свойства класса объектов. В случаях, когда множество объектов формы имеют идентичные свойства, классы свойства хороши тем, что гарантируют разработчику непротиворечивость объектов. Классы свойства позволяют увеличить степень стандартизации модуля формы, что сокращает общее время разработки.

    Группы записей (Record Groups)

    О группе записей можно думать как о виртуальной таблице в памяти. Группы записей — это структурированные наборы данных, которые могут использоваться для передачи данных между модулями прикладных программ либо для заполнения списков значений или других элементов списка.

    Визуальные атрибуты (Visual Attributes)

    Визуальный атрибут объекта определяет цвет, шрифт и характеристики стиля для каждого элемента. В то время как каждое из этих значений может быть установлено индивидуально для каждого объекта, визуальный атрибут обеспечивает механизм опредения правильной комбинации визуальных характеристик для формы. Высококачественное приложение не должно применять много различных визуальных атрибутов в пределах элементов. Твердо придерживаясь набора визуальных атрибутов, формы могут использовать специфические характеристики элемента, чтобы показать определенное значение.

    Окна (Windows)

    Окно – это рамка, в пределах которой форма появляется на экране пользователя. Каждый холст привязан к определенному окну в форме, и несколько холстов могут быть привязаны к одному окну. Простая форма может содержать несколько окон или состоять из одного окна.

    Таблица свойств (Object Properties Sheets)

    Инспектор объектов или таблица свойств (рис 5.3) – это окошко в виде таблицы, состоящей из двух колонок: Property Name (название свойства), Property Value (значение свойства), а также:

  • верхняя строка состояния – отображает имя текущего объекта, в нашем случае – Data Block: Block1 ;
  • Property Hint (строка состояния) – отображает краткую справку по выбранному вами свойству;
  • Find (строка поиска) с двумя опциями поиска – Search Forward (искать следующее), Search Backward (искать предыдущее) – для поиска нужного вам свойства по его имени (достаточно ввода одной заглавной буквы наименования свойства).
  • (рис 5.3) Таблица свойств (Object Properties Sheets)

    В левом верхнем углу располагаются кнопки (перечисляю слева направо):

  • Copy Properties – копирует в буфер установки свойств, выведенных в текущий момент в окне Properties ;
  • Paste Properties – вклеивает установки свойств из буфера в список свойств в окне Properties. Свойства, которые есть в буфере, но отсутствуют в списке свойств, игнорируются;
  • Add Property – выводит список значений ( LOV ), из которого вы можете выбрать свойство для добавления в класс свойств. Эта команда доступна только в том случае, если единственный текущий выбранный объект – класс свойств;
  • Delete Property – удалить свойство;
  • Property Class (свойство класса) – по нажатию создает класс свойств в Объектном Навигаторе ;
  • Inherit – устанавливает текущее свойство на определение по умолчанию. Если список свойств базируется на классе свойств, который включает текущее свойство, то установкой по умолчанию является установка, определенная в этом классе. Если текущий список свойств не базируется на классе свойств или базируется на классе, который не включает текущее свойство, то Inherit устанавливает свойство на установку Oracle Forms по умолчанию;
  • Intersection/Union – переключает окно Properties между режимами вывода целиком и пересечений. Эта опция определяет, какие свойства будут показываться в случае, если одновременно будет выбрано более одного объекта (множественный выбор). В режиме пересечения (по умолчанию) выводятся только общие свойства выбранных объектов. В цельном режиме выводятся свойства всех выбранных объектов;
  • Freeze/Unfreeze – переключает синхронизацию окна Properties на On и Off. Когда Freeze установлено на Off (по умолчанию), для вывода свойств объектов, выбираемых в Навигаторе и в других окнах, список свойств обновляется. Когда Freeze установлено на On, список свойств фиксируется и не получает обновлений, позволяя вам сравнивать его с другими списками свойств.
  • Таблица свойств помогает настраивать, преобразовывать, переименовывать, устанавливать параметры, настраивать на производительность, быстродействие, согласованность и т. д. Когда вы выбираете объект в редакторе ( Layout Editor ) или Объектном Навигаторе, окно Properties обновляется, чтобы показать свойства этого объекта. По умолчанию редактор свойств находится в опции Synchronize и обновляется каждый раз при выборе другого объекта. Вы можете включать и выключать синхронизацию для определенного набора, щелкая на кнопке Freeze/Unfreeze на линейке инструментов окна Properties – это даст вам возможность в случае надобности запустить дополнительное окно Properties, например, для сравнения свойств двух и более элементов Forms'a. При изменении какого-либо значения свойства объекта изменяется и иконка слева от названия свойства: если вы сделали изменение значения, вместо иконки с изображением шарика появится иконка с изображением зеленого квадратика.

    Окно свойств вызывается либо в главном меню "Tools->Properties", либо двойным щелчком по элементу (кроме объектов программ и видкартинок). А для запуска нескольких окон щелкните на иконке элемента с нажатой клавишей Shift.

    Редактор разметки (Layout Editor)

    Редактор Разметки (рис 5.4) – это, собственно, место графического построения формы, служит для создания элементов, а также для их разметки, упорядочения на форме и создания графического интерфейса формы. Визуально Layout Editor можно разбить на несколько частей:

  • в левой части Layout Editor находится панель инструментов, на которой размещены кнопки для создания объектов формы, а также элементы управления визуальными эффектами и шрифтами. Далее мы более подробно остановимся на этих компонентах;
  • в верхней части находится меню Layout Editor, а также 2 выпадающих списка – список Canvas (вид-картинок) и список Block (блоков данных). С помощью этих списков вы можете быстро назначить выбранному вами блоку данных любой Canvas, причем при выделении какого-либо объекта эти списки будут сразу же отображать принадлежность элемента тому или иному блоку данных или Canvas ;
  • измерительные линейки и опорные линии. Горизонтальная и вертикальная измерительные линейки вверху и слева от рабочего пространства предоставляют справочную информацию для определения размеров и расположения объектов в Layout Editor. Чтобы их скрыть, отмените опцию Rulers в меню View. Единицы измерения этих линеек в Layout Editor можно установить на символьные ячейки, дюймы, сантиметры или точки. Для вывода диалогового окна Ruler Settings выберите View->Settings->Ruler Settings. Опорные линии – это горизонтальные и вертикальные точечные линии, которыми можно пользоваться для ориентировки при размещении объектов на картинке. Для создания опорной линии поместите указатель на какую-либо измерительную линейку, затем щелкните и перетащите в рабочее пространство. Во время выполнения опорные линии не показываются. Чтобы перенести опорную линию, перетащите ее в другое место. Чтобы удалить опорную линию, вытащите ее из рабочего пространства. Чтобы временно спрятать опорные линии, не удаляя их, отмените выбор опции Ruler Guides в меню Arrange ;
  • сетка – в пределах рабочего пространства имеется определенная сетка, помогающая вам размещать объекты. Сетка представляется в текущих единицах измерения измерительных линеек. Чтобы скрыть линии сетки, отмените выбор опции Grid в меню View.
  • (рис 5.4) Редактор разметки (Layout Editor)

    Если у вас имеется только один Canvas, то в выпадающем списке вид-картинок будет отображена только одна вид-картинка, если же у вас в форме имеется более одного Canvas, то Oracle Forms выводит окно, где перечислены все вид-картинки вашего модуля в виде списка значений LOV, и вы можете выбрать вид-картинку, которую хотите редактировать.

    В Layout Editor вы можете создавать, вырезать, вставлять и удалять объекты, исключениями являются объект картинки (когда включена опция View->Show Canvas ), прямоугольник просмотра (когда включена опция View->Show View ), линия прокрутки блока.

    Способы вызова Редактора Разметки:

  • вызов через всплывающее меню – выделите какой-либо объект из узла блока данных, нажмите правую кнопку мыши и в появившемся меню выберете пункт Layout Editor ;
  • выберите (учтите, что для выполнения этого правила необходимо, чтобы в навигаторе не был выбран объект, поддерживающий разметку, например, библиотека) Tools->Layout Editor, затем укажите вид-картинку ( Canvas ), с которой вы хотите поработать. И соответственно, если у вас в форме более одной вид-картинки, то появится окно списка вид-картинок, если же вид-картинка одна, то Oracle отобразит ее автоматически, иначе, то есть если она отсутствует, Forms ее автоматически создаст.
  • Одновременно можно запускать столько Редакторов Разметки, сколько у вас блоков данных.

    Вернуться к учебному плану