Стр. 11-1

 

Глава 11

 

Работа с окнами и вид-картинками

 

Данная глава охватывает следующие темы:

О вид-картинках   11 - 2

Создание вид-картинок   11 - 5

Об окнах   11 - 8

Создание окон   11 - 12

Вывод и закрытие окон во время выполнения   11 - 18

Перемещение и изменение размеров окон во время выполнения   11 - 22

Назначение окну вид-картинок с несколькими содержимыми   11 - 23

Создание линеек инструментов   11 - 26

Вывод наложенных вид-картинок   11 - 29

Реагирование на события окна во время выполнения   11 - 40

Стр. 11-2

 

О вид-картинках

 

При определении окон для прикладной программы вы работаете с двумя типами объектов Oracle Forms: вид-картинками и окнами. Одна форма может включать в себя любое количество окон.

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

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

Отношения между элементами, вид-картинками и окнами вы определяете установкой их свойств. Каждый элемент имеет свойство Canvas, которое определяет картинку, на которой выводится этот элемент. (Если вы создаете элемент в Layout Editor, то Oracle Forms устанавливает для вас это свойство автоматически.) Каждая вид-картинка, в свою очередь, имеет свойство Window, определяющее окно, в котором он будет выводиться. Для каждого окна в форме вы должны назначать по меньшей мере одну вид-картинку.

 

Типы вид-картинок

 

Имеется четыре типа вид-картинок: Content, Stacked, Horizontal Toolbar и Vertical Toolbar. Когда вы создаете вид-картинку, вы указываете ее тип путем установки свойства Canvas-view Type. Тип указывает, как вид-картинка выводится в окне, которому он назначен. По умолчанию - тип Content. Одному и тому же окну можно назначать более одной вид-картинки. Например, вы можете создать окно, которое выводит одну вид-картинку заполнения, две вид-картинки наложения и вид-картинку горизонтальной линейки инструментов.

Вид-картинки Content   Большинство вид-картинок - это вид-картинки заполнения. Вид-картинка заполнения - это “базовый” вид, занимающий все содержимое окна, в котором он выводится. Для каждого создаваемого окна вы должны определить по меньшей мере одну вид-картинку заполнения. Во время разработке одному и тому же окну может быть присвоено более одной вид-картинки заполнения, но во время выполнения только один из них может выводиться в окне одновременно.

Вид-картинки Stacked   Вид-картинка наложения выводится в окне поверх, или “наложением”, вид-картинки заполнения, назначенного этому же окну. Вид-картинки наложения затеняют некоторую часть низлежащей вид-картинки заполнения, и зачастую показываются и скрываются программно. В окне одновременно может выводиться более одной вид-картинки наложения.

Стр. 11-3

 

Вид-картинки Horizontal/Vertical Toolbar   Вид-картинки линеек инструментов используются для создания линеек инструментов для отдельных окон. Горизонтальные линейки инструментов выводятся вверху окна, сразу под его линейкой меню. Вертикальные линейки инструментов выводятся вдоль левого края окна.

 

 

Рисунок

 

 

О видах

 

Отношение между картинкой и видом - это фундаментальная концепция в Oracle Forms. Представьте вид как прямоугольник, помещенный на картинку. Область картинки в виде - это то, что операторы видят в окне во время выполнения.

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

Для вид-картинок заполнения или линейки инструментов вид определяется окном, в котором выводится картинка. Изменение размера окна во время выполнения (например, мышью) эффективно изменяет размер вида для картинки заполнения этого окна.

Для вид-картинки наложения размер вида может определяться во время разработки установкой свойств View Width и View Height. (Для вид-картинок заполнения или линейки инструментов эти свойства игнорируются, так как размер вида для вид-картинки заполнения или линейки инструментов определяется размером самого окна.)

 

Стр. 11-4

 

Для любого типа вид-картинки вы можете указывать исходную точку вида на картинке; то есть располагать прямоугольник вида в определенном месте на его картинке. Перемещение вида, такое как изменение его размера, изменяют ту часть картинки, которую операторы видят в окне во время выполнения. Если картинка заполнения больше  своего вида (то есть больше своего окна), то для изменения положения вида на картинке окно можно прокручивать, делая видимой другую часть картинки.

 

Рисунок

 

 

Стр. 11-5

 

Создание вид-картинок

 

Одним из первых шагов по конструированиюприкладной программы является создание вид-картинок заполнения, которые будут выводиться в окнах в вашей форме.

В Oracle Forms есть три способа создания вид-картинки заполнения:

·         Создайте блок с базовой таблицей в окне New Block.

Когда вы создаете болк с базовой таблицей в окне New Block, вы можете указать имя картинки, на которой хотите выводить элементы в этом блоке. Если указанной вами картинки не существует, то Oracle Forms создает для вас с этим именем вид-картинку заполнения по умолчанию.

·         В новой форме вызовите Layout Editor.

В Layout Editor вы можете создавать элементы и шаблонные объекты на определенной вид-картинке. (Если при вызове Layout Editor в форме еще нет вид-картинок, то Oracle Forms автоматически создает вам для работы вид-картинку по умолчанию.)

·         Создайте Canvas-view в Объектном Навигаторе. В Навигаторе вы можете создавать вид-картинку любого типа (Content, Stacked, Horizontal или Vertical Bar).

Чтобы создать вид-картинку в Объектном Навигаторе:

1.        Находясь в Объектном Навигаторе, установите курсор на узле Canvas-view.

2.        Выберите Navigator->Create.

Oracle Forms вставляет в иерархию новую вид-картинку. Для вывода свойств новой вид-картинки выберите Tools->Properties.

3.        В окне Properties установите свойство Canvas-view Type на нужный тип. По умолчанию это Content.

Примечание: Для вид-картинки Content свойства, находящиеся под заголовком Stacked View, не применяются.

4.        Чтобы указать окно, в котором вы хотите выводить эту вид-картинку, установите свойство Window. По умолчанию новые вид-картинки назначаются первому по списку окну под узлом Windows в Навигаторе.

Для вывода новой вид-картинки в Layout Editor дважды щелкните в Навигаторе на иконке объекта вид-картинки.

Стр. 11-6

 

Установка свойств вид-картинки в Layout Editor

 

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

Примечание: В Layout Editor вы не можете очищать, вырезать, копировать, экспортировать или дублировать объекты картинкок или видов.

Чтобы изменить размеры картинки в Layout Editor:

1.        Убедитесь, что объект картинки выводится установкой опции View->Show Canvas на On (по умолчанию).

2.        Прокрутите окно Layout Editor до тех пор, пока не будет видим нижний правый угол картинки, затем, чтобы выбрать картинку, щелкните на ее правом или нижнем крае.

3.        Когда картинка выбрана, в ее нижнем правом углу выводится средство управления выбором.

4.        Для изменения размера картинки щелкните и перетащите нужным образом средство управления выбором.

 

 

Рисунок

 

 

Чтобы в Layout Editor установить атрибуты визуализации картинки

Вы можете в Layout Editor устанавливать атрибуты визуализации объекта картинки точно так, как делаете это для любого другого объекта: Выберите картинку и потом выберите нужные цвета из цветовой палитры.

Стр. 11-7

 

Чтобы вывести на экран, переместить или изменить размер вида в Layout Editor:

Чтобы вывести на экран вид для текущей картинки в Layout Editor как черный прямоугольник толщиной в 1 пункт, включите опцию меню View->Show View.

Для картинок заполнения или линеек инструментов прямоугольник вида представляет окно, которому назначена вид-картинка. Изменение размеров вида в Layout Editor изменяет свойства окна Width и Height. И наоборот, изменение свойств Width и Height изменяет размеры прямоугольника вида в Layout Editor.

Для картинки наложения вид не зависит от того окна, в котором выводится вид-картинка, и ее размер управляется свойствами View Width и View Height.

Чтобы переместить вид, перетащите его в нужное место. Перемещение вида изменяет свойства X/Y Position on Canvas. Чтобы изменить размеры вида, щелкните на нем, затем перетащите одно из средств управления выбором.

 

 

Рисунок

 

 

Удаление вид-картинок

 

Вы можете удалять вид-картинки в Объектном Навигаторе. Когда вы удаляете вид-картинку, то любые шаблоны на картинке также удаляются. Все элементы, присвоенные картинке, становятся элементами NULL-картинками, то есть элементами, не присвоенными никакой вид-картинке. Элементы NULL-картинки во время выполнения на экран не выводятся.

Чтобы удалить вид-картинку:

1.        Находясь в Объектном Навигаторе, установите курсор на вид-картинку, которую хотите удалить.

2.        Выберите Edit->Cut или Navigator->Delete.

Стр. 11-8

Об окнах

 

Форма может включать в себя любое количество окон. Каждая новая форма автоматически включает в себя окно по умолчанию с именем WINDOW0. При необходимости вы можете создавать дополнительные окна, вставляя их в Объектном Навигаторе под узлом Windows.

Для каждого создаваемого окна вы должны также создавать по меньшей мере одну вид-картинку заполнения. Вид-картинка - это фон, на котором вы помещаете элементы интерфейса, шаблонный текст и графику. Вы связываете вид-картинку с окном установкой свойства вид-картинки Window.

Во время выполнения, если окно выводится на экран программно, или если происходит перемещение к элементу на вид-картинке, связанной с этим окном, то Oracle Forms выводит окно с соответствующим фоном вид-картинки.

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

 

Об MDI (Интерфейсе Нескольких Документов)

 

Oracle Forms полностью поддерживает систему оконного менеджмента MS Windows MDI (Интерфейс Нескольких Документов). Прикладные программы MDI выводят на экран родительское окно по умолчанию, называемое окном прикладной программы. Все другие окна в прикладной программе являются или окнами документов, или окнами диалогов.

Окно прикладной программы MDI создается менеджером окна во время выполнения и не показывается в списке окон формы. Но Oracle Forms разрешает вам программно изменять размеры, минимизировать и максимизировать окно MDI с помощью SET_WINDOW_PROPERTY.

При создании окна вы можете указать, хотите ли вы чтобы оно было документальным или диалоговым, устанавливая соответственно свойство Window Style.

Документальные окна всегда выводятся в рамке окна MDI прикладной программы. Если оператор изменяет размеры окна прикладной программы так, что оно становится меньше документального окна, то документальное окно обрезается. Операторы могут максимизировать документальное окно, чтобы оно занимало всю содержательную область окна прикладной программы.

Стр. 11-9

 

Диалоговое окно - свободно-плавающее, и, если они определены как Movable, операторы могут перемещать их за пределы окна прикладной программы. Если операторы изменяют размеры окна прикладной программы, в результате чего оно становится меньше диалогового окна, то диалоговое окно не обрезается.

 

 

Рисунок

 

 

Модальные или безрежимные окна

 

Окно может быть безрежимным или модальным. Когда вы создаете окно, вы указываете его модальность установкой свойства Modal на True или False. По умолчанию - False, создающее безрежимное окно.

Безрежимные окна   Одновременно может выводиться более чем одно безрежимное окно, и операторы могут между ними перемещаться, если ваша прикладная программа позволяет им это делать. На большинстве платформ GUI безрежимные окна могут также накладываться друг на друга впереди или позади других окон.

Безрежимные окна могут оставаться выведенными до тех пор, пока они не будут закрыты операторами, или не скрыты программно. Для безрежимного окна вы можете установить свойство Remove on Exit, чтобы указать, должно ли оно оставаться выведенным: если оператор перейдет к другому окну.

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

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

Кроме специфических по платформам ограничений модальные окна имеют следующие характеристики:

·         Свойство Remove on Exit к модальным окнам не применяется. По умолчанию Oracle Forms не позволяет операторам выходить из модальных окон с помощью мыши, но разрешает им перемещаться к другим окнам с помощью команд клавиатуры. Когда происходит такое перемещение, Oracle Forms всегда закрывает модальное окно, если только целевое окно само не является модальным.

·         Модальные окна не могут иметь линий прокрутки и установка свойств Scroll Bar для модальных окон не действует.

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

На других платформах модальные окна являются модальными относительно всей системы и должны закрываться перед тем, как оператор сможет послать ввод в окна, принадлежащие другим прикладным программам.

 

О корневых окнах

 

Создание корневого окна в форме не обязательно, оно обычно подходит только для прикладных программ с несколькими формами, то есть прикладных программ, разработанных так, что несколько модулей форм выполняются одновременно. Несколько форм в одном сеансе можно открывать выполнением встроенной процедуры OPEN_FORM или CALL_FORM.

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

Для форм не-MS Windows окно, на которое вы хотите вывести консоль, вы обозначаете установкой свойства формы Console Window. В прикладных программах с несколькими формами вы можете создавать корневое окно в каждой форме и присваивать ему консоль установкой свойства Console Window на root_window.

Стр. 11-11

 

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

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

В прикладной программе с несколькими формами тот факт, что одновременно может выводиться только одно корневое окно, влияет также на поведение тех форм, которые вызывают другие формы исполнением OPEN_FORM или CALL_FORM. Если корневое окно имеют и вызванная, и вызвавшая формы, и первый элемент с возможностью перемещения в вызванной форме находится на вид-картинке, присвоенной корневому окну, то исполнение OPEN_FORM или CALL_FORM приводит к преимуществу корневого окна вызванной формы над вызвавшей формой.

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

Из-за уникальных характеристик корневого окна некоторые его свойства имеют фиксированные установки. Перезапись этих установок в Designer не влияет на поведение окна во время выполнения:

·         Closeable (True)

·         Movable (True)

·         Fixed Size (False)

·         Remove on Exit (False)

·         Iconifiable (True)

·         Style (Document)

·         Inherit Menu (True)

·         Vertical/Horizontal Scroll Bar (False)

·         Name

·         Zoomable (True)

Стр. 11-12

 

Создание окон

 

Новая форма автоматически включает в себя одно окно с именем WINDOW0. По умолчанию все создаваемые вид-картинки присваиваются этому окну. Если вы строите форму, требующую дополнительных окон, то вы должны создать их сами. Одна форма может включать в себя любое количество окон.

Чтобы создать окно:

1.        Находясь в Объектном Навигаторе, установите курсор на узле Windows.

2.        Выберите Navigator->Create.

Oracle Forms вставляет в иерархию объектов окно по умолчанию.

3.        В окне Properties установите нужным образом свойства окна. Свойства под заголовком GUI Hints - это предложения для менеджера окна по внешнему виду и функциональности. Некоторые менеджеры окон могут поддерживать не все эти свойства.

4.        Каждому создаваемому окну вы должны присвоить по меньшей мере одну вид-картинку. Чтобы присвоить окну вид-картинку, установите свойство Window для той вид-картинки, которую вы хотите присвоить окну.

 

Связывание иконки с окном

 

На платформах GUI операторы могут закрывать или “минимизировать” безрежимное окно, так что оно на экране будет представляться только графической иконкой. Однажды иконизировав, оператор может опять вывести на экран это окно, щелкнув дважды по иконке.

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

Свойство

Описание

Iconifiable

Установите на True, чтобы указать, что окно должно быть иконизируемо.

Icon Name

Имя файла иконок, которые вы хотите использовать для окна. Oracle Forms ищет этот файл в ресурсном пути по умолчанию вашей системы.

Icon Title

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

Стр. 11-13

 

Чтобы не предоставлять операторам возможности иконизировать окно, установите свойство Iconifiable на False. (Если свойство Iconifiable установлено на False, то свойства Icon Name и Icon Title игнорируются.)

Примечание: В MS Windows путь поиска фалов иконок определяется переменной среды TK21_ICON в файле ORACLE.INI. Когда вы вводите имя файла иконок в свойстве Icon Name, то не включайте путь или расширение файла .ICO.

 

Вывод консоли на окне

 

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

В MS Windows консоль всегда выводится на окне прикладной программы MDI и не может выводиться в форме на отдельных документальных или диалоговых формах. Чтобы указать, что должна выводиться консоль, установите свойство формы Console Window на имя любого окна в форме. Чтобы скрыть консоль, установите Console Window на <Null>.

На не-Windows платформах вы можете выводить консоль на определенном окне, установив свойство формы Console Window на имя этого окна. Выводить консоль может только одно окно в форме и вы не можете менять назначение консоли во время выполнения.

 

 

Рисунок

 

 

Создание прокручивающегося окна

 

Вы можете создать окно с линейками прокрутки, установив свойства Vertical Scroll Bar и/или Horizontal Scroll Bar на True. Операторы могут использовать линейки прокрутки на окне для прокрутки выводимой в текущий момент в окне вид-картинки.

Стр. 11-14

 

Окно может горизонтально прокручиваться только в случае, если ширина его вывода меньше, чем ширина текущей выводимой в этом окне вид-картинки заполнения. Оно может прокручиваться вертикально, только в случае, если высота окна меньше, чем высота его текущей вид-картинки заполнения. (Помните, что операторы во время выполнения могут изменять размеры окна.)

Если окно такого же размера или больше своего текущей вид-картинки заполнения, то картинки вне текущего вида нет (то есть вне самого окна), и поэтому прокрутка не действует.

Концептуально вы можете понимать прокрутку как перемещение картинки заполнения так, что исходная точка вида меняется на другие координаты x,y, открывая тем самым другую часть картинки. Прокручивание не изменяет размеров вида, а только его местонахождение на картинке.

Линейки прокрутки на окне прокручивают только вид-картинку заполнения окна; но все вид-картинки наложения, выведенные в этом окне, перемещаются вверх/вниз и влево/вправо, как будто они часть картинки заполнения. (Вы можете также определить линейки прокрутки на вид-картинках заполнения, но они независимы от линеек прокрутки окна.)

Чтобы создать прокручивающееся окно:

1.        Создайте окно и установите его свойства следующим образом:

Свойство

Описание

Width/Height

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

Modal

Установите на False. (Модальное окно не может быть прокручиваемым.)

H./V.Scroll Bar

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

2.        Создайте для окна вид-картинку и установите ее свойства следующим образом:

Свойство

Описание

Type

Установите на Content.

 

Width/Height

Установите на требуемый размер, чтобы вид-картинка была больше, чем окно.

Window

Установите на имя того окна, которое вы создали в предыдущем пункте.

View H./V. Scroll Bar

Игнорируйте. Эти свойства применяются только к вид-картинке типа Stacked.

Прокрутка окна во время выполнения   Если вы программно прокручиваете окно, то в действительности вы прокручиваете вид-картинку заполнения, выводимую в этом окне. То есть вы изменяете положение вида на картинке, изменяя таким образом установки свойств X,Y Position on Canvas.

Стр. 11-15

 

Для программной прокрутки окна используйте процедуру SCROLL_VIEW. Следующий пример прокручивает вид-картинку заполнения окна горизонтально по координатам х,у соответственно 14 и 0:

Scroll_View(‘my_content_view’,14,0);

Вы можете также программно прокручивать, устанавливая свойство Х или Y Position on Canvas с помощью процедуры SET_VIEW_PROPERTY:

Scroll_View_Property(‘my_content_view’,X_POS_ON_CANVAS,14);

Динамическая прокрутка   Когда оператор или прикладная программа перемещается среди элементов, то Oracle Forms всегда держит видимым для оператора целевой элемент. Когда необходимо, Oracle Forms автоматически прокручивает вид-картинку, чтобы сделать видимым целевой элемент в пределах вида. Например, если оператор нажмет ТАВ (Next Item), чтобы перейти к элементу, находящемуся на той же картинке, но в текущий момент вне окна, то Oracle Forms динамически прокрутит вид-картинку, чтобы сделать целевой элемент видимым.

Единственное исключение из этого правила, это если оператор или прикладная программа прокручивает окно явно, а не в ответ на перемещение. В таком случае Oracle Forms позволяет элементу, имеющему в текущий момент фокус ввода, прокрутиться за пределы вида. Но следующее навигационное событие снова приведет к тому, что целевой элемент будет прокручиваться в границах вида.

 

Создание модального диалогового окна

 

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

Диалоги File и Print - примеры окон, которые на большинстве платформ GUI исполнены как модальные. Сигналы и списки значений (LOV) - примеры специализированных модальных диалоговых окон, природных объектов в Oracle Forms. Вы можете также создавать собственные диалоговые окна для функций со специфическими характеристиками.

Стр. 11-16

 

Чтобы создать модальное диалоговое окно:

1.        Создайте новое окно и установите его свойства следующим образом:

Свойство

Описание

Window Style

Установите на Dialog. (Действительно только для MS Windows.)

Modal

Установите на True.

Width/Height

Не обязательно, но диалоговое окно обычно меньше безрежимного окна, из которого оно вызывается.

Remove on Exit

Для модального окна недействительно.

H./V.Scroll Bar

Для модального окна недействительно.

2.        Создайте вид-картинку заполнения и присвойте ее созданному в п. 1 модальному окну, установив свойство Window.

3.        Создайте элементы, которые будут выводиться в этом окне.

4.        Примите решения по событиям, которые будут выводить и закрывать модальное диалоговое окно во время выполнения.

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

Событием перемещения может быть нажатие оператором клавиши ТАВ (Next Item), или, что более вероятно, триггер кнопки или команда меню, которые перемещают программно. Например, для перемещения к целевому элементу в диалоговом окне вы можете из триггера When-Button-Pressed вызвать встроенные подпрограммы NEXT_BLOCK, GO_BLOCK или GO_ITEM.

Для вывода модального окна вы можете также воспользоваться SHOW_WINDOW. Когда SHOW_WINDOW используется для вывода модального окна, она неявно выполняет переход к первому элементу с возможностью перемещения на вид-картинке для этого окна.

Закрытие модальных диалоговых окон   Большинство конструкций прикладных программ вызывают модальные диалоговые окна для того, чтобы они оставались на экране до тех пор, пока оператор или не примет, или не отменит их. Создавая такое окно, вы должны обеспечить чтобы оператору разрешалось только закрыть его в ответ на нужные события.

По умолчанию установка свойства Modal на True не дает операторам возможности выхода из окна посредством мыши, но не запрещает перемещение в другое окно нажатием таких клавиш как [Next Item] (TAB) или [Next Block]. Если операторам разрешено использовать клавиши для перехода в другое окно, то Oracle Forms всегда закрывает это модальное окно, если только целевое окно само не является модальным. (Заметьте, что для модального окна свойство Remove on Exit не действует.)

Стр. 11-17

 

При применении модального диалогового окна обычно вы захотите не давать оператору возможности выхода из этого окна с помощью навигационных клавиш, а разрешить закрывать окно только в ответ на определенные события, такие как нажатие оператором кнопки ОК или Cancel.

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

·         Установите свойства Previous Navigation Block и Next Navigation Block для блоков в диалоговом окне так, чтобы не дать возможности операторам перемещаться клавишами [Next Block] и [Previous Block]. Например, для блока с именем DIALOG вы можете установить эти свойства на DIALOG, чтобы сделать перемещение цикличным, не давая возможности операторам использовать эти клавиши для перехода к любому другому блоку.

·         Напишите в модальном окне для каждого блока соответствующий триггер на уровне блока. Например, вы можете определить на уровне блока триггер Key-Others, который будет отключать все клавиши, кроме тех, для которых вы уже определили триггер-клавиши (такой как Key-Nxt-Item) для возможности табуляции между элементами в модальном окне.

Запретив однажды операторам закрывать диалоговое окно с помощью клавиатуры, вы обязаны написать команды для закрытия диалога в ответ на требуемые события. Вы можете закрывать диалоговое окно программно, перемещаясь к элементу или блоку в безрежимном окне с помощью встроенных процедур, таких как GO_ITEM или GO_BLOCK. Например, модальное окно может содержать кнопку ОК с триггером When-Button-Pressed, который для выхода из модального окна исполняет оператор GO_BLOCK.

Вызов модального окна из модального окна   Для модального окна имеется возможность вызывать другое модальное окно. Например, стандартное модальное диалоговое окно MS Windows Printer Setup имеет кнопку Options, которая вызывает второе модальное окно.

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

Стр. 11-18

Вывод и закрытие окон во время выполнения

 

Когда вы строите прикладную программу, вы создаете одну или более вид-картинку и затем присваиваете их каждую определенному окну. Во время выполнения окна выводятся и закрываются в ответ на события навигации и программного управления.

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

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

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

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

Примеры событий навигации включают в себя Next Item, Previous Item, Next Block и Previous Block. Оператор может выдавать эти команды нажатием клавиш или выбирая команды в меню Default. Вы можете также инициировать навигацию программно, вызывая соответствующие встроенные подпрограммы, включая GO_ITEM и GO_BLOCK.

Дополнительную информацию см. в разделе “Управление навигацией” в Главе 8 “Подстройка формы”.

Закрытие окон в ответ на навигацию   Когда оператор или прикладная программа производит выход из безрежимного окна, то останется ли окно на экране или будет автоматически закрыто, определяет свойство Remove on Exit.

Если Remove on Exit установлено на True, то Oracle Forms автоматически закрывает окно при перемещении оператора или прикладной программы к элементу в другом окне. Если Remove on Exit установлено на False (установка по умолчанию), то Oracle Forms не закрывает окно при перемещении к элементу в другом окне.

Стр. 11-19

 

Свойство Remove on Exit не применяется для модальных окон (окон, свойство Modal которых установлено на True). Информацию о закрытии модальных окон вы найдете в разделе “Создание модального диалогового окна” ранее в данной главе.

 

Вывод и закрытие окон программно

 

Вы можете выводить окно во время выполнения формы процедурой SHOW_WINDOW или SET_WINDOW_PROPERTY. Если вы используете SHOW_WINDOW, то у вас есть возможность устанавливать координаты вывода X,Y. Если вы это не сделаете , то Oracle Forms использует текущие координаты вывода окна.

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

Если вы выводите окно программно, то Oracle Forms выводит в этом окне следующие вид-картинки:

·         текущую вид-картинку заполнения окна

·         любые вид-картинки наложения, присвоенные окну, у которых свойство Displayed установлено на True.

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

Следующие процедурные вызовы выводят окно с именем my_window и эквивалентны:

Show_Window(‘my_window’);

или

Set_Window_Property(‘my_window’, VISIBLE,PROPERTY_TRUE);

Следующий пример выводит то же окно на экран с координатами 5 и 10:

Show_Window(‘my_window’,5,10));

Стр. 11-20

 

Процедура SET_WINDOW_PROPERTY устанавливает только одно свойство окна за раз, и для достижения того же результата ее придется вызвать дважды:

Set_Window_Property(‘my_window’, WINDOW_POSITION,5,10);

Set_Window_Property(‘my_window’, VISIBLE,PROPERTY_TRUE);

Если вы программно выводите окно, которое уже выведено, но его уровень находится ниже других окон, то Oracle Forms поднимает это окно поверх других.

Чтобы закрыть окно, вы можете использовать процедуру HIDE_WINDOW или SET_WINDOW_PROPERTY:

Hide_Window(’my_window’);

или

Set_Window_Property(‘my_window’, VISIBLE,PROPERTY_FALSE);

 

Установка свойства View для определения первичного вид-картинки

 

Свойство окна View определяет первичную вид-картинку заполнения этого окна. Oracle Forms выводит окно с его первичной вид-картинкой когда оно выводится программно, а не в ответ на событие навигации.

Установка свойства View необязательна. Большинство окон выводятся в ответ на навигацию к элементу на определенной картинке. В таких случаях установка свойства View не требуется, так как предназначенная для вывода вид-картинка никогда не бывает двусмысленным.

Если вы выводите окно в первый раз в течение сеанса исполнением встроенной процедуры SHOW_WINDOW, то Oracle Forms выводит окно с его первичной вид-картинкой. Если свойство View оставлено неопределенным, то окно будет выведено без вида и будет выглядеть пустым.

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

Oracle Forms всегда выводит целевой элемент и вид-картинку во время события навигации. Поэтому, даже если вы установили свойство View для указания первичной вид-картинки, если необходимо, Oracle Forms выведет другую вид-картинку, чтобы сделать видимым целевой элемент.

Стр. 11-21

 

Программный показ и скрытие вид-картинок

 

Вы можете процедурой SHOW_VIEW или SET_VIEW_PROPERTY выводить вид-картинку в окне, которому она присвоена.

Следующие процедуры вызывают вывод вид-картинки с именем stacked_a и эквивалентны:

Show_View(‘stacked_a’);

или

Set_View_Property(‘stacked_a’,VISIBLE,PROPERTY_TRUE);

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

Если вы программно показываете вид, который уже выведен на экран, то Oracle Forms поднимает его поверх всех других видов в окне.

Если для вывода вид-картинки заполнения вы используете SHOW_VIEW или SET_VIEW_PROPERTY, то указанная вид-картинка заполнения замещает текущий вид заполнения окна.

Вы можете программно скрыть вид процедурами HIDE_VIEW или SET_VIEW_PROPERTY:

Hide_View(‘stacked_a’);

или

Set_View_Property(‘stacked_a’,VISIBLE,PROPERTY_FALSE);

Стр. 11-22

 

Перемещение и изменение размеров окон во время выполнения

 

Вы можете перемещать окно процедурами MOVE_WINDOW или SET_WINDOW_PROPERTY. Следующие процедуры перемещают указанное окно на координаты X,Y 6 и 8 и эквивалентны:

Move_Window(‘my_window’,6,8);

или

Set_Window_Property(‘my_window’,POSITION,6,8);

Вы можете менять размеры окна встроенной процедурой RESIZE_WINDOW или SET_WINDOW_PROPERTY. Следующие вызовы эквивалентны:

Resize_Window(‘my_window’,80,20);

или

Set_Window_Property(‘my_window’,WINDOW_SIZE,80,20);

Вы можете минимизировать (иконизировать) или максимизировать окно, установив свойство WINDOW_STATE, как показано ниже:

Set_Window_Property(‘my_window’,WINDOW_STATE,MAXIMIZE)

В MS Windows вы можете программно обратиться к окну прикладной программы MDI, используя в качестве имени окна константу FORMS_MDI_WINDOW. Только некоторые из свойств окон MDI можно устанавливать программно. За подробностями обратитесь к описанию SET_WINDOW_PROPERTY в системе сопровождающей помощи Help.

Часто требуется сконфигурировать размеры окна, позицию и состояние вывода во время старта прикладной программы, прежде чем оператор увидит в форме какие-либо окна. Вы можете это выполнить вызовом соответствующей встроенной подпрограммы в триггере When_New_Form_Instance. Если вы разрабатываете прикладную программу для работы под различными операционными системами и с различными дисплейными устройствами, то для проверки следующих свойств и соответственной установки размеров окон вы можете использовать GET_APPLICATION_PROPERTY:

·         DISPLAY_HEIGHT

·         DISPLAY_WIDTH

·         OPERATION_SYSTEM

·         USER_INTERFACE

Примечание: Встроенные подпрограммы, изменяющие размеры и положение объектов, требуют в качестве аргументов координаты вывода х,у и размеры ширины/высоты. Во время выполнения Oracle Forms интерпретирует эти аргументы в тех единицах измерения, которые указаны в свойстве модуля формы Coordinate System: символьные ячейки, сантиметры, дюймы, пиксели или точки.

Стр. 11-23

 

Присвоение окну нескольких вид-картинок заполнения

 

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

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

Теперь рассмотрим окно сопровождающей помощи Help, которому присвоены две вид-картинки заполнения. Каждая вид-картинка заполнения выводит шаблонный текст Help и не содержит никаких элементов с возможностью навигации. Операторы могут вызывать окно Help, нажимая кнопку, исполняющую встроенную процедуру SHOW_WINDOW.

Опять-таки, Oracle Forms необходимо определить - которую из двух вид-картинок заполнения нужно первоначально показывать при вызове этого окна. В данном примере не происходит никакой навигации, поэтому в окне выводится вид-картинка заполнения, назначенная как первичная вид-картинка заполнения этого окна. Вы можете назначать для окна первичную вид-картинку установкой необязательного свойства View.

Стр. 11-24

 

События, изменяющие текущую вид-картинку заполнения

 

Когда в ответ или на навигацию, или на программное управление, в окне выводится вид-картинка заполнения, она становится текущей вид-картинкой заполнения в этом окне. Если только она не замещается другой, текущая вид-картинка заполнения остается текущей в течение сеанса - даже если окно закрывается или иконизируется.

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

·         оператор или прикладная программа перемещается к элементу на другой вид-картинке заполнения, присвоенной тому же окну

·         триггер или подпрограмма с именем пользователя исполняет встроенную процедуру REPLACE_CONTENT_VIEW для замещения текущей вид-картинки заполнения другой, присвоенной тому же окну

Например, оператор может нажать ТАВ (Next Item) для перехода к элементу на другой картинке заполнения. Так как окно может одновременно выводить только один вид заполнения, Oracle Forms замещает текущий выводимый в окне вид заполнения новым текущим видом, содержащим целевой элемент.

Текущая вид-картинка заполнения окна может быть замещена только вид-картинкой заполнения, присвоенной этому же окну. Вы не можете замещать вид-картинку заполнения в Окне А вид-картинкой заполнения, присвоенной Окну В.

Стр. 11-25

 

Программное замещение текущей вид-картинки заполнения

 

Вы можете программно замещать текущий вид заполнения окна с помощью процедуры REPLACE_CONTENT_VIEW. Следующий пример замещает текущий вид заполнения окна видом заполнения с именем canvas1:

Replace_Content_View(‘window5’,’canvas1’);

Указанная вид-картинка должна быть вид-картинкой заполнения, и она должна быть присвоена указанному окну. (Вы не можете замещать текущую вид-картинку заполнения окна вид-картинкой, присвоенной другому окну.)

Вы можете также замещать картинку заполнения окна с помощью процедур SHOW_VIEW и SET_VIEW_PROPERTY. Однако, если окно содержит вид-картинки наложения, то между этими процедурами и процедурой REPLACE_CONTENT_VIEW имеется существенная разница:

·         SHOW_VIEW и SET_VIEW_PROPERTY выводят в окне указанную вид-картинку заполнения поверх каких-либо вид-картинок наложения, скрывая тем самым эти виды наложения.

·         В качестве отличия, REPLACE_CONTENT_VIEW выводит указанную вид-картинку заполнения в той же позиции в порядке наложения, что и вид-картинка, которую она замещает.

Помните, что Oracle Forms всегда держит текущий элемент видимым для оператора. Если вы программно заместите вид-картинку заполнения, содержащую текущий элемент, то Oracle Forms сразу же повторно выведет на экран исходную вид-картинку.

Стр. 11-26

 

Создание линеек инструментов

 

Линейки инструментов вы можете создавать для любого окна формы. Линейки инструментов могут выводиться горизонтально в верхней части окна, или вертикально в левой части окна. (В Oracle Forms Designer окно Object Navigator имеет и горизонтальную, и вертикальную линейки инструментов; окно Properties имеет горизонтальную линейку инструментов.)

Линейка инструментов - это особый тип вид-картинки. Создав однажды вид-картинку линейки инструментов, вы можете в Layout Editor добавлять к ней элементы и шаблонную графику, как это вы бы делали для вид-картинки заполнения или наложения.

 

 

Рисунок

 

 

Когда вы создаете вид-картинку линейки инструментов, вы присваиваете ее окну установкой свойства вид-картинки Window, а затем регистрируете ее с этим окном, устанавливая соответствующим образом свойство окна Vertical Toolbar или Horizontal Toolbar.

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

Чтобы создать линейку инструментов:

1.        Находясь в Объектном Навигаторе, установите курсор на узле Canvas-Views.

2.        Для вставки в иерархию объектов новой вид-картинки выберите Navigator->Create.

Стр. 11-27

 

3.        В окне Properties установите свойства вид-картинки следующим образом:

Canvas-view Type

Установите на Horizontal Toolbar или Vertical Toolbar.

Window

Укажите окно, в котором должна выводиться линейка инструментов.

Width/Height

Oracle Forms выведет линейку инструментов любых размеров, даже если она полностью займет вид-картинку заполнения окна. От вас зависит установить свойства Width и Height на соответствующие значения в зависимости от того, насколько большой вы хотите видеть линейку инструментов. Например, горизонтальная линейка инструментов обычно такой же ширины, что и окно, которому она присвоена, но ее высота обычно достаточно большая для вывода одного ряда элементов.

4.        Установите для того окна, которому вы присвоили вид-картинку линейки инструментов, свойство Horizontal Toolbar или Vertical Toolbar, указав имя вид-картинки линейки инструментов, которую вы содали в п. 2.

5.        Добавьте к картинке линейки инструментов элементы и шаблонную графику, как бы вы это сделали для любых других картинок.

 

Создание линейки инструментов для окна MDI

В MS Windows вы можете для окон прикладных программ MDI создавать линейки инструментов точно так же, как для любых документальных окон формы. Окно прикладной программы MDI создается и управляется менеджером окон и в списке объектов окон в модуле формы не показывается.

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

Чтобы создать линейку инструментов MDI:

1.        Находясь в Объектном Навигаторе, установите курсор на узле Canvas-Views.

2.        Для вставки нового объекта вид-картинки выберите Navigator->Create.

3.        В окне Properties установите свойство Canvas-view Type на Horizontal Toolbar или Vertical Toolbar.

4.        В Объектном Навигаторе выберите форму.

Стр. 11-28

 

5.        В окне Properties установите свойство Horizontal MDI Toolbar или Vertical MDI Toolbar, чтобы указать имя вид-картинки линейки инструментов, которую вы создали в п. 2.

6.        Добавьте в новую картинку линейки инструментов элементы и шаблоны, как бы вы это делали с вид-картинкой заполнения или наложения.

Примечание: Если вы создаете линейку инструментов вид-картинки, которая будет выводиться в окне MDI, то присвоение этому окну вид картинки (определенное установкой ее свойства Window) во время выполнения игнорируется, и вместо этого линейка инструментов распределяется в окно MDI.

 

Создание нескольких линеек инструментов для одного окна

 

Можно создавать две или более вид-картинки линейки инструментов одного и того же типа (горизонтального или вертикального) и присваивать их одному и тому же окну формы, устанавливая свойство вид-картинки Window.

Если одному окну присвоено две или более линейки инструментов, то Oracle Forms во время выполнения будет пытаться вывести в окне первичную вид-картинку линейки инструментов. Первичную вид-картинку линейки инструментов для окна вы определяете установкой свойства окна Horizontal Toolbar или Vertical Toolbar.

Но если происходит навигация к элементу в другой линейке инструментов, или если прикладная программа программно показывает или поднимает другую линейку инструментов исполнением SHOW_VIEW или SET_VIEW_PROPERTY, то Oracle Forms может вывести другую линейку инструментов, не первичную.

Определение линеек инструментов MDI может также привести к ситуации, когда одному окну формы распределяется более одной вид-картинки линейки инструментов. Например, вы можете создать форму с двумя вид-картинками линейки инструментов одного типа (горизонтального или вертикального), присвоенных одному и тому же окну формы, одна из которых сконструирована как линейка инструментов MDI (установкой свойства модуля формы Horizontal/Vertical MDI Toolbar).

В MS Windows линейка инструментов MDI всегда распределяется окну MDI, и не выводится в окне, которому она присвоена (как обозначено установкой его свойства Window). Но на не-Windows платформах, поддерживающих линейки инструментов, таких как Motif, линейка инструментов MDI распределяется окну, которому она присвоена, и становится одной из потенциальных вид-картинок линейки инструментов этого окна. В таком случае Oracle Forms будет пытаться вывести окно с линейкой инструментов, которую вы сконструировали как первичную линейку инструментов, но в ответ на навигационные или программные события может вывести и другую линейку инструментов.

Стр. 11-29

 

Вывод вид-картинок наложения

 

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

Есть еще много применений для вид-картинок наложения, включая следующие:

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

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

·         Вид-картинки наложения могут использоваться для создания блока с элементами, динамически прокручивающимися в окне, в котором они выводятся, так же как электронная таблица. Если блок содержит элементов больше, чем может поместиться в окне, то Oracle Forms будет автоматически прокручивать окно, если оператор будет переходить к элементам, находящимся вне рамки окна. Однако, это может привести к тому, что одновременно с этим будут прокручены за границы окна важные поля, такие как значения первичного ключа, и таким образом станут скрытыми от оператора. Например, для блока, выводящего информацию о заказах, вы можете пожелать иметь всегда видимым поле Order ID, даже если при перемещении оператора по блоку другие элементы скроются из поля зрения.

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

Стр. 11-30

 

Во время выполнения вид-картинки наложения выводятся автоматически в ответ на навигацию таким же образом, как и вид-картинки заполнения, и они могут программно показываться и скрываться встроенными процедурами SHOW_VIEW, HIDE_VIEW и SET_VIEW_PROPERTY.

Когда вы создаете вид-картинку наложения, вам необходимо определить положение в порядке наложения, учитывая другие вид-картинки, присвоенные этому же окну. Порядок наложения определяет то, какие виды выводятся впереди, или “поверх” других видов в этом же окне, и может изменяться во время выполнения в ответ на навигацию и программные события.

 

Создание вид-картинки наложения

 

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

Примечание: Вы можете преобразовать существующую вид-картинку заполнения в вид-картинку наложения, изменив ее свойство Canvas-view Type с Content на Stacked.

Чтобы создать вид-картинку наложения:

1.        Находясь в Объектном Навигаторе, установите курсор на узле Canvas-Views, затем для вставки новой вид-картинки выберите Navigator->Create.

2.        В окне Properties установите свойство Canvas-view Type на Stacked.

Стр. 11-31

 

3.        Установите остальные свойства объекта вид-картинки следующим образом:

Displayed

Установите на True, если вы хотите, чтобы при вызове окна картинка наложения была видимой; на false, если вы хотите, чтобы она была скрытой, пока не будет показана в ответ на навигацию или программное событие.

Width/Height

Укажите размеры картинки. Картинки наложения обычно меньше вид-картинки заполнения, выводимой в этом окне.

Bevel

Определяет то, имеет ли вид наложения бордюр. Бордюр может визуально отделять вид наложения от других видов, выводимых в том же окне. Чтобы сделать вид безбордюрным, установите Bevel на None.

View Width/ View Height

Указывает размеры вида для картинки наложения. Если вы сделаете вид меньше картинки, то вид-картинка наложения во время выполнения может прокручиваться.

Display X,Y Position

Определяет координаты вывода х,у верхнего левого угла вида относительно верхнего левого угла вида заполнения, выведенного в текущий момент в окне. Установка по умолчанию (0,0) выводит вид наложения в верхнем левом углу вида заполнения.

View Horiz./ Vert. Scroll Bar

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

4.        Если вид-картинка наложения не показывается программно или в ответ на навигацию, то убедитесь, что ее позиция в порядке видов наложения помещает ее впереди вид-картинки заполнения, присвоенной тому же окну. Если это не так, то она будет показываться позади вида заполнения и во время выполнения будет не видна.

Порядок наложения видов в окне определяется последовательностью, в которой они перечисляются под узлом Canvas-Views в Объектном Навигаторе.

Стр. 11-32

 

Работа с вид-картинками наложения в Layout Editor

 

В Layout Editor есть два способа редактирования вид-картинки наложения:

·         Выведите вид-картинку наложения в Layout Editor, как бы вы это делали с вид-картинкой заполнения, дважды щелкнув по его иконке объекта или выбрав Tools->Layout Editor. Когда вы таким способом выводите в Layout Editor картинку наложения, вы можете добавлять элементы и шаблонную графику, а также можете изменять размеры как картинки, так и ее вида.

·         Выведите вид-картинку наложения в Layout Editor командой View->Stacked Views в то время, когда вы редактируете картинку заполнения, присвоенную тому же окну. Такой способ позволяет вам увидеть как будет выглядеть вид наложения на картинке заполнения во время выполнения формы. Когда вид наложения выводится на картинке заполнения таким способом, ее элементы и шаблоны только-читаемы и не могут изменяться. Для редактирования элементов на вид-картинке наложения дважды щелкните на виде наложения для вызова отдельного Layout Editor.

Для редактирования вид-картинки наложения в Layout Editor:

1.        Находясь в Объектном Навигаторе, выберите вид-картинку наложения.

2.        Выберите Tools->Layout Editor.

Или

Дважды щелкните по иконке объекта для вид-картинки наложения.

Выведя вид-картинку наложения в Layout Editor, вы можете создавать элементы и шаблонную графику, как бы вы это делали для картинки заполнения. Вы можете также графически изменять размеры самой картинки или вида. Информацию см. в теме “Установка свойств вид-картинок в Layout Editor”.

Для вывода вида наложения на картинке заполнения в Layout Editor:

1.        Вызовите Layout Editor для вид-картинки заполнения, присвоенной тому же окну, что и вид-картинка наложения, которую вы хотите вывести на экран.

2.        После вывода Layout Editor для вызова диалогового окна Stacked Canvas-Views выберите View->Stacked Views.

Диалоговое окно Stacked Canvas-Views показывает все вид-картинки наложения, присвоенные тому же окну, что и вид-картинка заполнения, выведенная в Layout Editor.

3.        Выберите вид-картинку(и) наложения, которую(ые) вы хотите вывести в Layout Editor. Отмените выбор тех, которые вы не хотели бы выводить. (Для выбора щелкните по вид-картинке, для отмены выбора Control+щелкните.)

Стр. 11-33

 

Если вы выводите вид наложения таким способом, то вы можете видеть точно то, что увидит оператор во время выполнения формы. То есть вы видите только часть картинки наложения в пределах ее вида, как определено свойствами View Width и View Height.

 

 

Рисунок

 

 

Выведя на экран вид наложения, вы можете изменять его свойства в Layout Editor путем графического манипулирования следующим образом:

·         Перемещать вид-картинку наложения для изменения свойств Display X Position и Display Y Position.

·         Менять размеры вид-картинки наложения для изменения свойств View Width и View Height.

Изменение размеров вида таким способом не меняет размеров картинки, а только размеры вида. Чтобы изменить размеры картинки, установите в окне Properties свойства вид-картинки Width и Height. Во впемя выполнения формы выводиться будут только те элементы и шаблоны, которые полностью помещаются на картинке, даже если вид больше картинки.

·         Для вид-картинки наложения, имеющей линейки прокрутки, прокручивать вид-картинку для изменения начальных установок для свойств X Рosition on Canvas и Y Рosition on Canvas.

Стр. 11-34

 

Показ и скрытие вид-картинок наложения во время выполнения

 

Когда оператор или прикладная программа перемещается к элементу вида наложения, Oracle Forms всегда выводит этот вид наложения в том окне, которому он присвоен. Но окно может также выводиться программно или в ответ на навигацию к элементу на вид-картинке заполнения в этом окне. В таких ситуациях свойство Displayed при первом выводе окна на экран определяет то, будет ли вид наложения первоначально показываемым или скрытым.

Например, если оператор переходит к элементу на виде заполнения, присвоенном Окну А, то Oracle Forms автоматически вызывает Окно А и выводит вид заполнения, содержащий этот целевой элемент. Если этому окну присвоен и вид наложения, то Oracle Forms выведет его только в том случае, если свойство Displayed установлено на True.

Если свойство Displayed вид-картинки наложения установлено на False, то вид наложения может выводиться только в результате навигации или программного управления.

Заметьте, что вид наложения со свойством Displayed, установленным на True, все-таки может быть скрытым в следующих ситуациях:

·         Если положение вид-картинки наложения в порядке видов наложения размещает ее позади вида заполнения или другого вида наложения в том же окне. (По умолчанию порядок наложения видов в окне определяется их последовательностью в Объектном Навигаторе.)

·         Если окно выводится в результате перемещения к элементу на другой вид-картинке, то если вид наложения перекрывает этот целевой элемент, этот вид станет скрытым. В таком случае Oracle Forms выводит вид наложения, но затем сразу же поднимает перед ним целевой вид, чтобы сделать видимым целевой элемент.

·         Если окно выводится в результате перемещения к элементу на другой вид-картинке, и если у целевой вид-картинки свойство Raise on Entry установлено на True, то Oracle Forms всегда поднимает целевую вид-картинку впереди вид-картинки наложения, даже если эта вид-картинка наложения не перекрывает целевой элемент.

Стр. 11-35

 

Определение порядка наложения видов в окне

 

Порядок наложения вид-картинок, присвоенных одному окну, определяет то, какие виды будут выводиться впереди или позади других. Вид-картинка наложения всегда должна располагаться впереди любой вид-картинки заполнения, присвоенной тому же окну; если это не так, то вид-картинка заполнения полностью затенит вид-картинку наложения. Порядок наложения также очень важен в случаях, когда одному окну присвоено несколько вид-картинок наложения.

Первоначальный порядок наложения вид-картинок определяется порядком, в котором они перечислены под узлом Canvas-views в Объектном Навигаторе: первая вид-картинка, перечисленная под узлом Canvas-views, выводится под всеми остальными вид-картинками, присвоенными этому окну. Последняя в списке вид-картинка выводится впереди всех остальных вид-картинок.

Чтобы изменить порядок наложения, перетащите вид-картинки в Объектном Навигаторе так, чтобы расположить их в нужной последовательности. Когда вы таким образом изменяете последовательность, Объектный Навигатор должен быть в режиме Ownership View - Полного Просмотра (по умолчанию).

Рассмотрим форму, включающую в себя пять вид-картинок. Вид-картинки CONTENT_A, STACKED_B и STACKED_D присвоены одному и тому же окну WINDOW0. Во время разработки CONTENT_A в Навигаторе перечислена первой, а STACKED_D - последней (среди видов, присвоенных WINDOW0). Во время выполнения формы STACKED_D выводится впереди STACKED_B, а STACKED_B впереди CONTENT_A.

 

 

Рисунок

 

 

Стр. 11-36

 

Рисунок

 

 

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

Например, когда оператор или прикладная программа перемещается к элементу на виде, скрытом позади другого вида, Oracle Forms поднимает целевой вид впереди окна, изменяя таким образом текущий порядок наложения.

Подобным же образом, если вы программно выводите на экран вид, исполняя встроенную процедуру SHOW_VIEW или SET_VIEW_PROPERTY, то Oracle Forms выводит указанный вид впереди других видов, показываемых в этом окне.

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

Установка свойства Raise on Entry   Свойство вид-картинок Raise on Entry определяет то, как на порядок наложения влияет навигация к элементам на этих видах:

·         Если Raise on Entry установлено на False, то Oracle Forms поднимает вид-картинку только в том случае, если целевой элемент скрыт позади другой вид-картинки в том же окне.

·         Если Raise on Entry установлено на True, то Oracle Forms поднимает вид-картинку впереди окна всякий раз, когда оператор или прикладная программа перемещается к элементу на этом виде. Будьте внимательны при установке Raise on Entry на True для вид-картинок заполнения. Так как вид заполнения занимает всю содержательную область своего окна, он всегда при поднятии впереди вида наложения будет затенять все вид-картинки наложения.

Стр. 11-37

 

Вид-картинки заполнения в порядке наложения   Когда вы создаете окно, в котором несколько вид-картинок заполнения и по меньшей мере одна вид-картинка наложения, то вам нужно знать как Oracle Forms управляет вид-картинками заполнения в порядке наложения.

Так как в окне одновременно может выводиться только одна вид-картинка заполнения, то Oracle Forms обращается со всеми вид-картинками заполнения, присвоенными одному окну, так, будто каждая из них имеет одно и то же положение в порядке наложения относительно видов наложения, присвоенных этому же окну.

Рассмотрим окно с четырьмя вид-картинками: CONTENT_A и CONTENT_C - виды заполнения; STACKED_B и STACKED_D - виды наложения.

 

 

Рисунок

 

 

Во время выполнения формы только один вид заполнения одновременно может выводиться в окне. Если при старте формы прикладная программа перемещается к элементу на CONTENT_A, то он становится текущим видом заполнения, выводимым в окне. Если оператор затем перемещается к элементу на CONTENT_C, то CONTENT_C замещает CONTENT_A, но в той же позиции в порядке наложения, а не в своей позиции в период проектирования, как было определено в Объектном Навигаторе.

Такое поведение позволяет текущей вид-картинке заполнения замещаться без скрытия текущих выведенных в этом окне видов наложения. Когда CONTENT_C замещает CONTENT_A, то виды наложения, помещенные во время проектирования поверх CONTENT_A, остаются видимыми.

Стр. 11-38

 

При использовании такой технологии обеспечивайте, чтобы виды наложения были в последовательности впереди (поверх) первого вида заполнения, который будет выводиться в окне.

 

Программное манипулирование вид-картинкой наложения

 

Данный раздел описывает то, как для манипулирования вид-картинкой наложения могут использоваться встроенные подпрограммы. Примеры базируются на вид-картинке наложения и на окне, показанных ниже. Заметьте, что свойства View Width и View Height для вид-картинки наложения определены так, что вид меньше чем его картинка.

 

 

Рисунок

 

 

Свойство Displayed вида наложения первоначально установлено на False. Вы можете вывести вид наложения в окне, которому он присвоен, или процедурой SHOW_VIEW, или SET_VIEW_PROPERTY:

Show_View(‘view_s1’);

или

Set_View_Property(‘view_s1’,VISIBLE,PROPERTY_TRUE);

 

 

Рисунок

 

 

Стр. 11-39

 

Для прокрутки вида наложения, чтобы стала видна другая область картинки, используйте процедуру SCROLL_VIEW:

Scroll_View(‘view_s1’,12,0);

Процедура SCROLL_VIEW изменяет то, что вы видите в виде, перемещая этот вид относительно своей картинки.

 

 

Рисунок

 

 

Чтобы переместить в другое место на низлежащем виде заполнения вид наложения, используйте для изменения свойства этого вида Display Position процедуру SET_VIEW_PROPERTY.

Set_View_Property(‘view_s1’,DISPLAY_POSITION,12,20);

Этот вызов процедуры изменяет положение вида на низлежащей картинке заполнения в окне, но не изменяет области картинки, видимой в этом виде.

 

 

Рисунок

 

 

Чтобы увеличить размеры вида для увеличения видимой площади картинки используйте SET_VIEW_PROPERTY:

Set_View_Property(‘view_s1’,WIDTH,22);

Этот вызов процедуры увеличением ширины вида увеличивает видимую площадь картинки.

Стр. 11-40

 

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

 

 

Рисунок

 

 

Реагирование на события окна во время выполнения

 

Для реагирования на события окна во время выполнения формы вы можете использовать следующие триггеры:

·         When-Window-Activated

·         When-Window-Closed

·         When-Window-Deactivated

·         When-Window-Resized

Внутри этих триггеров вы можете проверять встроенную системную переменную SYSTEM.EVENT_WINDOW для определения имени окна, для которого срабатывает триггер.



Используются технологии uCoz