Опубликован: 17.09.2009 | Уровень: специалист | Доступ: платный
Лекция 4:

Создание форм. Режимы и свойства формы

< Лекция 3 || Лекция 4: 12 || Лекция 5 >
Аннотация: В этой лекции слушатель знакомится с палитрой свойств формы и основными режимами формы Normal, Query и Enter Query Mode. Также в лекции будут рассмотрены настройка файла конфигурации TNSNAMES. ORA и настройка внешнего вида приложения и дизайнера форм.

Цель лекции: обучить слушателя понимать особенности различных режимов формы и назначение свойств формы. Также слушатели научатся конфигурировать файл tnsnames.ora и настраивать внешний вид формы.

Режимы формы

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

  • Режим ввода запроса – Enter Query Mode ;
  • Нормальный режим – Normal Mode ;
  • Режим запроса – Query Mode.

Для того чтобы узнать, в каком состоянии находится форма в текущий момент, необходимо проверить системную переменную – :SYSTEM.FORM_STATUS.

Enter Query Mode (Режим ввода запроса)

Режим ввода запроса предназначен для ввода критерия поиска данных в БД. Вы можете вводить критерии запроса в любые базовые элементы, поддерживающие этот режим. При работе в этом режиме пользователю:

Разрешено:

  1. выполнение запросов, как с критерием, так и без критерия ограничения выборки;
  2. подсчет записей;
  3. использование Query/Where-диалога;

Запрещено:

  1. перемещение в другие блоки;
  2. выход из приложения;
  3. выполнение операций DML – Insert (Вставка), Delete (Удаление) и Update (Обновление).

Также в режиме Enter Query запрещено выполнение некоторых триггеров. Пользователь при создании приложения может управлять поведением формы и элементов в режиме ввода запроса. На рис. 4.1 показан пример ограниченного и неограниченного запроса.

Ограниченная и неограниченная выборка

Рис. 4.1. Ограниченная и неограниченная выборка

Для того чтобы извлечь все данные из таблицы (Unrestricted Query), достаточно выполнить одну из перечисленных операций:

  1. Нажать кнопку Execute Query на панели инструментов Menu Toolbar.
  2. Перевести форму в режим запроса с помощью команды меню Query|Enter Query или нажатием кнопки на панели инструментов Enter Query и выполнить команду Execute Query.
  3. Выполнить команду меню Query|Execute Query.

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

  1. Переведите форму в режим запроса.
  2. Установите курсор в любой базовый элемент и введите критерий поиска.
  3. Нажмите кнопку Execute Query на панели инструментов или выполните любое другое действие, ассоциированное с этой командой.

Если в качестве критерия запроса вы введете конкретное значение, то при формировании запроса оно будет интерпретироваться аналогично оператору "AND=критерий". Если же вам необходимо задействовать другие операторы ограничения выборки, такие как Like, IN или Between, то вам необходимо знать специальные символы, которые реализуют эту возможность.

Элемент Символ/критерий Действие
ID 122 Извлекает строку с ID=122, то есть действует аналогично оператору "…and ID=122"
Name %ван Символ "% и _" действует аналогично оператору Like, то есть возвращает все имена, в которых используется сочетание "ван"
ID #BETWEEN 100 AND 122 Символ hash "#" реализует оператор BETWEEN
ID :I (I – :variable_name) Вызывает Query/Where-диалог

Normal Mode (Нормальный режим)

Нормальный режим – это режим, в котором пользователь может вставлять и модифицировать данные БД, то есть выполнять операции DML. Любое действие, которое пользователь выполняет над базовым элементом, интерпретируется как вставка новой записи, удаление или изменение существующей. При работе в этом режиме пользователю:

Разрешено:

  • выполнять операции DML – Insert (Вставка), Delete (Удаление) и Update (Обновление);
  • выполнять запросы без ограничений выборки, то есть извлекать все записи;
  • фиксировать ( commit ) или откатывать ( rollback ) изменения;
  • перемещаться в другие блоки;
  • выходить из приложения – завершать текущую run-time сессию.

Запрещено:

  • выполнение запросов с критерием выборки;
  • вызов Query/Where-диалога.

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

Примечание: если вы сделали изменения и не зафиксировали их, то такая операция, как Execute Query, то есть "выполнить запрос", становится недоступной.

Display Error (Отображение ошибок)

Если при выполнении какой либо операции возникает ошибка или исключительная ситуация, которая отображается в строке состояния, то она может быть отображена командой Display Error Help|Display Error.

Окно Display Error

Рис. 4.2. Окно Display Error

Когда надо использовать такой способ отображения ошибки и в чем его преимущество? Самая главная особенность этого диалога в том, что он отображает не только код, но и весь текст ошибки. Когда вы получаете в строке состояния сообщение об ошибке типа "FRM-40505:Ошибка Oracle: не в состоянии выполнить запрос" или просто необработанное исключение (Unhandled exception), которое по большому счету вам ни о чем не говорит, то, вызвав окно "Display Error", вы получаете более конкретизированный ответ, а именно код и описание причины возникновения ошибки.

Свойства формы

Разрабатывая форму, вы можете управлять не только настройками объектов модуля, но и настройками самого модуля. Большинство свойств модуля глобальны и действительны для всего приложения. Изменяя настройки модуля, вы можете подключать или отключать меню, устанавливать уровень проверки БД. Разработчику доступны следующие свойства для управления настройками формы:

  • Имя (Name) – внутреннее имя формы. Имя формы необязательно должно совпадать с именем модуля.
  • Информация о подклассе (Subclass Information) – в этом свойстве вы можете указать Класс свойств, на котором хотите базировать форму.
  • Окно консоли (Console Window) – в этом свойстве вы указываете окно, в котором будет показана консоль Forms Builder. Если вы зададите для этого свойства значение NULL, то все сообщения, которые вы определили в своей форме, не будут отображаться в статусной строке.
  • Вызвана отсрочка (Defer Required Enforcement) – если значение этого свойства истинно, то проверка всех элементов, имеющих установленный атрибут "Обязательный", будет отложена до тех пор, пока не наступит проверка записи, – то есть до того момента, пока не будет осуществлена проверка записи, свойство "Обязательный" будет отключено.
  • Ограничения на перемещение мышью (Mouse Navigation Limit) – в этом свойстве вы можете задать область перемещения мыши относительно текущего объекта. По умолчанию текущее значение – "Форма". Ниже перечислены объекты ограничения:
    • Форма;
    • Блок Данных;
    • Запись;
    • Элемент.
  • Первый Блок Данных при перемещении (First Navigation Data Block) – в этом свойстве вы можете задать блок, к которому будет выполнена навигация при запуске формы или при ее очистке, то есть после выполнения процедуры CLEAR_FORM. Если значение этого свойства установлено в NULL, то Forms выполнит навигацию к блоку, который размещен в списке блоков Данных под номером один или к блоку, навигация к которому задана в триггере WHEN-NEW-FORM-INSTANCE.
  • Группа Атрибутов Визуализации Текущей Записи – имя именованного атрибута визуализации, который используется, когда элемент входит в текущую запись.
  • Уровень проверки – определяет область проверки формы во время выполнения. Вы можете устанавливать следующие уровни проверки формы во время выполнения:
    • По умолчанию;
    • Форма;
    • Блок Данных;
    • Запись;
    • Элемент.
  • Режим Взаимодействия – устанавливает режим блокирования для взаимодействия с Базой Данных.
  • Максимальное Время Запроса – в этом свойстве вы можете определить максимальное время, которое форма будет ожидать выполнения запроса, после чего выполнит прерывание.
  • Максимум Выбранных Записей – это свойство определяет максимальное число выбранных записей, после чего выполнение запроса будет прервано.
  • Режим Изоляции (Isolation Mode) – уровень изоляции транзакции.
  • Канва с Горизонтальной/Вертикальной Панелью Инструментов – это свойство характерно только для окна MDI, так как выводит для него горизонтальную/вертикальную панель инструментов.
  • Направление – задает направление текста "Слева направо" или "Справа налево", другими словами, определяет позицию курсора ввода.

Выбор системы координат

Используя Палитру Свойств, вы можете определять, в какой системе координат даны размеры и позиции в символьных ячейках. Чтобы определить систему координат для формы, выполните следующие действия:

  1. Находясь в Навигаторе Объектов, запустите Палитру свойств модуля формы.
  2. Найдите и выберите свойство "Система координат" для вызова окна "Информация о координатах" ( рис. 4.3.).
    Окно "Информация о координатах"

    Рис. 4.3. Окно "Информация о координатах"
  3. В поле "Система координат" вы можете выбрать тип системы – Абсолютная (Real) или Символьная (Character). Единицы измерения доступны только для абсолютной системы координат, что же касается Символьной системы, то тут вы ограничиваетесь заданием ширины и высоты символьной ячейки. В Символьной системе координат единицы измерения не используются. В абсолютной системе координат возможны следующие единицы измерения:
    • пиксел;
    • сантиметр;
    • дюйм;
    • пункт;
    • десятичная точка.
  4. Выберите Абсолютную систему координат, а в качестве единицы измерения – Пиксел.
  5. При выборе значения выключателя "Масштабирование шрифта по умолчанию" установки высоты и ширины символьной ячейки становятся недоступными. Если значение выбрано, Forms самостоятельно выполняет масштабирование шрифта.
  6. Отмените выбор "Масштабирования шрифта по умолчанию" и установите ширину ячейки, равную 7, а высоту – 14.

Для того чтобы изменения вступили в силу, нажмите кнопку "ОК" – или нажмите кнопку "Отмена", чтобы вернуть значения по умолчанию.

< Лекция 3 || Лекция 4: 12 || Лекция 5 >
Вячеслав Легостин
Вячеслав Легостин
Казахстан, Алматы, Технический лицей №165, 2010
Олег Живов
Олег Живов
Россия, Москва, МАИ, 2008