Россия, Москва, Московский Государственный Университет имени Ломоносова М.В., 2002 |
Элементы Forms Builder. Обзор элементов и их общих свойств. Элементы ввода
Рисунок (Image)
Рисунок (Image) – это элемент, который отображает растровое или векторное изображение из файловой системы или Базы Данных. Рисунок имеет вид прямоугольной рамки. Элемент "Рисунок" недоступен для отображения только в терминальном режиме.
Вообще в Forms существует два вида изображения – это изображение как элемент шаблонной графики и как элемент интерфейса, который может быть ассоциирован со столбцом Базы Данных.
Создание Рисунка
Как уже было сказано выше, элемент "Рисунок" может быть базовым или управляющим. Для создания изображения выполните следующие действия:
- Находясь в Редакторе Разметки, найдите на панели инструментов элемент "Рисунок" и начертите его на канве. Присвойте изображению имя IMG.
- Вы можете заполнить изображение двумя способами:
- извлечь из ассоциированного с элементом столбца Базы Данных;
- с помощью встроенной процедуры READ_IMAGE_FILE.
- Рассмотрим пример, в котором заполним изображение процедурой READ_IMAGE_FILE. Для этого разместите на канве слева от изображения новую кнопку и создайте для нее триггер WHEN-BUTTON-PRESSED. В свойстве "Метка" кнопки укажите значение "Загрузить картинку". В теле триггера напишите следующий код:
declare filename varchar2(100); begin filename:=get_file_name(filename); read_image_file(filename, 'BMP', 'img'); end;
- Запустите форму и нажмите кнопку, после чего на экране появится диалоговое окно для выбора файла изображения. Вы можете записать изображение в файл операционной системы WRITE_IMAGE_FILE, для этого:
- Создайте дополнительно вторую кнопку на канве и определите для нее триггер WHEN-BUTTON-PRESSED. В свойстве "Метка" кнопки укажите значение "Загрузить картинку". В теле триггера напишите следующий код:
write_image_file('C:\izo_copy.bmp', 'BMP', 'img');
- Запустите форму еще раз и нажмите сначала первую кнопку "Загрузить картинку", а затем вторую кнопку "Записать изображение". После того как вы нажмете вторую кнопку, изображение из элемента "Рисунок" запишется в файл izo_copy.bmp. Вы также можете управлять изображением, используя свойства:
- Формат изображения – в этом свойстве вы выбираете формат хранения изображения из выпадающего списка. Для работы с изображением вам доступны следующие форматы:
- Глубина изображения – это свойство задает глубину изображения при чтении или записи. Существует четыре вида установки глубины изображения:
- первоначальный;
- монохромный;
- серый;
- LUT;
- RGB.
- Качество Сжатия – определяет степень сжатия файла изображения при чтении или записи вне зависимости от того, был ли он сжат ранее. Существует шесть видов сжатия:
- ничего (нулевой);
- минимум;
- низкий;
- средний;
- высокий;
- максимум.
- Качество Отображения – это свойство определяет качество отображения рисунка. Доступно три вида качества:
- высокое;
- среднее;
- низкое.
- Способ масштабирования – определяет, как будет выводиться изображение в случае, если оно превышает размеры элемента. Существует два способа:
- усеченный – изображение уместится лишь частично;
- полный – изображение будет масштабироваться так, чтобы уместиться в элементе.
Программное управление изображением
Вы можете загружать изображение в элемент во время выполнения программы, например, двойным щелчком мыши по изображению или при попадании фокуса на картинку. Для управления изображением программно используйте триггеры:
- WHEN-IMAGE-ACTIVATED ;
- WHEN-IMAGE-PRESSED.
Переключатель
Переключатель – это элемент интерфейса, позволяющий пользователю задавать логические значения в виде отметок (флажков). В GUI и в браузере этот элемент имеет вид прямоугольника с надписью справа и индикатором отметки внутри. Если переключатель включен, то в прямоугольнике отображается индикатор отметки, иначе – пустая белая область. В текстовом режиме (Forms6i и ниже) переключатель отображается в виде квадратных скобок с надписью справа и индикатором отметки внутри в виде крестика. Вы можете использовать переключатели для:
- установки состояния объекта. Вы можете создать переключатель, который будет управлять отображением элемента;
- хранения значений. Переключатели хранят значения, которые определены состоянием элемента – "Включен" или "Выключен". Переключатели могут хранить три основных типа данных: DATE, NUMBER или CHAR;
- установки значения столбца Базы Данных.
Создание переключателя
Для того чтобы создать переключатель, находясь в Редакторе Разметки, выберите на панели инструментов элемент "Переключатель" (Check box) и разместите его на канве. Рассмотрим основные свойства переключателя.
- Метка (Label) – надпись, выводимая справа от прямоугольника переключателя.
- Значение при выборе (Value when Checked) – это значение, которое будет определять состояние переключателя как "Включен". Если хранимое значение переключателя равно "значению при выборе", то переключатель включается.
- Значение при отмене выбора (Value when Unchecked) – это значение, которое будет определять состояние переключателя как "Выключен". Если хранимое значение переключателя равно "значению при отмене выбора", то переключатель не включен.
- Присвоение Выключателю значения Другие (Check Box Mapping of Other Values) – определяет поведение переключателя, если в нем хранится или ему присваивается значение, отличное от заданного при выборе или отмене выбора.
Если переключатель определен как базовый, то есть свойство "Элемент Базы Данных" истинно, при выборе состояния переключателя в ассоциированный с ним столбец будет копироваться значение этого состояния.
Программное управление переключателями
Для того чтобы инициировать какое-либо действие при выборе состояния переключателя, нужно ассоциировать с ним триггер WHEN-CHECKBOX-CHANGED и выполнить в нем какое-либо действие.
- Создайте элемент переключатель и присвойте ему имя C_BX.
- Создайте элемент "Текст" (Text Item), назовите его T_item и разместите его слева от переключателя.
- Создайте триггер для переключателя WHEN-CHECKBOX-CHANGED и напишите в нем приведенный ниже код:
IF :c_bx=checked THEN SET_ITEM_PROPERTY('t_item', font_size, 20); ELSE … END IF;
- Запустите форму, введите любое символьное значение в элемент "Текст" и включите переключатель. При включении переключателя размер шрифта в текстовом элементе увеличится в соответствии с заданным значением.
Вы также можете управлять свойствами переключателя в режиме выполнения программы с помощью процедуры SET-ITEM-PROPERTY и получать значения свойств с помощью функции GET-ITEM-PROPERTY.
Радиогруппа
Радиогруппа – это совокупность переключателей (радиокнопок), объединенных в одну структуру (радиогруппу), в которой каждый элемент взаимно исключает остальные. Радиогруппу можно представить как набор опций, в котором при выборе одной опции все остальные становятся недоступными. Радиокнопка изображается в виде окружности с жирной точкой внутри, если она выбрана, или в виде пустой окружности, если не выбрана. Радиогруппа может содержать любое число радиокнопок. Каждая радиокнопка, несмотря на то что она является частью группы, может иметь свои личные атрибуты, такие как значение, размер и подпись.
Радиогруппа может быть определена как базовая или как управляющая. Если радиогруппа базовая, то она представляет конкретный столбец Базы Данных. Любая выбранная опция определяет значение всей радиогруппы, поэтому, переключая радиокнопки, вы тем самым изменяете значение записи в ассоциированном с ней столбце. Рассмотрим свойства, специфичные для этого элемента.
- Метка (Label) – надпись, выводимая справа от окружности радиокнопки.
- Значение радиокнопки (Radio Button Value) – определяет значение радиокнопки при выборе. Значение выбранной радиокнопки представляет конкретное значение всей радиогруппы, поэтому каждый раз при выборе радиокнопки вы устанавливаете новое значение для всей радиогруппы.
Создание радиогруппы
Само слово "группа" дает представление о том, что необходимо как минимум две радиокнопки для создания радиогруппы. Создадим радиогруппу.
- В запущенном Редакторе Разметки на панели инструментов выберите элемент "Радиокнопка" и начертите его на канве.
- Одна радиокнопка как элемент ничего собой не представляет, так как является единственной опцией и выбирать, собственно, нечего. При создании радиокнопки автоматически создается радиогруппа с номером ниже, чем у только что созданного элемента. Присвойте радиокнопке значение 1, а метку определите как "Разрешить операции DML".
- Находясь в Навигаторе Объектов, запустите Палитру Свойств радиогруппы. Назовите радиогруппу "RGroup" и присвойте свойству "Начальное значение" числовое значение 2.
- Создайте вторую радиокнопку. Как только вы попытаетесь начертить вторую радиокнопку, на экране появится окно "Radio Groups" ( рис. 9.1). Это окно представляет собой список доступных радиогрупп. Каждый раз, создавая новую радиокнопку, Forms будет автоматически запускать это окно, чтобы вы смогли выбрать радиогруппу, в которой планируете разместить новый элемент.
- Выберите радиогруппу для размещения нового элемента и подтвердите выбор. Присвойте новой радиокнопке значение 2, а метку определите как "Разрешить операции DML". Начальное значение определяет радиокнопку, которая будет выбрана при запуске формы. Радиогруппа должна быть обязательно инициирована заданием свойств "Значением по умолчанию" или "Присваивание Значений Другие" ; исключением является случай, когда в радиогруппе существует кнопка со значением NULL.
- Несмотря на то что радиогруппа включает в себя набор радиокнопок, триггеры создаются для всей группы, а не для каждого элемента в отдельности. Создайте триггер WHEN-RADIO-CHANGED радиогруппы и напишите в нем следующий код:
IF :RGroup =1 THEN SET_BLOCK_PROPERTY('block_name', update_allowed, property_false); SET_BLOCK_PROPERTY('block_name', delete_allowed, property_false); SET_BLOCK_PROPERTY('block_name', insert_allowed, property_false); ELSIF :RGroup =2 THEN SET_BLOCK_PROPERTY('block_name', update_allowed, property_true); SET_BLOCK_PROPERTY('block_name', delete_allowed, property_true); SET_BLOCK_PROPERTY('block_name', insert_allowed, property_true); END IF;
В этом примере показано, как радиокнопка определяет значение радиогруппы. Поэтому для программного управления группой вам достаточно использовать имя самой группы. Как видно из примера, обращение к радиокнопке осуществляется через ее значение.
Вы также можете программно управлять свойствами радиогруппы и получать их значения с помощью встроенных процедур и функций:
- GET_RADIO_BUTTON_PROPERTY ;
- SET_RADIO_BUTTON_PROPERTY ;
- CONVERT_OTHER_VALUE ;
- DISPLAY_ITEM.
Рассмотрим процедуру CONVERT_OTHER_VALUE.
- Выберите только что созданную нами радиогруппу и запустите Палитру Свойств.
- Найдите свойство "Присваивание Значений Другие" и установите его значение равным 2.
- Создайте кнопку и триггер WHEN-BUTTON-PRESSED, в котором напишите следующий код:
convert_other_value('RGroup');
В этом примере показано, как по нажатию кнопки выбирается радиокнопка со значением, указанным в свойстве "Присваивание Значений Другие".
Элемент отображения (Неизменный текст)
Неизменный текст – это элемент интерфейса, предназначенный для отображения информации. Особенность этого элемента в том, что он предоставляет данные только для чтения и при наведении курсора на этот элемент вы не получаете фокуса входа в этот элемент. Несмотря на то что элемент отображения предоставляет информацию только для чтения, вы можете манипулировать содержимым этого элемента. Элемент "Неизменный текст" может быть базовым, то есть отображать данные ассоциированного с ним столбца Базы Данных, и управляющим.
Создание элемента отображения
Чтобы создать элемент отображения, выполните следующие действия.
Находясь в Редакторе Разметки, найдите на панели инструментов элемент "Элемент отображения" и начертите его на канве.
Обращаясь к элементу отображения в своих PL/SQL-программах, вы можете манипулировать его отображаемым содержимым. Выполним небольшой пример.
- Запустите Редактор Разметки и разместите на канве элемент отображения и кнопку. Присвойте элементу отображения имя D_item.
- В триггере кнопки WHEN-BUTTON-PRESSED напишите следующий код:
:d_item:=10;
Если вы выполните этот пример, то увидите, как при нажатии на кнопку изменится отображаемое содержимое элемента.
Текст
Текст – это статическая текстовая метка, значение которой определяется только на этапе проектирования. Текст относится к графическим элементам, перечень которых вы можете увидеть, раскрыв узел Картинка (Canvas). К этому элементу нельзя обращаться в программах, так как вы сразу получите ошибку "Неверная переменная привязки". Для того чтобы создать элемент "Текст", находясь в Редакторе Разметки, найдите на панели инструментов одноименный элемент и начертите его на канве.