ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 1





                                                                   1

                              ВВЕДЕНИЕ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

-    Данная книга,  "Учебник по  системе ObjectVision",  показывает,
     как  создать  и  запустить  Вашу  прикладную  задачу,  а  также
     содержит в  себе пошаговые  инструкции по  созданию  прикладной
     задачи  Order   (Заказ),  которая  является  одной  из  типовых
     прикладных задач, включенных в состав системы ObjectVision.

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


                Что содержится в данном руководстве
--------------------------------------------------------------------

     Данное руководство  состоит из десяти глав, одного приложения и
словаря:

     Часть I. Средства системы ObjectVision:

-    Глава 1,  "Начало работы"  описывает типовую прикладную задачу,
     которую Вам  предстоит создать,  используя  данный  Учебник,  и
     описывает  те  условные  обозначения,  которые  используются  в
     данном Учебнике.  В этой  главе содержится также описание того,
     как пользователи заполняют создаваемые Вами формы. Первая глава
     содержит обзор  концепций системы ObjectVision и работающих под
     управлением этой системы прикладных задач.

-    Глава 2,  "Создание формы"  представляет собой начало Учебника.
     Она показывает,  как начать  работу с  инструментом  Form  Tool
     (Инструмент создания  форм), как  создавать форму и изменять ее
     размер, и как сохранять созданную прикладную задачу.

-    Глава 3,  "Создание объектов  в формах",  показывает  Вам,  как
     вставлять  объекты   в  форму,  копировать  и  вставлять  поля,
     переименовывать поля,  изменять метку и используемые для выдачи
     текста шрифты,  удалять бордюры  текстовых объектов и вклеивать
     графические изображения из универсального буфера (Clipboard).

-    Глава 4, "Описание свойств полей", показывает Вам, как изменять
     форматы   полей,   как   назначать   полям   списки   возможных
     (допустимых)  значений   и  как  добавлять  к  полю  сообщение-
     подсказку.  Здесь   содержится  также  информация  о  том,  как
     защищать  поле,  чтобы  пользователь  не  мог  вводить  в  него
     информацию.

-    Глава 5,  "Создание дерева решений", показывает Вам, как начать
     работать  с   инструментом  Tree  Tool  (Инструментальное  окно
     дерева), как  вставлять в дерево решений узлы ветвей, условия и
     узлы выводов; как осуществляется тестирование созданного дерева
     решений.







                                                                   2
-    Глава 6,  "Редактирование дерева  решений", показывает Вам, как
     осуществляется добавление  нового поля  с  помощью  инструмента
     Tree Tool  (Инструментальное окно  дерева), как  осуществляется
     прокрутка дерева  решений,  как  осуществляется  копирования  и
     вклейка фрагментов  дерева решений,  как осуществляется  запись
     условий и  выводов, как  изменять размер  дерева решений  и как
     осуществляется распечатка дерева решений.

-    Глава 7,  "Обработка используемых  по умолчанию (стандартных) и
     ошибочных значений",  показывает Вам,  как использовать  дерево
     решений    для    предоставления    пользователю    стандартных
     (используемых по  умолчанию) значений полей, и как использовать
     круговые ссылки для запроса у пользователя допустимого значения
     поля.

-    Глава 8,  "Создание условий и выводов", содержит дополнительную
     возможность попрактиковаться  в  создании  деревьев  решений  и
     использовании блоков  диалога Condition  (Условие) и Conclusion
     (Вывод).  Эта   глава  демонстрирует   Вам,  как   пользоваться
     командами Paste  Field (Вклеить  поле), Paste Function (Вклеить
     функцию) и Paste Arguments (Вклеить аргументы). Кроме того, она
     описывает использование  функций @MESSAGE  (сообщение) и @BLANK
     (пустой) для  проверки  достоверности  (допустимости)  вводимых
     значений.

-    Глава 9,  "Установление связи  с базой данных", показывает Вам,
     как связывать  поля  в  Вашей  прикладной  задаче  со  внешними
     файлами данных  и как  добавлять деревья  решений  к  кнопочных
     полям.

-    Глава 10,  "Ввод  данных  при  работе  с  прикладной  задачей",
     показывает, как  работает Ваша прикладная задача с точки зрения
     пользователя, и объясняет различные элементы макета формы.

Часть II. Приложение и Словарь.

-    Приложение А,  "Операции с  клавиатурой и  операции  с  мышью",
     содержит перечень  клавиш и  комбинаций клавиш, а также приемов
     работы с  мышью, которыми Вы можете пользоваться при выполнении
     различных операций в системе ObjectVision.

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


          Типографские обозначения и соглашения об именах1                                                         _
--------------------------------------------------------------------

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



____________________
1Прим.перев. Стили и шрифты, использованные на этапе перевода, могут_
не соответствовать стилям и шрифтам, использованным в оригинале
"Учебника".






                                                                   3
Фиксированный шрифт  Данный шрифт  представляет текст  в том виде, в
     котором он  появляется на экране компьютера, а также тот текст,
     который Вы должны ввести с клавиатуры.

Курсив Курсив  используется  для  выделения  отдельных  слов  и  для______
     введения новых  терминов, которые  определены в  "Словаре".  Мы
     также используем  этот шрифт  для  названий  книг  и  для  имен
     типовых прикладных  задач, которые  включены в  состав  системы
     ObjectVision.

Названия   клавиш    Этот   специальный   шрифт   используется   для
     представления  имени   клавиши  на   клавиатуре,   которую   Вы
     нажимаете; например, "Нажмите клавишу Enter или выберите кнопку
     OK".

ЗАГЛАВНЫЕ Текст,  набранный  заглавными  буквами,  используется  для
     обозначения имен  файлов в  DOS, таких  как имя  типового файла
     базы данных ORDER.DB.

УМЕНЬШЕННЫЕ  ЗАГЛАВНЫЕ  Имена  @-функций  представлены  уменьшенными
     заглавными буквами.

Меню|  Команда  Вместо  того,  чтобы  использовать  фразу  "Выберите
     команду Save  из меню  File" в данных руководствах используется
     форма File| Save для обозначения маршрута доступа к команде.

     В  дополнение   к  специальным  шрифтам  в  данном  руководстве
используются две пиктограммы (иконки):

+++> Изображение карандаша обозначает следующие шаги, которые должны
     быть выполнены в этом руководстве.

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


                      Дополнительные сведения
--------------------------------------------------------------------

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





















                                                                   4
                       ГЛАВА 1. НАЧАЛО РАБОТЫ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

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


                        Перед началом работы
--------------------------------------------------------------------

     Перед тем,  как начать  работу, необходимо  установить  систему
ObjectVision. В  Главе 2  книги "Справочник по системе ObjectVision"
объясняется, как  установить систему ObjectVision и подготовить ее к
работе. Если  Вы не  знакомы с прикладными задачами, работающими под
управлением среды  Windows, то Вы, возможно, захотите ознакомиться с
разделом "Использование  среды Windows",  расположенным  в  Главе  2
данной книги.


                     Создание прикладной задачи
--------------------------------------------------------------------

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

     Файлы  базы   данных,  предназначенные   для  Вашей  прикладной
задачи - файл  данных ORDER.DB и файл индекса базы данных ORDER.PX -
находятся  на   дискетах  вместе   с  другими   программами  системы
ObjectVision.

     Задача Order  (Заказ)  представляет  собой  простую  прикладную
задачу, цель  которой - продемонстрировать  Вам  приемы  совместного
использования форм,  полей и  деревьев принятия  решений.  Ее  легко
создать, и  в ней  используется значительное  число  важных  средств
системы ObjectVision, включая связи с внешними данными и вычисляемые
поля. На  представленном далее  рисунке Вы  видите форму Sales Order
(Заказ на покупку) из прикладной задачи Order (Заказ).










                                                                   5
     Рис.1.1 Форма Sales Order (Заказ на покупку) из типовой
прикладной задачи Order (Заказ):
1 - Заказ на покупку (Цель); 2 - Имя; 3 - Компания; 4 - Адрес; 5 -
Город, штат и код почтовой зоны; 6 - Элемент; 7 - Метод отгрузки;
8 - Количество; 9 - Скидка; 10 - Цена за штуку; 11 - Дата заказа;
12 - Тип клиента; 13 - Дистрибьютор; 14 - Дилер; 15 - Преподаватель;
16 - Другой; 17 - Базовая цена; 18 - Уменьшенная скидка; 19 -
Итоговая цена; 20 - Налог на продажу; 21 - Следующий; 22 -
Предыдущий; 23 - Сохранить в базе данных; 24 - Стоимость отгрузки;
25 - Увеличенная цена


                         Последовательность
--------------------------------------------------------------------

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


                        Соглашения и термины
--------------------------------------------------------------------

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

+++> Ваши следующие  действия:  Найдите  эту  пиктограмму,  если  Вы
     хотите    пропустить     пояснения     и     сконцентрироваться
     непосредственно на  процедурах (или,  если  хотите,  прочитайте
     сначала пояснения и пропустите предлагаемые процедуры).

     Клавиша,  которая   в  Учебнике   называется  Enter,  на  вашей
клавиатуре может быть помечена на вашей клавиатуре словом Return или
обозначена "загнутой" стрелкой.

     Два термина  относятся к процессу выполнения операции в системе
ObjectVision:

-    Селектировать (Select)  означает установить указатель на каком-
     либо элементе  и выделить  его. Над  выделенным элементом будет
     выполнено  очередное   действие,   осуществляемое   в   системе
     ObjectVision. Например,  когда Вы  выделяете какое-либо  поле в
     форме путем  нажатия на  него кнопкой  мыши2 или  путем нажатия                                                _
     клавиши Enter,  то следующее  действие, которое  Вы выполняете,
     относится  к  этому  полю.  Когда  Вы  селектируете  текст,  он
     отображается в  инвертированном  сочетании  цветовых  атрибутов
     основного и  фонового цветов  и будет  заменен теми  символами,
     которые Вы введете в дальнейшем.


____________________
2Нажать кнопкой мыши на объект означает подвести к этому объекту_
курсор мыши и нажать левую кнопку мыши - прим.перев.






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

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


           Инструментальные средства системы ObjectVision
--------------------------------------------------------------------

     В состав  системы ObjectVision  входят четыре  инструментальных
средства, предназначенные для разработки прикладных задач:

-    Form Tool  (Инструментальное окно формы), с помощью которого Вы
     создаете и модифицируете формы и их элементы;

-    Tree Tool (Инструментальное окно дерева), с помощью которого Вы
     добавляете деревья принятия решений и модифицируете их;

-    Links Tool (Инструментарий установки связи), с помощью которого
     Вы создаете связи ко внешним источникам информации;

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


                     Инкрементальная разработка
--------------------------------------------------------------------

     Чтобы помочь Вам узнать, как использовать систему ObjectVision,
в данном  руководстве Вам предлагается воссоздать типовую прикладную
задачу под  именем Order  (Заказ). По  мере  работы  с  предлагаемым
Учебником следует  помнить, что  система ObjectVision  отличается от
других инструментальных  средств создания  прикладных задач  в одном
важном   отношении:    вместо   предварительного    выяснения   всех
подробностей  относительно   создаваемых  форм  Вы  будете  начинать
работу,  имея   лишь  общее  упрощенное  представление  о  том,  как
предположительно должна работать Ваша прикладная задача, и добавлять
детали по мере продвижения работы.

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








                                                                   7
                   Концепции системы ObjectVision
--------------------------------------------------------------------

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

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

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

-    утверждение заема/кредита;

-    определение риска/ставки  страхования;

-    обработка страховых исков;

-    назначение пособий для персонала;

-    поддержка клиентов;

-    конфигурирование заказа/назначение цен;

-    поддержка деловых операций по дистанционной связи;

-    диагностирование и ремонт оборудования;

-    контроль качества/производства продукции;

-    принятие решений о календарном планировании производства;

-    процедуры запуска/останова процесса;

-    поддержка приняния решений о покупке;

-    принятие решений по декларации о налогах/планировании налогов.


                            Пользователи
--------------------------------------------------------------------

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

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






                                                                   8
     отдельного лица  или некоторой  группы. Для создания прикладной
     задачи в  системе ObjectVision  не  требуется  наличия  навыков
     программирования.  Разработчики  прикладных  задач  могут  быть
     опытными пользователями персонального компьютера или системными
     аналитиками, знакомыми  с задачей,  которую предстоит  решать в
     данной прикладной  программе. Пользователи  прикладных программ
     могут без  каких-либо затруднений модифицировать эти прикладные
     задачи, чтобы они отвечали определенным требованиям.

-    Система ObjectVision  Runtime позволяет  конечным пользователям
     выполнять   прикладные    программы,   написанные   в   системе
     ObjectVision, но  не  позволяет  им  модифицировать  прикладную
     программу.

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


                               Формы
--------------------------------------------------------------------

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

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

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


              Инструментальное окно формы (Form Tool)
--------------------------------------------------------------------

     По мере  создания прикладной  задачи в  системе ObjectVision Вы
используете  инструментальное   окно  формы   (Form  Tool)   системы
ObjectVision для  описания своих  форм. С  помощью инструментального
окна формы,  которое представляет  собой высокоуровневый графический
интерфейс, Вы указываете, какие поля Вы хотите видеть в форме, и как
эти поля  должны выглядеть.  Вы можете  определять  атрибуты  полей,
например, форматы  представления чисел, используемые шрифты, фактуры
и бордюры.







                                                                   9
            Дистрибутирование (распространение) программ
--------------------------------------------------------------------

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

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


                         Использование форм
--------------------------------------------------------------------

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

     +---------------------------------------------------------+
      Примечание:     |                                                         |
      Стек является эквивалентом стопки бумажных форм.     |                                                         |
     +---------------------------------------------------------+

     Набор форм  в прикладной  задаче организован в стек. На рисунке
1.2 показан  стек форм  для типовой прикладной задачи Order (Заказ).
Каждая форма  представлена  пиктограммой  (иконкой).  Ее  уникальный
заголовок появляется справа от самой иконки.

     Форма,  расположенная  на  вершине  стека,  называется  целевой
формой (Goal  form). Она является начальной формой, то есть, формой,
которая появляется  на экране  при первом  открытии Вашей прикладной
задачи. После того, как форма селектирована либо пользователем, либо
в процессе  принудительного заполнения,  эта форма  перемещается  на
передний план,  оказываясь  перед  начальной  целевой  формой  (Goal
form). Пользователь  может  вводить  информацию  только  в  активную
форму, даже если "из-под нее" виднеются другие формы.

     Рис.1.2 Стек форм задачи Order (Заказ):
1 - Стек прикладной задачи; 2 - Цель; 3 - Заказ на покупку; 4 -
Информация о дистрибьюторе (распространителе)


                                Поля
--------------------------------------------------------------------

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








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


                              Значения
--------------------------------------------------------------------

     +---------------------------------------------------------+
      Примечание:     |                                                         |
      Число символов в значении поля не может превышать 4096.     |                                                         |
     +---------------------------------------------------------+

     Значения полей  не определены  до тех  пор, пока  либо не будет     ________
введено значение  пользователем, либо  не будет  вычислено  значение
системой ObjectVision,  либо пока в результате установления связи ко
внешним данным не будет предоставлено некоторое значение. Любое поле
может содержать любой тип значения: числовое, текстовое или значение
кода ошибки.

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


                  Черновая форма (Scratchpad form)
--------------------------------------------------------------------

     +---------------------------------------------------------+
      Примечание:     |                                                         |
      Черновые  формы   представляют  собой  временные  формы,     |                                                         |
      создаваемые автоматически.     |                                                         |
     +---------------------------------------------------------+

     Вы не  обязаны помещать  все  свои  поля  в  какую-либо  форму.
Система ObjectVision отображает небольшую по размерам черновую форму                                                      ______________
(Scratchpad form),  когда выдает пользователям запрос на информацию,_________________
необходимую для заполнения поля, которое не представлено ни на одной
из форм.

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

     Рис.1.3 Черновая форма в типовой прикладной задаче Expense
(Расход):
1 - черновая форма (запрос); 2 - Нужно ли внести в этот отчет
расходы на поездку?; 3 - Да; 4 - Нет







                                                                  11
                      Деревья принятия решений
--------------------------------------------------------------------

     Инструментальное  окно  дерева  (Tree  Tool)  используется  для
создания  деревьев  (принятия)  решений  (decision  trees),  которые          ________________________________________________
определяют  процедуры   для  вычисления  значений  полей.  Некоторые
процедуры могут  представлять собой простые математические операции,
такие как  сложение расположенных  в столбце чисел. Другие процедуры
могут быть  более сложными  и включать  в себя  анализ разнообразных
условий перед вычислением значения.

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

     Вы можете  использовать в  выражениях деревьев принятия решений
@-функции, совместимые  с системой  электронных  таблиц  Quattro-Pro
(которые описаны в Главе 8 "Справочника по системе ObjectVision". Вы
можете также  создавать деревья  принятия  решений  для  отображения
логических условий.

     Рис.1.4 Дерево принятия решений для одного из полей задачи
Credit (Кредит):
1 - Имя поля; 2 - Дерево для условий предоставления кредита; 3 -
Узлы ветвей; 4 - Текущий маршрут; 5 - Узлы выводов

     На рисунке  1.4  представлена  часть  дерева  принятия  решений
Credit Terms  (Условия предоставления кредита) из типовой прикладной
задачи Credit  (Кредит). Это  поле вычисляет  условия предоставления
кредита  для  некоторого  клиента  на  основании  истории  кредитных
отношений с клиентом и размера заказа.

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

     +---------------------------------------------------------+
      Примечание:     |                                                         |
      Используемые Вами  деревья принятия  решений  возвращают     |                                                         |
      значение, заданное узлом вывода.     |                                                         |
     +---------------------------------------------------------+

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

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

     Узлы дерева  содержат имена полей для других полей в прикладной
задаче. Когда  узел находится  на текущем маршруте решения (decision                                          __________________________






                                                                  12
path)  в   дереве  принятия  решений,  этот  узел  используется  для_____
вычисления значения селектированного поля.


              Инструментальное окно дерева (Tree Tool)
--------------------------------------------------------------------

     Инструментальное  окно  дерева  (Tree  Tool)  используется  для
создания  и   редактирования  деревьев  принятия  решений.  Операции
изъятия,  копирования   и  вклейки   инструментального  окна  дерева
позволяют Вам  графически манипулировать  с Вашим  деревом  принятия
решений.  Когда  Вы  создаете  новое  дерево  принятия  решений  для
некоторого поля  или модифицируете существующее дерево, Вы изменяете
также логику принятия решений, связанную с этим полем.

     +---------------------------------------------------------+
      Примечание:     |                                                         |
      Деревья  принятия  решений  осуществляют  автоматическое     |                                                         |
      вычисление полей.     |                                                         |
     +---------------------------------------------------------+

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


                                Поля                                ____

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

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


            Средства выделения для различных типов полей            ____________________________________________

     Система ObjectVision позволяет отличать поля разных типов путем
отображения специфических средств выделения вокруг бордюра поля:

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

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

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






                                                                  13
                      Переопределение значений
--------------------------------------------------------------------

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

     После того,  как пользователь  переопределяет некоторое поле, в
этом  поле   появляется  наряду  со  значением  серый  фон,  который
напоминает  пользователю,   что  значение   вычисляемого  поля  было
переопределено. Если  пользователь  хочет  восстановить  вычисленное
значение, то  он может  использовать команду Field| Calculate (Поле|
Вычислить) для  пересчета значения,  основываясь  на  логике  дерева
принятия решений.


                             Выражения
--------------------------------------------------------------------

     В деревьях  принятия решений  Вы можете  использовать выражения                                                           _________
(expressions) для вычисления значений на основании комбинации других_____________
значений. Например,  Вам может  потребоваться умножить ряд чисел. Вы
можете использовать  для этого  допустимые  в  системе  ObjectVision
выражения,  которые   по  принципам,   использованию  и   синтаксису
идентичны формулам процессора электронных таблиц Quattro Pro.

     Выражения, используемые в узлах выводов дерева принятия решений
могут содержать  значения-константы, такие  как "Yes"  (Да) или "No"
(Нет). Они  могут также содержать выражения для вычисления значений,
основывающихся на значениях других полей.

     Ваши  выражения  могут  задавать  условие,  которое  определяет
использование той или иной ветви в дереве. Выражение может быть либо
значением-константой,  либо   выражением,  в  результате  вычисления
которого получается  некоторое значение.  Значение-константа,  такое
как  "Excellent"   (Превосходно),   "Good"   (Хорошо)   или   "Fair"
(посредственно) может  использоваться в  качестве условий ветвления.
Выражение,  такое,   например,  как   ">=Total"  также   может  быть
использовано в качестве условия ветвления.

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

     Синтаксис  и   использование  выражений   системы  ObjectVision
совместимо с  формулами табличного процессора Quattro Pro. Выражение
может содержать  комбинации значений-констант,  ссылки  на  значения
полей, знаки математических операций и операций сравнения (такие как
+ и  >=) и @-функции (такие как @INT). Аналогично значениям полей, в
выражении не может быть более 4096 символов.


                          Условие и выводы
--------------------------------------------------------------------

     Когда Вы  используете инструментальное  окно дерева (Tree Tool)
для создания  дерева принятия  решений, Вы можете использовать блоки






                                                                  14
диалога Condition  (Условие) и  Conclusion (Вывод)  для  создания  и
модификации выражений.  Вы можете вводить с клавиатуры или вклеивать
имена @-функций  и имена  полей в  выражение.  Когда  Вы  завершаете
создание или  редактирование выражения,  блок  диалога  осуществляет
проверку допустимости выражения.


                           Внешние связи
--------------------------------------------------------------------

     Создаваемая Вами  прикладная задача  может использовать внешние
связи (External  links) с  данными в  качестве альтернативы  запросу
вводимых данных  у пользователя  или вычислению  значения  в  дереве
принятия решений.  Вы можете  использовать инструментарий  установки
связи (Links  Tool) системы  ObjectVision для  создания, модификации
или удаления  внешних  связей,  при  помощи  которых  осуществляется
считывание файлов  данных, созданных другими прикладными задачами, и
запись в эти файлы.

     Внешние  связи   системы  ObjectVision   в   создаваемых   Вами
прикладных   задачах    могут   использоваться    для    обеспечения
взаимодействия со следующими типами файлов данных:

-    ASCII;

-    базы данных Paradox;

-    файлов, совместимых по формату с файлами базы данных dBASE;

-    библиотеки баз данных Btrieve;

-    формата динамического  обмена данными  (Dynamic  Data  Exchange
     (DDE)) для  обмена  с  другими  прикладными  задачами  в  среде
     Microsoft Windows.

     Вы можете  создавать связи  всех пяти  типов путем выбора блока
диалога  Tools|   Link  (Инструментарий|  Связь).  Когда  на  экране
появляется блок  диалога Tools|  Link  (Инструментарий|  Связь),  Вы
задаете тип  необходимой Вам связи, местонахождение внешних данных и
то поле  в системе ObjectVision, к которому должно быть осуществлено
подсоединение.

     Система ObjectVision  также предоставляет  набор @-функций  для
связей, которыми  Вы можете  пользоваться в  своих деревьях принятия
решений. За дополнительной информацией следует обращаться к Главе 9.

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











                                                                  15
                       Файлы в формате ASCII
--------------------------------------------------------------------

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

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


                            СУБД Paradox
--------------------------------------------------------------------

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

     После того, как Вы выбрали команду Tools| Link (Инструментарий|
Связь), Вы можете создавать, модифицировать или удалять связь с СУБД
Paradox путем  выбора соответствующей  кнопки в блоке диалога Tools|
Link (Инструментарий| Связь).

     После выбора  СУБД Paradox  в качестве  типа связи,  появляется
блок диалога  Link Type|  Paradox (Тип  связи| СУБД Paradox). Именно
здесь Вы  задаете имя  связи, маршрутное  имя и  имя файла для файла
СУБД Paradox. Система ObjectVision осуществляет считывание заголовка
файла СУБД  Paradox для  определения местоположения файла первичного
индекса и имен полей данных СУБД Paradox.

     Имена полей  СУБД Paradox отображаются в списке Field Name (Имя
поля),  и  Вы  можете  селектировать  те  поля,  которые  Вы  хотите
соединить с  полями системы  ObjectVision. Число  связей,  идущих  к
Вашей прикладной  задаче, ограничивается  только объемом имеющейся в
компьютере памяти.

     Вы можете также использовать функции @PXOPEN, @CLOSE и @STORE в
выражениях деревьев  принятия решений  для создания  связей  с  СУБД
Paradox. Функции  @TOP, @BOTTOM,  @PREVIOUS, @NEXT, @CLEAR и @DELETE
позволяют Вам  точно определять местоположение конкретной записи или
позиции в файле СУБД Paradox.

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








                                                                  16
                             СУБД dBASE
--------------------------------------------------------------------

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

     После того, как Вы выбрали команду Tools| Link (Инструментарий|
Связь), Вы можете создавать, модифицировать или удалять связь с СУБД
dBASE путем  выбора соответствующей  кнопки в  блоке диалога  Tools|
Link (Инструментарий| Связь).

     После выбора  СУБД dBASE в качестве типа связи, появляется блок
диалога Link  Type| dBASE  (Тип связи|  СУБД dBASE). Именно здесь Вы
задаете имя связи, маршрутное имя и имя файла для файла СУБД dBASE и
(необязательный) индексный  файл. Система  ObjectVision осуществляет
считывание заголовка файла СУБД dBASE для определения местоположения
имен полей  данных СУБД dBASE и считывает заголовок индексного файла
для определения схемы индексации.

     Имена полей  СУБД dBASE  отображаются в  списке Field Name (Имя
поля),  и  Вы  можете  селектировать  те  поля,  которые  Вы  хотите
соединить с  полями системы  ObjectVision. Число  связей,  идущих  к
Вашей прикладной  задаче, ограничивается  только объемом имеющейся в
компьютере памяти.

     Вы можете для создания связей с файлами СУБД dBASE использовать
в выражениях  деревьев  принятия  решений  те  же  самые  @-функции,
которые  используются  для  СУБД  Paradox  (за  исключением  функции
@DBOPEN, которая  должна использоваться для открытия связи с файлом,
формат которого совместим с СУБД dBASE).

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


                        База данных Btrieve
--------------------------------------------------------------------

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

     После того, как Вы выбрали команду Tools| Link (Инструментарий|
Связь), Вы  можете создавать,  модифицировать или  удалять  связь  с
базой данных  Btrieve путем  выбора соответствующей  кнопки в  блоке
диалога Tools| Link (Инструментарий| Связь).








                                                                  17
     После  выбора  базы  данных  Btrieve  в  качестве  типа  связи,
появляется блок  диалога Link  Type| Btrieve  (Тип связи|  Btrieve).
Именно здесь  Вы задаете  имя связи,  маршрутное имя и имя файла для
файла базы  данных Btrieve. Вам необходимо также включить маршрутное
имя той  директории, которая содержит файлы словаря данных XQL, если
таблица базы данных Btrieve является существующей таблицей.

     После того,  как связь  установлена, имена  полей  базы  данных
Btrieve отображаются  в списке  Field Name  (Имя поля),  и Вы можете
селектировать те  поля, которые Вы хотите соединить с полями системы
ObjectVision.  Число  связей,  идущих  к  Вашей  прикладной  задаче,
ограничивается только объемом имеющейся в компьютере памяти.

     Вы можете  для создания  связей с  файлами базы  данных Btrieve
использовать в  выражениях деревьев  принятия решений  те  же  самые
@-функции, которые  используются для  СУБД Paradox  (за  исключением
функции @BTRVOPEN,  которая должна использоваться для открытия связи
с файлом базы данных Btrieve).

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


                  Динамический обмен данными (DDE)
--------------------------------------------------------------------

     Система   Windows    предоставляет   механизм    связей   через
динамический  обмен   данными  (Dynamic   Data  Exchange),   который
позволяет написанным для среды Windows прикладным задачам передавать
информацию непосредственно, без использования ASCII-файлов.

     Вы можете создать связи DDE из Вашей прикладной задачи к другим
прикладным задачам,  написанным для  среды Windows,  таким как Excel
или Word for Windows.

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















                                                                  18
    Запланированный процесс заполнения (руководимое заполнение)
                        (Guided completion)
--------------------------------------------------------------------

     +---------------------------------------------------------+
      Примечание:     |                                                         |
      Когда  пользователи   селектируют  некоторое  поле,  они     |                                                         |
      прерывают запланированный  процесс  заполнения,  который     |                                                         |
      определен Вашей целевой формой (Goal form).     |                                                         |
     +---------------------------------------------------------+

     По умолчанию,  система ObjectVision  применяет  запланированный
процесс заполнения,  который основан  на целевой  форме (Goal  form)
Вашей прикладной  задачи. В  результате использования этого средства
осуществляется  селектирование   только   тех   полей,   в   которые
пользователь должен  ввести  некоторое  значение.  Те  пользователи,
которые не  знакомы  с  Вашей  прикладной  задачей,  должны  вводить
информацию только в те поля, которые селектируются в запланированном
процессе заполнения.

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

     +---------------------------------------------------------+
      Статус  формы  [Complete]  (Заполнение)  отображается  в     |                                                         |
      случае,  когда  пользователь  завершил  заполнение  форм     |                                                         |
      Вашей прикладной задачи.     |                                                         |
     +---------------------------------------------------------+

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

     Любая  незаполненная   форма,  селектированная   пользователем,
становится целевой  формой (Goal form). Статус этой формы появляется
в заголовке  прикладной задачи  справа от  имени прикладной  задачи.
Начальная целевая  форма (Goal form) - это форма, занимающая верхнюю
позицию в стеке.


        Восстановление запланированного процесса заполнения
--------------------------------------------------------------------

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










                                                                  19
     +---------------------------------------------------------+
      Примечание:     |                                                         |
      Команда  File|   Resume  (Файл|   Возобновить)  является     |                                                         |
      средством   быстрого   восстановления   запланированного     |                                                         |
      процесса заполнения.     |                                                         |
     +---------------------------------------------------------+

     Эта  выбранная  пользователем  форма  продолжает  быть  целевой
формой до  тех пор,  пока пользователь не закроет ее, не селектирует
новую целевую  форму, или  не  восстановит  запланированный  процесс
заполнения. Когда  пользователь  закрывает  целевую  форму,  система
ObjectVision селектирует  предшествующую целевую  форму  в  качестве
новой целевой  формы. Для  возобновления  запланированного  процесса
заполнения для  начальной целевой  формы пользователь  может выбрать
команду File| Resume (Файл| Возобновить).


                     Минимальная рекалькуляция
--------------------------------------------------------------------

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

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

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

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

     +---------------------------------------------------------+
      Примечание:     |                                                         |
      Команда Field|  Calculate (Поле|  Вычислить)  определяет     |                                                         |
      запланированный  процесс   заполнения  для   вычисляемых     |                                                         |
      полей.     |                                                         |
     +---------------------------------------------------------+

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











                                                                  20
                    Активная помощь пользователю
--------------------------------------------------------------------

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























































                                                                  21
                      ГЛАВА 2. СОЗДАНИЕ ФОРМЫ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

     В этой  главе Вы  начнете воссоздавать программу Order (Заказ),
которая   представляет   собой   типовую   прикладную   задачу.   На
представленном далее  рисунке показана  форма Sales  Order (Заказ на
покупку) программы  Order (Заказ),  которую Вы можете использовать в
качестве ссылки.  Вы, возможно, захотите также распечатать эту форму
для того,  чтобы обращаться  к  ней  по  мере  ее  воссоздания.  При
распечатке этой  формы обратите  внимание на то, что на отпечатанной
копии кнопки не появляются.

     Рис.2.1 Форма Sales Order (Заказ на покупку):
1 - Заказ на покупку (Цель); 2 - Имя; 3 - Компания; 4 - Адрес; 5 -
Город, штат и код почтовой зоны; 6 - Элемент; 7 - Метод отгрузки;
8 - Количество; 9 - Скидка; 10 - Цена за штуку; 11 - Дата заказа;
12 - Тип клиента; 13 - Дистрибьютор; 14 - Дилер; 15 - Преподаватель;
16 - Другой; 17 - Базовая цена; 18 - Уменьшенная скидка; 19 -
Итоговая цена; 20 - Налог на продажу; 21 - Следующий; 22 -
Предыдущий; 23 - Сохранить в базе данных; 24 - Стоимость отгрузки;
25 - Увеличенная цена

     В данной главе Вы выполните следующие процедуры:

-    Откроете инструментальное окно формы (Form Tool);

-    Создадите форму  Sales Order  (Заказ на  покупку) и измените ее
     размер;

-    Сохраните создаваемую Вами прикладную задачу под именем Myorder
     (Мой заказ).


                        Создание Вашей формы
--------------------------------------------------------------------

     Если Вы  готовы к  созданию своей  собственной формы, выполните
перечисленные далее действия:

+++> Ваши дальнейшие действия:

1.   Запустите систему  ObjectVision,  но  не  селектируйте  никакой
     прикладной задачи.

2.   Выберите кнопку  Maximize  (Максимизировать),  расположенную  в
     верхнем правом  углу окна.  Эта кнопка позволяет увеличить окно
     так,  чтобы   оно  заполняло   собой  весь   экран.  Вы  должны
     максимизировать окно  всякий раз,  когда Вы  запускаете систему
     ObjectVision в соответствии с указаниями в этом "Учебнике".

3.   Выберите команду Form (Форма) в меню Tools (Инструментарий). На
     экране появляется  блок диалога  Form| Form  Name  (Форма|  Имя
     формы).

4.   Наберите на  клавиатуре Sales Order (Заказ на покупку), а затем
     выберите кнопку OK (Выполнить) или нажмите клавишу Enter.









                                                                  22
     На экране  появится только  что  созданная  форма  Sales  Order
     (Заказ на  покупку), которая  показана на  представленном далее
     рисунке:

     Рис.2.2 Только что созданная форма Sales Order (Заказ на
покупку):
1 - Система ObjectVision (неозаглавленный); 2 - Форма; 3 -
Редактировать; 4 - Объекты; 5 - Свойства; 6 - Вид; 7 -
Инструментарий; 8 - Подсказка; 9 - Заказ на покупку [редактирование]

     Обратите внимание на строку заголовка (title bar). Она содержит                          ____________________________
имя формы  и статус формы: [Edit] (редактирование). Инструментальное
окно формы  (Form Tool)  по прежнему открыто, и Вы можете продолжить
редактирование этой новой формы.

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


                      Изменение размера формы
--------------------------------------------------------------------

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

мышь Используя мышь:

+++> Ваши дальнейшие действия:

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

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

     Теперь форма  Sales Order  (Заказ на  покупку) должна выглядеть
     аналогично показанной на расположенном ниже рисунке 2.3.

     Либо, если Вы используете клавиатуру:

1.   Откройте управляющее  меню формы Sales Order (Заказ на покупку)
     путем нажатия комбинации клавиш Alt+- ("минус").

2.   Выберите  команду   Size  (Изменение  размера),  затем  нажмите
     клавишу Enter.







                                                                  23
3.   Нажмите клавишу  "стрелка  влево",  "стрелка  вверх",  "стрелка
     вправо"  или  "стрелка  вниз"  для  того,  чтобы  селектировать
     намеченный к  изменениям  бордюр,  а  затем  нажимайте  клавиши
     "стрелка влево", "стрелка вверх", "стрелка вправо" или "стрелка
     вниз"  для   перемещения  бордюра  окна.  После  того,  как  Вы
     переместили бордюр,  и перед  тем, как нажать клавишу Enter, Вы
     можете переместить  соседний бордюр путем нажатия другой кнопки
     управления  курсором.   Затем  нажмите  клавишу  Enter.  Теперь
     переместите еще  два бордюра  и нажмите  клавишу Enter.  Теперь
     форма  Sales   Order  (Заказ   на  покупку)   должна  выглядеть
     приблизительно так:

     Рис.2.3 Форма Sales Order (Заказ на покупку) с измененными
размерами:
1 - Система ObjectVision (неозаглавленный); 2 - Форма; 3 -
Редактировать; 4 - Объекты; 5 - Свойства; 6 - Вид; 7 -
Инструментарий; 8 - Подсказка; 9 - Заказ на покупку [редактирование]


         Присвоение имени прикладной задаче и ее сохранение
--------------------------------------------------------------------

     Далее показано,  как задать имя разрабатываемой Вами прикладной
задаче и  как сохранить  ее на диске. Оригинальная прикладная задача
по обработке  заказов, включенная  в программный пакет ObjectVision,
имеет имя  Order.  Назовите  свою  прикладную  задачу  Myorder  (Мой           _____                                       _______
заказ), чтобы  не затереть  на диске оригинальную типовую прикладную
задачу.

+++> Ваши дальнейшие действия:

1.   Выберите   команду    Form|   Close    Tool   (Форма|   Закрыть
     инструментальное окно),  чтобы возвратиться к режиму заполнения
     формы.

2.   Выберите команду File| Save (Файл| Сохранить) или File| Save As
     (Файл| Сохранить под именем).

3.   После появления  блока диалога  File|  Save  (Файл|  Сохранить)
     наберите на  клавиатуре Myorder  (или  myorder -  регистр  букв
     значения  не   имеет).   Система   ObjectVision   автоматически
     добавляет расширение .OVD.

4.   Выберите кнопку OK или нажмите клавишу Enter.

     Теперь Вы  завершили работу  с  данной  частью  "Учебника".  Вы
можете выйти  из системы  ObjectVision и  возвратиться к  "Учебнику"
позже, либо продолжить работу сейчас.

















                                                                  24
                ГЛАВА 3. СОЗДАНИЕ ОБЪЕКТОВ В ФОРМАХ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

     В данной  главе Вы будете вставлять объекты в форму Sales Order
(Заказ на  покупку). После  вставки объектов  Вам предстоит  описать
некоторые из  их свойств. Вы познакомитесь со следующими процедурами
системы ObjectVision:

-    Вставкой   полей,    текстовых    элементов    и    заполненных
     прямоугольников в  форму  Sales  Order  (Заказ  на  покупку)  с
     помощью команды Objects (Объекты).

-    Копированием и  вставкой полей  с  помощью  команд  Edit|  Copy
     (Редактирование| Копирование)  и Edit|  Paste  (Редактирование|
     Вклейка).

-    Переименованием   скопированных   полей   с   помощью   команды
     Properties| Name/Text (Свойства| Имя/Текст).

-    Изменением шрифта метки текстового объекта.

-    Удалением бордюра текстового объекта.

-    Применением  того   же  самого   изменения  бордюра  к  другому
     текстовому  объекту   с  помощью   команды  Properties|  Repeat
     (Свойства| Повторить).

-    Вклейкой графики из универсального буфера (Clipboard).


                            Объекты форм
--------------------------------------------------------------------

     В форму  могут вставляться  шесть типов  объектов: поля, текст,
заполненные прямоугольники,  прямоугольники со  скругленными углами,
линии и графика.


                                Поля
--------------------------------------------------------------------

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

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

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








                                                                  25
                         Упорядочение полей                         __________________

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


                               Текст
--------------------------------------------------------------------

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


                           Прямоугольники
--------------------------------------------------------------------

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

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


                               Линии
--------------------------------------------------------------------

     На  форме   могут  быть  прочерчены  линии,  которые  логически
выделяют определенные  области. Вы  можете выбрать  одну из  четырех
толщин линий  с помощью  команды Properties|  Line Width  (Свойства|
Толщина линий).  Эти атрибуты  толщины линий могут также применяться
для   бордюров    селектированных   полей,    текстовых    объектов,
прямоугольников и графики.


                              Графика
--------------------------------------------------------------------

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






                                                                  26
     Clipboard does not contain graphic

     (Универсальный буфер не содержит графику)


                           Вставка полей
--------------------------------------------------------------------

     Теперь Вы  будете вставлять  поля в форму Sales Order (Заказ на
покупку). На  рисунке 3.1  вновь  представлена  полностью  описанная
форма, к которой Вы будете обращаться.

     Рис.3.1 Форма Sales Order (Заказ на покупку):
1 - Заказ на покупку (Цель); 2 - Имя; 3 - Компания; 4 - Адрес; 5 -
Город, штат и код почтовой зоны; 6 - Элемент; 7 - Метод отгрузки;
8 - Количество; 9 - Скидка; 10 - Цена за штуку; 11 - Дата заказа;
12 - Тип клиента; 13 - Дистрибьютор; 14 - Дилер; 15 - Преподаватель;
16 - Другой; 17 - Базовая цена; 18 - Уменьшенная скидка; 19 -
Итоговая цена; 20 - Налог на продажу; 21 - Следующий; 22 -
Предыдущий; 23 - Сохранить в базе данных; 24 - Стоимость отгрузки;
25 - Увеличенная цена

     В этом разделе Вам предстоит использовать следующие команды:

-    Tools|    Form    (Инструментарий|    Форма)    для    открытия
     инструментального окна формы (Form Tool);

-    Objects| Field (Объект| Поле) для добавления полей;

-    Edit|  Copy   (Редактировать|   Копировать)   и   Edit|   Paste
     (Редактировать| Вклеить) для добавления дополнительных полей;

-    Properties|  Field   (Свойства|  Поле)   для   изменения   имен
     скопированных полей.


                           Блоки диалога
--------------------------------------------------------------------

     Во  время  выполнения  следующей  процедуры  (и  на  протяжении
оставшейся части  данного Учебника) Вам предстоит использовать блоки
диалога для  задания параметров. Задание параметров в блоках диалога
включает в себя следующие этапы:

-    Выделите световым маркером необходимый Вам элемент (если он еще
     не выделен);

-    Выберите кнопку  OK для  задания Ваших параметров. При работе с
     клавиатурой  для  задания  Ваших  параметров  следует  нажимать
     клавишу Tab  (Табуляция) до  выделения световым маркером кнопки
     OK, а  затем нажать  клавишу Enter. Для нажатия кнопки OK можно
     воспользоваться мышью.

+++> Ваши дальнейшие действия:

1.   Если  задача   Myorder  (Мой   заказ)  в  настоящий  момент  не
     загружена,  то   следует  выбрать  команду  File|  Open  (Файл|
     Открыть),   а   затем   селектировать   файл   MYORDER.OVD   из
     отображаемого списка  файлов прикладных  задач. Выберите кнопку






                                                                  27
     Open (Открыть)  или  нажмите  комбинацию  клавиш  Alt+O,  чтобы
     открыть  прикладную  задачу  Myorder  (Мой  заказ).  Прикладная
     задача будет открыта в режиме заполнения формы.

2.   Выберите команду  Form (Форма)  из меню Tools (Инструментарий).
     Открывается инструментальное  окно формы (Form Tool), в котором
     форма Sales  Order (Заказ на покупку) будет отображена в режиме
     Edit (Редактирование).

     Следует отметить  меню Form  (Форма) в  строке меню.  Это  меню
     будет использоваться  для вставки  и описания  входящих в форму
     объектов.

3.   Выберите команду  Objects| Field  (Объекты|  Поле).  На  экране
     появится блок  диалога Objects|  Field|  Field  Name  (Объекты|
     Поле| Имя поля), который представлен далее на рисунке:

     Рис.3.2 Блок диалога Objects| Field| Field Name (Объекты| Поле|
Имя поля):
1 - Имя поля; 2 - Добавить новое поле; 3 - Выполнить; 4 - Отменить

     Этот блок  диалога содержит только один элемент 
     (Добавить новое  поле). После добавления новых полей имена этих
     полей появляются в представленном списке.

4.   Выберите  элемент     (Добавить  новое  поле).
     (Поскольку элемент   (Добавить  новое поле) уже
     выделен световым маркером, достаточно лишь нажать клавишу Enter
     или нажать мышью кнопку OK.

     Теперь на  пустой форме Sales Order (Заказ на покупку) появится
     указатель  в   виде  перекрестия   (визира).   Этот   указатель
     предоставляет возможность создания поля Name (Имя).

мышь Используя мышь:

+++> Ваши дальнейшие действия:

1.   Удерживая нажатой  левую кнопку  мыши, буксируйте  указатель  в
     виде  визира  вниз  и  вправо.  При  выполнении  этой  операции
     появляется  прямоугольник   с  пунктирным   контуром,   который
     показывает размер и позицию поля.

2.   Когда  этот   прямоугольник   достигнет   требуемого   размера,
     отпустите кнопку мыши.

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

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

     Вы можете  переместить  все  поле  целиком  при  помощи  клавиш
     "стрелка влево", "стрелка вверх", "стрелка вправо" или "стрелка






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

     С помощью клавиатуры:

1.   Переместите  указатель   к  левому  бордюру  формы  на  высоту,
     соответствующую  верхней  грани  поля  Name  (Имя),  и  нажмите
     клавишу Enter, чтобы зафиксировать эту точку как якорную точку.

2.   Нажимайте клавиши "стрелка вправо" и "стрелка вниз" до тех пор,
     пока поле Name (Имя) не примет нужный Вам размер, а затем вновь
     нажмите клавишу Enter по завершении Ваших действий.

     На рисунке  3.3 показано,  как будет выглядеть Ваша форма Sales
Order (Заказ  на покупку) после того, как вы откорректируете позицию
поля Name (Имя).

     Рис.3.3 Размещение поля Name (Имя):
1 - Заказ на покупку [Редактирование]; 2 - Имя


                       Изменение размера поля
--------------------------------------------------------------------

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

     Если это  поле связано  с полем  в базе  данных, то  Вы  должны
сделать поле системы ObjectVision по ширине равным полю базы данных.
Например, поле  Name (Имя)  в форме  Sales Order  (Заказ на покупку)
связано с полем базы данных, которое может содержать до 48 символов,
поэтому Вам следует сделать поле таким, чтобы оно могло содержать 48
символов. Если  поле системы  ObjectVision оказывается  недостаточно
широким, чтобы  в нем  поместилось  связанное  с  ним  значение,  то
пользователи не  смогут отображать  и вводить  новые  данные,  длина
которых превышает размер поля.

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

+++> Ваши дальнейшие действия:

1.   Чтобы  расширить   поле  Name   (Имя),  начните  с  перемещения
     указателя в нижний правый угол этого поля.

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

3.   Чтобы расширить  поле с  помощью клавиатуры, нажмите комбинацию
     клавиш Shift+"стрелка  вправо", чтобы переместить нижний правый
     угол поля (и, следовательно, правый бордюр поля) вправо.









                                                                  29
                          Проверка размера                          ________________

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

     Для возврата  к режиму  заполнения формы и немедленной проверки
поля Name (Имя) необходимо выполнить следующие действия:

+++> Ваши дальнейшие действия:

1.   Выберите   команду    Form|   Close    Tool   (Форма|   Закрыть
     инструментальное окно).

     Система ObjectVision  возвращает Вас  в режим заполнения формы.
     Статус формы  [Goal] (Цель)  появляется справа от имени формы в
     строке заголовка.  Поле Name  (Имя)  селектировано  и  содержит
     мигающий текстовый указатель.

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

     Вне зависимости от того, хотите ли Вы изменить ширину поля Name
     (Имя) или  нет, в  настоящий момент  Вам следует возвратиться к
     инструментальному окну  формы  (Form  Tool),  чтобы  продолжить
     работу с Учебником.

3.   Выберите команду Tools| Form (Инструментарий| Форма).


                         Перемещение полей
--------------------------------------------------------------------

     По мере  того, как  Вы продолжаете  создавать форму Sales Order
(Заказ на  покупку), Вы  будете вставлять  в нее  много полей. После
того, как  Вы вставили  поле или  вклеили его,  может  потребоваться
перемещение  этого   поля.  Далее   показано,  как  можно  выполнить
перемещение поля:

мышь Используя мышь:

+++> Ваши дальнейшие действия:

1.   Переместите указатель  к любой точке, расположенной внутри поля
     Name (Имя), нажмите кнопку мыши и удерживайте ее нажатой.

2.   Переместите поле  на новую  позицию, а  затем отпустите  кнопку
     мыши. Заметьте,  что во  время перемещения  поля указатель мыши
     превращается в символ "перекрестные волоски" (визир).

3.   Повторите действия  1 и  2, чтобы  переместить поле  обратно на
     соответствующее ему место.

При работе с клавиатурой:







                                                                  30
1.   Нажимайте клавиши  "стрелка влево",  "стрелка вверх",  "стрелка
     вправо" или  "стрелка вниз"  для  перемещения  селектированного
     поля.

2.   Нажмите клавишу  Tab (Табуляция) по завершении работы, когда Вы
     хотите селектировать  другое поле.  (Естественно, что  в данном
     конкретном случае  больше нет  никаких полей,  которые могли бы
     быть селектированы.)


                         Копирование полей
--------------------------------------------------------------------

     Поля Company  (Компания), Address (Адрес) и City, State and ZIP
(Город, штат  и код  почтовой зоны) имеют тот же самый размер, что и
только что  вставленное поле  Name (Имя). Вы можете вставлять каждое
из этих  полей по отдельности, как это было сделано в отношении поля
Name (Имя),  но Вы  можете создать  их путем  копирования поля  Name
(Имя) с  последующим изменением имен созданных полей. В этом разделе
Вы узнаете, как скопировать поле Name (Имя).

     Команды копирования  и вклейки  используют универсальный  буфер
форм  (Form   Clipboard),  который   представляет  собой   временное
хранилище (невидимое  на  экране),  используемое  для  вырезанных  и
скопированных объектов форм.

+++> Ваши дальнейшие действия:

1.   Поле Name  (Имя)  уже  выделено  с  помощью  пунктирной  линии,
     поэтому выберите команду Edit| Copy (Редактировать| Копировать)
     для копирования  этого поля  в универсальный  буфер форм  (Form
     Clipboard).

2.   Выберите  команду  Edit|  Paste  (Редактировать|  Вклеить)  для
     вклейки копии  в форму. Вы можете также использовать комбинацию
     клавиш   Shift+Ins,   соответствующую   команде   Edit|   Paste
     (Редактировать| Вклеить).

3.   Используйте мышь  или клавиши  управления  курсором  для  того,
     чтобы позиционировать  эту копию непосредственно под полем Name
     (Имя). Затем  нажмите кнопку  мыши  или  клавишу  Enter,  чтобы
     завершить процесс позиционирования копии.

4.   Выберите  команду  Edit|  Paste  (Редактировать|  Вклеить)  или
     нажмите комбинацию клавиш Shift+Ins еще два раза, чтобы вклеить
     копии под  двумя уже  существующими полями.  (Вам уже  не нужно
     больше копировать  поле Name  (Имя), поскольку  копия в  момент
     вклеивания  остается   в  универсальном   буфере   форм   (Form
     Clipboard).  На   рисунке  3.4   показано,  как  теперь  должен
     выглядеть Ваш экран.

     Рис.3.4 Вклеенные копии поля Name (Имя):
1 - Заказ на покупку [Редактирование]; 2 - Имя


                 Переименование скопированных полей
--------------------------------------------------------------------

     Две команды изменяют имя скопированного поля:






                                                                  31
-    команда Properties| Field (Свойства| Поле) изменяет имя копии в
     то время,  как оригинальное  поле - то, которое Вы копировали -
     сохраняет свое  собственное. Таким образом, команда Properties|
     Field (Свойства| Поле) создает новое поле.

-    команда Properties|  Name/Text (Свойства|  Имя/Текст)  изменяет
     имя  как  оригинального  поля,  так  и  копии  (задавая,  таким
     образом, новое  имя существующему  полю).  Команда  Properties|
     Name/Text (Свойства|  Имя/Текст) изменяет  имя поля  на  каждой
     форме, в  которой это  поле встречается,  в  деревьях  принятия
     решений и  во внешних связях. (Однако, если Вы использовали имя
     поля  в   тексте  подсказки,   то  Вы   должны   заменить   его
     самостоятельно.)

     В этом разделе Вы будете использовать команду Properties| Field
     (Свойства| Поле), поскольку Вам необходимо, чтобы скопированное
     поле являлось бы новым полем, отличным от оригинального.

+++> Ваши дальнейшие действия:

1.   Селектируйте первое вклеенное Вами поле - то, которое находится
     под  оригинальным   полем  Name   (Имя) - и  выберите   команду
     Properties| Field (Свойства| Поле).

     На  экране  появляется  блок  диалога  Properties|  Field  Name
     (Свойства| Имя  поля). Здесь Вы можете выбрать вариант  (Добавить новое поле) или имя уже описанного поля.

     Рис.3.5 Блок диалога Properties| Field Name (Свойства| Имя
поля):
1 - Имя поля; 2 - Добавить новое поле; 3 - Имя; 4 - Выполнить; 5 -
Отменить

2.   Выберите команду  (Добавить новое поле).

3.   Наберите на клавиатуре Company (Компания) в блоке диалога Field
     Name (Имя поля), которое появится на экране.

4.   Повторите действия  с 1  по 3  для переименования  двух  других
     полей - Address  (Адрес) и  City, State  and ZIP (Город, штат и
     код почтовой зоны)


                     Добавление остальных полей
--------------------------------------------------------------------

     Теперь Вам  предстоит добавить  остальные поля  в  форму  Sales
Order (Заказ на покупку).

+++> Ваши дальнейшие действия:

1.   Выберите команду Objects| Field (Объекты| Поле), чтобы добавить
     поле Customer  Type (Тип  клиента), а  затем расположите  его и
     задайте ему  размер в  соответствии с  отпечатанной Вами копией
     формы Sales Order (Заказ на покупку), представленной на рисунке
     3.1. В дальнейшем при форматировании Вы придадите полю Customer
     Type (Тип  клиента) вид  маркерной кнопки  и  добавите  к  нему
     список возможных  значений, но  в  настоящий  момент  это  поле
     пустует.






                                                                  32
2.   Выберите команду Objects| Field (Объекты| Поле), чтобы добавить
     поле Save  to database  (Сохранить  в  базе  данных),  а  затем
     расположите его  и задайте ему размер в соответствии с рисунком
     3.1. На результирующей форме поле Save to database (Сохранить в
     базе данных)  будет иметь  вид прямоугольника  со  скругленными
     углами,  но   на  Вашей   форме  это   поле  будет   иметь  вид
     прямоугольника. В главе 5 Вы измените тип поля Save to database
     (Сохранить в базе данных) на кнопку (Button), в результате чего
     это поле приобретет вид кнопки с отбрасываемой тенью.

3.   Выберите команду Objects| Field (Объекты| Поле), чтобы добавить
     к форме  Sales Order  (Заказ на  покупку)  остальные  поля.  Их
     имена, размеры  и  позиции  Вы  можете  узнать,  обратившись  к
     рисунку 3.1  (или к отпечатанной Вами форме). Следует отметить,
     что бордюр  формы может  изменять свой  размер автоматически по
     мере добавления объектов.

4.   Выберите   команду    Form|   Close    Tool   (Форма|   Закрыть
     инструментальное окно),  а  затем  команду  File|  Save  (Файл|
     Сохранить), чтобы сохранить результаты Вашей работы.

5.   Выберите команду  Tools| Form  (Инструментарий|  Форма),  чтобы
     возвратиться к режиму редактирования формы.

     В главе 5 Вы узнаете, как описывать свойства полей.


                   Добавление текстовых объектов
--------------------------------------------------------------------

     В прикладной  задаче Myorder текстовые объекты используются для
отображения названия компании и адреса в форме Sales Order (Заказ на
покупку).

     Вам предстоит воспользоваться следующими командами:

-    Objects|  Text   (Объекты|  Текст)   для  добавления  текстовых
     объектов;

-    Properties| Label  Font (Свойства|  Шрифт метки)  для изменения
     шрифта, используемого для выдачи текста;

-    Properties| Borders  (Свойства| Бордюры) для удаления бордюра у
     одного текстового объекта;

-    Properties| Repeat (Свойства| Повторить) для удаления бордюра у
     других   текстовых   объектов.   Команда   Properties|   Repeat
     (Свойства| Повторить)  применяет последние форматные изменения,
     которые Вы сделали, к селектированному объекту.

     Имя (название)  компании и  ее адрес  являются двумя отдельными
текстовыми  объектами.   Первым  текстовым   объектом,  который   Вы
добавляете, является название компании, ACME Widgets.

+++> Ваши дальнейшие действия:

1.   Выберите команду Objects| Text (Объекты| Текст).








                                                                  33
     На экране  появляется блок  диалога Objects|  Text| Text  Value
     (Объекты|  Текст|   Содержание  текста),  и  Вы  можете  ввести
     предназначенный для отображения текст.

2.   Наберите на клавиатуре ACME.

3.   Нажмите комбинацию  клавиш Ctrl+Enter,  чтобы перейти  на новую
     строку.

4.   Когда Вы  нажмете клавишу  Enter, блок диалога закроется, то же
     самое произойдет  при выборе  кнопки OK. Если Вы нажали клавишу
     Enter   случайно,   то   Вы   можете   возвратиться   в   режим
     редактирования своего  текста  в  блоке  диалога  путем  выбора
     команды Properties| Name/Text (Свойства| Имя/Текст).

5.   Введите с клавиатуры Widgets и нажмите клавишу Enter.

6.   Используя указатель  в виде  визира, позиционируйте  и  задайте
     размер текстового  объекта ACME  Widgets, чтобы он располагался
     вдоль верхнего  края формы, как это показано на рисунке 3.1 или
     на  отпечатанной   Вами  копии  формы  Sales  Order  (Заказ  на
     покупку).

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


                          Изменение шрифта
--------------------------------------------------------------------

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

+++> Ваши дальнейшие действия:

1.   При условии,  что  текстовый  объект  ACME  Widgets  попрежнему
     селектирован,   выберите   команду   Properties|   Label   Font
     (Свойства| Шрифт метки).

     На  экране  появляется  блок  диалога  Properties|  Label  Font
     (Свойства|  Шрифт  метки),  который  показан  на  рисунке  3.6.
     Имеющийся у  Вас список  шрифтов и  размеров может  быть  иным.
     Подробная  информация   по  инсталляции  шрифтов  приводится  в
     документации по системе Windows.

     Рис.3.6 Блок диалога Properties| Label Font (Свойства| Шрифт
метки):
1 - Шрифт; 2 - Размер; 3 - Стиль; 4 - Яркий; 5 - Курсивный; 6 -
Подчеркнутый; 7 - Шрифты принтера; 8 - Выполнить; 9 - Отменить

     С помощью  этого блока диалога Вы можете задать те стиль шрифта
     и его  размер, с  помощью которых должен отображаться текст. Вы
     можете также  включить маркерные  кнопки Bold  (Яркий),  Italic
     (Курсивный) и  Underlined (Подчеркнутый). Следует отметить, что
     стандартным размером  шрифта для  объекта ACME Widgets является
     размер 8.  Это означает, что текст отображается шрифтом высотой
     8 точек.

2.   Селектируйте размер шрифта 24.






                                                                  34
3.   Включите маркерную  кнопку Bold  (Яркий) в  группе кнопок Style
     (Стиль).

4.   Выберите кнопку OK или нажмите клавишу Enter.

     Символы текста  ACME Widgets  теперь стали  больше по  высоте и
     "темнее" (точнее,  жирнее). Возможно,  Вам потребуется изменить
     позицию и размер этого объекта, чтобы все объекты уместились бы
     в форме.

мышь Используя мышь:

-    Для репозиционирования  селектированного  поля  его  необходимо
     буксировать.  Для   изменения  размера   селектированного  поля
     установите  указатель   на  один   из  черных  прямоугольников,
     называемых манипуляторами  (handles) и  расположенных по  углам
     объекта.  Нажмите   кнопку  мыши  и,  удерживая  ее  в  нажатом
     состоянии, буксируйте  манипулятор до  тех пор,  пока объект не
     примет нужного Вам размера, после чего отпустите кнопку мыши.

-    Вы  можете   также  селектировать   несколько  полей,  а  затем
     репозиционировать их как группу или назначить им новые атрибуты
     как  единой   группе  полей.  Например,  для  перемещения  всех
     существующих полей,  расположенных ниже текста ACME Widgets, Вы
     можете селектировать поле Name (Имя), затем нажать и удерживать
     нажатой клавишу  Shift и  нажать мышью  на поле  Extended Price
     (Увеличенная цена).  Заметьте,  что  теперь  селектированы  все
     поля, которые  были Вами  созданы и  располагаются между  полем
     Name (Имя) и полем Extended Price (Увеличенная цена).

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

При использовании клавиатуры:

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

-    Для селектирования нескольких полей в направлении слева направо
     и сверху  вниз следует  нажать комбинацию  клавиш Ctrl+Tab. Для
     селектирования нескольких  полей в  противоположном направлении
     следует нажать комбинацию клавиш Shift+Ctrl+Tab.


                         Добавление адреса
--------------------------------------------------------------------

     Далее Вам предстоит добавить адрес компании к форме Sales Order
(Заказ на покупку).

+++> Ваши дальнейшие действия:

1.   Выберите команду Objects| Text (Объекты| Текст).






                                                                  35
2.   Введите нужные данные, нажимая комбинацию клавиш Ctrl+Enter для
     перехода на  новую строку.  Нажмите клавишу Enter по завершении
     ввода:

4030 Braker Lane West

Suite 2001

Austin, TX 78759-5332

3.   Разместите поле  и задайте  его размер, обращаясь для справки к
     рисунку 3.1  или к  отпечатанной копии формы Sales Order (Заказ
     на покупку).  В дальнейшем при работе с Учебником Вам предстоит
     удалить бордюр поля.

4.   Выберите  команду   Properties|  Label  Font  (Свойства|  Шрифт
     метки),  селектируйте  шрифт  Times  Roman  (который  в  списке
     обозначается сокращенно -  Tms Rmn)  и  задайте  высоту  шрифта
     равной 10.

5.   Выберите кнопку OK.


                          Удаление бордюра
--------------------------------------------------------------------

     Далее  Вам   предстоит  удалить   бордюр  из  добавленных  Вами
текстовых объектов.

+++> Ваши дальнейшие действия:

1.   Исходя из  того, что  селектирован текстовый  объект с  адресом
     компании,  выберите   команду  Properties|  Borders  (Свойства|
     Бордюры).  Заметьте,   что  маркировано   стандартное  значение
     Outline (Контур).

2.   Демаркируйте кнопку Outline (Контур).

3.   Выберите кнопку OK.

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

4.   Воспользуйтесь   командой    Properties|   Repeat    (Свойства|
     Повторить)  для   удаления  бордюров   в  текстовом  объекте  с
     названием компании.  Сначала селектируйте  текстовый  объект  с
     названием компании.  Затем Вы  можете  выбрать  команду  Repeat
     (Повторить) из  меню Properties  (Свойства) или  нажать клавишу
     F4.

5.   Выберите   команду    Form|   Close    Tool   (Форма|   Закрыть
     инструментальное окно),  а  затем  команду  File|  Save  (Файл|
     Сохранить), чтобы сохранить результаты Вашей работы.

6.   Выберите команду  Tools| Form  (Инструментарий|  Форма),  чтобы
     возвратиться к режиму редактирования формы.







                                                                  36
     Теперь Вы  почти завершили  добавление объектов  к форме  Sales
Order (Заказ  на покупку).  Далее Вам предстоит добавить заполненные
прямоугольники. На представленном далее рисунке показано, как теперь
должен выглядеть Ваш экран:

     Рис.3.7 Форма Sales Order (Заказ на покупку) с текстовыми
объектами:
1 - Заказ на покупку (Цель); 2 - Имя; 3 - Компания; 4 - Адрес; 5 -
Город, штат и код почтовой зоны; 6 - Элемент; 7 - Метод отгрузки;
8 - Количество; 9 - Скидка; 10 - Цена за штуку; 11 - Дата заказа;
12 - Тип клиента; 13 - Базовая цена; 14 - Уменьшенная скидка; 15 -
Итоговая цена; 16 - Налог на продажу; 17 - Следующий; 18 -
Предыдущий; 19 - Сохранить в базе данных; 20 - Стоимость отгрузки;
21 - Увеличенная цена


               Добавление заполненных прямоугольников
--------------------------------------------------------------------

     Заполненные какой-либо  фактурой прямоугольники  могут внести в
Ваши  прикладные  задачи  ясность  и  привлекательность.  Вы  можете
воспользоваться  заполненными   прямоугольниками  для   того,  чтобы
затенить имеющееся в форме пустое пространство или оттенить поля. Вы
можете также  поместить заполненный прямоугольник вместе с полем или
текстовым объектом  в одно  и то  же место, чтобы логически выделить
это  поле  или  текстовый  объект  (за  исключением  случаев,  когда
выбранная Вами  фактура заполнения настолько темна, что из-за нее не
видны  сами   символы).   Прикладная   задача   Myorder   использует
заполненные  прямоугольники   для  заполнения  областей  ниже  полей
Shipping Method  (Метод отгрузки) и Discount (Скидка) и между полями
Discount (Скидка) и Less Discount (Уменьшенная скидка).

     Для добавления  заполненных прямоугольников к форме Sales Order
(Заказ на  покупку) Вам  предстоит воспользоваться командой Objects|
Filled Rectangle (Объекты| Заполненный прямоугольник).

     Для удаления бордюров заполненных прямоугольников Вам предстоит
воспользоваться командой Properties| Borders (Свойства| Бордюры).

+++> Ваши дальнейшие действия:

1.   Выберите   команду    Objects|   Filled   Rectangle   (Объекты|
     Заполненный прямоугольник). Появляется указатель-визир.

2.   Установите  указатель  в  верхнем  правом  углу  поля  Discount
     (Скидка), а  затем буксируйте  указатель вниз  и вправо  до тех
     пор, пока прямоугольник не заполнит в точности все пространство
     между полями  Discount (Скидка)  и Less  Discount  (Уменьшенная
     скидка).

     В получившемся  прямоугольнике отображается стандартная фактура
     заполнения.  Стандартная  фактура  заполнения  не  совпадает  с
     фактурой заполнения,  показанной на  рисунке  3.1,  поэтому  Вы
     можете  изменить   фактуру  заполнения   путем  выбора  команды
     Properties| Fill Pattern (Свойства| Фактура заполнения).

     В результате  на экране  появляется блок  диалога Fill  Pattern
     (Фактура  заполнения),  который  представлен  на  расположенном







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

     Рис.3.8 Блок диалога Properties| Fill Pattern (Свойства|
Фактура заполнения):
1 - Выполнить; 2 - Отменить

3.   Снова выберите  команду  Objects|  Filled  Rectangle  (Объекты|
     Заполненный прямоугольник).

     На этот  раз расположите  прямоугольник таким образом, чтобы он
     занимал все  место от  нижнего левого угла поля Shipping Method
     (Метод отгрузки)  до нижнего  левого угла  поля Extended  Price
     (Увеличенная цена).

     Поля Next (Следующий), Previous (Предыдущий) и Save to database
     (Сохранить в  базе данных)  представлены с  наложением  фактуры
     заполнения (за  исключением случая,  когда Вам монитор не может
     отобразить  фактуру  заполнения  в  том  виде,  в  котором  она
     присутствует на  рисунке). Далее  Вам предстоит  удалить линию,
     отделяющую  первый   элемент  фактуры  от  второго.  Эта  линия
     является бордюром объекта.

4.   Селектируйте второй  заполненный прямоугольник,  если он еще не
     селектирован, и выберите команду Properties| Borders (Свойства|
     Бордюры). На экране появляется блок диалога Properties| Borders
     (Свойства| Бордюры).

5.   Выключите маркерную кнопку Outline (Контур).

6.   Выберите кнопку OK.

7.   Селектируйте  первый   заполненный  прямоугольник   и  выберите
     команду Properties| Borders (Свойства| Бордюры).

8.   Выключите маркерную  кнопку Outline  (Контур) в  блоке  диалога
     Properties| Borders  (Свойства| Бордюры). Теперь бордюр убран и
     два  заполненных   прямоугольника  представлены  одной  цельной
     фактурой заполнения.

9.   Выберите   команду    Form|   Close    Tool   (Форма|   Закрыть
     инструментальное окно),  а затем  выберите команду  File|  Save
     (Файл| Сохранить),  чтобы сохранить  на диске  результаты Вашей
     работы.

10.  Выберите команду  Tools| Form  (Инструментарий|  Форма),  чтобы
     возвратиться в режим редактирования формы.


                          Вставка графики
--------------------------------------------------------------------

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

     Вам предстоит  воспользоваться прикладной  графической  задачей
Windows Paintbrush  для того,  чтобы занести  в универсальный  буфер






                                                                  38
(Clipboard) файл  ALOGO.BMP, чтобы  он мог быть вклеен в форму Sales
Order (Заказ на покупку).

+++> Ваши дальнейшие действия:

1.   Минимизируйте окно прикладной задачи ObjectVision путем нажатия
     кнопки минимизации  или путем  выбора команды Control| Minimize
     (Управляющее меню| Минимизировать).

2.   Откройте прикладную  задачу  Paintbrush,  которая  находится  в
     группе Program Manager Accessories (Инструментарий Программного
     Менеджера).

3.   В прикладной  задаче Paintbrush  выберите  команду  File|  Open
     (Файл|  Открыть)   и  введите   полное  маршрутное   имя  файла
     ALOGO.BMP,  который  во  время  инсталляции  был  скопирован  в
     директорию   системы    ObjectVision.   Если,    например,   Вы
     инсталлировали систему  ObjectVision в директорию C:\VISION, то
     Вам следует  ввести с  клавиатуры в  поле File Name (Имя файла)
     имя C:\VISION\ALOGO.BMP. Затем выберите кнопку OK.

4.   Выберите  инструмент   Selection  Tool  (Инструмент  выбора)  в
     палитре Tool  (Инструментарий), которая находится у левого края
     окна. Этот  инструмент представляет собой иконку в верхнем ряду
     справа, которая изображает ножницы и прямоугольник.

5.   Путем буксировки  окружите селектирующей растягивающейся лентой
     весь ограниченный контуром образ.

6.   Выберите команду  Edit| Copy  (Редактировать| Копировать).  Эта
     команда копирует  образ в  универсальный буфер  системы Windows
     (Windows Clipboard).

7.   Выйдите из  прикладной задачи  Paintbrush путем  выбора команды
     File|  Exit   (Файл|  Выход)   из  строкового   меню  программы
     Paintbrush без сохранения файла ALOGO.BMP.

     Только что  Вы скопировали  графический образ  в  универсальный
     буфер системы  Windows (Windows Clipboard). Далее Вам предстоит
     вклеить копию  этого графического  образа в  форму Sales  Order
     (Заказ на покупку):

+++> Ваши дальнейшие действия:

1.   Трансформируйте иконку системы ObjectVision в окно путем выбора
     команды Restore  (Восстановить) из управляющего меню или дважды
     подряд нажмите мышью эту иконку.

2.   Выберите команду Objects| Graphic (Объекты| Графика).

3.   На экране  появляется блок  диалога Objects| Graphic| Save File
     Name  As   (Объекты|  Графика|   Сохранить  файл  под  именем).
     Воспользуйтесь  этим   блоком   диалога   для   задания   имени
     графическому образу.  Введите с  клавиатуры Myalogo  и  нажмите
     клавишу Enter.

4.   Графический образ  представлен небольшим  полем, не  занимающим
     какого-либо определенного места. Переместите его и измените его







                                                                  39
     размер таким образом, чтобы он соответствовал форме Sales Order
     (Заказ на покупку) прикладной задачи Order (Заказ).

5.   Выберите команду Form| Close (Форма| Закрыть), а затем выберите
     команду File|  Save (Файл| Сохранить), чтобы сохранить на диске
     результаты Вашей работы.

6.   Выберите команду  Tools| Form  (Инструментарий|  Форма),  чтобы
     возвратиться в режим редактирования формы.

     Заметьте, что  в текущей  директории был  создан файл  с именем
MYALOGO, которому  было придано  стандартное расширение  имени файла
.BMP. Файл  сохраняется в файловом формате системы ObjectVision и не
может быть открыт в программе Windows Paintbrush.

     Находящийся теперь  в  Вашей  форме  графический  объект  имеет
стандартный бордюр -  точно такой  же, как  и любой  другой  объект.
Удалите бордюр  с помощью  команды  Properties|  Borders  (Свойства|
Бордюры).

     В  инструментальном  окне  формы  (Form  Tool)  в  данном  поле
появляется заданное  Вами имя  графического изображения  (или та его
часть,  которая   умещается  в   форме).  Это   имя  лишь   помогает
идентифицировать графический  файл - оно  не будет  отображаться  во
время заполнения  пользователем формы  и не будет печататься. Теперь
Ваша форма выглядит следующим образом:

     Рис.3.9 Графическое изображение в форме Sales Order (Заказ на
покупку):
1 - Заказ на покупку (Редактирование); 2 - Имя; 3 - Компания; 4 -
Адрес; 5 - Город, штат и код почтовой зоны; 6 - Элемент; 7 - Метод
отгрузки; 8 - Количество; 9 - Скидка; 10 - Цена за штуку; 11 - Дата
заказа; 12 - Тип клиента; 13 - Базовая цена; 14 - Уменьшенная
скидка; 15 - Итоговая цена; 16 - Налог на продажу; 17 - Следующий;
18 - Предыдущий; 19 - Сохранить в базе данных; 20 - Стоимость
отгрузки; 21 - Увеличенная цена

     Теперь Вы  вставили в  форму Sales  Order  (Заказ  на  покупку)
графическое изображение  и необходимые  поля,  текстовые  объекты  и
заполненные прямоугольники.

     В данный  момент поля  в форме  Sales Order  (Заказ на покупку)
обладают многими  стандартными свойствами.  Например, все  они имеют
типовой формат  отображения. В следующей главе Вы зададите различные
свойства для многих полей.

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

     Вы завершили  работу с  текущим разделом  Учебника.  Сейчас  Вы
можете  выйти   из  системы  ObjectVision  и  возобновить  работу  с
Учебником позже,  либо Вы  можете продолжить работу над ним. Если Вы
предпочитаете продолжить  работу, то  Вам следует  сначала сохранить
свою форму.  Чтобы сделать  это, выберите  команду Form|  Close Tool







                                                                  40
(Форма| Закрыть  инструментальное окно),  а затем  выберите  команду
File| Save (Файл| Сохранить).































































                                                                  41
                  ГЛАВА 4. ОПИСАНИЕ СВОЙСТВ ПОЛЕЙ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

     В данной  главе Вам  предстоит описать  (задать) характеристики
тех полей,  которые были  добавлены в  форму Sales  Order (Заказ  на
покупку).  Вы   познакомитесь  со   следующими  процедурами  системы
ObjectVision:

-    Изменением форматов нескольких полей;

-    Описанием  возможных  значений  полей  Shipping  Method  (Метод
     отгрузки) и Customer Type (Тип клиента).

-    Добавлением к поля информационной подсказки;

-    Защитой некоторых полей от ввода информации пользователем.


                           Свойства полей
--------------------------------------------------------------------

     Когда Вы  вставляете в  форму какое-либо поле, инструментальное
окно формы  (Form  Tool)  назначает  этому  полю  набор  стандартных
свойств:

-    Display type  (тип  отображения):  обобщенный  формат  (формат,
     который подходит для отображения как текста, так и чисел);

-    Values  alignment   (выравнивание  значений):  выравнивание  по
     левому краю  (введенные в  поле значения выравниваются по левой
     границе поля);

-    Label font (шрифт метки): стандартный символьный шрифт для имен
     полей (шрифт  Helvetica высотой  8 точек,  если это значение не
     было Вами изменено);

-    Border (бордюр): Контур вокруг поля;

-    Protection (защита):  никакой  защиты  от  модификации  или  от
     отображения дерева принятия решений в период заполнения формы;

-    Line  width   (ширина  линии):  для  отрисовки  бордюров  полей
     используется самая тонкая линия.

     После того,  как Вы  вставили поле, Вы можете изменить любое из
этих свойств  или все  эти свойства.  В данной  главе Вам  предстоит
изменить свойства  нескольких полей  в форме  Sales Order  (Заказ на
покупку).


                   Изменение формата отображения
--------------------------------------------------------------------

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







                                                                  42
можете  выбрать   один  из   нескольких  форматов,   пригодных   для
отображения чисел:

-    General (Общий)  отображает  числовые  значения  с  минимальным
     числом десятичных цифр, полностью характеризующих число;

-    Fixed (Фиксированный)  отображает числовые  значения с заданным
     Вами числом десятичных цифр;

-    Percent (Процентный)  отображает числовые значения в процентном
     выражении;

-    Financial (Финансовый)  отделяет тысячи  запятыми и  отображает
     отрицательные значения в круглых скобках;

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

-    Picture  (Шаблон)   управляет   форматом   значений,   вводимых
     пользователем.

     Инструментальное окно  формы  (Form  Tool)  обеспечивает  также
разнообразные форматы  для представления  значений даты  и  времени.
Например, Вы  можете задать  полю формат  для  отображения  вводимой
пользователем даты  только в числовом виде (то есть, 10/03/90) или в
виде чисел и слов (03-Oct-90).

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

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


              Выбор формата представления даты/времени
--------------------------------------------------------------------

     Если Вы  покинули систему  ObjectVision  до  того,  как  начали
работать с текущей частью Учебника, запустите систему ObjectVision и
селектируйте  прикладную  задачу  Myorder.  Затем  выберите  команду
Tools|  Form   (Инструментарий|  Форма)   для  того,  чтобы  открыть
инструментальное окно формы (Form Tool).

     Далее воспользуйтесь командой Properties| Field Type (Свойства|
Тип поля) для изменения формата поля Order Date (Дата заказа) на тип
Date/Time (Дата/Время).

+++> Ваши дальнейшие действия:

1.   Селектируйте поле Order Date (Дата заказа).

2.   Выберите команду Properties| Field Type (Свойства| Тип поля).







                                                                  43
     На экране появляется блок диалога Field Type (Тип поля). В этом
     блоке диалога содержится перечень типов форматов, которые могут
     быть выбраны.

3.   Выберите вариант  Date/Time (Дата/Время) и нажмите мышью кнопку
     OK или  нажмите клавишу  Enter. Теперь  появляется блок диалога
     Date  Format   (Формат  даты),  который  представлен  далее  на
     рисунке:

     Рис.4.1 Блок диалога Date Format (Формат даты):
1 - формат даты; 2 - Август; 3 - после полудня; 4 - Выполнить; 5 -
Отменить

4.   Выберите первый  элемент, 8/1/90  и нажмите мышью кнопку OK или
     нажмите клавишу  Enter. Если  теперь в  поле Order  Date  (Дата
     заказа) пользователь введет May 13, 1991 (13 Мая 1991 года), то
     дата будет отображаться в формате 05/13/91ю

     Если Вы  захотите  поэкспериментировать  с  этим  форматом,  то
     сможете выбрать  иные форматы представления даты, которые можно
     протестировать в  режиме заполнения  формы. Вы  можете  закрыть
     инструментальное  окно  формы  (Form  Tool),  ввести  некоторое
     значение в поле Order Date (Дата заказа) а затем нажать клавишу
     Enter, чтобы узнать, в каком виде будет отображаться значение.


                 Выбор других форматов отображения
--------------------------------------------------------------------

     Выполняя описанные  далее действия,  Вы  измените  тип  формата
отображения нескольких  числовых полей.  Вы также сформатируете поля
Next  (Следующий),   Previous  (Предыдущий)   и  Save   to  database
(Сохранить в  базе данных)  как кнопки.  Для осуществления некоторых
изменений Вы  воспользуетесь командой  Properties| Repeat (Свойства|
Повторить).

+++> Ваши дальнейшие действия:

1.   Выберите команду Tools| Form (Инструментарий| Форма).

2.   Селектируйте   поле   Discount   (Скидка),   выберите   команду
     Properties| Field  Type (Свойства|  Тип  поля)  и  селектируйте
     формат Percent (Процентный).

2.   Воспользуйтесь мышью  или клавишей Tab для перевода указателя к
     блоку Decimal Places (Десятичные знаки).

4.   Введите с клавиатуры 0, чтобы указать число десятичных знаков и
     выберите кнопку OK.

5.   Селектируйте поле  Unit Price (Цена за штуку), выберите команду
     Properties| Field  Type (Свойства|  Тип поля) и выберите формат
     Currency (Валютный),  оставив значение  2 для  атрибута Decimal
     Places (Десятичные знаки).

6.   Селектируйте поле  Amount (Базовая  цена) и  нажмите клавишу F4
     (сокращение   для   команды   Properties|   Repeat   (Свойства|
     Повторить). Инструментальное окно формы (Form Tool) применяет к







                                                                  44
     полю  Amount  (Базовая  цена)  последний  селектированный  Вами
     формат (Currency (Валютный)).

7.   Используя команду  Properties|  Repeat  (Свойства|  Повторить),
     измените тип  формата  для  полей  Less  Discount  (Уменьшенная
     скидка), Total  Price (Итоговая  цена),  Sales  Tax  (Налог  на
     продажу), Shipping  Cost (Стоимость  отгрузки) и Extended Price
     (Увеличенная цена) на Currency (Валютный).

8.   Селектируйте поле  Save to  database (Сохранить в базе данных),
     выберите команду  Properties| Field  Type (Свойства| Тип поля),
     селектируйте Button  (Кнопка) и  выберите кнопку  OK. Заметьте,
     что поле  кнопочного типа  теперь затенено  точно так же, как и
     другие кнопки в среде Windows.

     +---------------------------------------------------------+
      Примечание:     |                                                         |
      Селектирование  нескольких   объектов  происходит  путем     |                                                         |
      удержания   в   нажатом   состоянии   клавиши   Ctrl   с     |                                                         |
      одновременным нажатием клавиши Tab.     |                                                         |
     +---------------------------------------------------------+

9.   Селектируйте одновременно  поля  Next  (Следующий)  и  Previous
     (Предыдущий). При  работе с  клавиатурой селектируйте поле Next
     (Следующий), затем нажмите клавишу Ctrl+Tab. При работе с мышью
     нажмите мышью  на поле  Next (Следующий), нажмите и удерживайте
     нажатой  клавишу   Ctrl  и   нажмите  мышью  на  поле  Previous
     (Предыдущий). Выберите  команду Properties|  Repeat  (Свойства|
     Повторить), чтобы назначить им тип кнопочного поля.


                    Изменение типа выравнивания
--------------------------------------------------------------------

     Далее Вам  предстоит изменить  тип выравнивания  поля  Quantity
(Количество) и  других числовых  полей с выравнивания по левому краю
(что является  стандартным) на  выравнивание по  правому  краю.  При
задании  выравнивания   по  правому   краю  значения  в  этих  полях
выравниваются по правому краю поля.

+++> Ваши дальнейшие действия:

1.   Селектируйте  поле   Quantity  (Количество),  выберите  команду
     Properties|  Alignment   (Свойства|  Выравнивание  значений)  и
     выберите тип выравнивания Right (По правому краю).

2.   Воспользуйтесь   командой    Properties|   Repeat    (Свойства|
     Повторить), чтобы  применить правый тип выравнивания значений к
     полям Unit  Price  (Цена  за  штуку),  Amount  (Базовая  цена),
     Discount (Скидка),  Less Discount  (Уменьшенная скидка),  Total
     Price (Итоговая  цена), Sales  Tax (Налог на продажу), Shipping
     Cost (Стоимость отгрузки) и Extended Price (Увеличенная цена).

     Либо селектируйте  все эти  поля с  помощью  комбинации  клавиш
     Ctrl+Tab или  комбинации клавиши  Ctrl  и  мыши  перед  выбором
     команды   Properties|    Alignment   (Свойства|    Выравнивание
     значений).








                                                                  45
3.   Выберите Выберите  команду Form|  Close  Tool  (Форма|  Закрыть
     инструментальное окно),  а  затем  команду  File|  Save  (Файл|
     Сохранить), чтобы сохранить результаты Вашей работы.


            Добавление списков выбора и маркерных кнопок
--------------------------------------------------------------------

     В данной  части Учебника  Вам предстоит  изменить  тип  формата
отображения полей  Shipping Method  (Метод отгрузки) и Customer Type
(Тип клиента).  Каждое из  этих полей отображает список, из которого
пользователь может  сделать выбор  (хотя список поля Shipping Method
(Метод   отгрузки)   появляется   не   всегда,   поскольку   система
ObjectVision вычисляет  значение  этого  поля  на  основании  дерева
принятия решений).

     Вам  предстоит  отформатировать  поле  Shipping  Method  (Метод
отгрузки) как  поле со списком выбора; пользователь выбирает один из
содержащихся в списке элементов. После того, как пользователь выбрал
некоторый элемент, в поле отображается только этот элемент.

     Вам предстоит  отформатировать поле Customer Type (Тип клиента)
как поле  со списком  маркерных кнопок;  каждому элементу  в  списке
маркерных  кнопок  предшествует  маркерная  кнопка,  и  пользователь
селектирует элемент путем нажатия мышью на соответствующую маркерную
кнопку.  После   того,  как   пользователь  селектировал  какой-либо
элемент, все  элементы будут  попрежнему отображаться,  но маркерная
кнопка селектированного элемента будет содержать символ Х.

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


                 Создание списка возможных значений
--------------------------------------------------------------------

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

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

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






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

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

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

     В  текущей   части  Учебника  Вы  добавите  возможные  значения
самостоятельно. В  дальнейшем Вы  модифицируете поле  Customer  Type
(Тип клиента)  так, чтобы  система ObjectVision  определяла  бы  его
значения автоматически.

     Теперь Вы  будете форматировать  поля  Shipping  Method  (Метод
отгрузки)  и   Customer  Type   (Тип  клиента)   с  помощью  команды
Properties|  Field   Type  (Свойства|  Тип  поля),  добавляя  список
возможных значений для каждого поля:

+++> Ваши дальнейшие действия:

1.   Выберите  команду   Tools|  Form   (Инструментарий|  Форма)   и
     селектируйте поле Shipping Method (Метод отгрузки).

2.   Выберите команду Properties| Field Type (Свойства| Тип поля), а
     затем выберите вариант Selection List (Список выбора).

     На экране  появляется блок  диалога Values  of (Значения поля),
     который показан на рисунке:

     Рис.4.2 Блок диалога Values of (Значения поля):
1 - Значения поля: Метод отгрузки; 2 - Автоматический; 3 - Новое
значение; 4 - Значения; 5 - Вставить; 6 - Удалить; 7 - Выполнить;
8 - Отменить

     Заметьте,  что   маркерная  кнопка  Automatic  (Автоматический)
     маркирована (значение "Автоматический" является стандартным), а
     поле Values (Значения) является пустым.

3.   Переместите указатель  на поле  New Value  (Новое  значение)  и
     введите   с   клавиатуры   Commercial   Carrier   (Коммерческие
     перевозки).

4.   Нажмите клавишу Enter.

     Словосочетание Commercial  Carrier появляется  в списке  Values
     (Значения).   Заметьте,    что   маркерная   кнопка   Automatic
     (Автоматический)   теперь    демаркирована,   показывая,    что
     ObjectVision не  будет определять  возможные значения для этого
     поля. Указатель остается в поле New Value (Новое значение).








                                                                  47
5.   Введите Regular  UPS (Обычной  всемирной  почтовой  службой)  и
     нажмите клавишу Enter.

6.   Введите  2-day   Express  (Экспресс   службой  с   2-х  дневной
     доставкой) и нажмите клавишу Enter.

     Теперь блок  списка Values  (Значения) содержит  три  возможных
     значения для поля Shipping Method (Метод отгрузки).

7.   Выберите  кнопку  OK.  Блок  диалога  Values  (Значения)  будет
     закрыт.

     Заметьте, что список выбора еще не отображается в поле Shipping
Method (Метод  отгрузки). Список выбора не будет отображаться до тех
пор, пока  пользователь не  доберется до  поля  со  списком  выбора,
находясь в  режиме заполнения. Если Вы хотите, Вы можете маркировать
список выбора в поле Shipping Method (Метод отгрузки) путем закрытия
инструментального   окна    формы   (Form    Tool)   с   последующим
селектированием поля  Shipping  Method  (Метод  отгрузки)  в  режиме
заполнения формы.

     Теперь Вам  предстоит отформатировать  поле Customer  Type (Тип
клиента) и добавить список возможных значений.

+++> Ваши дальнейшие действия:

1.   Селектируйте поле Customer Type (Тип клиента), а затем выберите
     команды Properties|  Field Type  (Свойства| Тип  поля) и  Check
     Boxes (Маркерные кнопки).

2.   Когда на  экране появляется  блок диалога  Values of  (Значения
     поля), добавьте  следующие  значения,  используя  ту  же  самую
     процедуру, которую  Вы использовали  для поля  Shipping  Method
     (Метод отгрузки).

-    distributor (Дистрибьютор);

-    dealer (Дилер);

-    educator (Преподаватель);

-    other (Другие).

3.   Те четыре  значения, которые Вы ввели в поле Customer Type (Тип
     клиента),  появляются   на  экране  в  сопровождении  маркерных
     кнопок. Если маркерные кнопки не появляются, Ваше поле Customer
     Type (Тип  клиента) является  недостаточно  большим  для  того,
     чтобы отобразить эти значения.


                    Добавление подсказки к полю
--------------------------------------------------------------------

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







                                                                  48
подсказку. Затем,  после  селектирования  этого  поля,  пользователь
может увидеть эту подсказку путем нажатия клавиши F1.

     Теперь давайте добавим информационную подсказку к полю Customer
Type (Тип клиента).

+++> Ваши дальнейшие действия:

1.   Находясь   в   инструментальном   окне   формы   (Form   Tool),
     селектируйте поле Customer Type (Тип клиента), а затем выберите
     команду Properties| Help (Свойства| Подсказка).

     Инструментальное окно  формы (Form  Tool) выдает запрос на ввод
     подсказки, что  показано на  рисунке 4.3.  Заметьте,  что  окно
     запроса уже содержит имя поля - Customer Type (Тип клиента).

     Рис.4.3 Блок диалога Help (Подсказка):
1 - Текст подсказки; 2 - Тип клиента; 3 - Выполнить; 4 - Отменить

2.   Нажмите клавишу  End, чтобы  переместить точку  вставки в конец
     имени поля,  нажмите клавишу пробела, а затем введите следующий
     текст: is defined as follows: (определено следующим образом:).

3.   Дважды   нажмите    комбинацию   клавиш    Ctrl+Enter,    чтобы
     переместиться вниз  на две  строки. (Если  Вы нажимаете  только
     клавишу Enter,  то  инструментальное  окно  формы  (Form  Tool)
     "предполагает",  что  Вы  завершили  работу  и  закрывает  окно
     запроса.)

4.   Добавьте  остальную  часть  информационной  подсказки,  которая
     представлена далее,  используя комбинацию клавиш Ctrl+Enter для
     перехода на  новую строку.  Инструментальное окно  формы  (Form
     Tool) автоматически  осуществляет прокрутку  Вашего  текста  по
     горизонтали по  мере ввода  длинных строк, поэтому Вам не нужно
     нажимать комбинацию  клавиш Ctrl+Enter  при достижении  правого
     края окна.

     Введите

Distributor - Signed distribution agreement on file
(Дистрибьютор - Подписанное соглашение о дистрибьюторской
деятельности в картотеке)

Dealer - Must provide valid tax ID
(Дилер - Должен предоставить достоверный налоговый идентификатор)

Educator - Recognized college or university
(Преподаватель - Общепризнанный (правомочный) колледж или
университет)

Other - any individual or company not listed above
(Другой - любое частное лицо или компания, не относящиеся к
перечисленным выше категориям)

5.   Выберите кнопку  OK или  нажмите клавишу  Enter для того, чтобы
     закрыть  блок   диалога  Help.  Для  тестирования  своей  новой
     подсказки,  которая   характеризует  поля,  Вы  можете  выбрать
     команду  Form|  Close  Tool  (Форма|  Закрыть  инструментальное
     окно).






                                                                  49
                      Защита вычисляемых полей
--------------------------------------------------------------------

     Вы можете  воспользоваться инструментальным  окном формы  (Form
Tool) для  того, чтобы  добавить два  вида защиты  к  полям  системы
ObjectVision:

-    Вы   можете    предотвращать   переопределение    пользователем
     вычисляемого поля;

-    Вы можете  предотвращать просмотр пользователем дерева принятия
     решений поля.

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

     Например,   в   прикладной   задаче   Order   (Заказ)   система
ObjectVision вычисляет  значение поля Order Date (Дата заказа), но в
некоторых случаях  у пользователя  может возникнуть необходимость во
вводе другой даты. Система ObjectVision также вычисляет значение для
поля Item  (Элемент) для  того, чтобы  вписать сюда  используемое по
умолчанию  значение   (поскольку  подавляющее   большинство  заказов
компании - это  "безделушки" (точнее -  "штучки" - widgets).  Тем не
менее, клиент  может  время  от  времени  заказывать  что-либо  еще,
поэтому  пользователь   должен  иметь   возможность  переопределения
вычисляемого значения поля Item (Элемент).

     Однако, во  многих случаях защита вычисляемых полей необходима.
Некоторые  вычисляемые   поля  в   прикладной   задаче   не   должны
переопределяться,  в   противном   случае   возникают   недопустимые
значения. Например,  система ObjectVision  может вычислить  неверное
значение  для   поля  Extended   Price  (Увеличенная   цена),   если
пользователь переопределил вычисляемое значение для поля Total Price
(Итоговая цена).

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

     Далее  Вам   предстоит  воспользоваться   командой  Properties|
Protection  (Свойства|   Защита)  для   защиты  от   переопределения
нескольких полей в форме Sales Order (Заказ на покупку).

+++> Ваши дальнейшие действия:

1.   Находясь в  инструментальном окне  формы (Form  Tool), выберите
     поле  Amount   (Базовая  цена),   а  затем   выберите   команду
     Properties| Protection (Свойства| Защита).

     Инструментальное  окно   формы  (Form   Tool)  предлагает   Вам
     селектировать тип  защиты, которую  Вы хотите  добавить к полю,
     что показано на следующем рисунке:









                                                                  50
     Рис.4.4 Блок диалога Properties| Protection (Свойства| Защита):
1 - Защита поля; 2 - Без переопределения; 3 - Без отображения дерева
решений; 4 - Выполнить; 5 - Отменить

2.   Маркируйте кнопку  No Override  (Без переопределения),  а затем
     нажмите кнопку OK или клавишу Enter.

3.   Воспользуйтесь   командой    Properties|   Repeat    (Свойства|
     Повторить), чтобы  добавить защиту  от переопределения  к полям
     Less  Discount  (Уменьшенная  скидка),  Total  Price  (Итоговая
     цена), Shipping  Cost (Стоимость  отгрузки)  и  Extended  Price
     (Увеличенная цена).

     Заметьте, что  не следует добавлять защиту от переопределения к
полям  Discount   (Скидка)  и   Sales  Tax  (Налог  на  продажу).  У
пользователя может  возникнуть потребность  в  модификации  значений
этих  полей  при  определенных  обстоятельствах,  и  изменение  этих
значений  не   приведет  к  тому,  что  система  ObjectVision  будет
вычислять неверные результаты.

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


              Создание поля с маской ввода (шаблоном)
--------------------------------------------------------------------

     Ваша прикладная  задача Myorder не содержит поля с маской ввода
(Picture),  которая   является  мощным   средством,   контролирующим
правильность вводимых  пользователем  данных.  В  данном  уроке  Вам
предстоит создать  поле Phone  (Номер телефона)  и превратить его из
типового поля в поле с маской ввода. Затем Вы опишете строку шаблона
(строку  маски)  (Picture  string),  чтобы  ограничить  пользователя
вводом телефонного номера в заданном Вами формате.

+++> Ваши дальнейшие действия:

1.   Выберите команду  Objects| Field  (Объекты| Поле), селектируйте
     элемент  (Добавить новое поле), а затем выберите
     кнопку OK.  На экране  появляется блок  диалога Add  New Field|
     Field Name (Добавить новое поле| Имя поля).

2.   Введите имя  поля Phone  (Номер  телефона)  и  нажмите  клавишу
     Enter.

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

4.   Выберите команду Properties| Field Type (Свойства| Тип поля).

5.   В блоке  диалога Properties|  Field Type  (Свойства| Тип  поля)
     выберите элемент Picture (Маска ввода).

6.   В  блоке   диалога  Properties|   Field  Type|  Picture  String
     (Свойства|   Тип    поля|   Строка    маски)   введите   строку






                                                                  51
     (###)###-####. Ваш  блок диалога будет выглядеть приблизительно
     так:

     Рис.4.5 Блок диалога Field Type| Picture (Тип поля| Маска
ввода):
1 - Строка маски ввода (шаблона); 2 - Выполнить; 3 - Отменить

7.   Выберите кнопку OK или нажмите клавишу Enter.

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

8.   Выберите команду  Tools| Form (Инструментарий| Форма) для того,
     чтобы возвратиться в режим редактирования формы.

9.   Селектируйте  новое   поле  Phone  (Номер  телефона),  а  затем
     выберите команду Edit| Cut (Редактировать| Отсечь) для удаления
     поля из формы.

     За дополнительной  информацией  относительно  полей  с  масками
ввода  следует   обращаться  к   Главе  3  "Справочника  по  системе
ObjectVision". Сейчас  Вы завершили  текущую часть Учебника. Если Вы
предполагаете продолжить  работу, то  сначала  непременно  сохраните
свою форму.




































                                                                  52
                  ГЛАВА 5. СОЗДАНИЕ ДЕРЕВА РЕШЕНИЙ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

     В предлагаемой главе Вы добавите дерево принятия решений к полю
Shipping Method  (Метод отгрузки). Вам предстоит выполнить следующие
процедуры системы ObjectVision:

-    Открыть инструментальное окно дерева (Tree Tool);

-    Использовать команды  меню Objects  (Объекты) для вставки узлов
     ветвей, условий  (conditions) и узлов выводов в дерево принятия             _____________________
     решений поля Shipping Method (Метод отгрузки);

-    Проверить свое дерево принятия решений.


              Инструментальное окно дерева (Tree Tool)
--------------------------------------------------------------------

     Дерево принятия  решений графически представляет тот логический
аппарат, который  используется системой  ObjectVision для вычисления
значения поля.

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

     Для   создания    дерева   принятия    решений   воспользуйтесь
инструментальным    окном    дерева    (Tree    Tool).    Аналогично
инструментальному  окну  формы  (Form  Tool)  инструментальное  окно
дерева (Tree  Tool) представляет  собой высокоуровневую  и удобную в
работе графическую  утилиту. Вы  создаете дерево  шаг за шагом путем
добавления   узлов,    то   есть    отдельных   фрагментов   дерева.
Инструментальное  окно   дерева  оказывает   Вам  помощь  в  работе,
запрашивая на  каждом шаге соответствующую информацию и отображая те
узлы, которые Вы создаете.


                  Элементы дерева принятия решений
--------------------------------------------------------------------

     Чтобы  понять,  как  использовать  и  интерпретировать  деревья
принятия решений,  Вам необходимо  понимать, из каких частей состоит
дерево принятия  решений. Данный  раздел описывает  термины, которые
используются  для   описания  различных   частей  деревьев  принятия
решений. Проглядите  список перед  тем, как  продолжите  работу  над
Учебником. Затем  во время  работы обращайтесь к этом списку по мере
необходимости.


                      Дерево принятия решений                      _______________________

     Дерево принятия  решений  (decision  tree)  представляет  собой     __________________________________________
графическое выражение логики принятия решения. Оно состоит из одного
или  нескольких   узлов,  и  используется  для  вычисления  значения
некоторого  поля.   Каждое  поле,   значение  которого  должно  быть






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


                      Логика принятия решений                      _______________________

     Логика принятия  решений (decision  logic)  представляет  собой     __________________________________________
процесс,  состоящий   из  небольших   шагов.  На   каждом  из  шагов
вычисляется  значение   единственного  поля,   в   результате   чего
принимается решение об использовании той или иной последующей ветви.


                                Узел                                ____

     Узел  (Node)   представляет  собой   отдельный  сегмент  дерева     ____________
принятия решений. Узлы подразделяются на узлы ветвей и узлы выводов.


                             Узел ветви                             __________

     Узел ветви  (branch  node)  представляет  собой  узел,  который     __________________________
позволяет вычислить  значение единственного  поля  для  того,  чтобы
определить, по  какому из  последующих  маршрутов  следовать  далее.
Каждый  узел  ветви  "ссылается"  на  единственное  поле  в  системе
ObjectVision. Имя  этого поля  отображается внутри  узла ветви. Узлы
ветвей могут  быть либо  простыми, либо  сложными.  Функционирование
простых и сложных узлов ветвей осуществляется одинаково.

     Простой узел  ветви (simple  branch  node)  представляет  собой     __________________________________________
узел, значение  которого система  ObjectVision может  вычислить  без
обращения  к   дереву  принятия   решений   любого   другого   поля.
Представленный ниже  рисунок  показывает  символ,  используемый  для
простых узлов  ветви. Вся  логика принятия  решений для  этого  узла
отображается  в   инструментальном  окне   дерева  (Tree  Tool)  при
отображении дерева принятия решений.

     Рисунок:
1 - Количество

     Сложный узел  ветви (complex  branch node)  представляет  собой     __________________________________________
узел, значение  которого система ObjectVision может вычислить только
при обращении  к дереву  принятия решений как минимум одного другого
поля. Деревья  принятия решений любых других полей не отображаются в
инструментальном окно  дерева (Tree  Tool), но  в  нем  отображается
дерево принятия  решений селектированного  в настоящий  момент поля.
Представленный ниже  рисунок  показывает  символ,  используемый  для
сложных узлов  ветви. Если  на сложный  узел ветви  дважды нажать  с
помощью   мыши,   то   соответствующее   дерево   принятия   решений
отображается в инструментальном окно дерева.

     Рисунок:
1 - Метод отгрузки


                              Условие                              _______

     Все узлы, которые следуют за узлом ветви, вне зависимости от их
типа, обладают  связанным  с  ними  условием  (условным  выражением)                                    ________________________________






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

     Рисунок:
1 - Хороший


                            Узел вывода                            ___________

     Узел вывода  (conclusion node) (который помечается перевернутым     ______________________________
треугольником, расположенным  слева от  выражения в  дереве принятия
решений) представляет  собой терминальный  (конечный) узел,  который
формирует результат для процесса принятия решений. Узел вывода может
следовать за  узлом ветви,  либо он  может быть единственным узлом в
дереве принятия решений. Например, поле-кнопка обычно имеет в дереве
принятия решений  только один  узел вывода.  Узел  вывода  формирует
возможное значение для вычисляемого поля. Если все условия (условные
выражения), ведущие к узлу вывода, являются истинными при вычислении
системой ObjectVision  значения  дерева,  то  значение  узла  вывода
становится значением поля.


                           Корневой узел                           _____________

     Корневой узел  (root node)  является первым  (или самым  левым)     __________________________
узлом в дереве принятия решений. Корневой узел может быть либо узлом
ветви, либо  узлом вывода.  Корневой узел,  который  является  узлом
вывода, будет единственным узлом в дереве принятия решений.


                            Пустой узел                            ___________

     Пустой узел  (empty node)  действует как  временный  буфер  для
других узлов во время редактирования дерева принятия решений. Пустой
узел обозначает  отсутствие дерева принятия решений или указывает на
то, что  под  узлом  ветви  нет  никаких  узлов.  Если  производится
вычисление пустого узла, то система ObjectVision возвращает значение
(код) ошибки.


                          Уровень вложения                          ________________

     Уровень вложения  (nesting level)  узла является расстоянием от     _________________________________
этого узла до корневого узла, считая слева направо.


                             Обобщение                             _________

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

     На рисунке  5.1 представлено  дерево принятия  решений для поля
Approval Required  (Требуется санкция)  из прикладной  задачи Credit
(Кредит). Этот  пример  более  сложен,  чем  любое  дерево  принятия
решений, которое Вы создадите для прикладной задачи Myorder.






                                                                  55
     Рис.5.1 Дерево принятия решений для поля Approval Required
(Требуется санкция):
1 - Корневой узел (одновременно и сложный узел ветви); 2 - Узлы
вывода; 3 - дерево принятия решений для поля Approval Required
(Требуется санкция); 4 - Условия кредита; 5 - Наличные заранее; 6 -
Не требуется; 7 - В ином случае; 8 - Увеличенная цена; 9 - Простой
узел ветви; 10 - Условие (Условное выражение)

     В дереве принятия решений для поля Approval Required (Требуется
санкция) имеется  три узла  вывода, которые формируют результат None
(Не требуется),  Bill Turpin  (у Билла  Терпина) и Ken Smith (у Кена
Смита). Узел  вывода с результатом None (Не требуется) имеет условие
Cach in Advance (Наличные заранее).

     Корневым узлом  является узел  Credit Terms  (Условия кредита),
который является  также сложным  узлом ветви без каких-либо условных
выражений.  Если  дважды  подряд  нажать  мышью  узел  Credit  Terms
(Условия  кредита),  то  будет  отображено  другое  дерево  принятия
решений.

     Узел  Extended  Price  (Увеличенная  цена)  представляет  собой
простой  узел  ветви  без  условного  выражения  Otherwise  (В  ином
случае).

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

1.   Если значением  поля Credit  Terms (Условия  кредита)  является
     Cach in  Advance (Наличные заранее), то значением поля Approval
     Required (Требуется санкция) является None (Не требуется).

2.   Если значение  поля Credit  Terms (Условия  кредита) отлично от
     Cach in  Advance (Наличные  заранее), то  необходимо  вычислить
     значение поля Extended Price (Увеличенная цена).

3.   Если значение  поля Extended Price (Увеличенная цена) превышает
     25000, то  значением поля Approval Required (Требуется санкция)
     является Bill Turpin (у Билла Терпина).

4.   Если  значение   поля  Extended  Price  (Увеличенная  цена)  не
     превышает 25000 (то есть, условие "больше чем 25000" ложно), то
     значением поля  Approval Required  (Требуется санкция) является
     Ken Smith (у Кена Смита).


 Дерево принятия решений для поля Shipping Method (Метод отгрузки)
--------------------------------------------------------------------

     На представленном  далее рисунке  показано  завершенное  дерево
принятия решений из типовой прикладной задачи Order (Заказ) для поля
Shipping Method (Метод отгрузки).

     Рис.5.2 Завершенное дерево принятия решений для поля Shipping
Method (Метод отгрузки):
1 - Дерево принятия решений для поля Shipping Method (Метод
отгрузки); 2 - Количество; 3 - Коммерческие перевозки; 4 - Обычной
всемирной почтовой службой; 5 - В ином случае; 6 - Экспресс службой
с 2-х дневной доставкой






                                                                  56
     Далее описывается  логический аппарат,  использованный в дереве
принятия решений поля Shipping Method (Метод отгрузки):

1.   Если значение  поля  Quantity  (Количество)  превышает  25,  то
     значением  поля   Shipping  Method  (Метод  отгрузки)  является
     Commercial Carrier (Коммерческие перевозки).

2.   Иначе, если  значение поля  Quantity (Количество)  больше 1, то
     значением  поля   Shipping  Method  (Метод  отгрузки)  является
     Regular UPS (Обычной всемирной почтовой службой).

     Заметьте, что значение, равное, скажем, 26 больше как 25, так и
     1; это  значение удовлетворяет  обоим из  первых двух  условий.
     Однако,   когда   значение   удовлетворяет   первому   условию,
     последующие условия  никогда не  проверяются. Тогда  фактически
     второе условие  применяется только  к  тем  значениям,  которые
     превышают 1, но меньше или равны 25.

3.   В ином  случае (если  значение поля  Quantity  (Количество)  не
     удовлетворяет ни  одному из  предшествующих условий)  значением
     поля Shipping  Method  (Метод  отгрузки)  будет  2-day  Express
     (Экспресс-службой с 2-х дневной доставкой).

     Следует отметить,  что  значение  поля  Quantity  (Количество),
равное 1, 0 или отрицательному числу, удовлетворит условию Otherwise
(В ином  случае) и  возвратит полю  Shipping Method (Метод отгрузки)
значение 2-day  Express (Экспресс  службой с 2-х дневной доставкой).
Поскольку значение  поля Quantity (Количество), равное 0, не требует
никакого метода  отгрузки, а  отрицательное значение  поля  Quantity
(Количество)   является   очевидным   образом   невозможным,   может
показаться, что  эта логика  имеет изъяны.  Однако,  в  Главе  8  Вы
узнаете,  как   осуществляется   проверка   достоверности   вводимых
пользователем данных -  Вы просто не позволите пользователю ввести 0
или отрицательное число в поле Quantity (Количество).


                  Создание дерева принятия решений
--------------------------------------------------------------------

     Далее Вам  предстоит  добавить  дерево  принятия  решений  поля
Shipping Method  (Метод отгрузки)  в свою форму. Это дерево принятия
решений, как  показано на  рисунке 5.2,  будет  содержать  следующие
элементы:

-    простой узел ветви (корневой узел);

-    условия (условные выражения);

-    узлы выводов.

     Если в  конце последней  части  данного  учебника  Вы  покинули
систему ObjectVision,  то сейчас  запустите ObjectVision  и откройте
прикладную задачу Myorder. Затем выполните следующие шаги:

+++> Ваши дальнейшие действия:

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







                                                                  57
2.   Выберите команду  Tools| Tree  (Инструментарий| Дерево).  После
     того, как  Вы откроете инструментальное окно дерева (Tree Tool)
     Вы  можете  также  селектировать  другие  деревья,  с  которыми
     предстоит работать.

     Обратите внимание на заголовок у верхнего края дерева: Tree for
     Shipping  Method  (Дерево  принятия  решений  для  поля  "Метод
     отгрузки").  Под   заголовком  находится   пустой  узел  ветви,
     представленный далее  на рисунке.  Этот узел  выделен  точечной
     (состоящей   из    точек)   линией   (поэтому   любая   команда
     редактирования или  вставки, которая  будет Вами выбрана, будет
     применена к этому узлу).

     Рисунок:
1 - Пустой

     Перед тем,  как продолжить  работу,  уделите  минуту  командам,
     которые доступны  в инструментальном  окне дерева  (Tree Tool).
     Заметьте, что  из меню  Tree (Дерево)  Вы можете выбрать другое
     дерево  принятия   решений,  найти   дерево,  которое  содержит
     специфическое поле  или  отпечатать  текущее  дерево  (или  все
     деревья).  Из   других  меню  Вы  можете  модифицировать  узлы,
     вырезать (cut)  узлы и  вклеивать их,  а также выполнять другие
     действия.

     Теперь Вам  предстоит описать  дерево принятия решений для поля
Shipping Method (Метод отгрузки). Сначала добавим узел ветви.

+++> Ваши дальнейшие действия:

1.   Выберите команду Objects| Branch (Объекты| Ветвь).

     Инструментальное окно дерева (Tree Tool) отображает список всех
     полей, которые  Вы описали  в  прикладной  задаче  Myorder.  Вы
     можете селектировать  поле из  списка или селектировать элемент
      (Добавить новое поле).

     Если Вы  добавляете новое поле вместо того, чтобы селектировать
     уже описанное,  и если  Вы в  дальнейшем не добавите это поле к
     форме, то  система  ObjectVision  будет  использовать  черновую
     форму (Scratchpad  form), когда  ей необходимо  значение  этого
     поля в период заполнения формы.

2.   Селектируйте  поле   Quantity  (Количество)  (для  того,  чтобы
     добраться  до   поля  Quantity   (Количество),  Вам  необходимо
     воспользоваться прокруткой  или  нажать  клавишу  Q),  а  затем
     нажмите клавишу Enter или выберите кнопку OK.

     На рисунке 5.3 показано, как теперь выглядит Ваш экранный кадр.
Заметьте, что  первый узел  дерева (корневой  узел)  теперь  помечен
словом "Quantity"  ("Количество"), а  не словом  "Empty" ("Пустой").
Тем не  менее, дерево  попрежнему содержит пустой узел, поскольку Вы
еще не добавили узел вывода. Следует также отметить, что пустой узел
имеет связанное  с  ним  условие - "Otherwise"  ("В  ином  случае").
Условие Otherwise (В ином случае) является особым условием в системе
ObjectVision,  которое   охватывает  все  случаи,  не  включенные  в
предшествующие условия.








                                                                  58
     Рис.5.3 Узел ветви:
1 - Дерево принятия решений для поля Shipping Method (Метод
отгрузки); 2 - Количество; 3 - В ином случае; 4 - Пустой

     Далее Вам предстоит добавить узел вывода.

+++> Ваши дальнейшие действия:

1.   Выберите  команду   Objects|   Conclusion   (Объекты|   Вывод).
     Появляется блок диалога, который показан на представленном ниже
     рисунке:

     Рис.5.4 Блок диалога Condition (Условие):
1 - Условие для поля Quantity (Количество); 2 - Вставить над; 3 -
Вклеить в Условие; 4 - Функция; 5 - Поле; 6 - Выполнить; 7 -
Отменить

2.   Введите условие  для добавляемого  Вами узла  вывода. Заметьте,
     что Вы  можете предпочесть  вставку узла вывода над выбранным в
     настоящий момент  узлом (если  таковой имеется); в ином случае,
     инструментальное окно  дерева (Tree  Tool) вставляет новый узел
     под выделенным узлом.

     Условия могут  включать в  себя имена  полей и  функций системы
ObjectVision. Вместо  ввода имен  полей и  функций с  клавиатуры  Вы
можете  селектировать   их   из   списка   (целесообразность   этого
заключается  в   отсутствии  ошибок,   возникающих  при   вводе).  В
дальнейшем Вы  будете вклеивать имена полей и функций при добавлении
других деревьев  принятия решений.  Однако, сейчас  лишь  введите  с
клавиатуры условие  >25 и  нажмите кнопку  OK  или  нажмите  клавишу
Enter.

     Теперь появляется  блок диалога  Conclusion  (Вывод).  Сюда  Вы
вводите выражение вывода. Далее на рисунке показан вид блока диалога
Conclusion (Вывод):

     Рис.5.5 Блок диалога Conclusion (Вывод):
1 - Вывод для поля Shipping Method (Метод отгрузки); 2 - Вклеить в
Вывод; 3 - Функция; 4 - Поле; 5 - Выполнить; 6 - Отменить

     Вы можете  вклеить имя поля или функции в свое выражение вывода
путем выбора  команды Paste  Field (Вклеить поле) или Paste Function
(Вклеить функцию). Однако, на сей раз лишь введите выражение вывода.

3.   Введите выражение Commercial Carrier (Коммерческие перевозки) и
     нажмите клавишу Enter.

     Инструментальное окно  дерева  (Tree  Tool)  отображает  дерево
     принятия решений.  Заметьте, что  добавленный Вами узел вывода,
     который маркирован  перевернутым треугольником,  заменил пустой
     узел. Далее Вы добавите два других вывода.

4.   Выберите команду  Objects| Conclusion (Объекты| Вывод). Введите
     с клавиатуры  >1 в  качестве условия  и  Regular  UPS  (Обычной
     всемирной почтовой службой) в качестве вывода.

5.   Выберите команду  Objects| Conclusion (Объекты| Вывод). Введите
     с клавиатуры  Otherwise (В  ином случае)  в качестве  условия и
     '2-day Express  ('Экспресс-службой с  2-х дневной  доставкой) в






                                                                  59
     качестве вывода.  Заметьте, что  апостроф должен предшествовать                                               ______
     выводу  2-day   Express   (Экспресс-службой   с   2-х   дневной             _______________________________________________________
     доставкой),   поскольку    без   него    система   ObjectVision     ___________
     интерпретирует введенное  как выражение.  Это выражение привело
     бы к  созданию  нового  поля  с  именем  day  Express  (Дневной                                              ______________________
     экспресс),  и   система  ObjectVision   попыталась  бы  вычесть     __________
     значение поля day Express (Дневной экспресс) из 2.                   ______________________________

     Теперь  Вы  полностью  описали  дерево  принятия  решений  поля
Shipping Method (Метод отгрузки). Рисунок 5.2 показывает, как теперь
должен выглядеть  Ваш экранный  кадр (за  исключением того,  что  на
рисунке 5.2 селектирующий прямоугольник окружает корневой узел, а не
узел вывода Otherwise (В ином случае).


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

     Важным  аспектом,  касающимся  создания  Вами  дерева  принятия
решений, является  порядок, в  котором  Вы  вводите  выводы.  Данный
раздел описывает порядок расположения выводов.

     Когда Вы  добавляете к  дереву принятия  решений  более  одного
вывода, порядок,  в котором  Вы располагаете  их, указывает  системе
ObjectVision,   как    вычислять   соответствующее   поле.   Система
ObjectVision проверяет  условия, которые  следуют за  узлом ветви, в
направлении сверху вниз. То дерево, которое Вы только что добавили к
полю   Shipping   Method   (Метод   отгрузки),   указывает   системе
ObjectVision, что для выявления значения поля она должна действовать
в следующем порядке:

1.   Получить значение поля Quantity (Количество).

2.   Обратиться к  верхнему условию:  Действительно ли значение поля
     Quantity (Количество)  больше 25?  Если это  так, то возвратить
     значение Commercial  Carrier (Коммерческие  перевозки)  в  поле
     Shipping Method (Метод отгрузки). Если нет, вычислить следующее
     условие.

3.   Действительно ли  значение поля Quantity (Количество) больше 1?
     Если это  так, то  возвратить  значение  Regular  UPS  (Обычной
     всемирной почтовой  службой)  в  поле  Shipping  Method  (Метод
     отгрузки). Если нет, вычислить следующее условие.

4.   Возвратить  значение  2-day  Express  (Экспресс-службой  с  2-х
     дневной доставкой) в поле Shipping Method (Метод отгрузки).

     Если Вы  изменили порядок,  в котором располагаются эти выводы,
система ObjectVision  может сформировать  неверное значение  в  поле
Shipping Method  (Метод отгрузки).  Предположим,  например,  что  Вы
поместили второй  вывод  Regular  UPS  (Обычной  всемирной  почтовой
службой) в  начале набора  узлов выводов. Тогда система ObjectVision
возвратит значение  Regular UPS (Обычной всемирной почтовой службой)
во всех  случаях, когда значение поля Quantity (Количество) больше 1
(и не возвратит значение Commercial Carrier (Коммерческие перевозки)
для значений, больших 25).

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






                                                                  60
использовать команды  Edit| Cut  (Редактировать| Вырезать)  и  Edit|
Paste (Редактировать| Вклеить).


                Тестирование дерева принятия решений
--------------------------------------------------------------------

     Перед тем,  как добавить  другие деревья  принятия решений, Вам
следует протестировать дерево поля Shipping Method (Метод отгрузки),
чтобы  убедиться,   что  его  логика  работает  точно  так,  как  Вы
предполагали.

     Если  пользователь   переопределяет  вычисляемое  значение,  то
введенное пользователем  значение заменяет  вычисленное значение, не
удаляя логику  дерева принятия  решений, закрепленную за этим полем.
Чтобы восстановить вычисленное значение этого поля, селектируйте это
поле, а затем выберите команду Field| Calculate (Поле| Вычислить).

+++> Ваши дальнейшие действия:

1.   Выберите   команду    Tree|   Close   Tool   (Дерево|   Закрыть
     инструментальное окно),  чтобы  закрыть  инструментальное  окно
     дерева (Tree Tool) и возвратиться к режиму заполнения формы.

2.   Селектируйте поле Shipping Method (Метод отгрузки).

     Заметьте, что  поле Shipping Method (Метод отгрузки) отображает
     список выбора, что показано на представленном ниже рисунке:

     Рис.5.6 Список возможных значений поля Shipping Method (Метод
отгрузки):
1 - Заказ на покупку (Цель); 2 - Имя; 3 - Компания; 4 - Адрес; 5 -
Город, штат и код почтовой зоны; 6 - Элемент; 7 - Метод отгрузки;
8 - Коммерческие перевозки; 9 - Обычной всемирной почтовой службой;
10 - Экспресс-службой с 2-х дневной доставкой; 11 - Количество; 12 -
Скидка; 13 - Цена за штуку; 14 - Дата заказа; 15 - Тип клиента; 16 -
Дистрибьютор; 17 - Дилер; 18 - Преподаватель; 19 - Другой; 20 -
Базовая цена; 21 - Уменьшенная скидка; 22 - Итоговая цена; 23 -
Налог на продажу; 24 - Следующий; 25 - Предыдущий; 26 - Сохранить в
базе данных; 27 - Стоимость отгрузки; 28 - Увеличенная цена; 29 -
Список возможных значений

     Поле Shipping  Method (Метод  отгрузки)  попрежнему  отображает
свой  список  выбора,  поскольку  оно  попрежнему  селектировано,  а
система  ObjectVision   пытается  получить   значение  этого   поля.
Поскольку  поле   Quantity  (Количество)   не   содержит   значения,
ObjectVision не может вычислить значение поля Shipping Method (Метод
отгрузки) и просит пользователя ввести данные.

3.   Выделите световым  маркером поле Quantity (Количество), введите
     значение 13 и нажмите клавишу Enter.

4.   Убедитесь в  том, что  система ObjectVision отображает значение
     Regular  UPS   (Обычной  всемирной  почтовой  службой)  в  поле
     Shipping Method (Метод отгрузки).

5.   Продолжайте  изменять   значение  поля  Quantity  (Количество),
     убеждаясь в  том, что система ObjectVision каждый раз вычисляет
     верное значение  поля Shipping  Method (Метод  отгрузки). (Если






                                                                  61
     узлу вывода  2-day  Express  (Экспресс-службой  с  2-х  дневной
     доставкой) не предшествовал апостроф, то ввод значения 1 в поле
     Quantity  (Количество)  приведет  к  тому,  что  значение  поля
     Shipping Method (Метод отгрузки) возвращено не будет.)

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
























































                                                                  62
               ГЛАВА 6. РЕДАКТИРОВАНИЕ ДЕРЕВА РЕШЕНИЙ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

     В  предлагаемой  главе  Вы  создадите  и  модифицируете  дерево
принятия решений  для поля  Discount (Скидка).  Это дерево  принятия
решений содержит большое число ветвей и узлов выводов. Вам предстоит
выполнить следующие процедуры системы ObjectVision:

-    Добавить новое  поле с  помощью инструментального  окна  дерева
     (Tree Tool) и создать для него новую форму;

-    Осуществить прокрутку дерева принятия решений;

-    Скопировать и  вклеить части  дерева посредством  команд  Edit|
     Copy (Редактировать|  Копировать) и Edit| Paste (Редактировать|
     Вклеить);

-    Записать условия  и выводы  с помощью команд Objects| Condition
     (Объекты| Условие) и Objects| Conclusion (Объекты| Вывод);

-    Изменить размер  дерева с  помощью команд  View|  Expand  (Вид|
     Увеличить) и View| Reduce (Вид| Уменьшить);

-    Распечатать дерево.


           Дерево принятия решений поля Discount (Скидка)
--------------------------------------------------------------------

     Представленный  далее  рисунок  показывает  завершенное  дерево
принятия решений  для поля  Discount  (Скидка).  Заметьте,  что  оно
содержит  узел   для   нового   поля,   Distributor   Size   (Размер
дистрибьютора), которое  не включено  в форму  Sales Order (Заказ на
покупку). (В  дальнейшем Вам предстоит создать другую форму с именем
Distributor  Information   (Информация  о  дистрибьюторе)  для  поля
Distributor Size.)

     Рис.6.1 Дерево принятия решений поля Discount (Скидка):
1 - Тип клиента; 2 - Дистрибьютор (Агент по продаже); 3 - Дилер; 4 -
Преподаватель; 5 - Другой; 6 - Размер дистрибьютора; 7 - Количество;
8 - Большой; 9 - Средний; 10 - В ином случае

     Дерево принятия  решений показывает, что значение поля Discount
(Скидка) зависит  от значений  полей Customer  Type  (Тип  клиента),
Distributor Size  (Размер дистрибьютора)  и  Quantity  (Количество).
Представленный далее  текст  описывает  часть  той  логики,  которая
графически отображена  в дереве  принятия решений.  Следует помнить,
что каждый  шаг в  этой последовательности  (за исключением первого)
отрабатывается только  в том  случае, если условие, использованное в
предшествующем шаге, является ложным

     Если  значением  поля  Customer  Type  (Тип  клиента)  является
Distributor  (Дистрибьютор),  то  значение  поля  Discount  (Скидка)
зависит от  значения поля  Distributor Size  (Размер  дистрибьютора)
следующим образом:

1.   Если значением  поля Distributor  Size  (Размер  дистрибьютора)
     является large  (большой), то  поле Discount  (Скидка) получает
     значение 60 процентов.






                                                                  63
2.   Либо,   если    значением   поля   Distributor   Size   (Размер
     дистрибьютора)  является  medium  (средний),  а  значение  поля
     Quantity (Количество)  больше или  равно 100,  то поле Discount
     (Скидка) получает значение 50 процентов.

3.   Либо,   если    значением   поля   Distributor   Size   (Размер
     дистрибьютора)  является  medium  (средний),  а  значение  поля
     Quantity (Количество)  меньше (то  есть, НЕ "больше или равно")
     100, то поле Discount (Скидка) получает значение 40 процентов.

     Если значением поля Customer Type (Тип клиента) является dealer
     (дилер), то значение поля Discount (Скидка) зависит от значения
     поля Quantity (Количество):

-    Если значение  поля Quantity (Количество) больше чем либо равно
     100, то значение поля Discount (Скидка) равно 40 процентам.

-    Либо, если значение поля Quantity (Количество) меньше (то есть,
     НЕ "больше  или равно") 100, то значение поля Discount (Скидка)
     равно 25 процентам.

     Аналогичные вычисления  производятся в  случае,  если  значение
     поля Customer Type (Тип клиента) равно educator (преподаватель)
     или other (другой).

     Логика дерева  принятия решений  развивается по  тем  же  самым
линиям в  направлении слева  направо и  сверху вниз.  На каждом шаге
сначала рассматривается  значение поля  Customer Type (Тип клиента).
Если значением поля Customer Type (Тип клиента) является Distributor
(Дистрибьютор),   то   следующим   рассматривается   значение   поля
Distributor Size  (Размер дистрибьютора).  Наконец,  рассматривается
значение поля  Quantity (Количество).  На  каждом  шаге  формируется
значение true  (истинно) или  false (ложно).  Если условие  является
истинным, то  система ObjectVision  следует  по  маршруту  от  этого
условия. Если  условие  является  ложным,  то  система  ObjectVision
проверяет следующее  условие, которое расположено ниже. Этот процесс
продолжается до тех пор, пока ObjectVision не достигнет узла вывода.
После  этого   осуществляется  присвоение   значения  полю  Discount
(Скидка).


                      Добавление первых узлов
--------------------------------------------------------------------

     Создание  дерева   принятия  решений   поля  Discount  (Скидка)
начинается с  добавления узлов,  которые реализуют первый шаг логики
принятия решений:

+++> Ваши дальнейшие действия:

1.   Откройте прикладную задачу Myorder и селектируйте поле Discount
     (Скидка).

2.   Выберите команду Tools| Tree (Инструментарий| Дерево).

3.   Выберите команду Objects| Branch (Объекты| Ветвь), селектируйте
     в списке  имен полей  имя поля  Customer Type  (Тип клиента), а
     затем выберите кнопку OK.







                                                                  64
4.   Вновь выберите  команду Objects|  Branch (Объекты|  Ветвь).  На
     экране появляется блок диалога Condition (Условие).

5.   В качестве  условия поля  Customer Type  (Тип клиента)  введите
     distributor (дистрибьютор)  и нажмите  клавишу Enter. На экране
     появляется блок диалога Field Name (Имя поля).

     Поскольку Вы  создаете новый  узел ветви  (а не  узел  вывода),
     система ObjectVision подразумевает имя некоторого поля. Однако,
     необходимое Вам  поле  еще  не  было  создано.  Вам  необходимо
     создать новое  поле Distributor Size (Размер дистрибьютора) для
     того, чтобы  подразделить типы  дистрибьюторов, с  которыми  Вы
     ведете дела.  В перечисленных далее шагах Вам предстоит создать
     новое поле и назначить его новому узлу ветви.

6.   Селектируйте вариант   (Добавить  новое  поле),
     затем выберите кнопку OK. На экране появляется блок диалога Add
     New Field| Field Name (Добавить новое поле| Имя поля).

7.   В качестве  имени нового  поля введите Distributor Size (Размер
     дистрибьютора) и нажмите клавишу Enter.

8.   Выберите команду Objects| Conclusion (Объекты| Вывод) для того,
     чтобы создать  узел вывода.  На экране  появляется блок диалога
     Condition (Условие).  Это связано  с тем,  что Вы должны задать
     условие для добавляемого Вами узла вывода.

     Узел вывода  должен  формировать  значение  для  поля  Discount
     (Скидка), которое  возвращается в  случае, если  предшествующие
     условия истинны. В данном случае Вы хотите присвоить конкретное
     значение полю  Discount (Скидка),  если значением поля Customer
     Type  (Тип   клиента)  является  distributor  (дистрибьютор)  а
     значением  Distributor  Size  (Размер  дистрибьютора)  является
     large  (большой).   Поскольку   Вы   сейчас   описываете   поле
     Distributor  Size  (Размер  дистрибьютора),  необходимо  ввести
     значение в  блок диалога  условия  для  поля  Distributor  Size
     (Размер дистрибьютора).

9.   В качестве условия поля Distributor Size (Размер дистрибьютора)
     введите large (большой) и нажмите клавишу Enter.

10.  Когда инструментальное  окно дерева  (Tree Tool)  запрашивает у
     Вас значение  вывода для поля Discount (Скидка), введите +60% и
     нажмите клавишу Enter.

     Заметьте, что  знак плюс (+) является необязательным. Поскольку
значение  вывода   начинается  с   числа,  оно  рассматривается  как
выражение, а  не как  константа. Перед  любыми константами,  которые
начинаются с  числа, Вы  должны использовать  знак одиночной кавычки
(') (точно так же, как в табличном процессоре Quattro Pro).

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

     Рис.6.2 Дерево принятия решений для поля Discount (Скидка) с
одним узлом вывода:
1 - Дерево принятия решений для поля Discount (Скидка); 2 - Тип
клиента; 3 - Дистрибьютор; 4 - Размер дистрибьютора; 5 - Большой







                                                                  65
                   Добавление других узлов вывода
--------------------------------------------------------------------

     Далее Вам  предстоит добавить  второй и  третий узлы  выводов к
дереву принятия  решений поля  Discount (Скидка). Эти выводы требуют
наличия другого узла ветви.

+++> Ваши дальнейшие действия:

1.   Селектируйте узел вывода +60% и выберите затем команду Objects|
     Branch (Объекты|  Ветвь). На  экране  появляется  блок  диалога
     Condition (Условие).

     Вы  селектировали   узел  вывода   в  силу  того,  что  система
     ObjectVision будет вставлять новый узел ветви под узлом вывода,
     причем с  тем же  самым уровнем  вложения, который  имеет  узел
     вывода +60%.  Вам необходимо,  чтобы новый узел ветви находился
     бы  на   этом  уровне  вложения  в  силу  того,  что  здесь  Вы
     собираетесь рассматривать  только узел Distributor Size (Размер
     дистрибьютора). Если  бы Вы хотели добавить узел ветви, который
     работает  с  другими  типами  клиентов,  то  Вам  следовало  бы
     селектировать   узел    ветви    Distributor    Size    (Размер
     дистрибьютора)  и  ввести  другой  тип  клиента  (что  Вам  еще
     предстоит сделать позже в текущей главе).

2.   Когда инструментальное  окно дерева  (Tree Tool) запросит у Вас
     условие  для  узла  Distributor  Size  (Размер  дистрибьютора),
     введите medium (средний) и нажмите клавишу Enter.

3.   В  качестве   имени  поля   селектируйте  в   списке   Quantity
     (Количество) и выберите кнопку OK или нажмите клавишу Enter.

4.   Выберите команду Objects| Conclusion (Объекты| Вывод).

5.   Когда инструментальное  окно дерева  (Tree Tool) запросит у Вас
     условие для поля Quantity (Количество), введите >=100 и нажмите
     клавишу Enter.

6.   В качестве  вывода для  поля Discount  (Скидка) введите  +50% и
     выберите кнопку OK.

     Это  означает,   что  для   всех  клиентов,   которые  являются
     дистрибьюторами  среднего   уровня  (по  размаху  операций),  и
     заказов, состоящих  из по меньшей мере 100 элементов, значением
     поля Discount (Скидка) будет +50%.

     Теперь добавьте третий узел вывода к этой ветви:

7.   Учитывая,  что   попрежнему  селектирован   узел  вывода  +50%,
     выберите команду Objects| Conclusion (Объекты| Вывод).

8.   Когда инструментальное  окно дерева  (Tree Tool) запросит у Вас
     условие для  поля Quantity  (Количество), введите  Otherwise (В
     ином случае) и нажмите клавишу Enter.

9.   В качестве  вывода для  поля Discount  (Скидка) введите  +40% и
     нажмите клавишу Enter.








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

     Рис.6.3 Дальнейшее развитие дерева принятия решений для поля
Discount (Скидка):
1 - Дерево принятия решений для поля Discount (Скидка); 2 - Размер
дистрибьютора; 3 - Большой; 4 - Средний; 5 - Количество; 6 - В ином
случае


                 Прокрутка дерева принятия решений
--------------------------------------------------------------------

     По мере  добавления частей к дереву принятия решений это дерево
может стать  очень большим,  и его  невозможно будет увидеть целиком
одновременно (разве  что Вы  "сожмете" его  с помощью  команды View|
Reduce (Вид| Уменьшить), которая описывается далее). Вы легко можете
отобразить все  части дерева,  используя для этого полосы прокрутки,
расположенные справа  и снизу  на экранном  кадре  инструментального
окна дерева  (Tree Tool). Нажмите клавишу Home, чтобы возвратиться к
корневому узлу дерева.

     Перед тем,  как перейти к следующему разделу, уделите некоторое
время прокрутке дерева на экране.


                  Добавление формы для нового поля
--------------------------------------------------------------------

     Когда Вы  добавили первые узлы дерева принятия решений для поля
Discount (Скидка), Вы добавили новое поле - Distributor Size (Размер
дистрибьютора). Если Вы добавляете поле при создании дерева принятия
решений, Вы  можете занести  это поле  на форму  позднее  с  помощью
инструментального окна  формы (Form  Tool). Если  Вы не заносите это
поле в  форму,  то  система  ObjectVision  будет  при  необходимости
использовать для  запроса значения  поля черновую  форму (Scratchpad
form).

     В текущем  разделе Вам  предстоит создать  новую форму для поля
Distributor   Size    (Размер   дистрибьютора)   и   воспользоваться
инструментальным окном  стека (Stack  Tool)  для  выявления  порядка
расположения форм в своей прикладной задаче.


            Принятие решений о критериях проектирования
--------------------------------------------------------------------

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

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

-    Должны ли  Вы изменять  свойства полей.  Поля в  черновой форме
     (Scratchpad form)  получают набор стандартных свойств. Если Вам







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

-    Захочет ли  пользователь изменять  значение поля (например, для
     того, чтобы  осуществлять проверку  вариантов по  типу "а  что,
     если"). Пользователь  может увидеть  поле, которое  находится в
     форме, но  должен воспользоваться  командой Field|  Find (Поле|
     Найти), чтобы обратиться к полю, которое не описано в форме.

     В случае  поля Distributor Size (Размер дистрибьютора) не имеет
большого   значения,    позволите   ли   Вы   системе   ObjectVision
воспользоваться для  поля Distributor  Size  (Размер  дистрибьютора)
черновой формой  (Scratchpad form)  или зададите  для него отдельную
форму (как  это  реализовано  в  исходной  прикладной  задаче  Order
(Заказ)). Однако, лучше не заносить это поле на основную форму Sales
Order (Заказ  на покупку),  поскольку его значение бывает необходимо
не всегда.  (Оно  оказывается  необходимым  только  в  случае,  если
значением поля  Customer Type  (Тип  клиента)  является  distributor                                                         ___________
(дистрибьютор).)______________

     В целях  обучения мы  поместим поле  Distributor  Size  (Размер
дистрибьютора) в новую форму.


                        Создание новой формы
--------------------------------------------------------------------

     В дополнение  к полю  Distributor Size  (Размер  дистрибьютора)
Ваша новая  форма будет  также включать  в себя  поля Name  (Имя)  и
Company (Компания),  которые уже  описаны в форме Sales Order (Заказ
на покупку).

     Форма в завершенном виде будет выглядеть следующим образом:

     Рис.6.4 Завершенный вид формы Distributor Information
(Информация о дистрибьюторе):
1 - Информация о дистрибьюторе (Цель); 2 - Имя; 3 - Компания; 4 -
Размер дистрибьютора; 5 - Большой; 6 - Средний

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

-    Form| New (Форма| Новый) для описания новой формы;

-    Objects| Field  (Объекты| Поле)  для добавления  полей к  новой
     форме;

-    Form| Select  (Форма| Селектировать)  для открытия  формы Sales
     Order (Заказ на покупку);

-    Edit|  Copy   (Редактировать|   Копировать)   и   Edit|   Paste
     (Редактировать| Вклеить)  для копирования поля из одной формы в
     другую;

-    Properties| Field  Type (Свойства| Тип поля) для изменения типа
     поля.

+++> Ваши дальнейшие действия:







                                                                  68
1.   Закройте инструментальное  окно дерева  (Tree Tool),  если  оно
     попрежнему открыто.  Откройте инструментальное окно формы (Form
     Tool) и  выберите команду  Form| New  (Форма| Новая). На экране
     появляется блок диалога Form Name (Имя формы).

2.   В  качестве   имени  формы   введите  Distributor   Information
     (Информация  о   дистрибьюторе)  и   нажмите   клавишу   Enter.
     Появляется новая форма, имеющая стандартный размер.

3.   Выберите команду  Objects| Field  (Объекты| Поле), селектируйте
     из списка поле Name (Имя), а затем выберите кнопку OK.

4.   Расположите поле  Name (Имя)  так, как показано на рисунке 6.4.
     (В дальнейшем Вам предстоит изменить его размер.) Заметьте, что
     если некоторое  поле появляется  в нескольких  формах, как  это
     происходит с  полем Name  (Имя), то,  при необходимости  данное
     поле может быть по разному отформатировано на разных формах.

     В некоторых случаях может оказаться удобным копирование поля из
     одной формы в другую. В этот раз Вам предстоит скопировать поле
     Company (Компания)  из формы  Sales Order  (Заказ на покупку) в
     форму Distributor Information (Информация о дистрибьюторе). (Вы
     могли также  без особых трудностей скопировать поле Name (Имя),
     но в целях обучения стоит испробовать оба метода.)

5.   Выберите команду  Form| Select  (Форма| Выбрать),  селектируйте
     форму Sales  Order (Заказ  на покупку)  и выберите  кнопку  OK.
     Форма Sales  Order (Заказ на покупку) отображается перед формой
     Distributor Information (Информация о дистрибьюторе). Если окно
     Вашей прикладной  задачи максимизировано, Вы можете располагать
     формы  внутри   него,  чтобы   облегчить  выполнение   операций
     копирования и вклейки между ними.

6.   Скопируйте  поле   Company  (Компания)   командой  Edit|   Copy
     (Редактировать| Копировать)  (либо  нажмите  комбинацию  клавиш
     Ctrl+Ins, которая эквивалентна команде Edit| Copy).

7.   Селектируйте  форму   Distributor  Information   (Информация  о
     дистрибьюторе)  с   помощью  команды   Form|   Select   (Форма|
     Селектировать).

8.   Вклейте поле Company (Компания) в форму с помощью команды Edit|
     Paste (Редактировать|  Вклеить) (либо нажмите комбинацию клавиш
     Shift+Ins, которая эквивалентна команде Edit| Paste).

     Заметьте,  что   инструментальное  окно   формы   (Form   Tool)
     автоматически увеличивает  размер формы Distributor Information
     (Информация о  дистрибьюторе),  чтобы  в  ней  уместилось  поле
     Company (Компания).

9.   Измените размер  поля Name  (Имя), чтобы он совпадал с размером
     поля Company (Компания).

     Следующее поле,  которое Вам  предстоит  добавить,  Distributor
     Size (Размер  дистрибьютора) еще  не  существует  в  форме.  Вы
     создали его  при описании дерева принятия решений поля Discount
     (Скидка).








                                                                  69
10.  Выберите команду  Objects| Field  (Объекты| Поле), селектируйте
     поля Distributor  Size (Размер  дистрибьютора) а затем выберите
     кнопку  OK.  Разместите  это  поле  и  измените  его  размер  в
     соответствии с рисунком 6.4.

     Теперь Вам  необходимо отформатировать  поле  Distributor  Size
     (Размер дистрибьютора) как поле маркерной кнопки.

11.  Выберите команду  Properties| Field  Type (Свойства| Тип поля),
     селектируйте вариант  Check Boxes  (Маркерные кнопки),  а затем
     выберите кнопку OK.

12.  На экране  появляется  блок  диалога  Check  Boxes|  Values  of
     (Маркерные кнопки|  Значения полей).  Заметьте, что  маркирован
     вариант Automatic  (Автоматический), а значения large (большой)
     и medium (средний) появляются в списке Values (Значения). Когда
     вариант выбора  Automatic (Автоматический)  маркирован, система
     ObjectVision автоматически определяет варианты значений, исходя
     из условий,  которые были  Вами  описаны  в  деревьях  принятия
     решений.

13.  Выберите кнопку  OK, чтобы  закрыть блок  диалога Check  Boxes|
     Values of (Маркерные кнопки| Значения полей).

14.  Закройте инструментальное окно формы (Form Tool).

15.  Закройте   форму    Distributor   Information   (Информация   о
     дистрибьюторе).

16.  Выберите команду  File| Save (Файл| Сохранить), чтобы сохранить
     результаты Вашей работы.


               Отображение порядка расположения форм
--------------------------------------------------------------------

     Теперь в Вашей прикладной задаче имеются две формы, Sales Order
(Заказ  на   покупку)  и   Distributor  Information   (Информация  о
дистрибьюторе). Система  ObjectVision обрабатывает  формы прикладной
задачи в  определенном порядке. Этот порядок определяет, какая форма
является Целевой  формой  (Goal  form)  при  открытии  пользователем
данной прикладной задачи.

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


           Копирование и редактирование фрагментов дерева
--------------------------------------------------------------------

     Далее Вам  предстоит добавить  к дереву  принятия решений  поля
Discount (Скидка)  дополнительные ветви  и  узлы  вывода  с  помощью
команд  Edit|   Copy  (Редактировать|   Копировать)  и  Edit|  Paste
(Редактировать| Вклеить). Вы можете копировать и вклеивать фрагменты
дерева  принятия   решений,  а   затем  модифицировать  их  по  мере






                                                                  70
необходимости с  помощью команд  Properties|  Conclusion  (Свойства|
Вывод), Objects|  Branch  (Объекты|  Ветвь)  и  Objects|  Conclusion
(Объекты| Вывод).

     На рисунке  6.5 повторяется завершенное дерево принятия решений
поля Discount (Скидка), которое было впервые представлено на рисунке
6.1. Глядя  на рисунок  6.5, Вы  увидите, что  под узлом Distributor
Size (Размер  дистрибьютора) находятся  три секции,  и каждая секция
начинается с  узла ветви Quantity (Количество). Две из секций дерева
завершаются двумя  узлами вывода,  а нижняя  ветвь завершается пятью
узлами вывода.

     Структура секций подобна той, которую имеет узел ветви Quantity
(Количество) и  его узлы выводов, которые уже были Вами созданы. Для
убыстрения процесса  Вы будете копировать и вклеивать секции дерева.
Затем Вам предстоит отредактировать выводы и условия в скопированных
секциях, чтобы  они совпадали  с деревом,  показанным  на  следующем
рисунке.

     Рис.6.5 Дерево принятия решений поля Discount (Скидка):
1 - Тип клиента; 2 - Дистрибьютор (Агент по продаже); 3 - Дилер; 4 -
Преподаватель; 5 - Другой; 6 - Размер дистрибьютора; 7 - Количество;
8 - Большой; 9 - Средний; 10 - В ином случае

+++> Ваши дальнейшие действия:

1.   Выберите команду  Tools| Tree  (Инструментарий| Дерево),  чтобы
     открыть инструментальное окно дерева (Tree Tool).

2.   Выберите  команду   Tree|   Select   (Дерево|   Селектировать),
     селектируйте поле  Discount (Скидка),  а затем  выберите кнопку
     OK.

3.   Максимизируйте окно,  затем прокрутите его вправо. Это позволит
     Вам увидеть узел Quantity (Количество) и его выводы.

4.   Селектируйте узел Quantity (Количество) (который будет включать
     условие medium  (средний)), а затем выберите команду Edit| Copy
     (Редактировать|  Копировать)  (или  нажмите  комбинацию  клавиш
     Ctrl+Ins).

5.   Селектируйте узел  Distributor Size  (Размер дистрибьютора),  а
     затем выберите  команду Edit|  Paste  (Редактировать|  Вклеить)
     (или нажмите комбинацию клавиш Shift+Ins).

6.   Когда инструментальное  окно дерева  (Tree Tool)  запрашивает у
     Вас условие  для поля  Customer  Type  (Тип  клиента),  введите
     dealer (дилер)  и  выберите  кнопку  OK.  Эта  операция  задает
     условие поля Customer Type (Тип клиента), которое применяется к
     новому маршруту дерева, вклеиваемому Вами.

     Теперь  Вам   предстоит  воспользоваться  командой  Properties|
Conclusion (Свойства|  Вывод),  чтобы  изменить  скопированные  Вами
выводы.

1.   Селектируйте первый вывод в узле, который Вы только что вклеили
     (+50%),  а   затем  выберите   команду  Properties|  Conclusion
     (Свойства| Вывод).  Блок диалога  Conclusion (Вывод)  отобразит
     это выражение.






                                                                  71
2.   Измените вывод  на +40% (помните, что Вы можете воспользоваться
     клавишами  редактирования,  например,  для  удаления  применить
     клавишу Backspace),  а затем нажмите клавишу Enter или выберите             _________
     кнопку OK.  Инструментальное окно  дерева (Tree Tool) отобразит
     скорректированное выражение.

мышь Используя мышь:

     В следующем шаге в целях убыстрения воспользуйтесь мышью, чтобы
     открыть блок  диалога Conclusion  (Вывод). Вы можете в качестве
     альтернативы выбора  команды Properties|  Conclusion (Свойства|
     Вывод) дважды  подряд нажать  мышью на  узел вывода. Аналогично
     этому, двойное  нажатие мышью  на узел  условия открывает  блок
     диалога Condition (Условие).

3.   Дважды подряд нажмите мышью на второй вывод в том узле, который
     Вы только что вклеили (под условием Otherwise (В ином случае)).

     Будьте осторожны  при двойном  нажатии  мышью  на  узел  вывода
     (инвертированный треугольник)  или выражение  вывода.  Если  вы
     дважды подряд  нажмете мышью  на узел  условия (в данном случае
     узел Otherwise  (В  ином  случае)),  то  вместо  блока  диалога
     Conclusion (Вывод) появится блок диалога Condition (Условие).

     На экране появляется блок диалога Conclusion (Вывод).

4.   Измените вывод на +25% и выберите кнопку OK или нажмите клавишу
     Enter.

5.   Селектируйте только  что  отредактированную  Вами  ветвь  (поле
     Quantity (Количество) с условием dealer (дилер)).

6.   Выберите  команду   Edit|   Paste   (Редактировать|   Вклеить).
     Заметьте, что  Вам не  нужно вновь  копировать  этот  узел;  он
     попрежнему находится в универсальном буфере (Clipboard).

7.   В качестве  условия поля  Customer Type  (Тип клиента)  введите
     educator (преподаватель) и нажмите клавишу Enter.

8.   Измените первый  вывод только  что вклеенного  узла на  +75%, а
     второго на +50%.

     Далее Вам  предстоит воспользоваться  командами Objects| Branch
(Объекты|  Ветвь)   и  Objects|   Conclusion  (Объекты|  Вывод)  для
добавления последнего  узла ветви  к дереву  принятия  решений  поля
Discount (Скидка).  Вы можете  также  вновь  скопировать  и  вклеить
существующий  узел,  а  затем  отредактировать  его,  но  этот  узел
несколько отличается  от тех,  которые Вы  только что  добавили; его
условия отличаются, и он содержит больше выводов.

+++> Ваши дальнейшие действия:

1.   Селектируйте  ветвь,  которую  Вы  только  что  отредактировали
     (Quantity (Количество) с условием educator (преподаватель)).

2.   Выберите команду Objects| Branch (Объекты| Ветвь).

3.   В качестве  условия поля  Customer Type  (Тип клиента)  введите
     other (другой) и нажмите клавишу Enter.






                                                                  72
4.   В качестве  имени поля  селектируйте  из  списка  имя  Quantity
     (Количество).

5.   Выберите команду Objects| Conclusion (Объекты| Вывод).

6.   Когда инструментальное  окно дерева  (Tree Tool) запросит у Вас
     условие для поля Quantity (Количество), введите >=250 и нажмите
     клавишу Enter.

7.   В качестве  вывода для  поля Discount  (Скидка) введите  +50% и
     нажмите клавишу Enter.

8.   Выберите команду Objects| Conclusion (Объекты| Вывод).

9.   Когда инструментальное  окно дерева  (Tree Tool) запросит у Вас
     условие для поля Quantity (Количество), введите >=100 и нажмите
     клавишу Enter.

10.  В качестве  вывода для  поля Discount  (Скидка) введите  +40% и
     нажмите клавишу Enter.

     Теперь добавим третий вывод:

1.   Выберите команду Objects| Conclusion (Объекты| Вывод).

2.   Когда инструментальное  окно дерева  (Tree Tool) запросит у Вас
     условие для  поля Quantity (Количество), введите >=25 и нажмите
     клавишу Enter.

3.   В качестве  вывода для  поля Discount  (Скидка) введите  +25% и
     нажмите клавишу Enter.

     Теперь добавим четвертый вывод:

1.   Выберите команду Objects| Conclusion (Объекты| Вывод).

2.   Когда инструментальное  окно дерева  (Tree Tool) запросит у Вас
     условие для  поля Quantity (Количество), введите >=10 и нажмите
     клавишу Enter.

3.   В качестве  вывода для  поля Discount  (Скидка) введите  +10% и
     нажмите клавишу Enter.

     Теперь добавим пятый и последний вывод:

1.   Выберите команду Objects| Conclusion (Объекты| Вывод).

2.   Когда инструментальное  окно дерева  (Tree Tool) запросит у Вас
     условие для  поля Quantity  (Количество), введите  Otherwise (В
     ином случае) и нажмите клавишу Enter.

3.   В качестве  вывода для  поля Discount  (Скидка) введите  +0%  и
     нажмите клавишу Enter.

     Теперь Ваше  дерево  принятия  решений  должно  соответствовать
показанному на рисунке 6.5.









                                                                  73
                        Тестирование дерева
--------------------------------------------------------------------

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

-    Закройте инструментальное окно дерева (Tree Tool).

-    Находясь в режиме заполнения задайте различные значения во всех
     трех полях,  которые имеют  отношение к дереву принятия решений
     поля Discount  (Скидка) (Customer  Type (Тип клиента), Quantity
     (Количество) и  Distributor Size  (Размер  дистрибьютора))  для
     проверки  возможных   выводов  Вашего  нового  дерева  принятия
     решений.

-    Непременно после  ввода значений  нажимайте клавишу Enter, а не
     клавишу Tab.  Если Вы  нажмете клавишу  Tab, форма  Distributor
     Information (Информация о дистрибьюторе) не появится.


             Просмотр и печать дерева принятия решений
--------------------------------------------------------------------

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


                      Изменение размера дерева
--------------------------------------------------------------------

     Дерево принятия  решений поля Discount (Скидка) слишком велико,
чтобы оно  могло поместиться  на  экране  полностью  при  нормальном
режиме отображения. Для того, чтобы увидеть всю структуру дерева, Вы
можете уменьшить его. Можно также "растянуть" часть дерева.

+++> Ваши дальнейшие действия:

1.   Для того,  чтобы дерево принятия решений поля Discount (Скидка)
     уместилось бы  на экране  полностью, селектируйте поля Discount
     (Скидка) (если  оно еще  не селектировано),  а  затем  выберите
     команду Tools| Tree (Инструментарий| Дерево).

2.   Трижды выберите команду View| Reduce (Вид| Уменьшить).

     Заметьте, что  ни одно  имя узла  ветви и  ни одно  условие  не
     отображается.

3.   Теперь селектируйте  последний  узел  Quantity  (Количество)  и
     четырежды  выберите  команду  View|  Expand  (Вид|  Увеличить).
     Инструментальное окно  дерева (Tree  Tool) увеличивает дерево в
     размерах,  удерживая   узел  Quantity   (Количество)  в  центре
     изображения.









                                                                  74
                           Печать дерева
--------------------------------------------------------------------

     В любой  момент времени  при работе  с  инструментальным  окном
дерева (Tree  Tool) Вы  можете отпечатать  дерево принятия  решений.
Инструментальное окно  дерева печатает  дерево  в  текущем  размере.
Например, если  Вы уменьшили  размер дерева  с помощью команды View|
Reduce (Вид|  Уменьшить), будет  отпечатана небольшая  версия  этого
дерева.

+++> Ваши дальнейшие действия:

1.   Перед печатью  дерева принятия  решений поля  Discount (Скидка)
     выберите команду  View| Reduce  (Вид| Уменьшить), чтобы "сжать"
     дерево до его оригинального размера.

2.   Выберите команду Tree| Print (Дерево| Печать), чтобы отпечатать
     дерево поля Discount (Скидка).


              Автоматическое создание списков значений
--------------------------------------------------------------------

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

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

     Когда маркируется  кнопка  Automatic  (Автоматически)  в  блоке
диалога Values  of (Значения  поля), система  ObjectVision ищет  все
условия, которые  Вы определили  для поля, во всех деревьях принятия
решений   и   генерирует   список   значений.   Этот   автоматически
сгенерированный список  значений добавляется ко всем формам, которые
содержат данное поле.

     Например, если  Вы добавили еще одно значение к дереву принятия
решений для  поля Customer Type (Тип клиента), Вы можете "заставить"
ObjectVision  добавить   его   к   перечню   маркерных   кнопок.   В
инструментальном окне формы (Form Tool) Вы можете селектировать поле
Customer Type  (Тип клиента), выбрать команду Properties| Field Type
(Свойства| Тип  поля), селектировать  опцию Check  Boxes  (Маркерные
кнопки), а  затем выбрать  кнопку OK.  Когда появляется блок диалога
Values of  (Значения  поля),  включите  маркерную  кнопку  Automatic
(Автоматически) и выберите кнопку OK.

     Система ObjectVision  заменяет предшествующий  список  значений
для этого  поля теми  значениями, которые  она выявила  на основании
дерева принятия решений этого поля.









                                                                  75
     Сейчас Вы  можете покинуть  систему ObjectVision или продолжить
работу. В  любом  случае  не  забудьте  сохранить  результаты  своей
работы.






























































                                                                  76
    ГЛАВА 7. ОБРАБОТКА ИСПОЛЬЗУЕМЫХ ПО УМОЛЧАНИЮ (СТАНДАРТНЫХ) И
                         ОШИБОЧНЫХ ЗНАЧЕНИЙ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

-    Использование деревьев  принятия решений  для внесения  в  поле
     стандартного (используемого по умолчанию) значения;

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


                    Задание стандартных значений
--------------------------------------------------------------------

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

     Стандартное   значение    является   большим   подспорьем   для
пользователя. Если  как  правило  поле  имеет  некоторое  конкретное
значение, то  Вы можете  указать системе  ObjectVision вычислить это
значение для поля. В отдельных случаях, когда полю необходимо задать
другое  значение,   пользователь  может  переопределить  вычисленное
значение. Пользователь может выбрать команду Field| Calculate (Поле|
Вычислить), чтобы восстановить вычисленное значение поля.

     В форме  Sales Order  (Заказ на  покупку) задачи  Order (Заказ)
дерево принятия  решений для  поля Item (Элемент) задает стандартное
значение Widget  (Безделушка). В  данной главе Вам предстоит создать
дерево принятия решений поля Item (Элемент) в задаче Myorder.

+++> Ваши дальнейшие действия:

1.   В режиме заполнения формы селектируйте поле Item (Элемент).

2.   Выберите команду Tools| Tree (Инструментарий| Дерево).

3.   Выберите команду Objects| Conclusion (Объекты| Вывод).

     На экране появляется блок диалога Objects| Conclusion (Объекты|
     Вывод).  Заметьте,   что  у  Вас  не  было  запрошено  условие.
     Поскольку Вы  не добавляли  узла ветви, к выводу не применяется
     никакого условия.

4.   Введите с  клавиатуры Widget  (Безделушка)  и  нажмите  клавишу
     Enter. Представленный  далее  рисунок  показывает,  как  теперь
     должен выглядеть Ваш экранный кадр:

     Рис.7.1 Дерево принятия решений для поля Item (Элемент):
1 - Дерево принятия решений для поля Item (Элемент); 2 - Безделушка








                                                                  77
5.   Выберите   команду    Tree|   Close   Tool   (Дерево|   Закрыть
     инструментальное окно),  чтобы возвратиться  в режим заполнения
     формы. Заметьте,  что в поле Item (Элемент) появляется значение
     Widget (Безделушка).


     Использование возвратной логики в дереве принятия решений
--------------------------------------------------------------------

     Дерево принятия  решений для  поля Unit  Price (Цена  за штуку)
использует возвратную логику - оно ссылается само на себя в одном из
своих  узлов   вывода.  На  представленном  далее  рисунке  показано
завершенное дерево  принятия решений  для поля  Unit Price  (Цена за
штуку).

     Рис.7.2 Завершенное дерево принятия решений для поля Unit Price
(Цена за штуку):
1 - Дерево принятия решений для поля Unit Price (Цена за штуку); 2 -
Элемент; 3 - Безделушка; 4 - В ином случае; 5 - Цена за штуку

     Возвратная логика  может оказаться  весьма  полезной  в  дереве
принятия решений.  Она позволяет  системе ObjectVision  запросить  у
пользователя значение  поля в случае, если другие выводы в дереве не
подходят. Например, дерево поля Unit Price (Цена за штуку) позволяет
ObjectVision вычислить  значение 295  в случае,  если значение  поля
Item (Элемент)  является  стандартным -  Widget  (Безделушка).  Если
значение поля  Item (Элемент) отлично от Widget, то дерево поля Unit
Price (Цена  за штуку)  позволяет системе  ObjectVision запросить  у
пользователя значение поля Unit Price (Цена за штуку).

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

     Рассмотрим, что  произошло бы, если бы поле Unit Price (Цена за
штуку) имело  дерево  принятия  решений,  не  включающее  возвратную
ссылку.  Пока   поле  Item   (Элемент)  сохраняет  свое  стандартное
значение -  Widget   (Безделушка) -   система   ObjectVision   может
вычислить значение  поля Unit  Price (Цена  за штуку).  Однако, если
пользователь   переопределил    значение   поля    Item   (Элемент),
ObjectVision не сможет вывести значение для поля Unit Price (Цена за
штуку); в  поле появится  код ошибки NA (сокращение от Not Available
(Не доступно)).


                         Добавление дерева
--------------------------------------------------------------------

     Теперь Вам  предстоит добавить дерево принятия решений для поля
Unit Price (Цена за штуку).

+++> Ваши дальнейшие действия:

1.   В режиме заполнения формы селектируйте поле Unit Price (Цена за
     штуку).

2.   Выберите команду Tools| Tree (Инструментарий| Дерево).







                                                                  78
3.   Выберите команду  Objects| Branch  (Объекты| Ветвь).  На экране
     появляется блок диалога Field Name (Имя поля).

4.   В качестве  имени поля  выберите из  списка Item  (Элемент),  а
     затем выберите кнопку OK.

5.   Выберите команду Objects| Conclusion (Объекты| Вывод).

6.   В блоке диалога Condition (Условие) введите с клавиатуры Widget
     (Безделушка) и выберите кнопку OK.

7.   В блоке  диалога Conclusion  (Вывод) введите  295 для поля Unit
     Price (Цена за штуку) и выберите кнопку OK.

8.   Выберите команду Objects| Conclusion (Объекты| Вывод).

9.   В блоке  диалога Condition  (Условие) для  поля Item  (Элемент)
     введите с  клавиатуры Otherwise  (В  ином  случае)  и  выберите
     кнопку OK.

10.  В блоке диалога Conclusion (Вывод) для поля Unit Price (Цена за
     штуку) введите  +Unit Price  (+Цена за штуку) и выберите кнопку
     OK. В  качестве альтернативы  для вставки имени поля Unit Price
     (Цена за  штуку) после знака "плюс" Вы могли бы воспользоваться
     кнопкой Paste Field (Вклеить поле).

     Заметьте, что  в  этом  выражении  вывода  в  качестве  первого
     символа Вы  ввели знак  "плюс". Другой  вывод в  этом  дереве -
     295 - не  начинается со знака "плюс". Первое значение вывода не
     требует наличия  открывающего плюса, поскольку 295 уже является
     выражением (так как оно начинается с числа). Знак "плюс" должен
     предшествовать  вычисляемому  системой  ObjectVision  значению,
     поэтому он  должен предшествовать  значению Unit Price (Цена за
     штуку). За  дополнительной информацией  обращайтесь к  Главе  7
     "Справочника по системе ObjectVision".

11.  Выберите   команду    Tree|   Close   Tool   (Дерево|   Закрыть
     инструментальное окно),  чтобы возвратиться  в режим заполнения
     формы. Заметьте,  что значение  295 отображается  в  поле  Unit
     Price (Цена  за штуку).  После того,  как Вы  нажимаете клавишу
     Enter, значение  $295 отображается  в поле  Unit Price (Цена за
     штуку) (система  ObjectVision отображает это значение в формате
     Currency (Валюта), который Вы присвоили этому полю.)

     Теперь посмотрим,  что  происходит,  когда  Вы  переопределяете
стандартное (используемое по умолчанию) значение Widget (Безделушка)
в поле Item (Элемент):

+++> Ваши дальнейшие действия:

1.   Селектируйте поле  Item (Элемент)  и  введите  значение  Gadget
     (Новинка), затем  нажмите клавишу  Enter. Заметьте,  что в поле
     Item (Элемент)  появляется заполненная точками фактура, которая
     указывает на переопределенное вычисленного значение этого поля.

     Теперь обратимся  к полю  Unit Price  (Цена за штуку). Значение
     $295 исчезло.








                                                                  79
2.   Селектируйте поле  Unit Price (Цена за штуку), введите значение
     750 и нажмите клавишу Enter.

     Поле Unit Price (Цена за штуку) не переопределено, поскольку Вы
     не изменяли вычисленного значения.

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























































                                                                  80
                ГЛАВА 8. СОЗДАНИЕ УСЛОВИЙ И ВЫВОДОВ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

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

     Вам предстоит выполнить следующие процедуры:

-    Создать деревья  принятия решений  для нескольких полей в форме
     Sales Order (Заказ на покупку).

-    Воспользоваться   блоками   диалога   Condition   (Условие)   и
     Conclusion (Вывод).

-    Воспользоваться вариантами  Paste Field  (Вклеить поле),  Paste
     Function  (Вклеить   функцию)  и   Paste   Arguments   (Вклеить
     аргументы).

-    Воспользоваться  функциями   @MESSAGE  (сообщение)   и   @BLANK
     (пустой) в  дереве принятия  решений для проверки достоверности
     вводимой информации.


                             Выражения
--------------------------------------------------------------------

     Выражение определяет метод вычисления значения на основе оценки
текущей ситуации.  Вы описывали  выражения  в  условиях  и  выводах:
>=100, 40% и так далее. Для определения значения выражения в текущей
ситуации система ObjectVision должна вычислить его.

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

-    Имена полей,  например, Distributor Size (Размер дистрибьютора)
     в дереве принятия решений поля Discount (Скидка);

-    Значения-константы, например, 100 и 25;

-    знаки операций,  например, операция  сравнения  >=  и  операция
     определения процента %.

     Выражения могут также содержать @-функции. Система ObjectVision
предоставляет набор  @-функций, совместимых  с табличным процессором
Quattro Pro.  @-функции  обычно  выполняют  некоторую  операцию  над
значением или  набором значений.  Например, функция @INT отбрасывает
дробную часть аргумента.











                                                                  81
                             Синтаксис                             _________

     Синтаксис выражений  системы  ObjectVision  также  совместим  с
принятым  в   табличном  процессоре  Quattro  Pro.  Выражение  может
содержать любую  комбинацию значений-констант, имен полей, функций и
допустимых знаков операций. (Перечень допустимых операций приводится
в следующем разделе.)

     Существуют следующие синтаксические правила:

-    Если первый символ принадлежит к группе перечисленных далее: ',
     " или  ^, то  остальные символы  интерпретируются  как  строка-
     литерал.

-    Если первый  символ является  цифрой или одним из перечисленных
     далее символов:

     . + - ( @ #

     то весь вывод или условие интерпретируется как выражение.

-    Если   условие    не   начинается    с   условного   оператора,
     подразумевается наличие знака равенства (=).

-    Вывод не может начинаться с условного оператора.

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

-    Текстовые константы  должны  заключаться  в  две  пары  двойных
     кавычек ("текст"), чтобы их можно было отличить от имен полей.              _______

-    Необходимо  использовать   две   пары   двойных   кавычек   для
     обозначения двойных  кавычек, которые являются частью текстовой
     строки ("Слово ""Текст"" вставлено в этот текст.")             _________________________________________

-    Пробелы являются  значимыми в  текстовых  константах  и  именах
     полей.

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

     начинается с любого символа, отличного от буквы;

     его последний символ является пробелом;

     содержит любой  символ, не являющийся буквой, цифрой, пробелом,
     точкой или  символом подчеркивания.  Например,  'Производитель,
     модель' и 'Оставшийся отпуск?'.

     является одним  из логических ключевых слов Yes (Да), No (Нет),
     True (Истинно) или False (Ложно).

     Вы  должны  использовать  две  одиночных  кавычки  для  задания
     одиночной кавычки,  которая является  частью имени  поля (кроме
     того, Вы  должны также  заключать в одиночные кавычки все поле,
     поскольку оно  содержит символ,  не являющийся  буквой, цифрой,
     пробелом, точкой  или символом  подчеркивания).  Например,  для
     поля с  именем Last Year's Tax (Налоги прошлого года) Вы должны






                                                                  82
     будете ввести  строку 'Last  Year''s Tax'. Обратите внимание на
     одиночные кавычки,  окружающие имя  поля и  сдвоенные одиночные
     кавычки между буквами r и s.


                           Знаки операций                           ______________

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

                Таблица 8.1 Используемые в выражениях знаки операций


--------------------------------------------------------------------
Оператор  Операция                                Приоритет
--------------------------------------------------------------------
&         Конкатенация строк                      1
=         Равно                                   2
<>        Не равно                                2
<         Меньше чем                              2
>         Больше чем                              2
<=        Меньше чем либо равно                   2
>=        Больше чем либо равно                   2
+         Сложение                                3
-         Вычитание                               3
*         Умножение                               4
/         Деление                                 4
-         Изменение знака (Отрицательный)         5
+         Положительный                           5
^         Возвести в степень (экспоненциальный)   6
%         Вычислить процент                       7
--------------------------------------------------------------------

                      Блоки диалога выражений
--------------------------------------------------------------------

     Когда  ранее   Вы  описывали   дерево  принятия   решений,   Вы
использовали блоки диалога Condition (Условие) и Conclusion (Вывод).

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

     При вводе  выражения в  блок диалога Conclusion (Вывод) система
ObjectVision проверяет  выражение на допустимость. Если оно содержит
ошибку, ObjectVision сообщает Вам о типе первой ошибки.


 Добавление дерева принятия решений для поля Amount (Базовая цена)
--------------------------------------------------------------------

     В описанной  далее  процедуре  Вам  предстоит  добавить  дерево
принятия решений  к полю Amount (Базовая цена). В следующих разделах
описывается  логика   решений  дерева  и  описывается  такое  мощное
средство работы с блоками диалога, как вклейка имен полей.







                                                                  83
                      Логика принятия решений
--------------------------------------------------------------------

     Логика принятия  решений для  вычисления поля  Amount  (Базовая
цена) проста:  Amount (Базовая цена) заказа представляет собой число
заказанных безделушек, умноженное на цену одной штуки.

     Далее представлено завершенное дерево принятия решений для поля
Amount (Базовая цена).

     Рис.8.1 Завершенное дерево принятия решений для поля Amount
(Базовая цена):
1 - Дерево принятия решений для поля Amount (Базовая цена); 2 -
+Количество * Цену за штуку

     Это дерево  имеет один  узел вывода  и ни одного узла ветви (и,
следовательно, никаких  условий). Вывод  для  поля  Amount  (Базовая
цена) является выражением. Оно начинается знаком "плюс" (в противном
случае оно  интерпретировалось бы как строковая константа, поскольку
оно начинается  буквой Q)  и содержит  имена  двух  полей,  Quantity
(Количество) и  Unit Price (Цена за штуку) и знак операции умножения
*.

     Система ObjectVision  определяет узел  вывода для  поля  Amount
(Базовая цена)  путем  умножения  текущего  значения  поля  Quantity
(Количество) на текущее значение поля Unit Price (Цена за штуку).


                         Вклейка имен полей
--------------------------------------------------------------------

     Блоки диалога Condition (Условие) и Conclusion (Вывод) включают
в себя  опции для  вклейки имен  полей  и  имен  функций  при  вводе
выражения.  Вклейка  имен  полей  предотвращает  случайное  создание
нового поля  за счет ошибки ввода. Если Вы неверно вводите имя поля,
система ObjectVision  подразумевает, что  Вы  хотите  создать  новое
поле.


                         Добавление дерева
--------------------------------------------------------------------

     Структура секций  подобна той, которую имеют уже созданные Вами
узел ветви Quantity (Количество) и его узлы выводов.

     Теперь Вам  предстоит  создать  дерево  принятия  решений  поля
Amount (Базовая цена).

+++> Ваши дальнейшие действия:

1.   Выберите команду  Tools| Tree  (Инструментарий| Дерево),  чтобы
     открыть инструментальное окно дерева (Tree Tool).

2.   Выберите  команду   Tree|   Select   (Дерево|   Селектировать),
     селектируйте поле  Amount  (Базовая  цена),  а  затем  выберите
     кнопку OK.









                                                                  84
3.   Выберите  команду  Objects|  Conclusion  (Объекты|  Вывод).  На
     экране появляется  блок диалога  Objects| Conclusion  (Объекты|
     Вывод).

4.   Введите +  (знак "плюс"), но не нажимайте кнопку OK или клавишу
     Enter.

5.   Выберите кнопку  Paste Field  (Вклеить поле).  Инструментальное
     окно дерева  (Tree Tool)  предлагает список  тех полей, которые
     были  описаны.  Представленный  ниже  рисунок  показывает,  как
     теперь будет выглядеть Ваш экранный кадр:

     Рис.8.2 Блок диалога Paste Field (Вклеить поле):
1 - Имя поля; 2 - Адрес; 3 - Базовая цена; 4 - Город, штат и код
почтовой зоны; 5 - Компания; 6 - Тип клиента; 7 - Скидка; 8 - Размер
дистрибьютора; 9 - Увеличенная цена; 10 - Элемент; 11 - Выполнить;
12 - Отменить

6.   Селектируйте поле  Quantity (Количество)  путем  прокрутки  или
     путем ввода буквы Q для перевода селектирующего маркера к имени
     этого поля.  После выбора  поля Quantity  (Количество) выберите
     кнопку  OK   или  нажмите   клавишу   Enter.   Слово   Quantity                                                            ________
     (Количество) будет вклеено в описываемое Вами выражение.     ____________

7.   Введите * (звездочку, символ умножения).

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

8.   Вновь выберите  кнопку Paste Field (Вклеить поле), селектируйте
     имя Unit Price (Цена за штуку) и выберите кнопку OK. Слова Unit                                                                ____
     Price (Цена за штуку) будут вклеены в выражение.     _____________________

9.   Нажмите клавишу  Enter или  выберите кнопку  OK, чтобы  закрыть
     блок диалога Objects| Conclusion (Объекты| Вывод).

     Теперь дерево  принятия  решений  поля  Amount  (Базовая  цена)
     должно выглядеть  так, как на рисунке 8.1. Если Вы ввели какие-
     либо пробелы  до знака  операции или  после него, то теперь они
     удалены.


                        Тестирование дерева
--------------------------------------------------------------------

     Теперь  протестируйте   дерево  принятия  решений  поля  Amount
(Базовая цена):

-    Закройте инструментальное окно дерева (Tree Tool).

-    Находясь в  режиме заполнения  формы,  проверьте  дерево  путем
     ввода  в   поле   Quantity   (Количество)   ряда   значений   и
     удостоверьтесь, что  в каждом случае поле Amount (Базовая цена)
     отображает корректное значение.









                                                                  85
                Добавление деревьев принятия решений
--------------------------------------------------------------------

     В оставшейся  части данной главы Вам предстоит добавить деревья
принятия решений  для полей  Total Price  (Итоговая цена),  Extended
Price (Увеличенная цена) и Shipping Cost (Стоимость отгрузки).


  Total Price (Итоговая цена) и Extended Price (Увеличенная цена)
--------------------------------------------------------------------

     Деревья принятия  решений для полей Total Price (Итоговая цена)
и Extended  Price (Увеличенная  цена) во  многих отношениях  подобны
дереву  принятия  решений  Amount  (Базовая  цена).  Каждое  из  них
содержит узел  вывода, который содержит имена полей и одну или более
операций.

     Дерево  принятия  решений  поля  Total  Price  (Итоговая  цена)
выражает следующую  логику: итоговая  цена заказа  равняется базовой
цене (Amount)  за вычетом  скидки  (Discount).  Узел  вывода  дерева
содержит следующее выражение:

     +Amount-Less Discount

     Дерево принятия  решений поля Extended Price (Увеличенная цена)
выражает следующую логику: Увеличенная (общая) цена заказа равняется
итоговой цене  (Total Price) плюс стоимость отгрузки (Shipping Cost)
и  налог  на  продажи  (Sales  Tax).  Узел  вывода  дерева  содержит
следующее выражение:

     +Total Price+Shipping Cost+Sales Tax

     Теперь Вам  предстоит добавить  деревья  принятия  решений  для
полей Total  Price (Итоговая  цена) и  Extended  Price  (Увеличенная
цена).

+++> Ваши дальнейшие действия:

1.   Для  добавления   дерева  принятия  решений  поля  Total  Price
     (Итоговая цена) воспользуйтесь той же самой процедурой, которая
     применялась для  дерева принятия  решений поля  Amount (Базовая
     цена).  Для   задания  имен  полей  в  блоке  диалога  Objects|
     Conclusion (Объекты|  Вывод)  применяйте  функцию  Paste  Field
     (Вклеить  поле).   Представленный  далее   рисунок   отображает
     законченное дерево  принятия решений поля Total Price (Итоговая
     цена):

     Рис.8.3 Законченное дерево принятия решений поля Total Price
(Итоговая цена):
1 - Дерево принятия решений для поля Total Price (Итоговая цена);
2 - +Базовая цена-Уменьшенная скидка

2.   Далее добавьте  дерево принятия  решений  поля  Extended  Price
     (Увеличенная  цена),   используя  тот   же  самый   метод.   На
     представленном  ниже   рисунке  показано   завершенное   дерево
     принятия решений поля Extended Price (Увеличенная цена):









                                                                  86
     Рис.8.4 Дерево принятия решений поля Extended Price
(Увеличенная цена):
1 - Дерево принятия решений для поля Extended Price (Увеличенная
цена); 2 - +Итоговая цена+Стоимость отгрузки+Налог на продажу

     Заметьте, что  Вы еще не можете протестировать деревья принятия
решений  полей   Total  Price   (Итоговая  цена)  и  Extended  Price
(Увеличенная цена).  Обоим деревьям  требуется  значение  поля  Less
Discount (Уменьшенная скидка), но Вы еще не добавили дерево принятия
решений для  поля Less  Discount (Уменьшенная скидка). Однако, Вы не
можете ввести  значение поля  Less Discount  (Уменьшенная скидка)  с
клавиатуры, поскольку оно защищено от переопределения.


  Дерево принятия решений поля Shipping Cost (Стоимость отгрузки)
--------------------------------------------------------------------

     Дерево принятия  решений  для  поля  Shipping  Cost  (Стоимость
отгрузки) является  более сложным  по сравнению  с деревом  принятия
решений поля Amount (Базовая цена). Оно включает в себя узел ветви и
три условия,  причем каждом  из них  снабжено соответствующим  узлом
вывода.  Следующий   ниже  рисунок   показывает  законченное  дерево
принятия решений:

     Рис.8.5 Законченное дерево принятия решений поля Shipping Cost
(Стоимость отгрузки):
1 - Дерево принятия решений поля Shipping Cost (Стоимость отгрузки);
2 - Метод отгрузки; 3 - Коммерческие перевозки; 4 - +1*Количество;
5 - Обычной всемирной почтовой службой; 6 - +2.5*Количество; 7 -
Экспресс службой с 2-х дневной доставкой; 8 - +8*Количество

     Дерево принятия решений поля Shipping Cost (Стоимость отгрузки)
представляет следующую логику:

-    Если значением  поля Shipping  Method (Метод отгрузки) является
     Commercial Carrier  (Коммерческие перевозки), то значением поля
     Shipping  Cost  (Стоимость  отгрузки)  является  значение  поля
     Quantity (Количество), умноженное на $1.00.

-    Если значением  поля Shipping  Method (Метод отгрузки) является
     Regular UPS  (Обычной всемирной почтовой службой), то значением
     поля Shipping  Cost (Стоимость отгрузки) является значение поля
     Quantity (Количество), умноженное на $2.50.

-    Если значением  поля Shipping  Method (Метод отгрузки) является
     2-day Express  (Экспресс службой  с 2-х  дневной доставкой), то
     значением поля  Shipping  Cost  (Стоимость  отгрузки)  является
     значение поля Quantity (Количество), умноженное на $8.00.

     Заметьте, что  условными выражениями  являются  константы.  Они                                                     _________
состоят из  одиночных значений,  которые не  изменяются:  Commercial
Carrier (Коммерческие  перевозки), Regular  UPS  (Обычной  всемирной
почтовой службой)  и 2-day  Express (Экспресс  службой с 2-х дневной
доставкой). Все выводы являются выражениями, которые включают в себя
имя поля, числовое значение и знак операции.

     Поскольку дерево принятия решений поля Shipping Cost (Стоимость
отгрузки)  содержит   как  условия,  так  и  выводы,  Вам  предстоит







                                                                  87
воспользоваться  для  добавления  дерева  блоками  диалога  Objects|
Condition (Объекты| Условие) и Objects| Conclusion (Объекты| Вывод).

     Сейчас Вам  предстоит добавить  дерево  принятия  решений  поля
Shipping Cost  (Стоимость отгрузки).  Начать следует с описания узла
ветви и первого узла вывода.

+++> Ваши дальнейшие действия:

1.   Если инструментальное  окно дерева  (Tree Tool) еще не открыто,
     откройте его  с помощью  команды Tools|  Tree  (Инструментарий|
     Дерево).

2.   С  помощью   команды  Tree|   Select  (Дерево|   Селектировать)
     селектируйте поле  Shipping Cost  (Стоимость  отгрузки),  затем
     выберите кнопку OK.

3.   Выберите команду Objects| Branch (Объекты| Ветвь) и вклейте имя
     поля Shipping  Method (Метод  отгрузки) из  списка имен  полей,
     затем выберите кнопку OK.

4.   Выберите  команду  Objects|  Conclusion  (Объекты|  Вывод).  На
     экране появляется  блок диалога  Objects| Conclusion  (Объекты|
     Вывод).

5.   В качестве  условие введите  Commercial  Carrier  (Коммерческие
     перевозки) и  выберите кнопку  OK. На  экране  появляется  блок
     диалога Objects| Conclusion (Объекты| Вывод).

6.   Введите +1*  а затем,  используя функцию Paste Field, вклейте в
     выражение  имя   поля  Quantity   (Количество).  Заметьте,  что
     начальный знак  "плюс" является  необязательным, поскольку  при
     наличии 1  в  качестве  первого  символа  система  ObjectVision
     рассматривает это выражение как математическую операцию.

7.   Нажмите клавишу Enter или выберите кнопку OK.

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

     Рис.8.6 Первые узлы в дереве принятия решений поля Shipping
Cost (Стоимость отгрузки):
1 - Дерево принятия решений поля Shipping Cost (Стоимость отгрузки);
2 - Метод отгрузки; 3 - Коммерческие перевозки; 4 - +1*Количество

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

+++> Ваши дальнейшие действия:

1.   При условии,  что попрежнему селектирован узел вывода, выберите
     команду Edit| Copy (Редактировать| Копировать).

2.   Выберите команду Edit| Paste (Редактировать| Вклеить).

3.   В  качестве  условия  поля  Shipping  Method  (Метод  отгрузки)
     введите с  клавиатуры Regular  UPS (Обычной  всемирной почтовой
     службой) и  нажмите клавишу  Enter. Это  новое условие  и копия
     первого узла вывода вклеиваются в дерево.






                                                                  88
4.   Выберите команду Properties| Conclusion (Свойства| Вывод).

5.   Удалите число  1 в  выражении (оставив знак +) и введите 2.5 на
     его место. Затем нажмите клавишу Enter или выберите кнопку OK.

6.   Вновь выберите команду Edit| Paste (Редактировать| Вклеить).

7.   В  качестве  условия  поля  Shipping  Method  (Метод  отгрузки)
     введите с  клавиатуры '2-day  Express ('Экспресс  службой с 2-х
     дневной  доставкой)   и  нажмите   клавишу  Enter.   Непременно
     предварите это  условие апострофом,  иначе будет  создано новое
     поле, а дерево принятия решений будет функционировать неверно.

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

8.   Выберите  команду  Properties|  Conclusion  (Свойства|  Вывод),
     замените 1 в выражении на 8 и выберите затем кнопку OK.

     Дерево принятия решений поля Shipping Cost (Стоимость отгрузки)
     завершено.  Добавленное   Вами  дерево  должно  соответствовать
     представленному на рисунке 8.5.

     Закройте инструментальное  окно дерева  (Tree Tool) и сохраните
результаты Вашей  работы.  Проверьте  свое  дерево  путем  изменения
значения поля  Quantity (Количество)  и посмотрите,  какое  значение
присваивается полю Shipping Method (Метод отгрузки).


                Использование @-функций в выражениях
--------------------------------------------------------------------

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

-    функции связи;

-    математические функции;

-    строковые функции;

-    логические функции;

-    функции даты и времени;

-    различные другие функции.

     В  главе  8  "Справочника  по  системе  ObjectVision"  подробно
описывается использование этих функций.

     В данной части Учебника Вам предстоит добавить деревья принятия
решений, в которых используются функции @NOW, @INT и @ROUND.









                                                                  89
                             Синтаксис
--------------------------------------------------------------------

     Все функции имеют один и тот же типовой синтаксис:

     Имя-функции (аргумент1, аргумент2, ...)     ___________  _________  _________

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

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

     Аргументы  для   функции  задаются   внутри  круглых  скобок  и
разделяются с  помощью символа-разделителя элементов списка, который
описан в  блоке International  (Международная поддержка) управляющей
панели (Control Panel) (обычно этим разделителем является запятая).

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

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

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


                    Функции @NOW, @INT и @ROUND
--------------------------------------------------------------------

     Выражения в  деревьях принятия  решений полей  Order Date (Дата
заказа), Less  Discount (Уменьшенная  скидка) и  Sales Tax (Налог на
продажи) используют функции @NOW, @INT и @ROUND.

     Функция  @NOW  возвращает  текущее  значение  даты  и  времени,
считанных из  таймера компьютера,  на котором  функционирует система
ObjectVision. Это значение имеет целую часть и дробную часть:

-    целая часть  представляет даты  с 1  Января 1800  года и  до 31
     Декабря 2099 года включительно. Его значение может находиться в
     диапазоне от -36522 до 73050 и вычисляется как число дней до 30
     Декабря 1899  года или  после него (сам это день имеет значение
     0).

-    дробная часть  этого значения  представляет время  с  12:00  по
     полуночи до  11:59:59 после  полудня и  вычисляется как дробная
     часть от 24 часового дня.








                                                                  90
     Функция @NOW  изменяет значения  только  тогда,  когда  система
ObjectVision вычисляет  ее (например,  когда открывается  прикладная
задача или  когда вычисляется  значение поля,  которое обращается  в
своем дереве принятия решений к функции @NOW).

     Функция @INT  отсекает дробную часть аргумента, превращая его в
целое. Функция  @ROUND округляет свой первый аргумент до числа цифр,
указанных во втором аргументе.


       Дерево принятия решений поля Order Date (Дата заказа)
--------------------------------------------------------------------

     Дерево принятия  решений поля  Order Date (Дата заказа) состоит
из одного узла вывода, который содержит следующее выражение:

     @INT(@NOW)

     Это выражение  начинается с имени функции @INT, непосредственно
за которым  следует  левая  круглая  скобка.  @NOW  является  другой
функцией, и  здесь она  используется в  качестве  аргумента  функции
@INT.  Непосредственно  за  функцией  @NOW  следует  правая  круглая
скобка, поскольку  функция @NOW  не имеет  аргументов. Эта последняя
правая скобка завершает список аргументов функции @INT.

     Данное  выражение   указывает  системе   ObjectVision  получить
текущее значение  даты и  времени из  таймера  компьютера,  а  затем
отбросить дробную  часть, превратив  его в  целое  число.  Поскольку
дробная часть  значения, представляющая  время,  отбрасывается,  эта
формула вычисляет текущую дату, отображаемую системой ObjectVision в
поле Order Date (Дата заказа).

     Блоки диалога  Condition (Условие)  и  Conclusion  (Вывод)имеют
кнопку Paste Function (Вклеить функцию), подобную кнопке Paste Field
(Вклеить поле),  которую Вам  уже приходилось использовать. Когда Вы
выбираете кнопку  Paste Function  (Вклеить функцию), Вы селектируете
необходимую  функцию   из  списка.  Вы  можете  также  селектировать
операцию Paste  Argument (Вклеить  аргумент), чтобы  получить шаблон
списка аргументов  функции, вклеенный  в выражение  с  помощью  этой
операции.

+++> Ваши дальнейшие действия:

1.   Селектируйте поле  Order Date  (Дата  заказа),  затем  выберите
     команду Tools| Tree (Инструментарий| Дерево).

2.   Выберите команду Objects| Conclusion (Объекты| Вывод).

3.   Выберите кнопку  Paste Function  (Вклеить функцию) и из списка,
     который появляется  в блоке  диалога  Paste  Function  (Вклеить
     функцию), выберите  функцию  INT.  Выражение  в  блоке  диалога
     Objects| Conclusion  (Объекты| Вывод) будет выглядеть следующим
     образом:

     @INT()

4.   Вновь  выберите  кнопку  Paste  Function  (Вклеить  функцию)  и
     выберите функцию NOW. Теперь выражение завершено:







                                                                  91
     @INT(@NOW)

5.   Нажмите клавишу  Enter или  выберите кнопку  OK, чтобы  закрыть
     этот блок диалога.

6.   Закройте инструментальное  окно дерева  (Tree Tool).  Заметьте,
     что сегодняшняя  дата отображается  в  поле  Order  Date  (Дата
     заказа).

     Значение поля  Order Date  (Дата заказа) не будет изменяться до
тех пор, пока система ObjectVision не вычислит его повторно. Если бы
Ваша работа  над прикладной  задачей затянулась  бы за полночь, но в
процессе  этой   работы  у   системы   ObjectVision   не   возникало
необходимости   вычислить   функцию   @NOW   (например,   вследствие
перезагрузки  прикладной  задачи  или  путем  использования  команды
Field| Calculate  (Поле| Вычислить)),  то Вы  увидели бы,  что  поле
Order Date  (Дата заказа)  попрежнему содержит  то значение, которое
оно имеет в настоящий момент.


Дерево принятия решений для поля Less Discount (Уменьшенная скидка)
--------------------------------------------------------------------

     Дерево принятия  решений для  поля Less  Discount  (Уменьшенная
скидка) состоит  из одного  узла вывода,  который содержит следующее
выражение:

     @ROUND(Amount*Discount,2)

     Функция @ROUND использует следующий синтаксис:

     @ROUND(X,Num),

     где X  представляет собой  числовое выражение,  которое  должно
округляться, а  Num указывает,  как должно  производиться округление
числа X.  Если Num  больше нуля, то X округляется до Num цифр справа
от десятичной  точки. (Подробно  функция @ROUND  описана в  главе  8
"Справочника по системе ObjectVision".)

     В выражении  поля Less Discount (Уменьшенная скидка) X является
значением, которое  получается в  результате умножения значения поля
Amount (Базовая  цена) на  значение поля Discount (Скидка). Значение
Num равно 2.

     Данное  выражение   указывает  системе  ObjectVision  вычислить
значение поля  Less Discount  (Уменьшенная скидка)  путем  умножения
значения поля  Amount  (Базовая  цена)  на  значение  поля  Discount
(Скидка) с  последующим округлением  результата до  двух  десятичных
знаков.

     Теперь Вам  предстоит воспользоваться  вариантами  Paste  Field
(Вклеить поле),  Paste Function  (Вклеить функцию) и Paste Arguments
(Вклеить аргументы) при добавлении дерева принятия решений поля Less
Discount (Уменьшенная скидка).

+++> Ваши дальнейшие действия:

1.   Откройте   инструментальное   окно   дерева   (Tree   Tool)   и
     селектируйте поле Less Discount (Уменьшенная скидка).






                                                                  92
2.   Выберите команду Objects| Conclusion (Объекты| Вывод).

3.   Выберите кнопку  Paste Function  (Вклеить функцию)  и  выделите
     световым  маркером   имя  функции  ROUND  (Округлить),  которое
     содержится  в  списке  выбора  появляющегося  на  экране  блока
     диалога Paste Function (Вклеить функцию). (Но пока не нажимайте
     клавишу Enter и не выбирайте кнопку OK.)

4.   Выберите блок диалога Paste Arguments (Вклеить аргументы).

5.   Выберите кнопку OK. Имя функции @ROUND и ее имена ее аргументов
     вклеиваются в  выражение.  Теперь  выражение  в  блоке  диалога
     должно выглядеть следующим образом:

     @ROUND(X,Num)

6.   Выберите кнопку  Paste Field  (Вклеить поле),  селектируйте имя
     поля Amount  (Базовая цена)  и выберите  кнопку  OK.  Имя  поля
     Amount  (Базовая   цена)  заменяет  собой  выделенный  световым
     маркером аргумент X.

7.   Введите знак операции умножения (*).

8.   Вновь выберите  кнопку Paste Field (Вклеить поле), селектируйте
     поле Discount (Скидка) и выберите кнопку OK.

9.   Удалите слово  Num и  замените его  числом 2.  Теперь выражение
     завершено:

     @ROUND(Amount*Discount,2)

10.  Нажмите клавишу  Enter или  выберите кнопку  OK, чтобы  закрыть
     блок диалога Objects| Conclusion (Объекты| Вывод).

11.  Закройте инструментальное  окно дерева (Tree Tool) путем выбора
     команды Tree|  Close  Tool  (Дерево|  Закрыть  инструментальное
     окно).

12.  Протестируйте дерево  путем изменения  значений полей  Quantity
     (Количество)  и  Discount  (Скидка).  Сейчас  Вы  можете  также
     протестировать  дерево   принятия  решений   поля  Total  Price
     (Итоговая цена).  Вы сможете  проверить  дерево  поля  Extended
     Price (Увеличенная цена) после добавления дерева для поля Sales
     Tax (Налог на продажу).


     Дерево принятия решений поля Sales Tax (Налог на продажу)
--------------------------------------------------------------------

     Представленный далее рисунок показывает дерево принятия решений
поля Sales  Tax (Налог  на продажу) -  более сложного по сравнению с
деревьями полей Order Date (Дата заказа) или Discount (Скидка).

     Рис.8.7 Дерево принятия решений поля Sales Tax (Налог на
продажу):
1 - дерево принятия решений поля Sales Tax (Налог на продажу); 2 -
Клиент из штата Техас; 3 - Да; 4 - Клиент из Остина; 5 - Нет








                                                                  93
     Заметьте, что это дерево принятия решений имеет два узла ветвей
и три  узла вывода.  Кроме того,  оно содержит также два новых поля,
Texas Customer  (Клиент из штата Техас) и Austin Customer (Клиент из
Остина). Вы  добавляете эти  поля при описании узлов ветвей. Система
ObjectVision для  запроса значений этих полей воспользуется черновой
формой (Scratchpad  form), поскольку  они не  появляются ни на одной
форме.

+++> Ваши дальнейшие действия:

1.   Выберите  команду   Tools|   Tree   (Инструментарий|   Дерево),
     селектируйте поле  Sales Tax (Налог на продажу), затем выберите
     кнопку OK.

2.   Выберите команду Objects| Branch (Объекты| Ветвь).

3.   Селектируйте из  появившегося на экране списка вариант , затем выберите кнопку OK.

4.   В качестве  имени поля  введите Texas Customer (Клиент из штата
     Техас) и выберите кнопку OK.

5.   Вновь выберите команду Objects| Branch (Объекты| Ветвь).

6.   В качестве  условия для  поля Texas  Customer (Клиент  из штата
     Техас) введите Yes (Да) и выберите кнопку OK.

7.   В качестве  имени ветви  добавьте еще  одно новое  поле, Austin
     Customer (Клиент из Остина) и выберите кнопку OK.

8.   Выберите команду Objects| Conclusion (Объекты| Вывод).

9.   В качестве  условия поля  Austin Customer  (Клиент  из  Остина)
     введите Yes (Да) и нажмите клавишу Enter.

10.  В качестве вывода для поля Sales Tax (Налог на продажу) введите
     следующее выражение:

     @ROUND(Total Price*8.5%,2)

11.  Выберите кнопку OK.

     Теперь добавьте второй вывод:

+++> Ваши дальнейшие действия:

1.   Выберите команду Objects| Conclusion (Объекты| Вывод).

2.   В качестве  условия поля  Austin Customer  (Клиент  из  Остина)
     введите No (Нет) и нажмите клавишу Enter.

3.   В качестве  вывода поля  Sales Tax  (Налог на  продажу) введите
     следующее выражение:

     @ROUND(Total Price*6.5%,2)

4.   Выберите кнопку OK.








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

Теперь Вам предстоит добавить еще один вывод к дереву:

+++> Ваши дальнейшие действия:

1.   Селектируйте ветвь Austin Customer (Клиент из Остина).

2.   Выберите команду Objects| Conclusion (Объекты| Вывод).

3.   В качестве  условия поля Texas Customer (Клиент из штата Техас)
     введите No (Нет) и выберите кнопку OK.

4.   В качестве  вывода поля  Sales Tax (Налог на продажу) введите 0
     (ноль) и выберите кнопку OK.

5.   Закройте   инструментальное   окно   дерева   (Tree   Tool)   и
     протестируйте дерево  поля Sales  Tax (Налог  на продажу) путем
     варьирования значений  полей Texas  Customer (Клиент  из  штата
     Техас), Austin  Customer  (Клиент  из  Остина)  и  Total  Price
     (Итоговая цена).  Воспользуйтесь командой  Field|  Find  (Поле|
     Найти) для селектирования полей Texas Customer (Клиент из штата
     Техас) и Austin Customer (Клиент из Остина).


               Проверка допустимости вводимых данных
--------------------------------------------------------------------

     Вы можете совместно использовать функции @MESSAGE (Сообщение) и
@BLANK (пустой)  для проверки  достоверности тех  полей,  в  которых
требуется ввод информации от пользователя. Создавать дерево принятия
решений следует  таким образом,  чтобы функция  @MESSAGE (Сообщение)
отображала сообщение  при  вводе  пользователем  неверного  значения
(проверку которого  производит дерево  принятия решений),  а функция
@BLANK (пустой)  удаляла  введенное  пользователем  значение,  чтобы
пользователь мог ввести новое.

     В данной  части Учебника  Вам предстоит создать дерево принятия
решений для  поля Quantity  (Количество).  Логика  принятия  решений
дерева  указывает   системе   ObjectVision   отобразить   поясняющее
сообщение и  удалить введенное  в поле  значение, если  это значение
равно нулю или меньше его.

+++> Ваши дальнейшие действия:

1.   В прикладной  задаче  Myorder  откройте  инструментальное  окно
     дерева (Tree  Tool), селектируйте поле Quantity (Количество), а
     затем выберите кнопку OK.

2.   Выберите команду  Objects| Branch  (Объекты| Ветвь), в качестве
     узла ветви  выберите  поле  Quantity  (Количество)  и  выберите
     кнопку OK.

3.   Выберите команду Objects| Conclusion (Объекты| Вывод).

4.   В качестве  условия поля  Quantity (Количество)  введите <=0  и
     нажмите клавишу Enter.







                                                                  95
5.   В  качестве   вывода   поля   Quantity   (Количество)   введите
     представленное ниже  значение. Заметьте,  что перед  словом  is
     (является) стоит  пробел. Кроме  того, обратите внимание на то,
     что текст  функции @MESSAGE  (Сообщение) должен  находиться  на                                              ______________________
     единственной строке,  иначе Вы получите сообщение об ошибке (не     ___________________
     нажимайте комбинацию  клавиш Ctrl+Enter, чтобы перейти на новую
     строку до  тех пор,  пока Вы  не будете  готовы ввести  функцию
     @BLANK (Пустой)).


@MESSAGE(Quantity&" is not a legal value for Quantity.
         Enter a positive value.")
@BLANK

@MESSAGE(Quantity&" не является допустимым значением поля Quantity.
         Введите положительное значение.")
@BLANK
6.   Выберите кнопку OK.

     Оператор &  в первом  выводе выполняет  конкатенацию  (склейку)
текста. В  период заполнения  формы система  ObjectVision отображает
текущее значение  поля  Quantity  (Количество)  (неверное  значение,
введенное  только   что  пользователем),  а  затем  остальную  часть
сообщения, как показано на следующем рисунке.

     Рис.8.8 Сообщение об ошибке для неверных значений:
1 - -1 для поля Quantity (Количество) является неверным значением.
Введите положительное значение; 2 - Выполнить

7.   Вставьте другой  вывод с  условием Otherwise  (В ином случае) и
     выражением вывода +Quantity (+Количество).

8.   Возвратитесь в  режим заполнения  формы и  протестируйте дерево
     принятия решений  путем ввода  0 или  отрицательного значения в
     поле Quantity (Количество).

9.   Чтобы продолжить  работу, выберите  кнопку OK  в  блоке  выдачи
     сообщения.  Функция   @BLANK  (пустой)   удаляет  отрицательное
     значение из  поля Quantity (Количество), а система ObjectVision
     выделяет поле световым маркером для ввода данных. Теперь в этом
     поле Вы можете задать новое значение.


    Обработка дерева принятия решений поля Quantity (Количество)
--------------------------------------------------------------------

     Когда системе  ObjectVision необходимо  получить значение  поля
Quantity  (Количество),   выполняется  следующая  последовательность
действий:

1.   Поле имеет  связанное с  ним дерево  принятия решений,  поэтому
     система ObjectVision  предпринимает  попытку  обработки  дерева
     принятия решений. Поскольку первым узлом является узел ветви со
     значением   Quantity    (Количество),    ObjectVision    просит
     пользователя ввести значение поля Quantity (Количество).

2.   Когда пользователь  вводит значение поля Quantity (Количество),
     система ObjectVision проверяет первое условие в дереве.







                                                                  96
3.   Если пользователь  ввел значение  большее нуля,  первое условие
     является неверным,  и  система  ObjectVision  проверяет  второе
     условие, Otherwise  (В ином  случае). Условие Otherwise (В ином
     случае)  всегда   является   истинным,   поэтому   ObjectVision
     осуществляет вывод,  +Quantity (+Количество),  задавая значение
     поля равным введенному пользователем значению.

     Если пользователь  ввел значение  равное нулю или меньшее нуля,
     первое  условие   является  истинным,  и  система  ObjectVision
     обрабатывает первые  два вывода.  Сначала она выполняет функцию
     @MESSAGE (Сообщение)  и отображает заданный Вами текст, а затем
     выполняет  функцию   @BLANK  (Пустой)   и   удаляет   введенное
     пользователем в  поле Quantity  (Количество)  значение.  Теперь
     значение в  поле  отсутствует,  и  система  ObjectVision  вновь
     проходит  по   дереву,  начиная   с  шага  1  (то  есть,  вновь
     запрашивает у пользователя значение).

     Теперь Вы  завершили работу  над текущей  частью Учебника. Если
сейчас Вы хотите покинуть систему ObjectVision, то сначала сохраните
свою форму.













































                                                                  97
             ГЛАВА 9. УСТАНОВЛЕНИЕ СВЯЗИ С БАЗОЙ ДАННЫХ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

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

     Вам предстоит выполнить следующие процедуры:

-    Создать новую  таблицу СУБД  Paradox и установить с нею связь с
     помощью блока диалога Tools| Link (Инструментарий| Связь). В то
     же самое  время Вы  автоматически создадите  связи считывания и
     записи между  новой таблицей Paradox и полями прикладной задачи
     системы ObjectVision.

-    Добавить деревья принятия решений к кнопочным полям.


                           Внешние связи
--------------------------------------------------------------------

     Система ObjectVision использует внешние связи для сохранения на
диске и извлечения с диска той информации, которая была введена Вами
в  формы.   Система  ObjectVision   считывает  данные  из  файлов  и
записывает их в файлы. При этом могут использоваться файлы в формате
ASCII, таблицы СУБД Paradox, файлы, совместимые по формату с dBASE и
файлы  библиотеки   Btrieve.  Кроме   того,   система   ObjectVision
поддерживает протокол  динамического обмена  данными  (Dynamic  Data
Exchange (DDE))  среды Windows.  Используя  внешние  связи,  Вы  без
затруднений можете  воспользоваться другой  программой для обработки
той информации, которую Вы ввели с помощью прикладной задачи системы
ObjectVision.

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

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

     Существует два  способа создания  связи с  прикладными задачами
системы ObjectVision:  Вы можете  воспользоваться либо  @-функциями,
либо  блоком  диалога  Tools|  Links  (Инструментарий|  Связи).  Оба
способа создания связей эквивалентны, но в некоторых случаях один из
них более  удобен по  сравнению с  другим. Использовать блок диалога
Tools| Links  (Инструментарий| Связи)  обычно проще,  поскольку  нет
необходимости запоминать  синтаксис, необходимый для ввода оператора






                                                                  98
с  @-функцией.   @-функции  являются   более  развитым  средством  и
необходимы лишь  при создании  более сложных  связей. В предлагаемой
главе Вы  будете пользоваться  только блоком  диалога  Tools|  Links
(Инструментарий| Связи).

     Для получения  исчерпывающей информации  по пяти  типам внешних
связей обращайтесь к "Руководству по системе ObjectVision".


                   Создание таблицы СУБД Paradox
--------------------------------------------------------------------

     С помощью  блока диалога  Links (Связи) Вы можете создать новую
таблицу СУБД  Paradox, находясь  внутри  системы  ObjectVision;  для
этого не нужно располагать самой СУБД Paradox.

     Выполняя описанные  далее действия,  Вы свяжете свою прикладную
задачу с  новой таблицей  СУБД Paradox.  Если  Вы  покинули  систему
ObjectVision, перезапустите  программу и  откройте прикладную задачу
Myorder.

+++> Ваши дальнейшие действия:

1.   Выберите  команду  Tools|  Links  (Инструментарий|  Связи).  На
     экране появится блок диалога, представленный на рисунке ниже:

     Рис.9.1 Блок диалога Tools| Links (Инструментарий| Связи):
1 - Связи; 2 - Игнорировать дистанционные запросы; 3 - Выполнить;
4 - Создать; 5 - Модифицировать; 6 - Удалить

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

     Рис.9.2 Блок диалога Links (Связи):
1 - Тип связи; 2 - Файл в формате ASCII; 3 - СУБД Paradox; 4 - СУБД
dBASE; 5 - библиотека Btrieve; 6 - протокол динамического обмена
данными; 7 - Выполнить; 8 - Отменить

3.   Выберите кнопку  OK. На  экране появляется  блок  диалога  Link
     Type| Paradox (Тип связи| СУБД Paradox).

     Рис.9.3 Блок диалога Paradox Links (Связи с СУБД Paradox):
1 - Имя связи; 2 - Имя таблицы СУБД Paradox; 3 - Имя поля вторичного
индекса; 4 - Ближайшая запись; 5 - Имя поля; 6 - Связь по чтению;
7 - Связь по записи; 8 - Выполнить; 9 - Отменить; 10 - Соединить;
11 - Разъединить

     Вам предстоит  создать связь  с новой таблицей СУБД Paradox для
     того, чтобы  занести в  нее значения,  введенные в  форму Order
     (Заказ). Поскольку  каждая прикладная  задача  может  содержать
     несколько связей, каждая связь должна иметь свое имя.

4.   Введите в поле Link Name (Имя связи) строку Paradox Link (Связь
     с СУБД Paradox), а затем нажмите клавишу Tab.

5.   В поле  Paradox Table  Name (Имя  таблицы СУБД Paradox) введите
     слово Myorder, а затем нажмите клавишу Tab.







                                                                  99
     Нет необходимости  вводить принятое  в СУБД  Paradox расширение
имени .DB,  поскольку система  ObjectVision уже  знает, что она ищет
таблицу СУБД Paradox.

     Система  ObjectVision   пытается  найти  таблицу  MYORDER.DB  в
текущей директории.  Поскольку таблица  еще не создана, ObjectVision
выдает запрос  о том,  хотите ли  Вы создать  таблицу  или  отменить
операцию.

     +---------------------------------------------------------+
      Примечание:     |                                                         |
      Если этот  урок уже  выполнялся  каким-либо  лицом,  то,     |                                                         |
      возможно,  система   ObjectVision   найдет   в   текущей     |                                                         |
      директории файл MYORDER.DB и заполнит столбец Field Name     |                                                         |
      (Имя  поля)  значениями  из  существующего  файла.  Если     |                                                         |
      возникает такая  ситуация, то введите другое имя таблицы     |                                                         |
      СУБД Paradox  (например, ORDER1.DB или ORDER2.DB), чтобы     |                                                         |
      продолжить работу над уроком.     |                                                         |
     +---------------------------------------------------------+

6.   Выберите кнопку OK, чтобы создать новую таблицу MYORDER.DB.

     Система  ObjectVision   создает  новую  таблицу  СУБД  Paradox,
используя в  качестве шаблона  активную форму (форму Order (Заказ)).
Поля появляются  в столбце  Field Name  (Имя поля)  в том  же  самом
порядке, в  котором они  расположены в  форме  Order  (Заказ).  Блок
диалога Paradox  Links  (Связи  с  СУБД  Paradox)  должен  выглядеть
следующим образом:

     Рис.9.4 Блок диалога Paradox Links (Связи с СУБД Paradox):
1 - Имя связи; 2 - Имя таблицы СУБД Paradox; 3 - Имя поля вторичного
индекса; 4 - Ближайшая запись; 5 - Имя поля; 6 - Связь по чтению;
7 - Связь по записи; 8 - Выполнить; 9 - Отменить; 10 - Соединить;
11 - Разъединить

     Если  какое-либо  из  имен  полей  системы  ObjectVision  имеет
слишком большую  длину, либо  содержит символы,  не допускаемые СУБД
Paradox в составе имени поля, то это имя будет усечено.

     Система ObjectVision  создала таблицу  СУБД Paradox  с теми  же
самыми именами  полей, которые  имеются в  форме. Тип и размер полей
СУБД Paradox  взят из  свойств поле  в системе ObjectVision. Система
ObjectVision создала  также первичный  индекс для новой таблицы СУБД
Paradox, используя для этого первое поле в форме, Name (Имя).

     В дополнение  к столбцу  Field  Name  (Имя  поля)  имена  полей
системы ObjectVision  появляются в  столбцах  Read  link  (Связь  по
чтению) и  Write link  (Связь по  записи). Это  означает, что каждое
поле в  форме ObjectVision связано как по операции считывания, так и
по операции  записи с  полем с  тем же  самым именем  в  только  что
созданной таблице  СУБД Paradox.  Система ObjectVision автоматически
создает  связи   при  создании   таблицы  СУБД  Paradox.  Вы  можете
воспользоваться   кнопками    Connect   (Соединить)   и   Disconnect
(Разъединить), чтобы  запретить считывание  или запись  по отдельным
полям, но в данном примере Вы оставите их в их первоначальном виде.

7.   Выберите кнопку OK, чтобы сохранить заданную связь.








                                                                 100
     Поскольку эта  связь новая, появляется блок диалога, появляется
блок  диалога,  в  котором  запрашивается,  хотите  ли  Вы  добавить
соответствующие кнопки  для новой связи СУБД Paradox. Данная функция
может добавить  к  Вашей  форме  кнопочные  поля  Next  (Следующий),
Previous (Предыдущий),  Clear (Стереть),  Delete (Удалить)  и  Enter
(Ввести). Однако,  в данном  уроке Вам  предстоит создать эти кнопки
вручную, чтобы Вы могли узнать, как они работают.

8.   Выберите кнопку No (Нет), затем выберите кнопку OK, чтобы выйти
     из блока диалога Tools| Link (Инструментарий| Связь).

     Теперь Ваша  прикладная задача связана с таблицей СУБД Paradox.
В следующем  разделе Вам  предстоит создать деревья принятия решений
для кнопочных полей в форме Sales Order (Заказ на покупку), чтобы Вы
могли заносить  в файл данных и извлекать из файла данных информацию
с помощью созданной Вами связи.


   Использование связей с кнопочными полями и деревьями принятия
                              решений
--------------------------------------------------------------------

     В текущем  разделе  Вы  добавите  деревья  принятия  решений  к
кнопочным полям  Save to  Database (Сохранить  в базе  данных), Next
(Следующий) и  Previous (Предыдущий).  Эти деревья  принятия решений
будут  содержать   простые  @-функции,  которые  управляют  внешними
связями. Они не изменяют значения каких-либо полей в форме.

+++> Ваши дальнейшие действия:

1.   Выберите команду Tools| Tree (Инструментарий| Дерево).

2.   Выберите  команду   Tree|   Select   (Дерево|   Селектировать),
     селектируйте поле  Save to  Database (Сохранить в базе данных),
     затем нажмите клавишу Enter.

     На экране  появляется дерево  принятия решений для поля Save to
     Database (Сохранить  в базе  данных), отображающее  пустой узел
     ветви.

3.   Выберите команду Objects| Conclusion (Объекты| Вывод).

4.   Когда на  экране появляется  блок диалога  Conclusion  (Вывод),
     выберите  кнопку   Paste   Function   (Вклеить   функцию).   Из
     появляющегося списка функций выберите функцию STORE (занести на
     диск).

5.   Внутри круглых  скобок введите  строку "Paradox Link" ("Связь с
     СУБД Paradox"). Выражение должно выглядеть следующим образом:

     @STORE("Paradox Link")

6.   Нажмите клавишу Enter, чтобы сохранить вывод.

     Когда Вы  нажимаете это  кнопочное  поле  в  режиме  заполнения
формы, функция  @STORE сохраняет  на диске  значения в текущей форме
так,  как  это  задано  именем  связи,  введенной  Вами  в  качестве
аргумента.







                                                                 101
     Рис.9.5 Дерево принятия решений для поля Save to Database
(Сохранить в базе данных):
1 - Дерево принятия решений для поля Save to Database (Сохранить в
базе данных)

     Теперь Вам  предстоит повторить эту процедуру и воспользоваться
функциями @NEXT  (Следующий) и @PREVIOUS (Предыдущий), чтобы создать
деревья принятия  решений для  кнопочных полей  NEXT  (Следующий)  и
PREVIOUS (Предыдущий).

7.   Выберите команду  Tree| Select  (Дерево| Селектировать),  чтобы
     открыть дерево  принятия решений  для поля  NEXT (Следующий)  и
     добавьте следующий узел вывода:

     @NEXT("Paradox Link")

     Функция  @NEXT   (Следующий)  указывает   системе  ObjectVision
     удалить  данные  из  всех  форм  прикладной  задачи  и  считать
     информацию из  следующей записи  в  базе  данных.  Эта  функция
     импортирует информацию  в соответствии  со связью,  которую  Вы
     ввели в качестве аргумента.

8.   Выберите команду  Tree| Select  (Дерево| Селектировать),  чтобы
     открыть дерево  принятия решений для поля Previous (Предыдущий)
     и добавьте следующий узел вывода:

     @PREVIOUS("Paradox Link")

     Функция @PREVIOUS  (Предыдущий) указывает  системе ObjectVision
     удалить  данные  из  всех  форм  прикладной  задачи  и  считать
     информацию из предыдущей записи в базе данных.

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

     Если  сейчас  Вы  собираетесь  покинуть  программу,  непременно
сохраните результаты своей работы.

























                                                                 102
       ГЛАВА 10. ВВОД ДАННЫХ ПРИ РАБОТЕ С ПРИКЛАДНОЙ ЗАДАЧЕЙ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

     Последняя  глава   Учебника  показывает,   как  работает   Ваша
прикладная  задача,   если  рассматривать   ее  работу   с   позиции
пользователя. Она  описывает базовые средства ввода данных и "ведет"
Вас через  процесс заполнения  форм в  задаче  Myorder.  В  процессе
работы поясняются различные компоненты макета формы.

     В данной главе описываются следующие возможности:

-    Перемещение по формам;

-    Основы ввода данных;

-    Проведение сравнений по принципу "а что, если";

-    Поиск существующих данных.


                          Удаление данных
--------------------------------------------------------------------

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

+++> Ваши дальнейшие действия:

1.   Убедитесь в  том, что  Вы находитесь  в режиме заполнения формы
     (статусом формы является [Goal] (Цель).

2.   Выберите команду  Edit| Clear All (Редактировать| Стереть все),
     чтобы  стереть  значения  во  всех  формах  прикладной  задачи.
     Заметьте, что  вычисляемые поля,  такие как  Order  Date  (Дата
     заказа), Item (Элемент) и Unit Price (Цена за штуку) попрежнему
     отображают  значение,   которое  определяется   соответствующим
     деревом принятия решений.

     Сейчас форма  Sales Order  (Заказ на  покупку) появляется в том
самом виде,  в котором  ее увидит пользователь, только что открывший
прикладную задачу.  Поскольку форма  Sales Order  (Заказ на покупку)
находится на  вершине стека форм, она появляется со статусом целевой
формы (Goal  form). Система  ObjectVision определяет,  какие поля  в
целевой форме должен заполнить пользователь.


              Навигация в форме (перемещение по форме)
--------------------------------------------------------------------

     Система  ObjectVision  использует  в  период  заполнения  формы
запланированный  процесс   заполнения.  Это  означает,  что  система
ObjectVision определяет  последовательность полей,  необходимых  для
заполнения данных в прикладной задаче, запрашивая ввод данных только
в те  поля, которым  требуются значения.  Она  пропускает  те  поля,
значения которых вычисляются при помощи деревьев принятия решений. В
случае необходимости  система ObjectVision будет временно отображать
новую форму,  чтобы получить  информацию, которая  ей необходима для
вычисления значения в форме Goal (Цель).






                                                                 103
     Запланированный    процесс    заполнения    гарантирует,    что
пользователь заполнит  в форме все требуемые поля. Если Вы не хотите
следовать обычной  последовательности заполнения  полей,  Вы  можете
заполнять  поля   в  любом  порядке.  Команда  File|  Resume  (Файл|
Возобновить) возвращает  пользователя к  последнему пустому  полю на
исходной целевой  форме (Goal  form) так, что оставшаяся часть формы
может быть заполнена в обычном порядке.

     Далее приводится  перечень  важных  клавиш  и  команд,  которые
используются для навигации в форме (перемещению по форме):

-    Клавишей   Enter    следует   пользоваться    для    реализации
     запланированного процесс  заполнения и перемещения к следующему
     полю, в которое необходимо ввести значение;

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

-    Если Вы  прерываете запланированный  процесс заполнения  полей,
     воспользуйтесь командой File| Resume (Файл| Возобновить), чтобы
     возвратиться к той последовательности полей, которая определена
     системой ObjectVision.

-    Выберите команду  Form| Select  (Форма|  Селектировать),  чтобы
     селектировать другую форму прикладной задачи.

-    Выберите команду  Field| Find  (Поле|  Найти),  чтобы  найти  в
     прикладной задаче любое поле.


                          Заполнение формы
--------------------------------------------------------------------

     В данной части Учебника Вы начнете заполнение формы Sales Order
(Заказ на покупку), приняв от клиента заказ по телефону.


                            Прием заказа
--------------------------------------------------------------------

     Теперь Вы  готовы начать заполнение формы Sales Order (Заказ на
покупку). Пэт  Майерс (Pat  Myers) из  фирмы Stevens,  Inc., крупный
дистрибьютор (агент  по продаже)  безделушек в  городе  Остин,  штат
Техас передает  Вашей компании  свой первый  заказ. Предположим, что
клиент предоставляет  Вам информацию  по каждому полю. Заметьте, что
поле Name  (Имя), которое  находится в  верхнем  левом  углу  формы,
выделено световым маркером, что указывает на готовность к вводу Вами
некоторого значения.


                         Исправление текста                         __________________

     Перед тем,  как начать  работу, выслушайте несколько советов по
исправлению текста:








                                                                 104
-    Если Вы  допустите ошибку перед тем, как перейти к новому полю,
     Вы можете  удалить ее  с помощью  клавиши Backspace.  Вы можете
     также воспользоваться  курсорными клавишами  или  мышью,  чтобы
     установить в  нужное место  указатель,  а  затем  вставить  или
     удалить текст.  Нажатие  клавиши  Home  (В  начало)  перемещает
     указатель в начало вводимого Вами текста, а нажатие клавиши End
     перемещает указатель в конец текста.

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

-    Вы   можете   также   воспользоваться   командой   Edit|   Undo
     (Редактировать| Отменить  операцию), чтобы  отменить  последнюю
     внесенную Вами редактирующую модификацию.

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

-    Если Вы  хотите исправить  ошибку в предыдущем поле, которое Вы
     только что  покинули, при  условии, что  Вы еще  не начали ввод
     текста,  нажмите   комбинацию   клавиш   Alt+Backspace,   чтобы
     селектировать предыдущее поле и удалить его значение.

+++> Ваши дальнейшие действия:

1.   Введите Pat Myers в поле Name (Имя) и нажмите клавишу Enter.

     Система ObjectVision селектирует световым маркером поле Company
     (Компания). Заметьте,  что запланированный  процесс  заполнения
     автоматически  пропускает  поле  Order  Date  (Дата  заказа)  и
     селектирует новое поле, в которое требуется ввести значение.

2.   Введите Stevens, Inc. и нажмите клавишу Enter.

3.   В следующем  селектированном поле, Address (Адрес) введите 1214
     19th St. и нажмите клавишу Enter.

4.   В следующем  селектированном поле,  City, State and ZIP (Город,
     штат и  код почтовой  зоны) введите  Austin, TX 78751 и нажмите
     клавишу Enter.

     Следующие селектированным  полем является  Customer  Type  (Тип
     клиента). Помните,  что в  Главе 4 Вы задали подсказку для поля
     Customer Type  (Тип клиента).  Если Вы  хотите увидеть  ее,  то
     нажмите клавишу  F1 в  тот момент,  когда это  поле  попрежнему
     селектировано.

5.   Нажмите клавишу  Enter, чтобы  маркировать  кнопку  Distributor
     (Дистрибьютор) и  перейти к  следующему полю.  Символ X  в этой
     маркерной кнопке указывает, что Вы селектировали это значение.

6.   Следующим  селектированным   полем   является   поле   Quantity
     (Количество),  еще   одно  текстовое/числовое   поле.   Введите
     значение  50.   Теперь  Ваш   экранный  кадр  должен  выглядеть
     следующим образом:







                                                                 105
     Рис.10.1 Заполнение поля Quantity (Количество):
1 - Заказ на покупку (Цель); 2 - Имя; 3 - Компания; 4 - Адрес; 5 -
Город, штат и код почтовой зоны; 6 - Элемент; 7 - Метод отгрузки;
8 - Количество; 9 - Скидка; 10 - Цена за штуку; 11 - Дата заказа;
12 - Тип клиента; 13 - Дистрибьютор; 14 - Дилер; 15 - Преподаватель;
16 - Другой; 17 - Базовая цена; 18 - Уменьшенная скидка; 19 -
Итоговая цена; 20 - Налог на продажу; 21 - Следующий; 22 -
Предыдущий; 23 - Сохранить в базе данных; 24 - Стоимость отгрузки;
25 - Увеличенная цена

7&   Нажмите клавишу Enter.

     Рис.10.2 Форма Distributor Information (Информация о
дистрибьюторе):
1 - Заказ на покупку (Цель); 2 - Имя; 3 - Компания; 4 - Адрес; 5 -
Город, штат и код почтовой зоны; 6 - Информация о дистрибьюторе
(Запрос); 7 - Размер дистрибьютора; 8 - Большой/Средний; 9 -
Элемент; 10 - Метод отгрузки; 11 - Количество; 12 - Скидка; 13 -
Цена за штуку; 14 - Базовая цена; 15 - Уменьшенная скидка; 16 -
Итоговая цена; 17 - Налог на продажу; 18 - Следующий; 19 -
Предыдущий; 20 - Сохранить в базе данных; 21 - Стоимость отгрузки;
22 - Увеличенная цена

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

     Во-первых, следует отметить, что система ObjectVision вычислила
значения для  полей Amount  (Базовая цена),  Shipping Method  (Метод
отгрузки) и  Shipping Cost  (Стоимость отгрузки). Поскольку Вы ввели
значения для  всех полей,  необходимых для деревьев принятия решений
полей Amount  (Базовая цена),  Shipping Method  (Метод  отгрузки)  и
Shipping  Cost  (Стоимость  отгрузки),  система  ObjectVision  может
вычислить их значения.

     Во-вторых, появилась  форма Distributor Information (Информация
о дистрибьюторе).

     Далее Вам  предстоит заполнить  форму  Distributor  Information
(Информация о  дистрибьюторе) и  две черновых  формы. Кроме того, Вы
занесете также  введенные в прикладной задаче значения в базу данных
ORDER.DB.


                      Завершение ввода заказа
--------------------------------------------------------------------

     Когда Вы  создавали дерево  принятия решений  для поля Discount
(Скидка), одним  из условий  было  значение  поля  Distributor  Size
(Размер дистрибьютора).  Поскольку Вы  не заполнили поле Distributor
Size (Размер  дистрибьютора), система  ObjectVision открывает  форму
Distributor Information  (Информация о  дистрибьюторе) и  просит Вас
ввести какое-либо  значение. Заметьте,  что статусом  формы является
[Prompt] (Запрос).  Рисунок 10.2 показывает, как теперь выглядит Ваш
экранный кадр  (с тем  исключением, что  дата на  Вашей форме  будет
другой).

     Форма  Distributor  Information  (Информация  о  дистрибьюторе)
содержит три поля: Name (Имя), Company (Компания) и Distributor Size






                                                                 106
(Размер дистрибьютора).  Заметьте, что  поля Name  (Имя)  и  Company
(Компания) уже  содержат значения. Вы уже заполнили эти поля в форме
Sales Order (Заказ на покупку).

+++> Ваши дальнейшие действия:

1.   Нажмите клавишу  Enter, чтобы  выбрать вариант large (большой),
     либо нажмите на него мышью.

     Теперь система  ObjectVision может вычислить значения для полей
Discount (Скидка),  Less Discount (Уменьшенная скидка) и Total Price
(Итоговая цена).

     Теперь на  экране появляется  черновая форма,  что показано  на
рисунке ниже. Помните, что в Главе 8 Вы создали два поля, которые не
появляются ни в какой форме - Texas Customer (Клиент из штата Техас)
и Austin  Customer (Клиент  из Остина). Эти поля появляются только в
дереве принятия  решений поля  Sales Tax  (Налог на  продажу). Когда
система ObjectVision  пытается вычислить  значение  поля  Sales  Tax
(Налог на продажу), она использует черновую форму, чтобы запросить у
Вас значения этих полей.

     Рис.10.3 Черновая форма:
1 - Заказ на покупку (Цель); 2 - Черновик (Запрос); 3 - Клиент из
штата Техас; 4 - Да; 5 - Нет

     Поле Texas  Customer (Клиент  из штата  Техас)  является  полем
маркерных кнопок с двумя значениями, Yes (Да) и No (Нет).

2.   Нажмите клавишу Enter, чтобы выбрать значение Yes (Да) для поля
     Texas Customer (Клиент из штата Техас).

     Дерево принятия  решений поля  Sales  Tax  (Налог  на  продажу)
     указывает, что  если значением  поля Texas  Customer (Клиент из
     штата Техас)  является Yes (Да), то необходимо выдать запрос на
     ввод  значения   поля  Austin   Customer  (Клиент  из  Остина).
     Появляется вторая  черновая форма,  в которой  Вам предлагается
     ввести значение  Yes (Да)  или No  (Нет) в поле Austin Customer
     (Клиент из Остина).

3.   Нажмите клавишу  Enter, чтобы  выбрать вариант  ответа Yes (Да)
     для поля Austin Customer (Клиент из Остина).

     Черновая форма  исчезает. Теперь у системы ObjectVision имеется
     вся информация,  необходимая ей  для вычисления полей Sales Tax
     (Налог на  продажу) и Extended Price (Увеличенная цена) в форме
     Sales Order (Заказ на покупку).

4.   Закройте   форму    Distributor   Information   (Информация   о
     дистрибьюторе). Представленный  ниже  рисунок  показывает,  как
     теперь выглядит Ваша форма:














                                                                 107
     Рис.10.4 Заполненная форма Sales Order (Заказ на покупку):
1 - Заказ на покупку (Цель); 2 - Имя; 3 - Компания; 4 - Адрес; 5 -
Город, штат и код почтовой зоны; 6 - Элемент; 7 - Метод отгрузки;
8 - Количество; 9 - Скидка; 10 - Цена за штуку; 11 - Дата заказа;
12 - Тип клиента; 13 - Дистрибьютор; 14 - Дилер; 15 - Преподаватель;
16 - Другой; 17 - Базовая цена; 18 - Уменьшенная скидка; 19 -
Итоговая цена; 20 - Налог на продажу; 21 - Следующий; 22 -
Предыдущий; 23 - Сохранить в базе данных; 24 - Стоимость отгрузки;
25 - Увеличенная цена

     Заметьте,  что   теперь  статусом   формы  является  [Complete]
     (Заполнена). Вы ввели всю информацию, которая необходима в этой
     форме. Следующим шагом является ввод заполненного заказа в базу
     данных заказов.

     Когда Вы  выбираете кнопку  Save to  Database (Сохранить в базе
     данных),  система   ObjectVision   заносит   в   базу   данные,
     находящиеся в  текущей форме,  руководствуясь внешней  связью с
     базой данных, которую Вы создали в Главе 9.

5.   Нажимайте клавишу  Tab до тех пор, пока кнопка Save to Database
     (Сохранить в  базе данных) не будет выделена световым маркером,
     после чего  нажмите клавишу  пробела, чтобы активировать ее. Ее
     можно также нажать с помощью мыши.

     Система ObjectVision  вводит информацию  о заказе в базу данных
     MYORDER. Теперь другие прикладные задачи могут использовать эту
     информацию для  оформления санкций на кредит, счетов и векселей
     к  получению,   документов  на   отгрузку,  текущих  отчетов  и
     выполнения других функций. Эта информация также будет доступна,
     если Вы  захотите изменить  заказ Пэта  Майерса (поэтому Вам не
     нужно будет  повторно вводить  название  компании,  адрес,  тип
     клиента и так далее).


                            Печать формы
--------------------------------------------------------------------

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

-    Команда  File|  Print  Form  (Файл|  Печатать  форму)  печатает
     текущую форму;

-    Команда File| Print All (Файл| Печатать все) печатает все формы
     в прикладной задаче.

     Перед печатью  форм Вы  можете воспользоваться  модулем Control
Panel (Панель управления) среды Windows, чтобы селектировать принтер
или выбрать атрибуты принтера.

     Из-за  различий   между  принтерами   размер   и   точный   вид
отпечатанных форм зависит от используемого Вами принтера.

+++> Ваши дальнейшие действия:

1.   Выберите команду File| Print Form (Файл| Печатать форму).








                                                                 108
2.   Система    ObjectVision     отображает    сообщение,    которое
     идентифицирует форму  и принтер,  и начинает печать формы Sales
     Order (Заказ  на покупку).  Заметьте, что  Вы можете прекратить
     печать путем выбора кнопки Cancel (Отменить).

     Если бы  Вы воспользовались  командой File|  Print  All  (Файл|
Печатать все), система ObjectVision должна была отпечатать все формы
в прикладной  задаче Order  (Заказ) (форму  Sales  Order  (Заказ  на
покупку)   и    форму   Distributor    Information   (Информация   о
дистрибьюторе)),  а  не  одну  лишь  форму  Sales  Order  (Заказ  на
покупку).


                         Ввод нового заказа
--------------------------------------------------------------------

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

     Если Вы  безошибочно выполнили действия предыдущего раздела, то
форма Sales  Order (Заказ на покупку) попрежнему отображает значения
заказа Пэта  Майерса. Перед  тем, как вводить новый заказ, Вы должны
очистить формы.

     Команда Clear  All (Удалить все), которая находится в меню Edit
(Редактирование), удаляет  значения из  всех форм прикладной задачи.
Команда Clear  (Удалить), которая  находится в  меню  Form  (Форма),
удаляет значения  только из  выбранной  в  настоящий  момент  формы,
оставляя нетронутыми значения в других формах.

+++> Ваши дальнейшие действия:

1.   Выберите команду  Edit| Clear All (Редактирование| Удалить все)
     для того,  чтобы удалить  данные  из  всех  форм  в  прикладной
     задаче. Не  беспокойтесь о  потере  данных,  поскольку  Вы  уже
     сохранили их в базе данных Order (Заказ).

     Если Вы  выбрали команду  Form| Clear (Форма| Удалить), система
     ObjectVision не  удалит данные  в форме Distributor Information
     (Информация о  дистрибьюторе) и  Вы  можете  получить  неверные
     значения в новом заказе.

2.   Заполните как Вам нравится поля Name (Имя), Company (Компания),
     Address (Адрес)  и City,  State and  ZIP  (Город,  штат  и  код
     почтовой зоны).

3.   Выберите в  поле Customer  Type (Тип  клиента) значение  dealer
     (дилер).

4.   Введите значение  15 в  поле Quantity  (Количество)  и  нажмите
     клавишу Enter.

     Заметьте,  что   после  введения   значения  в   поле  Quantity
     (Количество) система ObjectVision не запрашивает у Вас значение
     поля Distributor  Size (Размер  дистрибьютора). Дерево принятия
     решений для поля Discount (Скидка) не требует указания значения
     поля Distributor  Size (Размер  дистрибьютора), если  значением






                                                                 109
     поля Distributor  Size (Размер  дистрибьютора) является  dealer
     (дилер).

     Теперь в  черновой форме появляется поле Texas Customer (Клиент
     из штата  Техас). Системе  ObjectVision требуется  это значение
     для того,  чтобы вычислить  значение поля  Sales Tax  (Налог на
     продажу).

5.   Выберите ответ  No (Нет)  для поля  Texas Customer  (Клиент  из
     штата Техас).

     Поскольку Вы  выбираете ответ  No (Нет),  поле Austin  Customer
     (Клиент из  Остина) не появляется. Поскольку клиент не из штата
     Техас, налог на продажу не взимается.

     Теперь завершена работа и над второй формой. Сравните стоимость
в этой форме со стоимостью в отпечатанной копии заказа Пэта Майерса,
который был  Вами заполнен.  Обратите внимание  на  то,  что  скидки
различны  (поскольку   новый   клиент   является   дилером,   а   не
дистрибьютором).  Заметьте  также,  что  методом  отгрузки  является
Regular UPS  (Обычной всемирной  почтовой службой),  а не Commercial
Carrier (Коммерческие  перевозки) (из-за  различий значений  в  поле
Quantity (Количество)).

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


                Изменения по принципу "а что, если"
--------------------------------------------------------------------

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

+++> Ваши дальнейшие действия:

1.   Нажимайте клавишу  Tab до  тех пор, пока не будет селектировано
     поле Quantity  (Количество),  либо  нажмите  на  поле  Quantity
     (Количество) мышью.

2.   Удалите число 15 (Вы можете воспользоваться клавишами Backspace
     или Del,  либо селектировать  это число с помощью мыши и нажать
     клавишу Del).

3.   Введите число 30 и нажмите клавишу Enter.

     Система  ObjectVision   рекалькулирует  все  поля,  на  которые
     оказывает  влияние   новое  значение.   Значения  полей  Amount
     (Базовая цена)  и Shipping Method (Метод отгрузки) меняются, но
     значение  поля   Discount  (Скидка)   остается   прежним -   25
     процентов.

     Заметьте, что  поля, которые  зависят от  полей Amount (Базовая
     цена) и  Shipping Method  (Метод отгрузки), также изменили свое
     значение: это  поля Less  Discount (Уменьшенная  скидка), Total






                                                                 110
     Price (Итоговая  цена), Shipping  Cost (Стоимость  отгрузки)  и
     Extended Price (Увеличенная цена).

     Теперь  Ваш  клиент  хочет  узнать,  сколько  безделушек  нужно
     купить, чтобы  увеличилась скидка. Если Вы не можете вспомнить,
     то это  легко определить, обратившись к дереву принятия решений
     поля Discount (Скидка).

4.   Селектируйте поле  Discount (Скидка)  и выберите команду Tools|
     Tree (Инструментарий| Дерево).

5.   На экране  появляется дерево  принятия  решений  поля  Discount
     (Скидка). Прокрутите  изображение вниз  до тех  пор, пока Вы не
     увидите узел  ветви для  значения Dealer  (Дилер) поля Customer
     Type (Тип  клиента). Заметьте,  что выражением  вывода для поля
     Discount (Скидка)  является 40%,  если значение  поля  Quantity
     (Количество) больше чем либо равно 100, в ином случае 25%.

6.   Поскольку дополнительная  скидка не  появляется, клиент говорит
     Вам возвратиться к прежнему значению - 15 безделушек.

     Когда  Вы   изменяете  значение   поля  Quantity  (Количество),
     возвращаясь  к   прежнему  числу -   15,  система  ObjectVision
     пересчитывает поля, зависящие от данного.

7.   Воспользуйтесь кнопкой  Save  to  Database  (Сохранить  в  базе
     данных), чтобы внести заказ в базу данных.

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

     Заметьте, что  Вы не  можете  изменить  значения  полей  Amount
(Базовая цена),  Less Discount  (Уменьшенная  скидка),  Total  Price
(Итоговая цена)  и Extended  Price (Увеличенная  цена). В Главе 4 Вы
защитили эти  поля, чтобы пользователи не могли ввести сюда неверные
значения. Их  значения могут  быть  только  вычислены  их  деревьями
принятия решений.


                            Поиск данных
--------------------------------------------------------------------

     В Главе  9 Вы установили связь с таблицей СУБД Paradox, поэтому
Вы можете  сохранять информацию  на диске и извлекать ее с диска. Вы
уже воспользовались  кнопкой Save  to  Database  (Сохранить  в  базе
данных), чтобы занести в базу две записи.

     Кнопки NEXT  (Следующий) и  PREVIOUS (Предыдущий) позволяют Вам
последовательно переходить  от одной записи базы данных к другой при
условии, что Вы уже находитесь на какой-то записи.

-    Введите несколько заказов, а затем воспользуйтесь кнопками NEXT
     (Следующий) и PREVIOUS (Предыдущий), чтобы переходить от одного
     заполненного заказа  к другому.  Когда Вы достигнете начала или
     конца файла,  Вам будет  выдано сообщение о том, что дальнейший
     переход в том же направлении невозможен.

     Вы можете  осуществлять поиск конкретных записей с помощью поля
Name (Имя).  Вспомните, что при создании таблицы СУБД Paradox первое






                                                                 111
поле автоматически становилось индексным полем. Это означает, что Вы
можете осуществлять  поиск записей  в соответствии со значением поля
Name (Имя).

-    Чтобы найти  конкретную запись, введите искомое имя в поле Name
     (Имя) и нажмите клавишу Enter. Например, введите имя Pat Myers.
     Если система  ObjectVision находит в базе данных нужную запись,
     она заполняет  в форме  все поля  теми значениями, которые были
     взяты из  базы данных.  Введенное Вами  имя должно  в  точности
     совпадать с именем в базе данных.

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


                               Резюме
--------------------------------------------------------------------

     Теперь  Вы   завершили  работу   над   Учебником   по   системе
ObjectVision. и  готовы  к  созданию  своих  собственных  прикладных
задач.  "Справочник   по  системе   ObjectVision"  содержит   полный
справочный  материал   по  всем   темам,  которые   описаны  в  этом
руководстве.








































                                                                 112
      ПРИЛОЖЕНИЕ А. ОПЕРАЦИИ С КЛАВИАТУРОЙ И ОПЕРАЦИИ С МЫШЬЮ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

     В данном  приложении  содержится  перечень  клавиш,  комбинаций
клавиш и  приемов работы с мышью, которые Вы можете использовать для
выполнения операций в системе ObjectVision. Списки значений клавиш и
приемов работы с мышью разделены на две основные категории:

-    Для выполнения прикладных задач;

-    Для    использования     инструментальных    средств    системы
     ObjectVision.

мышь Используя мышь:

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


                         Выбор команд меню
--------------------------------------------------------------------

     Если  команде   меню  соответствует   некоторая   клавиша   или
комбинация клавиш,  Вы можете  нажать указанную клавишу или клавиши,
чтобы непосредственно  выполнить необходимую  операцию. Имя  клавиши
или комбинации  клавиш (если  они  существуют)  указывается  в  меню
справа от  имени команды.  Например, в меню системы ObjectVision имя
комбинации клавиш Alt+F4 следует за командой Close (Закрыть).

     Другие команды  меню нужно  выбирать путем  открытия требуемого
меню и выбора необходимой команды.

Alt                 Селектирует   строковое   меню.   По   умолчанию
                    селектировано имя первого меню.

<- или ->           После  перехода  к  строковому  меню  Вы  можете
                    нажать   клавишу    "<-"   или    "->",    чтобы
                    селектировать имя нужного Вам меню.

Enter

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

                    Заметьте,  что   каждое   имя   в   меню   имеет
                    подчеркнутую  букву.   Чтобы  ускорить  открытие
                    меню,  нажмите  клавишу  Alt  в  совокупности  с
                    подчеркнутой буквой. Например,

Alt+F               Открывает меню File (Файл);

Alt+M               Открывает меню Form (Форма);

Alt+T               Открывает меню Tools (Инструментарий).







                                                                 113
                    После того,  как Вы  открыли меню,  селектируйте
                    световым маркером необходимую команду:

"стрелка вверх" или

"стрелка вниз"      Селектирует  команду   в  открытом   меню.  Либо
                    нажмите  подчеркнутую  букву  в  имени  команды,
                    чтобы  выбрать   эту  команду.  Например,  когда
                    открывается меню  File (Файл),  Вы можете нажать
                    клавишу O  чтобы открыть  (Open) файл,  S  чтобы
                    сохранить (Save)  файл  или  X  чтобы  выйти  из
                    системы ObjectVision и выгрузить ее из памяти.

Enter               Выполняет селектированную  команду или  действие
                    командной  кнопки   (за  исключением   кнопок  в
                    формах).

Пробел              Активирует  селектированную   кнопку   в   форме
                    прикладной задачи или помечает маркерную кнопку,
                    если  селектировано   значение  этой   маркерной
                    кнопки.

Esc                 Выходит из меню без выбора команды.

мышь                Используя мышь:

                    Нажмите  мышью   на  имя  элемента  меню,  чтобы
                    открыть его. Затем нажмите мышью на имя команды,
                    чтобы выбрать эту команду.

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


                    Выполнение прикладных задач
--------------------------------------------------------------------

     Если окно  системы ObjectVision  не занимает весь экран системы
Windows,  вы   можете  переместить  окно  при  помощи  команды  Move
(Переместить).

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

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

Alt+Tab             Восстановить   минимизированную   (свернутую   в
                    иконку) прикладную  задачу до ее первоначального
                    размера. Нажимайте  комбинацию клавиш Alt+Tab до
                    тех пор, пока не будет селектирована необходимая
                    Вам иконка,  затем отпустите  клавишу Alt. После
                    открытия  окна   прикладной   задачи   отпустите
                    клавишу Tab.







                                                                 114
Ctrl+Esc            Открывает окно  Task  List  (Список  задач)  для
                    переключения   к   другой   прикладной   задаче,
                    загруженной в память.


           Команды управляющего меню системы ObjectVision
--------------------------------------------------------------------


   Управляющее меню окна прикладной задачи системы ObjectVision:   _____________________________________________________________

Alt+Пробел          Открывает    управляющее    меню.    Используйте
                    курсорные клавиши  для  селектирования  команды,
                    затем нажмите клавишу Enter, чтобы выбрать ее.

Alt+F4              Закрывает окно  прикладной задачи. Среда Windows
                    выдаст запрос  на подтверждение, если результаты
                    текущей работы не были сохранены.


         Управляющее меню окна формы системы ObjectVision:         _________________________________________________

Alt+-               Открывает    управляющее    меню.    Используйте
                    курсорные клавиши  для  селектирования  команды,
                    затем нажмите клавишу Enter, чтобы выбрать ее.

Ctrl+F7             Позволяет Вам  переместить окно  формы с помощью
                    курсорных клавиш.

Ctrl+F8             Позволяет  Вам  изменить  размер  окна  формы  с
                    помощью курсорных клавиш.

Ctrl+F4             Закрывает окно формы.

мышь                Используя мышь:

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

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

                    Нажмите     мышью     на     кнопку     Maximize
                    (Максимизировать),  чтобы   увеличить  окно   до
                    максимальных размеров.

                    Нажмите     мышью     на     кнопку     Minimize
                    (Минимизировать),  чтобы   "свернуть"   окно   в
                    иконку.

                    Если окно  открыто  на  поверхности  экрана,  то
                    нажмите  кнопку  Restore  (Восстановить),  чтобы
                    возвратить окну его первоначальные размеры.






                                                                 115
                    Если на  поверхности экрана находится иконка, то
                    нажмите мышью  на эту  иконку и выберите команду
                    Restore (Восстановить),  чтобы  возвратить  окну
                    его первоначальные  размеры. Либо  дважды подряд
                    нажмите мышью  на эту  иконку, чтобы  возвратить
                    окну  прикладной   задачи   его   первоначальные
                    размеры.


                  Получение оперативной подсказки
--------------------------------------------------------------------

Alt+H               Открывает меню подсказки


          Подсказка для поля (во время заполнения формы):          _______________________________________________

F1                  Отображает подсказку  для селектированного поля,
                    если  подсказка  для  этого  поля  была  создана                    ____
                    разработчиком формы.

Esc или Alt+F4      Закрывает окно подсказки.

"стрелка вправо" или

"стрелка вниз"      Прокручивает информацию  в  окне  вниз  на  одну
                    строку.

"стрелка влево" или

"стрелка вверх"     Прокручивает информацию  в окне  вверх  на  одну
                    строку.

PgUp или PgDn       Прокручивает окно подсказки на один полный кадр.

Alt+Пробел          Открывает    управляющее    меню    окна    Help
                    (Подсказка).

Alt+F4              Закрывает окно Help (Подсказка).

Ctrl+Esc            Открывает окно  Task  List  (Список  задач)  для
                    переключения   к   другой   прикладной   задаче,
                    загруженной в память.

мышь                Используя мышь:

                    Нажмите мышью в произвольном месте вне окна Help
                    (Подсказка), чтобы закрыть его.

                    Отбуксируйте бордюр окна Help (Подсказка), чтобы
                    изменить его размер. (Переместите указатель мыши
                    на бордюр окна, чтобы он превратился в стрелку с
                    двумя концами.


                 Подсказка по системе ObjectVision                 _________________________________

Alt+H               Открывает меню Help (Подсказка).







                                                                 116
F1                  Открывает   окно    Help   (Подсказка)   системы
                    ObjectVision (за  исключением случая,  когда  Вы
                    находитесь  в   режиме   заполнения   формы,   и                                                                   _
                    разработчик   формы    создал   подсказку    для
                    селектированного   поля).   Если   селектирована
                    команда или  инструментальное средство, появится
                    подсказка  по  этой  теме;  в  противном  случае
                    появляется    экранный     кадр    Help    Index
                    (Тематический указатель по подсказке).

Alt+Пробел          Открывает    управляющее    меню    окна    Help
                    (Подсказка).

Alt+F4 или

Alt+F+X             Закрывает окно Help (Подсказка).

Ctrl+Esc            Открывает окно  Task  List  (Список  задач)  для
                    переключения   к   другой   прикладной   задаче,
                    загруженной в память.

Alt+I               Отображает    экранный     кадр    Help    Index
                    (Тематический указатель по подсказке).

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

Alt+R               Осуществляет переход  в обратном  направлении  к
                    предыдущей  теме   подсказки,  если   эта   тема
                    является  частью   последовательности  просмотра
                    (browse sequence).

Alt+O               Осуществляет  переход  в  прямом  направлении  к
                    следующей теме подсказки, если эта тема является
                    частью  последовательности   просмотра   (browse
                    sequence).

Alt+S               Отображает блок диалога Search for (Что искать),
                    который позволяет  Вам найти  темы подсказки  из
                    списка.

"стрелка вверх" или

"стрелка вниз"      Прокручивает текст  подсказки на  одну строку  в
                    направлении, определяемом курсорной клавишей.

PgUp или PgDn       Прокручивает текст  подсказки вверх  или вниз на
                    один полный кадр.

Tab                 Селектирует    следующую    подчеркнутую    тему
                    подсказки.








                                                                 117
Shift+Tab           Селектирует   предыдущую    подчеркнутую    тему
                    подсказки.

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

мышь                Используя мышь:

                    Отбуксируйте бордюр окна Help (Подсказка), чтобы
                    изменить  его   размер,  либо   нажмите   кнопку
                    Minimize       (Минимизировать),        Maximize
                    (Максимизировать) или Restore (Восстановить).

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

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


                    Использование блоков диалога
--------------------------------------------------------------------

Esc                 Закрывает блок  диалога и  оставляет неизменными
                    значения параметров.

Пробел              Переключает значение  селектированной  маркерной
                    кнопки  из  маркированной  в  немаркированную  и
                    обратно.

Enter               Активирует    выделенную    световым    маркером
                    командную кнопку.

Tab                 Перемещает   выделяющий   маркер   к   следующей
                    поименованной опции или группе опций. Аналогично
                    нажатие клавиши  Alt  вместе  с  подчеркнутой  в
                    имени опции  буквой непосредственно  селектирует
                    эту опцию.

Shift+Tab           Перемещает  выделяющий   маркер   к   предыдущей
                    поименованной опции или группе опций.

Ctrl+Enter          Перемещает курсор  к новой  строке  в  текстовом
                    блоке.

"стрелка вниз" или

"стрелка вверх"     Выбирает  выделенную   световым  маркером  радио
                    кнопку.

"стрелка вниз" или







                                                                 118
"стрелка вверх"     Выделяет  световым   маркером   элемент   списка
                    выбора.  Либо   нажмите   первую   букву   имени
                    элемента,  чтобы   выделить  первый   элемент  в
                    списке, начинающийся с этой буквы.


                          Заполнение форм
--------------------------------------------------------------------

Alt+-               Открывает управляющее меню текущей формы.

Ctrl+F4             Закрывает   форму.    Альтернативным   действием
                    является  выбор   команды  Close   (Закрыть)   в
                    управляющем меню.

Ctrl+F7             Позволяет  Вам   переместить  форму   с  помощью
                    курсорных   клавиш.   Альтернативным   действием
                    является  выбор  команды  Move  (Переместить)  в
                    управляющем  меню;  после  этого  воспользуйтесь
                    курсорными клавишами,  чтобы переместить  окно и
                    нажмите клавишу  Enter, чтобы  закрепить позицию
                    окна.

Ctrl+F8             Позволяет Вам  изменить размер  черновой  формы.
                    Альтернативным действием  является выбор команды
                    Size (Размер)  в управляющем  меню; после  этого
                    воспользуйтесь   курсорными   клавишами,   чтобы
                    изменить размеры  габаритного бордюра  и нажмите
                    клавишу Enter, чтобы закрепить размеры окна.

Ctrl+PgUp или

Ctrl+PgDn           Осуществляет горизонтальную прокрутку формы.

PgUp или PgDn       Осуществляет вертикальную прокрутку формы.


                                Поля
--------------------------------------------------------------------


                      Перемещение между полями                      ________________________

Alt+Пробел          Возврат   обратно    к   предыдущему    полю   с
                    восстановлением       предыдущего       значения
                    (действительно только  в  случае  нажатия  сразу                                                               _____
                    вслед  за   нажатием  клавиши   Enter  или  Tab,
                    фиксирующих введенное значение).

Enter               Фиксирует в  поле введенное значение и переходит
                    к следующему  полю,  требующему  ввода  значения
                    пользователем.

Tab                 Фиксирует в  поле введенное значение и переходит
                    к следующему  полю,  двигаясь  слева  направо  и
                    сверху вниз.

Shift+Tab           Переходит к  предыдущему  полю,  двигаясь  внизу
                    вверх и справа налево.






                                                                 119
              Селектирование значений-вариантов полей              _______________________________________

Пробел              Активирует выделенную  световым маркером  кнопку
                    или маркирует выделенную маркерную кнопку.

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

Enter или Tab       Селектирует выделенный световым маркером элемент
                    списка. Выделите  необходимый элемент либо путем
                    нажатия первой  буквы этого  элемента, либо  при
                    помощи  клавиш   "стрелка  вверх"  или  "стрелка
                    вниз".

Пробел              Переключает   поле    с   двумя    состояниями -
                    "истинно"/   "ложно" -   из   маркированного   в
                    немаркированное и обратно.


                   Редактирование текста в полях                   _____________________________

Shift+"стрелка вправо" или

Shift+"стрелка влево"  Выделяет текст.  Выделенный текст  заменяется
                    вводимыми Вами с клавиатуры символами.

Esc                 Восстанавливает предыдущее значение поля (только                                                              ______
                    в том  случае, если  Вы попрежнему  остаетесь  в
                    поле  и   не   нажали   клавишу   Enter,   чтобы
                    зафиксировать новое значение).

Home                Перемещает курсор влево от первого символа поля.

End                 Перемещает курсор  вправо от  последнего символа
                    поля.

Del                 Либо  стирает   символ,  находящийся  справа  от
                    курсора, либо  стирает выделенный текст (если он
                    есть).

Backspace           Либо  стирает   символ,  находящийся   слева  от
                    курсора, либо  стирает выделенный текст (если он
                    есть).

мышь                Используя мышь:

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

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







                                                                 120
                 Просмотр деревьев принятия решений
--------------------------------------------------------------------


                      Перемещение между узлами                      ________________________

Home                Переместиться к  корневому узлу  дерева принятия
                    решений.

"стрелка вверх"     Переместиться к  предыдущему узлу  (если таковой
                    имеется) с  тем же  уровнем вложенности в дереве
                    принятия решений.

"стрелка вниз"      Переместиться к  последующему узлу (если таковой
                    имеется) с  тем же  уровнем вложенности в дереве
                    принятия решений.

"стрелка влево"     Переместиться к  узлу (если  таковой имеется) на
                    предыдущем уровне  вложенности в дереве принятия
                    решений.

"стрелка вправо"    Переместиться  к   первому  узлу  (если  таковой
                    имеется) на  последующем  уровне  вложенности  в
                    дереве принятия решений.


                             Прокрутка                             _________

Ctrl+PgUp или

Ctrl+PgDn           Осуществляет горизонтальную прокрутку дерева.

PgUp или PgDn       Осуществляет вертикальную прокрутку дерева.


                   Изменение формата отображения                   _____________________________

Ctrl+Home           Увеличивает размер дерева принятия решений.

Ctrl+End            Уменьшает размер дерева принятия решений.


              Инструментальное окно формы (Form Tool)
--------------------------------------------------------------------


                     Команды управляющего меню                     _________________________

Alt+-               Открывает управляющее меню формы.

Ctrl+F7             Позволяет  Вам   переместить  форму   с  помощью
                    курсорных   клавиш.   Альтернативным   действием
                    является  выбор  команды  Move  (Переместить)  в
                    управляющем  меню;  после  этого  воспользуйтесь
                    курсорными клавишами,  чтобы переместить форму и
                    нажмите  клавишу   Enter,  чтобы   закрепить  ее
                    позицию.








                                                                 121
"стрелка  вверх",  "стрелка  вниз",  "стрелка  влево"  или  "стрелка
                    вправо" Перемещает  селектированный объект формы
                    в направлении, определяемом клавишей.

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

Ctrl+F8             Позволяет Вам  изменить размер  формы с  помощью
                    курсорных   клавиш.   Альтернативным   действием
                    является   выбор   команды   Size   (Размер)   в
                    управляющем  меню;  после  этого  воспользуйтесь
                    курсорными  клавишами,  чтобы  изменить  размеры
                    габаритного  бордюра  формы  и  нажмите  клавишу
                    Enter, чтобы закрепить размеры окна.

Shift+"курсорные   клавиши"    Позволяет   Вам    изменить    размер
                    селектированного объекта  формы. Эти  комбинации
                    клавиш перемещают нижний правый угол объекта.


                             Прокрутка                             _________

Ctrl+PgUp или

Ctrl+PgDn           Осуществляет горизонтальную прокрутку формы.

PgUp или PgDn       Осуществляет вертикальную прокрутку формы.


                    Селектирование объекта формы                    ____________________________

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

Shift+Tab           Перемещает  выделяющий   маркер   к   следующему
                    объекту, двигаясь снизу вверх и справа налево.

Ctrl+Tab            Позволяет Вам  селектировать в  форме  несколько
                    объектов, двигаясь слева направо и сверху вниз.

Shift+Ctrl+Tab      Позволяет Вам  селектировать в  форме  несколько
                    объектов, двигаясь снизу вверх и справа налево.

мышь                Используя мышь:

                    Нажмите кнопку  мыши, чтобы селектировать объект
                    формы.

Shift+кнопка мыши   Начинает    или     завершает     селектирование
                    непрерывного  блока   с  объектами  формы.  Если
                    начало селектируемого блока находится над концом
                    селектируемого блока, то объекты селектируются в
                    направлении слева  направо и  сверху вниз.  Если






                                                                 122
                    начало селектируемого блока находится под концом
                    селектируемого блока, то объекты селектируются в
                    направлении справа налево и снизу вверх.

Ctrl+кнопка мыши    Селектирует несколько несмежных объектов формы.


              Инструментальное окно стека (Stack Tool)
--------------------------------------------------------------------

"стрелка вверх" или

"стрелка влево"     Осуществляет  перемещение   по   направлению   к
                    начальной (верхней) форме в стеке.

"стрелка вниз" или

"стрелка вправо"    Осуществляет  перемещение   по   направлению   к
                    конечной (нижней) форме в стеке.

PgUp или PgDn       Осуществляет вертикальную прокрутку стека.












































                                                                 123
                              СЛОВАРЬ
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

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

     A

     active  form   (активная  форма)   Форма,  заполнение   которой
осуществляется  в  настоящий  момент.  Она  появляется  перед  всеми
другими формами прикладной задачи.

     active window  (активное окно)  Окно, в  котором Вы в настоящий
момент работаете.  Это то  окно, которое  все время  находится перед
всеми другими  окнами, и  у которого  строка  заголовка  выделена  с
помощью цветового атрибута или интенсивности свечения.

     argument   (аргумент)    Специфическая   информация,    которая
необходима для  @-функции.  Большей  части  @-функций  требуется  по
меньшей мере один аргумент.

     B

     block selection  (селектирование блока) В Инструментальном окне
формы  (Form   Tool)  позволяет  Вам  выбрать  несколько  полей  для
выполнения операций  редактирования, назначения  или  редактирования
свойств или  репозиционирования селектированных  полей  над  группой
полей в целом.

     branch (Ветвь) Последовательность связанных сегментов или шагов
логики вычислений, которые ведут к выводу дерева решений.

     branch node (узел ветви) Сегмент логики вычислений (простой или
сложный), который  селектирует  расположенный  под  ним  узел  путем
вычисления соответствующего ему значения поля. Имя вычисляемого поля
дерева появляется внутри узла ветви.

     button fields  (кнопочные поля)  Тип поля системы ObjectVision,
который определяется  как активный  (значение True  ("Истинно")) или
неактивный  (значение   False  ("Ложно")).   Кнопочные  поля   могут
создаваться   системой   ObjectVision   автоматически   при   первом
установлении связи.  Кнопочные поля  могут выполнять сложные задачи.
Например, кнопочным  полям может  быть  назначен  единственный  узел
вывода для активизации внешней связи.

     C

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

     calculation logic  (логика вычислений)  Выражение, операция или
константа в  дереве принятия  решений поля,  на  основании  которого
вычисляется значение этого поля.







                                                                 124
     choose  (выбрать)   Выполнить  (или  реализовать)  команду  или
активизировать командную кнопку.

     circular logic  (логика с  обратной связью,  букв.  "возвратная
логика") Когда  выражение вывода  ссылается на  соответствующее  ему
поле, пользователю  выдается повторный запрос на ввод значения поля.
Логика  с  обратной  связью  используется  для  выдачи  пользователю
запроса в  случае, когда  все другие  выводы  в  дереве  решений  не
подходят.

     complex branch  node (сложный  узел  ветви)  Отдельный  сегмент
логики вычислений,  который требует вычисления одного или нескольких
деревьев  принятия   решений  других   полей.  Сложный   узел  ветви
обозначается  с   помощью  символа   блок-схемы  (диаграммы),  чтобы
напомнить Вам о другой заложенной в него логики.

     concatenation  (конкатенация)   Соединение   двух   или   более
текстовых строк в единственную текстовую строку.

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

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

     condition (условие)  Сегмент или шаг логики вычислений, который
выполняется для для определения узла, селектируемого в дальнейшем.

     D

     DateTimeNumber (значение  даты  и  времени)  Аргумент,  который
является числом  в диапазоне от -36522 (1 Января 1800 года) до 73050
(31 Декабря  2099  года).  Дробная  часть  аргумента  DateTimeNumber
представляет время  от 12:00  полуночи до  11:59:59 после  полудня и
вычисляется как дробь от 24-часового дня.

     DDE  (Dynamic   Data  Exchange)  (Динамический  обмен  данными)
Протокол  среды  Windows  для  динамической  передачи  данных  между
прикладными задачами  среды  Windows.  Связи  DDE  являются  связями
"только в  режиме чтения",  которые требуют работы прикладной задачи
среды Windows и его файла документа.

     decision logic  (логика принятия решений) Процесс, определенный
в виде последовательности небольших шагов или узлов. Логика принятия
решений графически  представлена для  дерева решений  каждого поля в
Инструментальном окне дерева (Tree Tool).

     decision  path   (Маршрут  принятия  решения)  Сегменты  логики
вычислений, используемые для определения значения поля. Этот маршрут
обозначается яркой  линией, если  дерево поля отображается с помощью
команды Field| Show Tree (Поле| Отобразить дерево).

     decision   tree   (дерево   (принятия)   решений)   Графическое
представление   процесса    вычисления   значения    поля    системы
ObjectVision, в  котором используются  один или  несколько сегментов
логики вычислений или узлов.






                                                                 125
     default  (Стандартное   значение,  Используемое   по  умолчанию
значение)   Значение   вычисляемого   поля,   которое   может   быть
переопределено  пользователем.  В  прикладной  задаче  Myorder  (Мой
Заказ) Вы  присвоили полю  Item (Элемент)  используемое по умолчанию
значение Widget ("Мелочевка").

     Dynamic  Data   Exchange  (DDE)  (Динамический  обмен  данными)
Протокол  среды  Windows  для  динамической  передачи  данных  между
прикладными задачами  среды  Windows.  Связи  DDE  являются  связями
"только в  режиме чтения",  которые требуют работы прикладной задачи
среды Windows и его файла документа.

     E

     Edit  form  (Редактирование  формы)  Статус  активной  формы  в
Инструментальном окне  формы (Form  Tool). В  строке заголовка формы
появляется статус  [Edit] (Редактирование),  который указывает,  что
этой форме передаются выполняемые Вами действия.

     empty node  (пустой узел)  Появляется в  случае, если  поле  не
имеет дерева  решений, или  если узел  ветви не  имеет под  собой ни
одного узла  более низкого  уровня. Если  осуществляется  вычисление
пустого узла, то возвращается значение кода ошибки.

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

     external links  (внешние связи) Часть прикладной задачи системы
ObjectVision, используемая для чтения файлов данных и записи в файлы
данных в  следующих форматах:  ASCII, Paradox,  dBASE-совместимом  и
Btrieve. Кроме  того, работающие  в режиме "только для чтения" связи
могут быть  созданы для  файлов формата динамического обмена данными
(Dynamic Data  Exchange (DDE)).  Эти связи создаются с помощью блока
диалога Tools| Links (Инструменты| Связи) или с помощью @-функций.

     F

     field  (поле)   Пустой  объект  с  уникальным  именем,  который
содержит  введенные   пользователем  или  вычисленные  значения  или
связные значения.  Поле, которое  не занесено  на какую-либо  форму,
автоматически появляется в форме Scratchpad form (Черновая форма).

     field sequence  (последовательность полей)  Порядок перемещения
пользователя между  полями в  какой-либо  форме.  Последовательность
полей определяется  физическим расположением  полей слева  направо и
сверху вниз. Относительная позиция правого нижнего угла данного поля
определяет, находится оно перед другим полем или после него.

     font (шрифт,  фонт) Стиль  начертания  букв,  используемый  для
метки поля или для текстового объекта.

     form (форма)  Объект  с  уникальным  именем,  который  содержит
совокупность полей.  Этот объект  аналогичен форме  на бумаге. Форма
является основным  интерфейсом между  прикладными  задачами  системы
ObjectVision и пользователями.







                                                                 126
     Form   Clipboard   (Универсальный   буфер   форм)   В   системе
ObjectVision это  временное хранилище,  используемое для  вырезания,
копирования и  вклейки форм  в  Инструментальном  окне  формы  (Form
Tool). В  отличие от  универсального буфера  среды Windows  (Windows
Clipboard)  Универсальный  буфер  форм  (Form  Clipboard)  не  может
использоваться для  передачи  данных  между  различными  прикладными
задачами.

     form completion  (заполнение  формы)  Заполнение  пользователем
значений полей  в  прикладной  задаче  системы  ObjectVision.  После
завершения заполнения  формы индикатор  статуса в  строке  заголовка
приобретает значение [Complete] (Заполнение).

     Form  Tool   (Инструментальное  окно  формы)  Окно,  в  котором
разработчик прикладной  задачи может создавать и редактировать формы
и их  объекты (текст,  поля, прямоугольники со скругленными углами и
заполненные прямоугольники, линии и графические материалы).

     @function  (@-функция)   Выполняет  усложненные   вычисления  и
операции  для   логики  вычислений   какого-либо  поля.   Встроенные
(@-функции системы  ObjectVision совместимы с функциями программного
комплекса электронных  таблиц Quattro  Pro и,  как правило,  требуют
наличия по  меньшей мере  одного  аргумента  или  специфической  для
данной функции информации.

     G

     Goal form  (Целевая форма) Расположенная на самом верху форма в
стеке форм  прикладной задачи.  Целевая форма  появляется при первом
открытии пользователем прикладной задачи системы ObjectVision. Когда
пользователь выбирает другую форму (прерывая запланированный процесс
заполнения), то  эта другая  форма становится  целевой формой  (Goal
form).

     graphic (графика)  Изображение в формате Windows Paintbrush или
в формате  метафайла Windows,  скопированное в  универсальный  буфер
(Clipboard). Графика  вклеивается в  окно  системы  ObjectVision  из
универсального буфера  среды Windows  (Windows Clipboard)  с помощью
команды Objects| Graphics (Объекты| Графика).

     guided   completion    (запланированный   процесс   заполнения,
руководимое заполнение)  Когда пользователь  нажимает клавишу Enter,
то далее  селектируется только  поле, в которое пользователем должна
быть введена  информация. Если  пользователь  прерывает  этот  метод
селектирования путем  селектирования  некоторого  другого  поля,  то
запланированный процесс  заполнения может быть возобновлен с помощью
команды Edit| Resume (Редактировать| Возобновить).

     H

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

     L








                                                                 127
     label (метка)  Значение-константа строкового  типа, которое  не
нужно заключать в двойные кавычки.

     label prefix  (префикс метки) Одинарная кавычка, используемая в
качестве первого  символа какого-либо  выражения,  указывающее,  что
данное выражение должно рассматриваться как метка.

     links (Связи)  Часть прикладной  задачи  системы  ObjectVision,
используемая для  чтения файлов  данных и  записи в  файлы данных  в
следующих форматах:  ASCII, Paradox,  dBASE-совместимом  и  Btrieve.
Кроме того, работающие в режиме "только для чтения" связи могут быть
созданы для  файлов формата  динамического обмена  данными  (Dynamic
Data Exchange  (DDE)). Эти  связи создаются  с помощью блока диалога
Tools| Links (Инструменты| Связи) или с помощью @-функций.

     Links  Tool  (Инструментарий  установки  связи)  Блоки  диалога
системы ObjectVision,  в которых Вы можете создавать, модифицировать
или удалять связи с внешними файлами данных.

     literal characters (литеральные символы) В строке шаблона любая
цифра, буква  или знак пунктуации, отличные от метасимволов (# ? & @
!) или зарезервированных (* [ ] { } ,) символов. Для использования в
строке шаблона метасимвола или зарезервированного символа в качестве
литерального символа ему должен предшествовать знак точки с запятой.

     load statement  (оператор загрузки)  В системном файле с именем
WIN.INI системы  Windows это  область, в  которой Вы  можете указать
системе  Windows  загрузить  в  память  программу  ObjectVision  при
первоначальной загрузке системы Windows.

     logical  expression  (логическое  выражение)  Сегмент  или  шаг
логики вычислений,  результатом выполнения  которого  является  либо
значение 1  (true (истинно)),  либо значение  0 (false (ложно)). Как
правило,  логические   выражения  используются   с   @-функциями   в
операторах проверки условия.

     M

     match characters  (метасимволы) В строке шаблона ими называются
отдельные символы, которые могут использоваться Вами для обозначения
вида шаблона значения, вводимого пользователями в какое-либо поле. К
метасимволам относятся следующие символы:

     -    # (только цифра);

     -    ? (только буква);

     -    & (только буква, преобразовывать к верхнему регистру);

     -    @ (любой символ);

     -    !  (любой   символ,  преобразовывать   буквы  к   верхнему
регистру).

     maximize (максимизировать)  Увеличить  размеры  активного  окна
таким образом,  чтобы  оно  заняло  всю  рабочую  поверхность  среды
Windows путем  нажатия кнопки  Maximize (Максимизировать)  или путем
выбора команды Control| Maximize (Управление| Максимизировать).







                                                                 128
     minimize (минимизировать)  Уменьшить  размеры  активного  окна,
свернув его  в иконку  на поверхности  экрана путем  нажатия  кнопки
Minimize (Минимизировать) или путем выбора команды Control| Minimize
(Управление| Минимизировать).  Если прикладная  задача  находится  в
минимизированном состоянии, она попрежнему загружена в память.

     multiple    selection     (мультиобъектное     выделение)     В
Инструментальном окне формы (Form Tool) выделение световым атрибутом
нескольких объектов,  чтобы последующие  действия выполнялись бы над
всеми ними одновременно.

     N

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

     В  @-функции   или  выражении   в  круглые  скобки  заключаются
операции, которые  должны выполняться  независимо  от  остальных,  а
первым вычисляется  содержимое тех  скобок, которые  имеют  наиболее
высокий    уровень     вложенности.    Например,     в     выражении
@INT(@MOD(@NOW,7)) функция  @NOW вложена  вовнутрь функции  @MOD,  и
поэтому вычисляется  первой,  чтобы  задать  единственный  аргумент,
который требуется передать функции @MOD.

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

     O

     object (объект)  Любой элемент,  который Вы можете поместить на
форму,  такой   как  текст,   поле,  заполненный  прямоугольник  или
прямоугольник  со   скругленными  углами,   линия  или   графический
материал. Объектам  могут  быть  назначены  различные  свойства  или
атрибуты.  Например,   существует  четырнадцать  опций  для  фактуры
заполнения и четыре опции для категории линии.

     operators  (символы   операций)  Используются   для   выражения
отношения (логического,  математического или строкового) между двумя
или значениями  или большим  числом  значений.  Результат  выражения
зависит от порядка, в котором выполняются операции.

     override  (переопределение)   Вычисляемые  поля,   которые   не
являются защищенными,  предоставляют пользователю возможность ввести
какое-либо   новое    значение.   После   того,   как   пользователи
переопределяют вычисленное  значение, в  поле отображается  точечная
фактура. Вычисленное  значение может  быть восстановлено  с  помощью
команды Field| Calculate (Поле| Вычислить).

     P

     paste   (вклеивание)    Действие   по    переносу   данных   из
Универсального буфера  (Clipboard) в активное окно. Либо действие по
переносу  элементов  списка  в  выражение  с  помощью  кнопок  Paste
Function (Вклейка функции) или Paste Field (Вклейка поля).







                                                                 129
     picture (шаблон)  Шаблон, который  Вы задаете  для того,  чтобы
контролировать  допустимость   данных,  вводимых   пользователями  в
некоторое поле.

     picture string (строка шаблона) Шаблон из литеральных символов,
метасимволов и  специальных символов,  которые  Вы  вводите  в  блок
диалога Field  Type |  Picture | Picture String (Тип поля | Шаблон |
Строка шаблона)  для описания  шаблона для  значения поля, вводимого
пользователем. Например,  Вы можете ввести шаблон телефонного номера
или  Номера   Карточки  социального   страхования,  которому  должны
следовать пользователи.

     points (пункты  (точки)) Принятая  в типографском  деле единица
измерения  размера   шрифта,  приблизительно   равная  1/72   дюйма.
Стандартным шрифтом  меток (Label  Font)  является  шрифт  Helvetica
размером 8  пунктов, а  стандартным шрифтом  для  значений  является
шрифт Courier размером 10 пунктов.

     precedence  (приоритет)   Порядок,  в   котором  осуществляется
выполнение  операций   в  выражении.   Некоторые   операции   всегда
выполняются после других операций, если не задано вложение.

     protection (защита)  Свойство поля,  которое  Вы  назначаете  с
помощью команды  Properties| Protection  (Свойства|  Защита),  чтобы
пользователь не  мог изменить  значение поля  или просмотреть дерево
решений.

     R

     reserved  characters   (зарезервированные  символы)   В  строке
шаблона этими  символами являются  отдельные  символы,  которым  при
вводе должна  предшествовать точка  с запятой,  если Вам необходимо,
чтобы в  значении поля  они появлялись  бы в  качестве литералов (то
есть, в  своем  оригинальном  виде).  К  зарезервированным  символам
относятся символы * [ ] { } ,

     root node  (корневой узел)  Первый (самый левый) сегмент логики
вычисления в дереве решений. Корневой узел может являться либо узлом
ветви, либо узлом вывода.

     run statement  (оператор выполнения) В системном файле с именем
WIN.INI системы  Windows это  область, в  которой Вы  можете указать
системе Windows  загрузить в  память  и  затем  выполнить  программу
ObjectVision при первоначальной загрузке системы Windows.

     S

     Scratchpad form  (Черновая форма)  Форма, которая автоматически
создается системой  ObjectVision для  отображения  любого  поля,  не
входящего в форму.

     select  (Селектировать)   Установить  указатель  на  каком-либо
элементе  и   выделить  этот  объект  световым  маркером.  Следующее
действие, которое  будет выполняться  системой  ObjectVision,  будет
осуществлено над селектированным объектом.

     selected field  (выбранное  поле)  Выбранное  поле  может  быть
обозначено с  помощью сплошной  линии, сплошной  линии со внутренней
точечной линией  или сплошной  линией с  заданной  точками  фактурой






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

     В инструментальном  окне формы  (Form Tool)  объект  выбранного
поля окружен  пунктирной линией и содержит маленькие черные квадраты
по углам (в случае поля) или на концах (в случае линии).

     simple branch  node  (простой  узел  ветви)  Отдельный  сегмент
логики вычислений,  который не  зависит в деревьях решений от других
полей.

     stack (стек)  Порядок расположения  форм  в  прикладной  задаче
системы ObjectVision,  который отображается  в инструментальном окне
стека (Stack  Tool). В  вершине стека  находится форма Goal (Целевая
форма).

     Stack  Clipboard   (Универсальный  стековый   буфер)  Временное
хранилище, используемое для форм, которые вы вырезаете или копируете
при работе  с инструментом Stack Tool (инструментальное окно стека).
Универсальный  стековый   буфер  (Stack   Clipboard)  отличается  от
универсального буфера  среды Windows (Windows Clipboard), и не может
использоваться для передачи данных любой другой прикладной задаче.

     stack order  (стековый порядок  расположения) Организация  форм
какой-либо прикладной  задачи, которая отображена в инструментальном
окне стека  (Stack Tool),  в вершине  которой находится  форма  Goal
(Целевая форма).

     Stack  Tool   (инструментальное  окно   стека)  Окно,   которое
отображает порядок  расположения  форм  в  Вашей  прикладной  задаче
системы  ObjectVision   и  позволяет   Вам  добавлять,   копировать,
вклеивать, удалять и переупорядочивать формы.

     status (Статус)  Строка заголовка  прикладной задачи отображает
имя формы  и статус  (или  состояние)  этой  формы:  [Goal]  (Цель),
[Prompt]    (Запрос),    [Complete]    (Заполнение)    или    [Edit]
(Редактирование).

     syntax (синтаксис) Допустимый формат для описания выражений или
@-функций в  системе ObjectVision.  Например, все  выражения  должны
начинаться с одного из следующих символов:

     0 1 2 3 4 5 6 7 8 9 . + - ( @

     T

     Title bar  (Строка заголовка) Маркированная с помощью цветового
или  светового   атрибута  горизонтальная  полоса,  расположенная  у
верхнего  края   окна.  Строка   заголовка  содержит   имя  активной
прикладной задачи,  формы или  инструмента. Строки  заголовка  формы
содержат также  статус этой формы: [Goal] (Цель), [Prompt] (Запрос),
[Complete] (Заполнение) или [Edit] (Редактирование).

     Tree   Clipboard   (Универсальный   буфер   дерева)   Временное
хранилище, используемое  для объектов  дерева, которые  вы вырезаете
или копируете при работе с инструментом Stack Tool (инструментальное
окно стека).  Универсальный буфер дерева (Tree Clipboard) отличается
от универсального  буфера среды  Windows (Windows  Clipboard), и  не







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

     Tree  Tool   (Инструментальное  окно   дерева)   Окно   системы
ObjectVision, в  котором  Вы  можете  создавать  или  модифицировать
деревья решений.

     V

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



















































                                                                 132

ВВЕДЕНИЕ..........................................................1
     Что содержится в данном руководстве..........................1
     Типографские обозначения и соглашения об именах..............2
     Дополнительные сведения......................................3
ГЛАВА 1. НАЧАЛО РАБОТЫ............................................4
     Перед началом работы.........................................4
     Создание прикладной задачи...................................4
     Последовательность...........................................5
     Соглашения и термины.........................................5
     Инструментальные средства системы ObjectVision...............6
     Инкрементальная разработка...................................6
     Концепции системы ObjectVision...............................7
     Пользователи.................................................7
     Формы........................................................8
          Инструментальное окно формы (Form Tool).................8
          Дистрибутирование (распространение) программ............9
          Использование форм......................................9
     Поля.........................................................9
          Значения...............................................10
          Черновая форма (Scratchpad form).......................10
     Деревья принятия решений....................................11
          Инструментальное окно дерева (Tree Tool)...............12
               Поля..............................................12
               Средства выделения для различных типов полей......12
          Переопределение значений...............................13
     Выражения...................................................13
          Условие и выводы.......................................13
     Внешние связи...............................................14
          Файлы в формате ASCII..................................15
          СУБД Paradox...........................................15
          СУБД dBASE.............................................16
          База данных Btrieve....................................16
          Динамический обмен данными (DDE).......................17
     Запланированный процесс заполнения (руководимое заполнение)
          (Guided completion)....................................18
          Восстановление запланированного процесса заполнения....18
     Минимальная рекалькуляция...................................19
     Активная помощь пользователю................................20
ГЛАВА 2. СОЗДАНИЕ ФОРМЫ..........................................21
     Создание Вашей формы........................................21
     Изменение размера формы.....................................22
     Присвоение имени прикладной задаче и ее сохранение..........23
ГЛАВА 3. СОЗДАНИЕ ОБЪЕКТОВ В ФОРМАХ..............................24
     Объекты форм................................................24
          Поля...................................................24
               Упорядочение полей................................25
          Текст..................................................25
          Прямоугольники.........................................25
          Линии..................................................25
          Графика................................................25
     Вставка полей...............................................26
     Блоки диалога...............................................26
     Изменение размера поля......................................28
               Проверка размера..................................29
     Перемещение полей...........................................29
     Копирование полей...........................................30
     Переименование скопированных полей..........................30
     Добавление остальных полей..................................31
     Добавление текстовых объектов...............................32





                                                                 133
     Изменение шрифта............................................33
     Добавление адреса...........................................34
     Удаление бордюра............................................35
     Добавление заполненных прямоугольников......................36
     Вставка графики.............................................37
ГЛАВА 4. ОПИСАНИЕ СВОЙСТВ ПОЛЕЙ..................................41
     Свойства полей..............................................41
     Изменение формата отображения...............................41
          Выбор формата представления даты/времени...............42
          Выбор других форматов отображения......................43
     Изменение типа выравнивания.................................44
     Добавление списков выбора и маркерных кнопок................45
     Создание списка возможных значений..........................45
     Добавление подсказки к полю.................................47
     Защита вычисляемых полей....................................49
     Создание поля с маской ввода (шаблоном).....................50
ГЛАВА 5. СОЗДАНИЕ ДЕРЕВА РЕШЕНИЙ.................................52
     Инструментальное окно дерева (Tree Tool)....................52
          Элементы дерева принятия решений.......................52
               Дерево принятия решений...........................52
               Логика принятия решений...........................53
               Узел..............................................53
               Узел ветви .......................................53
               Условие...........................................53
               Узел вывода.......................................54
               Корневой узел.....................................54
               Пустой узел.......................................54
               Уровень вложения..................................54
               Обобщение.........................................54
          Дерево принятия решений для поля Shipping Method
               (Метод отгрузки)..................................55
          Создание дерева принятия решений.......................56
     Порядок расположения выводов................................59
     Тестирование дерева принятия решений........................60
ГЛАВА 6. РЕДАКТИРОВАНИЕ ДЕРЕВА РЕШЕНИЙ...........................62
     Дерево принятия решений поля Discount (Скидка)..............62
     Добавление первых узлов.....................................63
     Добавление других узлов вывода..............................65
          Прокрутка дерева принятия решений......................66
     Добавление формы для нового поля............................66
          Принятие решений о критериях проектирования............66
          Создание новой формы...................................67
     Отображение порядка расположения форм.......................69
     Копирование и редактирование фрагментов дерева..............69
     Тестирование дерева.........................................73
     Просмотр и печать дерева принятия решений...................73
          Изменение размера дерева...............................73
          Печать дерева..........................................74
     Автоматическое создание списков значений....................74
ГЛАВА 7. ОБРАБОТКА ИСПОЛЬЗУЕМЫХ ПО УМОЛЧАНИЮ (СТАНДАРТНЫХ) И
     ОШИБОЧНЫХ ЗНАЧЕНИЙ..........................................76
     Задание стандартных значений................................76
     Использование возвратной логики в дереве принятия решений...77
          Добавление дерева......................................77
ГЛАВА 8. СОЗДАНИЕ УСЛОВИЙ И ВЫВОДОВ..............................80
     Выражения...................................................80
               Синтаксис.........................................81
               Знаки операций....................................82
          Блоки диалога выражений................................82






                                                                 134
     Добавление дерева принятия решений для поля
          Amount (Базовая цена)..................................82
          Логика принятия решений................................83
          Вклейка имен полей.....................................83
          Добавление дерева......................................83
          Тестирование дерева....................................84
     Добавление деревьев принятия решений........................85
          Total Price (Итоговая цена) и Extended
               Price (Увеличенная цена)..........................85
          Дерево принятия решений поля Shipping Cost
               (Стоимость отгрузки)..............................86
     Использование @-функций в выражениях........................88
          Синтаксис..............................................89
          Функции @NOW, @INT и @ROUND............................89
          Дерево принятия решений поля Order Date (Дата заказа)..90
          Дерево принятия решений для поля Less
               Discount (Уменьшенная скидка).....................91
          Дерево принятия решений поля Sales Tax
               (Налог на продажу)................................92
     Проверка допустимости вводимых данных.......................94
          Обработка дерева принятия решений поля Quantity
               (Количество)......................................95
ГЛАВА 9. УСТАНОВЛЕНИЕ СВЯЗИ С БАЗОЙ ДАННЫХ.......................97
     Внешние связи...............................................97
          Создание таблицы СУБД Paradox..........................98
     Использование связей с кнопочными полями и
          деревьями принятия решений............................100
ГЛАВА 10. ВВОД ДАННЫХ ПРИ РАБОТЕ С ПРИКЛАДНОЙ ЗАДАЧЕЙ...........102
          Удаление данных.......................................102
     Навигация в форме (перемещение по форме)...................102
     Заполнение формы...........................................103
          Прием заказа..........................................103
               Исправление текста...............................103
          Завершение ввода заказа...............................105
          Печать формы..........................................107
     Ввод нового заказа.........................................108
          Изменения по принципу "а что, если"...................109
     Поиск данных...............................................110
     Резюме.....................................................111
ПРИЛОЖЕНИЕ А. ОПЕРАЦИИ С КЛАВИАТУРОЙ И ОПЕРАЦИИ С МЫШЬЮ.........112
     Выбор команд меню..........................................112
     Выполнение прикладных задач................................113
     Команды управляющего меню системы ObjectVision.............114
               Управляющее меню окна прикладной задачи
                    системы ObjectVision:.......................114
               Управляющее меню окна формы системы
                    ObjectVision:...............................114
     Получение оперативной подсказки............................115
               Подсказка для поля (во время заполнения формы):..115
               Подсказка по системе ObjectVision................115
     Использование блоков диалога...............................117
     Заполнение форм............................................118
     Поля.......................................................118
               Перемещение между полями.........................118
               Селектирование значений-вариантов полей..........119
               Редактирование текста в полях....................119
     Просмотр деревьев принятия решений.........................120
               Перемещение между узлами.........................120
               Прокрутка........................................120






                                                                 135
               Изменение формата отображения....................120
     Инструментальное окно формы (Form Tool)....................120
               Команды управляющего меню........................120
               Прокрутка........................................121
               Селектирование объекта формы.....................121
     Инструментальное окно стека (Stack Tool)...................122
СЛОВАРЬ.........................................................123
























































Яндекс цитирования