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



 

Paradox. Руководство программиста

.

                             - 2 -
                                          GUIDE TO THE PARADOX
                                          PERSONAL PROGRAMMER




              P E R S O N A L   P R O G R A M M E R





.

                             - 3 -


                       С О Д Е Р Ж А Н И Е

                                                          Стр.


   ЧАСТЬ I    ОСНОВЫ Personal Programmer                   13



   ЧАСТЬ II   ПРИНЦИПЫ И РУКОВОДСТВА                       29



   ЧАСТЬ III  ВОПРОСЫ ПОВЫШЕННОЙ СЛОЖНОСТИ И РЕКОМЕНДАЦИИ 152



   ПРИЛОЖЕНИЕ А                                           178


   РИСУНКИ                                                180


.

                             - 4 -

      ГЛАВА 1  ВВЕДЕНИЕ

       Что такое приложение
       Что может Personal Programmer
       Требования и возможности


.

                             - 5 -
                                                Г Л А В А  1
 ____________________________________________________________

                             ВВЕДЕНИЕ
 ____________________________________________________________


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

      - создавать  и  использовать  меню приложений  в стиле
        системы PARADOX в интерактивном режиме;
      - осуществлять привязку действий в соответствии с  ус-
        ловием задачи в любом режиме меню  приложений;
      - создавать основные объекты системы PARADOX (таблицы,
        отчеты, запросы, формы) для Вашего приложения;
      - создать титульный ("SPLASH") экран приложения в  ин-
        терактивном режиме;
      - связать две таблицы реальным "внешним соединением";
      - вносить изменения в имеющееся приложение,  созданное
        в системе Personal Programmer.

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

      - что такое приложение;
      - что может делать Personal Programmer;
      - оборудование,  необходимое  для  установки  Personal
        Programmer;


                             - 6 -
      - что следует знать для более эффективного использова-
        ния системы Personal Programmer;
      - возможности и ограничения приложений, созданных  при
        помощи Personal Programmer.

                   ЧТО ТАКОЕ ПРИЛОЖЕНИЕ ?

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

  *INQUIRY   REPORTS   MAINTENANCE   ORDERS   HELP   LEAVE
   Inquire abоut customers or films.
 ___________________________________________________________

      Заказав  режим  ОТЧЕТЫ  из  основного меню приложения,
 служащий увидит меню следующего уровня:




                             - 7 -
 ___________________________________________________________

   *CATALOG  OVERDUE  ITILIZATION  CANCEL
   Print a listing of all films.
 ___________________________________________________________

      Заказав режим ПРОСРОЧЕННЫЕ_ФИЛЬМЫ, он получит на своем
 печатающем  устройстве отчет с информацией, о фильмах у ко-
 торых просрочена дата возврата, на основании данных из таб-
 лицы orders.
      Вот и все, и нет никакой надобности обучать Ваших слу-
 жащих работе в системе PARADOX, ни как  строить  запросы  в
 системе, ни как создавать отчеты в нужной форме и т.п. Все,
 что  им  нужно  для их работы, предоставит Ваше приложение.
 Поскольку Ваши служащие никогда  не  увидят  самой  системы
 PARADOX,  Вам нужно будет только показать им как выбрать то
 или иное действие по меню приложения и, как вводить и выби-
 рать данные.
      При помощи Personal Programmer довольно сложное прило-
 жение создается достаточно легко. И, действительно, Вы смо-
 жете создать его самостоятельно, изучив главы  4-7  данного
 пособия. Вы обнаружите, что программы, создаваемые системой
 Personal  Programmer,  выполняют практически все, что может
 быть написано на языке PAL. Принципиальное исключение  сос-
 тавляют  многопользовательские операции, поддержание таблиц
 со связями "один ко многим" и использование  инструментария
 ввода данных (Data Entry Toolkit).

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


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

                ЧТО МОЖЕТ PERSONAL PROGRAMMER

      Система PARADOX состоит  из  программ,  написанных  на
 языке  создания  приложений  (PAL).  До  появления  системы
 Personal Programmer (и  его  предшественника  -  генератора
 приложений  в системе PARADOX) Вы должны были свободно вла-
 деть языковыми средствами PAL  для  создания  разного  рода
 приложений.  Появление Personal Programmer изменило состоя-
 ние дел. Он ведет Вас в процессе создания приложения и вне-
 сения изменений в него. Серия  последовательно  возникающих
 на  экране  меню работ определяет основные этапы в создании
 приложения.
      Вообще говоря, Вы создаете систему меню и определяете,
 какие действия должны выполняться в том или ином режиме ме-
 ню. Когда Вы это заканчиваете, Personal Programmer сама пи-
 шет за Вас программы на языке PAL, которые обеспечат работу
 приложения. Вам нет необходимости самим писать что-либо  на
 PAL и даже вообще что-нибудь знать о нем.

       Personal  Programmer создает хорошо структурированные
 модули на языке PAL и записывает их в специально  организо-
 ванные  библиотеки процедур. Это означает, что если Вы вла-
 деете языком PAL или хотите лучше его  изучить,  то  можете
 использовать PPROG для создания прототипа приложения, а за-
 тем вносить требуемые изменения и улучшения.

              Использование Personal Programmer



                             - 9 -
                          Основное меню  PERSONAL PROGRAMMER
 ___________________________________________________________

 *Create Modify Summarize Review Play Tools Exit
 Create a new application.
 ___________________________________________________________


                          Введите имя создаваемого приложения
 ___________________________________________________________

 Application:
 Enter new application name.
 ___________________________________________________________


                  Закажите таблицы, требуемые для приложения
 ___________________________________________________________

 *ExitingTable NewTable RemoveTable DO-IT! Cancel
 Choose an existing table to use in application.
 ___________________________________________________________


                    Создайте основное меню Вашего приложения
 ___________________________________________________________

 *Menu View Report DataEntry Edit Script Help NotDefined Cancel
 Attach a submenu to the current menu selection.
 ___________________________________________________________
 ___________________________________________________________

 *Inquiry Reports Maintenance Orders Help Leave
  Inquire about customers or films.
 ___________________________________________________________



                             - 10 -
           Завершите работу и запомните созданное приложение
 ___________________________________________________________

 *DO-IT! Cancel
 Save the application.
 ___________________________________________________________

      Personal  Programmer  полностью  совместим  с системой
 PARADOX. Файлы,  используемые  в  приложении  -  это  файлы
 PARADOX:

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

                   ТРЕБОВАНИЯ И ВОЗМОЖНОСТИ

      Для   того,   чтобы   использовать   систему  Personal
 Programmer Вам потребуется:

      - система ЭВМ, в которой может работать PARADOX,
      - жесткий диск или сервер для сети ЭВМ  (минимум 2  мБ
        свободной памяти),
      - 640К внутренней памяти (прямого доступа).

      ЗАПОМНИТЕ,  что  Вы  не  можете  работать  с  Personal
 Programmer в системе с гибкими дисками. Но можете использо-
 вать систему с 2-мя гибкими дисками для работы с приложени-
 ями,  созданными  посредством Personal Programmer, если все
 программные и информационные файлы для приложения помещают-
 ся на одном гибком диске. Пользователи могут применять либо
 систему PARADOX, либо средство PARADOX RUNTIME для  поддер-
 жания   работы  приложения,  созданного  в  среде  Personal
 Programmer Более подробно см.главу 8.


                             - 11 -


      Используя  Personal  Programmer  Вам  ничего  не нужно
 знать о программировании. Однако, Вы должны  знать  о  том,
 как  работать  с системой PARADOX. Чем лучше Вы его знаете,
 тем лучше поймете, что и как  можно  получить  от  Personal
 Programmer.
      С некоторыми исключениями Personal Programmer  не  до-
 бавляет  каких-либо новых возможностей в PARADOX, но он об-
 легчает и упрощает процесс создания программных  приложений
 для системы PARADOX.
      Например,  поскольку создание основных файлов приложе-
 ния - это создание основных файлов  системы  PARADOX,  т.е.
 таблиц,  запросов,  форм  и отчетов, Вы создаете их обычным
 образом, и понимание природы файлов  PARADOX  -  минимально
 необходимое  условие  для  начала  работы  в среде Personal
 Programmer.
      Если Вы владеете языком PAL, то найдете, что  Personal
 Programmer хороший помощник для Вас. С его помощью Вы може-
 те  легко  определить структру Вашего приложения, закодиро-
 вать стандартные модули и даже создать титульный экран  для
 него. Создав при помощи Personal Programmer основу для при-
 ложения,  Вы  можете  дописать  дополнительные программы на
 PAL, чтобы с их помощью выполнить более сложные  задачи.  И
 поскольку  Personal Programmer пишет хорошо структурирован-
 ные модули на PAL, их можно легко отредактировать, вставить
 свои комментарии и расширить их возможности. Более подробно
 см.главу 11.

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

      - 15 таблиц,
      - 15 пунктов для каждого меню,
      - 10 уровней системы меню.

      Хотя  приложения,  созданные   при   помощи   PERSONAL
 PROGRAMMER,  будут  работать  в сети, они не используются в


                             - 12 -
 многопользовательском режиме.
      И,  наконец, имеются ограничения на редактирование оп-
 ределенных полей в экранах  отображения  нескольких  таблиц
 (см.главу 10).
      ПОМНИТЕ,  что программы, создаваемые системой Personal
 Programmer, должны являться начальной точкой для Вашего ко-
 нечного приложения. С помощью языка PAL и Ваших программ на
 нем Вы сумеете обойти даже эти ограничения системы Personal
 Programmer.

.

                             - 13 -


                                                Ч А С Т Ь  I
 ___________________________________________________________

               O C Н О В Ы   Personal Programmer
 ___________________________________________________________

     ГЛАВА 2 УСТАНОВКА

        Установка Personal Programmer
        Если установка не сработала
        Замечания по установке

     ГЛАВА 3  ОБЗОР

        Подготовка
        Начало работы с Personal Programmer
        Как стартовать Personal Programmer
        Работа с Personal Programmer
        Главное меню
        Выбор таблиц
        Разработка меню приложения
        Описание пунктов меню
        Окончание и выход
        Модификация приложения
        Запуск приложения
        Обобщения

.

                             - 14 -


                                                Г Л А В А   2
 ____________________________________________________________

                      У С Т А Н О В К А
 ____________________________________________________________

      Чтобы запустить Paradox Personal Programmer, надо  его
 установить на Ваш винчестер или сетевой файловый процессор.
 (Как объяснялось в главе 1, Personal Programmer не работает
 на 2 "флоппи" дисках).
      В  сети  Personal  Programmer  должен  устанавливаться
 только сетевым администратором.

      УСТАНОВКА Personal Programmer

      Personal  Programmer  предполагает,  что на винчестере
 есть директории в соответствии с рисунком:

                          Корневой (\)
                             і
                           paradox 2
                             і
           ЪДДДДДДДДДВДДДДДДДЕДДДДДДДДВДДДДДДДДДї
           і         і       і        і         і
        protect+  sample+  pprog*  sampapp+  detool+

 * - не нужен перед установкой
 + - возможно


      Для установки вводите команды из командной строки  DOS
 для  Вашего  винчестера  (обычно с>) или для сетевого диска
 PARADOX'a (обычно f>).

      1. Войдите в директорий PARADOXа:
          c>cd \paradox2   [Enter]


                             - 15 -
      2. Вставьте диск 1 с Personal Programmer в дисковод A:
         компьютера.
      3. Введите
                  с>a:pinstall   [Enter].

         Программа установки создает  подкаталог  \paradox2\
         pprog  и сканирует  файлы  с пяти  дисков  Personal
         Programmer.  Программа будет запрашивать Вас об ус-
         тановке  нужной ей дискеты.  После завершения уста-
         новки появится сообщение: Paradox Personal Program-
         mer succesfully installed  и появится "приглашение"
         DOC.
      4. Обновите команду PATH в файле AUTOEXEC.BAT, включив
         туда подкаталог, в котором находится Personal Prog-
         rammer  (обычно с:paradox2\pprog).  Например, такая
         команда PATH типична для многих установок:

           path c:\;c:\dos;c:\paradox2;c:\paradox2\pprog

         (В сети идентификатор диска обычно f: вместо c:).

      Если вы хотите установить Personal  Programmer  немед-
 ленно, выполните команду PATH из командной строки.

                 ЕСЛИ УСТАНОВКА НЕ СРАБОТАЛА

      Если  что-либо случилось во время установки, программа
 выдает сообщение об ошибке и возвращается в ДОС.  Сообщения
 находятся  в приложении А к этому руководству. Проверте се-
 бя, если не можете установить Personal Programmer c  первой
 попытки:

      - Есть ли достаточно места на винчестере? Для Personal
        Programmer  надо  около  2 мегабайт.  Если у Вас нет
        столько места,  придется  удалить  некоторые файлы с
        винчестера до установки Personal Programmer.
      - Правильно  ли  вы  устанавливали  дискеты   Personal
        Programmer в A>?  Надо ставить их строго по порядку,
        от 1 до 5.
      - Был ли текущим дисководом винчестер (c>)?  Если нет,
        то сделайте его текущим и повторите процесс.
      - Были ли вы в подкаталоге Paradox?  Personal Program-
        mer должен переписать оттуда 2 файла, и подразумева-


                             - 16 -
        ет, что они находятся в текущем директории.


                   ЗАМЕЧАНИЯ ПО УСТАНОВКЕ

       Структура директориев

       После установки Personal Programmer  создается  новый
 директорий  на  винчестере: \paradox2\pprog (если он уже не
 существовал).  Там  находятся  программные  файлы  Personal
 Programmer, и процедура установки автоматически копирует их
 туда.
      Мы  рекомендуем  Вам использовать отдельный директорий
 для каждого приложения. Это позволит  вам  идентифицировать
 Ваши  приложения. С указанием в команде PATH \paradox\pprog
 можно запустить Personal Programmer из  любого  директория.
 Поэтому  более  удобно запускать Personal Programmer из ди-
 ректория, в котором находится Ваше приложение. Чтобы узнать
 более подробно о создании директория для  приложения,  пос-
 мотрите  "Установка  директория"  в  главе 4 (начиная новое
 приложение).

       Настройка

      Можно  использовать   Paradox   Custom   Configuration
 Program  для настройки Personal Programmer в Вашей системе.
 Надо запускать CCP из Personal Programmer, а не из Paradox.
 Подробней смотрите "Настройка Personal Programmer" в  главе
 10.

.

                             - 17 -

                                                Г Л А В А   3
 ____________________________________________________________

                            О Б З О Р
 ____________________________________________________________

      При использовании Personal Programmer программа  будет
 сопровождать Вас шаг за шагом по процессу создания приложе-
 ния.  Эта  ключевая  глава дает обзор этого процесса. Здесь
 описано:

      - подготовка, необходимая до запуска Personal Program-
        mer;
      - запуск  Personal  Programmer;
      - начало процесса  определения приложения;
      - построение меню;
      - определение действий  в  меню;
      - выход  из  Personal Programmer;
      - запуск  приложения;
      - изменение ранее созданного приложения.

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


                           ПОДГОТОВКА

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


                             - 18 -
 после того, как Вы закончите его создание.
      Затем, если Вы планируете использовать  в  приложении
 Ваши  собственные  сценарии  PARADOX  или PAL, используйте
 PARADOХ для их подготовки. По Вашему желанию Вы можете ис-
 пользовать PARADOX так же для  предварительной  подготовки
 таблиц,  форм, спецификаций и экранов для отображения нес-
 кольких таблиц. Но вместе с тем эти же объекты  Вы  можете
 построить с помощью Personal Programmer непосредственно во
 время   разработки  Вашего  приложения  или позаимствовать
 структуру об'ектов у уже существующих.
      Если Вы хотите, чтобы таблицы приложения были защище-
 ны   паролем,   используйте   во   время    их    создания
 Tools/More/Protect Generator защиты PARADOX для реализации
 Вашей  системы  паролей.
      Последним этапом подготовки к созданию нового  прило-
 жения  является использование  команды DOS md для создания
 отдельного директория на Вашем жестком диске, где Вы можете
 создавать и сохранять файлы приложения. Хотя файлы Personal
 Programmer     всегда     располагаются     в    директории
 paradox2/pprog, Вы можете создать Ваше приложение  в  любом
 директории  на жестком диске. Т.к. любое приложение состоит
 из ряда разнообразных таблиц, форм, сообщений и  сценариев,
 мы  рекомендуем  организовать  новый директорий для каждого
 нового приложения, сгенерированного Вами. В противном  слу-
 чае,  Вы не можете точно определить, какому приложению при-
 надлежат те или иные об'екты и сценарии.
      Предварительное описание  Personal  Programmer  более
 детально приведено в главе 4 (НАЧАЛО НОВОГО ПРИЛОЖЕНИЯ).

                НАЧАЛО РАБОТЫ Personal Programmer

      Перед  началом  работы Personal Programmer убедитесь,
 что:
      - Personal Programmer  установлен  на  Вашем  жестком
        диске, как описано в главе 2 (УСТАНОВКА);
      - директорий  \paradox2\pprog добавлен  к команде DOS
        path, как описано в главе 2;


                             - 19 -
      - создан  отдельный директорий для Вашего приложения,
        как описано в разделе "ПОДГОТОВКА".

      -  ВАЖНО: Используя Personal Programmer, Вы можете ра-
 ботать со сценариями, таблицами и другими об'ектами  только
 в текущей директории. Однако, Вы можете изменить директорию
 Personal Programmer.
      Если  Вы затрудняетесь прочитать экран (особенно прос-
 вечиваемые его части), или если Вы работаете с  графической
 цветной платой IBM и видете на экране "снег", Вам может по-
 надобиться  запросить  программу  о Вашем мониторе, а затем
 продолжить работу. В этом случае смотрите  раздел  "ВОПРОСЫ
 АДАПТАЦИИ СИСТЕМЫ К ВАШЕМУ КОМПЬЮТЕРУ" гл.10 (ВОПРОСЫ ПОВЫ-
 ШЕННОЙ СЛОЖНОСТИ) для получения информации о запуске Custom
 Configuration  Program  из  Personal  Programmer. Указанная
 причина является единственной причиной, по которой  в  этот
 момент  Вам может понадобиться использование программы кон-
 фигурации.

               КАК СТАРТОВАТЬ Personal Programmer

      Если Вы планируете работать с образцом приложения, не
 торопитесь  запускать  Personal Programmer. Подобные инст-
 рукции по запуску системы приведены в  главе  4  (СОЗДАНИЕ
 НОВОГО ПРИЛОЖЕНИЯ).

     Используйте команду DOS  cd  для  изменения  директория
 приложения,  который  Вы создали. Например, если директорий
 называется \paradox2\pprog\newap, Вы должны набрать:

       c>cd\paradox2\pprog\newap нажмите  [Enter]

      На экране появится pprog. Нажмите [Enter] и вы увидите
 Главное меню Personal Programmer
 ___________________________________________________________

 *Create  Modify  Summarise  Review  Play  Tools  Exit
  Create a new application
 ___________________________________________________________



                             - 20 -

      Personal  Programmer  меню работает аналогично меню
 PARADOXа.
      Используйте клавиши --> и  <--  передвижения   курсора
 для выбора нужного пункта. или нажмите [Esc] для возврата в
 предыдущее меню.


                РАБОТА  С  Personal Programmer

      Работа с системой Paradox  Personal  Programmer  очень
 похожа  на работу с самой системой Paradox. Меню появляется
 в верхней части экрана, а сообщения в нижней. Многие клави-
 ши, которые Вы используете, такие же - Do-it! [F2] - закон-
 чить действия, [Esc] - вернуться на шаг назад и т.д. Вы мо-
 жете использовать обычные приемы работы с системой  Paradox
 для  выбора  из меню, использования подсказки и отображения
 меню Ваших таблиц или других объектов. Если Вы увидите  со-
 общение  об ошибке, обратитесь к приложению А данного руко-
 водства для разъяснения.
      Одно  важное различие между Personal Programmer и сис-
 темой Paradox заключается в том, что в нижней половине  эк-
 рана Personal Programmer отображает заключенные в рамки ин-
 формацию состояния, инструктаж и подсказки к проводимым Ва-
 ми  в  данный момент действиям. Третья линия верхней рамки,
 названная линией действий, всегда отображает действие,  ко-
 торое Вы должны выполнить вслед за текущим. Нажимать клави-
 шу  [F1] (Help) не нужно (нажатие ee не дает эффекта), т.к.
 подсказка почти всегда отображена на экране.  В  нескольких
 случаях, когда подсказка на экране автоматически не отобра-
 жается,  например,  когда  Вы составляете запрос, Вы можете
 нажать [F1] (Help) для получения дополнительной информации.
 (Если Вы сочтете, что постоянная подсказка Вам  мешает,  Вы
 можете  выбрать  пункт  Setting/HelpMode  из главного меню,
 чтобы сделать ее менее многословной).


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

      1. Задание имени приложения.
      2. Определение или создание таблиц,  которые Вы будете
         использовать в приложении.
      3. Создание главного меню для Вашего приложения.
      4. Для каждого пункта меню приложения  задаются дейст-
         вия, которые должны выполняться при его выборе. Это
         может включать создание  и описание подменю, а так-
         же построение форм, запросов, сообщений или экранов
         для отображения нескольких таблиц.
      5. Окончание и сохранение приложения.

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


                        ГЛАВНОЕ МЕНЮ
 ___________________________________________________________

 *Create Modify Summarize Review Play Tools Exit
 Create a new application.
 ___________________________________________________________

      На  главном  меню  Personal Programmer Вы можете найти
 следующие пункты :

         - CREATE : начать разработку первого приложения.
         - MODIFY : изменить существующее приложение.
         - SUMMARIZE : напечатать конспект приложения.
         - PLAY : запустить приложение или сценарий  системы
           PARADOX.


                             - 22 -
         - TOOLS: отобразить  меню  со  следующими  дополни-
         тельными выборами :
            - COPY : скопировать модифицируемую часть прило-
              жения на другой диск (директорий).
            - DELETE : удалить приложение с диска.
            - RENAME : переименовать приложение.
            - SETTING : изменить печать ,подсказку или уста-
              новки вывода сценария Personal Programmer.
            - DIRECTORY : изменить рабочий директорий Perso-
              nal Programmer.
         - EXIT : возвратиться из Personal Programmer в DOS.

      При   выборе  большинства  из  этих  пунктов  Personal
 Programmer просит указать Вас имя приложения. Если Вы выби-
 раете  MODIFY,  SUMMARISE,  REWIEV,  PLAY  или  TOOLS/COPY,
 DELETE или RENAME все файлы названного Вами приложения дол-
 жны  находиться  в текущем директории. Отметим, что нажатие
 клавиши [Enter] после выбора действия главного меню не вле-
 чет отображения меню приложений.
      Пункт  CREATE  обсуждается в главах 4-6 данного руко-
 водства, MODIFY - в главе 7, PLAY - в главе 8.  SUMMARIZE,
 REVIEW и TOOLS описаны в главе 9 (управление вашими прило-
 жениями).

                       ВЫБОР ТАБЛИЦ

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

                 РАЗРАБОТКА МЕНЮ ПРИЛОЖЕНИЯ

      Когда  Ваше приложение запущено, его главные действия


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

                   ОПИСАНИЕ ПУНКТОВ МЕНЮ

      Следующий шаг - объяснить  Personal  Programmer,  что
 каждый выбор в каждом меню Вашего приложения должен за со-
 бой повлечь. Для каждого выбора по очереди Вы должны опре-
 делить  одно  из следующих действий :
 ___________________________________________________________

 *Menu View Report DataEntry Edit Script Help NotDefind Cancel
  Attach a submenu to current menu selection.
 ___________________________________________________________

         -  MENU : показать пользователю подменю.
         -  VIEW : позволяет  пользователю  смотреть все или
            часть одной или более таблиц.
         -  REPORT : позволяет пользователю  печатать, отоб-
            ражать или сохранять сообщения.
         -  DATAENTRY: позволяет пользователю  добавлять но-
            вые coобщения.
         -  EDIT : позволить пользователю  редактировать со-
            общения в одной или более таблицах.
         -  SCRIPT: запустить сценарий системы PARADOX, ког-
            да пользователь выберет этот пункт.
         -  HELP: показать пользователю экран помощи.
         -  NOT DEFINED: пропустить описание этого пункта.
         -  CANCEL: позволить пользователю  вернуться в пре-
            дыдущее меню приложения.

      Когда  Вы  пытаетесь  определить действие какому-либо
 выбору, Personal Programmer спрашивает Вас все необходимые
 уточнения. Например, если Вы выбираете VIEW, Вас спрашива-
 ют:


                             - 24 -
      - Какие таблицы Вы хотите, чтобы пользователь видел ?
      - Какую экранную форму  использовать, если Вы указали
        более чем одну таблицу ?
      - Какие поля и сообщения отображать ?
      - Какие формы использовать для отображения ?

      Одно  действие  "Menu"  заслуживает особого внимания.
 Указание меню для какого-либо пункта позволяет вам  разра-
 ботать подменю, которое отобразится на экране, когда поль-
 зователь выберет этот пункт. Вы разрабатываете и описывае-
 те выборы подменю почти таким же образом, как пункты глав-
 ного меню Вашего приложения.
      С  помощью  действия  Menu Вы можете определить до 10
 уровней меню. Это позволит пользователям Вашего приложения
 просматривать возможные выборы "в глубину" до тех пор пока
 они не найдут желаемого. Например, в  образце  приложения,
 которое мы разработаем выбор REPORTS главного меню отобра-
 жает  подменю, которое позволяет выбрать пользователю, ка-
 кое сообщение напечатать.
      Personal Programmer  автоматически  добавляет  пункт,
 называемый  Leave  к главному меню Вашего приложения. Этот
 пункт позволяет Вашим пользователям выйти из приложения  и
 вернуться  в  Paradox. Определение пунктов меню более под-
 робно описано в главе 6 (Меню привязки действий).


                      ОКОНЧАНИЕ  И  ВЫХОД

      Когда Вы закончили описание выборов меню Вашего  при-
 ложения,  Personal Programmer спрашивает Вас, хотите ли Вы
 сделать заставку (титульный экран),  которая  будет  появ-
 ляться  каждый  раз,  когда  пользователь будет стартовать
 приложения. Если Вы отвечаете "да", то Вы можете использо-
 вать Paradox Form Disigner для построения заставки.
      Наконец, завершающее  меню  позволяет  Вам  сохранить
 созданное Вами приложение или не сохранять его:



                             - 25 -
 ___________________________________________________________

 *DO-IT!      Cancel
 Save this application definition.
 ___________________________________________________________

      - DO-IT!: сохранить описание приложения,  записать его
        в PAL-скрипты  и вернуться  в главное меню  Personal
        Programmer (то же самое при нажатии на клавишу [F2]).
      - Cancel: вернуться в главное меню Personal Programmer
        без сохранения описания приложения или генерации его
        PAL-скрипта.

      Если Вы выбрали DO-IT!, Personal  Programmer  покажет
 Вам скрипты приложения, как он их сгенерировал. В заключе-
 ние, все таблицы, формы, запросы и охранные формы для нес-
 кольких  таблиц,  которые Вы определии для использования в
 приложении, будут сохранены в текущем директории вместе со
 скриптами.
      После того, как приложение  сгенерировано,  Вы  снова
 увидите главное меню Personal Programmer:
 ___________________________________________________________

 Create Modify Summarize Review Play Tools *Exit
 Leave the Personal Programmer and return to DOS.
 ___________________________________________________________

      Выберите  Exit для выхода из Personal Programmer. Вас
 спросят для подтверждения:
 ___________________________________________________________

 No    *Yes
 Leave the Paradox Personal Programmer.
 ___________________________________________________________

      Выберите "Yes" для подтверждения возвращения  в  DOS.
      Завершение приложений описано более подробно в главе
 6 данного руководства.




                             - 26 -
                    МОДИФИКАЦИЯ  ПРИЛОЖЕНИЯ

      Система  Paradox  Personal Programmer построена таким
 образом, что Вы можете быстро и легко создать новое прило-
 жение, используя прототип, проверить его и изменить по Ва-
 шему усмотрению. Есть 2 пути модификации приложения:
      >>  Выбрать   Modify   из   главного   меню   Personal
 Programmer.  Вы  можете  решить, что добавить или изменить,
 оставив остальную часть приложения старой. Вы можете  также
 использовать Modify для изменения приложений, созданых пре-
 дыдущими  версиями системы Personal Programmer (называемыми
 Application Generator). Модификация приложения описана  бо-
 лее подробно в главе 7 (Модификация приложения).
      >> Использовать Paradox Script Editor или любой другой
 редактор на Ваш выбор для внесения изменений в PAL-скрипты,
 которые составляют приложение. Вы найдете программы, сгене-
 рированные  системой Personal Programmer, хорошо структури-
 рованными и легкими для понимания и редактирования. Вы дол-
 жны быть хорошо знакомы  с  PAL-программированием  и  иметь
 полное  представление о содержании Руководства пользователя
 PAL перед тем, как использовать этот  метод.  Отметим,  что
 любые изменения, которые Вы внесете в сгенерированную прог-
 рамму  будут потеряны, если после этого Вы будете использо-
 вать Выбор Modify системы Personal Programmer для исправле-
 ния приложения. Замечания по структуре сгенерированных сис-
 темой Personal Programmer скриптов и инструкции по их изме-
 нению изложены в главе 11 (Советы программистам).


                      ЗАПУСК  ПРИЛОЖЕНИЯ

      Поскольку  приложения,  созданные  с помощью  Personal
 Programmer, представляют собой скрипты Paradox,  они  могут
 быть  запущены  несколькими способами.  Например, если соз-
 данное Вами приложение имеет имя video,  Вы могли бы запус-
 тить его:

      - из Главного меню  Personal Programmer - Выбрав  Play


                             - 27 -
        и введя имя приложения (video).
      - из системы Paradox - используя  Tools/More/Directory
        для перехода в директорий приложения  video, а затем
        выбрав пункт Script/Play и введя имя приложения (vi-
        deo).
      - из DOS, поддерживающей Paradox, - используя  команду
        DOS  cd  для  перехода  в директорий  video, а затем
        набрав paradox2 video (предполагается, что \Paradox2
        включен  в DOS).
      - из DOS,  поддерживающей  Paradox Runtime - используя
        команду DOS cd для перехода в директорий  video (ко-
        торый  включает  файлы  Runtime),  а  затем  набрав:
        pdox2run video.

      Какой бы метод Вы не избрали, Вы увидите Главное меню
 Вашего приложения в верхней части экрана. Как часть прило-
 жения  Personal Programmer автоматически создает специаль-
 ный скрипт (для video она будет называться videocp), кото-
 рый позволяет легко  копировать  все  скрипты,  библиотеки
 процедур, таблицы и объекты, составляющие все вместе гото-
 вое  к  выполнению  приложение, в другой директорий или на
 диск для передачи другим пользователям.
      Запуск на выполнение и копирование приложения описаны
 подробно в главе 8 (Запуск приложения).


                           ОБОБЩЕНИЯ

      Работа с системой Paradox Personal  Programmer  очень
 похожа  на работу с системой Paradox. Ниже представлен об-
 щий план использования системы  Personal  Programmer.  При
 разработке  приложения Вы проходите следующие основные ша-
 ги:
      1. Создание элементов приложения.
      Используйте Paradox для предварительного создания лю-
 бых скриптов приложения. Кроме того, Вы можете решить соз-
 дать предварительно Ваши таблицы, формы, сообщения  и  эк-
 ранные формы для отображения нескольких таблиц.
      2. Создание директория для приложения.
      Используйте  команду DOS md. Скопируйте все созданные


                             - 28 -
 элементы в этот директорий.
      3. Запуск Personal Programmer.
      Используйте команду DOS cd для перехода  в  созданный
 директорий.  Наберите  pprog  для запуска системы Personal
 Programmer.
      4. Создание приложения.
      Выберите  пункт  Create  из  Главного  меню  Personal
 Programmer,  задайте  имя  Вашего приложения и укажите или
 создайте таблицы, которые оно использует.
      5. Разработка меню.
      Следуйте подсказкам на экране  для  создания  системы
 меню.
      6. Описание пунктов меню.
      Для каждого пункта меню определить действие и детали-
 зировать его.
      7. Создание заставки (необязательно).
      Создайте титульный экран для Вашего приложения.
      8. Сохранение созданного приложения Выбором DO-IT! из
 заключительного  меню  Personal  Programmer.  Генерируются
 скрипты для Вашего приложения и сохраняются в текущем  ди-
 ректории.
      9.  Выход  из Personal Programmer Выбором Exit/Yes из
 Главного меню.
      После этого, когда Ваше приложение создано, Вы можете
 запустить его любым путем, каким может быть запущен скрипт
 системы Paradox. Если позднее Вы решите изменить Ваше при-
 ложение, запустите систему Personal Programmer и  Выберите
 пункт  Modify  из ее Главного меню. Кроме этого, Вы можете
 использовать Paradox Script  Editor  или  Ваш  собственный
 текстовой  редактор  для  модификации  скрипта, созданного
 системой Personal Programmer.

      В части II данного  руководства  Вы  познакомитесь  с
 процессом создания приложения и создадите простое приложе-
 ние.  Глава  4 обсуждает подготовку и первые шаги создания
 приложения с помощью системы Personal Programmer.
.

                             - 29 -

                                              Ч А С Т Ь   II
 ___________________________________________________________

         П Р И Н Ц И П Ы   И   Р У К О В О Д С Т В А
 ___________________________________________________________


     ГЛАВА 4  СОЗДАНИЕ НОВОГО ПРИЛОЖЕНИЯ

       Создание сценария
       Создание приложения video
       Определение основных составляющих программного
       приложения (файлов PARADOX)
       Создание директория
       Вход в Personal Programmer
       Создание и присвоение приложению названия
       Выбор таблиц

     ГЛАВА 5  ПОСТРОЕНИЕ СИСТЕМЫ МЕНЮ

       Ввод названий для режимов работ и комментариев к ним
       Редактирование меню
       Построение подменю низших уровней
       Перерыв в изучении

     ГЛАВА 6  МЕНЮ ПРИВЯЗКИ ДЕЙСТВИЙ

       Меню привязки
       Меню выбора действий - Action Menu
       Создание подменю
       Просмотр таблиц
       Вывод отчетов на печать
       Ввод данных
       Редактирование таблиц
       Ограничения на процесс редактирования
       Защита ключевых полей


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

     ГЛАВА 7  МОДИФИКАЦИЯ ПРИЛОЖЕНИЯ

       Меню услуги Modify
       Изменение списка таблиц
       Изменение меню или действия услуги меню
       Поиск неопределенных услуг
       Изменение титульного экрана
       Редактирование программ, созданных Personal
       Programmer

     ГЛАВА 8  ВЫПОЛНЕНИЕ ПРИЛОЖЕНИЯ

       Состав приложения
       Использование программы копирования
       Копирование приложения вручную
       Выполнение приложения из Personal Programmer
       Выполнение приложения из PARADOX
       Выполнение приложения из DOS
       Использование batch файла
       Выполнение приложения из PARADOX RUNTIME

     ГЛАВА 9  ДЕЙСТВИЯ ПО ПОДДЕРЖАНИЮ ВАШЕГО ПРИЛОЖЕНИЯ

       Резюме (Summarise)


.

                             - 31 -


                                              Г Л А В А   4

 __________________________________________________________

                 СОЗДАНИЕ  НОВОГО  ПРИЛОЖЕНИЯ
 __________________________________________________________


     Прежде  чем приступить к созданию программного приложе-
 ния при помощи Personal Programmer (средства создания прог-
 раммных приложений в среде PARADOX) следует:

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


                       СОЗДАНИЕ  СЦЕНАРИЯ

     Хотя  средства Personal Programmer позволяют легко про-
 изводить различные изменения в процессе решения задачи, все
 же рекомендуется сначала тщательно  разобраться  в  задаче,
 определить ее основные функции, спланировать алгоритм реше-
 ния.
     Желательно  сначала  определить  функции, которые будут
 выполняться создаваемым приложением. Затем следует обдумать
 взаимосвязь  этих функций. Может быть целесообразно вынести
 выполнение  аналогичных операций в особые подменю основного
 меню.  Предпочтительнее вызывать  наиболее часто используе-
 мые функции из основного меню, а менее частые действия  вы-
 носить в подменю более низких уровней.


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


                 СОЗДАНИЕ  ПРИЛОЖЕНИЯ   video.

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

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

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


                             - 33 -
 и различные виды отчетов, выдаваемых на печать.

      Обдумывая  функцию "ввод новых пользователей", вы ско-
 рее всего решите, что необходимо учесть возможность  обнов-
 ления данных о текущих пользователях (а если у них изменил-
 ся  адрес?) и что вы еще не продумали вопрос, каким образом
 вводить информацию о к/ф. в БД. Это приведет вас  к  мысли,
 что  следует  выделить отдельную функцию "ведение БД", пос-
 кольку операции, проводимые с этими данными,  будут  выпол-
 няться не столь уж часто.
      После того, как вы провели анализ функций, выполняемых
 в задаче, и определили их взаимосвязь, вы можете  набросать
 план  системы меню, пункты которого будут вызывать выполне-
 ние той или иной функции. В первом  приближении  ваше  меню
 может выглядеть следующим образом:
 __________________________________________________________

           Reports              Maintenanse        Orders
              I                      I
        -------------             ------
       /      I      \           /      \
   film list  I  receipts     films    customers
              I
       rental activity
 ____________________________________________________________


      Подумав  еще и реорганизовав функции, вы останавливае-
 тесь на следующем меню:

 ____________________________________________________________

 Inquiry   Reports            Maintenanse   Orders Help Leave

 customers filmcatalog        add customers rentals     Yes
 films     overdue films      add films                 No
           rental utilization edit
                               customers
                               films


                             - 34 -
 ____________________________________________________________

     Мы  назовем это "рабочим" меню, поскольку вы можете из-
 менять его в любое время, даже после того, как ваше  прило-
 жение будет закончено. Как это можно сделать - будет описа-
 но  в  главе 7, когда вы будете использовать функцию Modify
 для того, чтобы объеденить функции задачи "доввод пользова-
 телей" и "доввод к/ф" в новый подраздел меню: "Ведение  БД"
 "Добавление информации".
     Помимо создания общей структуры меню вашего приложения,
 определения  его основных функций, вам необходимо продумать
 вопрос, какие таблицы, формы и виды отчетов будут вам необ-
 ходимы. Уже ясно, что вам будут нужны таблицы для  хранения
 информации о пользователях и к/ф.
     Из  меню  просматривается  необходимость наличия таблиц
 для категорий фильмов, форм оплаты проката, выдачи  квитан-
 ций  за пользование к/ф. Вам скорее всего захочется заранее
 создать формы для ввода данных по меню "заказы" и для неко-
 торых функций меню "Ведение БД". И, наконец,  каждый  выбор
 меню "отчеты" требует наличия описания конкретных отчетов.
     Из  выше  сказанного становится ясно, что даже создание
 просто сценария работы вашего приложения помогает вам лучше
 понять, что вы хотите получить, прежде чем вы приступите  к
 непоредственному  созданию приложения. Все что было сделано
 до этого момента не требует наличия  ни  ЭВМ,  ни  Personal
 Programmer.  От  вас  на этом этапе требуется решить, какие
 функции будут выполняться в процессе работы вашего приложе-
 ния и как эти функции взаимосвязаны. Помните, что эти функ-
 ции в любой момент могут быть изменены или пересмотрены.


        ОПРЕДЕЛЕНИЕ  ОСНОВНЫХ  СОСТАВЛЯЮЩИХ  ПРОГРАММНОГО
                 ПРИЛОЖЕНИЯ  (ФАЙЛОВ  PARADOX)

     Cледующий этап работы по созданию вашего  приложения  -


                             - 35 -
 создание  основных  составляющих  программного  приложения:
 таблиц, форм, отчетов, экранов с информацией из  нескольких
 таблиц  одновременно, отдельных программ. Почти все они мо-
 гут быть созданы в среде Personal Programmer, но вы  можете
 их создать и отладить еще до входа в него.
     Если требуются отдельные программы на языке PAL, то вам
 придется писать их либо в среде PARADOX либо в среде любого
 текстового редактора до входа в Personal Programmer. Только
 эта задача не может быть выполнена в среде данного  средст-
 ва.  Все  остальные составляющие (файлы) могут быть созданы
 либо в среде PARADOX либо в среде Personal Programmer.
     Наш совет - лучше сначала создать формы, отчеты и экра-
 ны выдачи запросов вне среды Personal Programmer,  отладить
 и  затем  включить в ваше приложение. PARADOX в этом смысле
 дает большую свободу проигрывания  возможных  вариантов  до
 того,   как   вы  сделаете  окончательный  выбор.  Personal
 Programmer не дает подобной свободы манипулирования  объек-
 тами,  хотя вы в любой момент можете вернуться на шаг назад
 и внести изменения в ваши таблицы.
     И, наконец, если вы хотите производить проверку на дос-
 товерность данных или задать установки для отображения таб-
 лиц на экран в процессе ввода/редактирования данных, вы мо-
 жете  определить их либо в PARADOX'е, либо в среде Personal
 Programmer. И снова следует отметить, что PARADOX -  лучшая
 среда  для опробования различных вариантов до получения од-
 ного самого лучшего.
     Для рассматриваемого приложения  VIDEO этот процесс был
 уже выполнен ранее. Большая  часть  используемых  таблиц  и
 форм  находится  на дискете N1 Personal Programmer вместе с
 программой, называемой  VIDENT. Вы сможете создать все тре-
 бующиеся составляющие по мере изучения данного учебного по-
 собия.

                        Парольная  защита

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


                             - 36 -
 что пользователь введет,  будет  проанализировано  системой
 PARADOX для разрешения доступа к защищенной информации таб-
 лиц и программ.
      Каждый  пользователь  может ввести только один пароль.
 Однако вы можете установить некоторое  количество  дополни-
 тельных  паролей  для  каждой  таблицы,  и пароли, вводимые
 пользователем, могут перекрываться паролями к другим табли-
 цам. Таким образом, один пароль может дать полный доступ  к
 определенным  таблицам,  ограниченный  доступ к другим и не
 разрешить доступ к определенным таблицам. Следующий пароль,
 введенный другим пользователем, может  дать  совсем  другие
 возможности  доступа  к  информации.  Вы имеете возможность
 контролировать право доступа, задаваемого по каждому паролю
 ( и как результат, права каждого пользователя системы).
      Разветвленная  система  дополнительных  паролей  может
 обеспечить  соответствующий  доступ  к таблицам для каждого
 пользователя. Кроме того, вы можете  использовать  дополни-
 тельные пароли для защиты ключевых полей при выполнении не-
 которых операций (см. ограничения на редактирование - глава
 6).
      Если  вы  будете создавать таблицы в среде PARADOX, то
 на данный момент вы уже должны были продумать свою  систему
 парольной  защиты. Для установления парольной защиты вы мо-
 жете воспользоваться следующими способами:
      >>    использовать    возможность    меню    PARADOX'а
 Tools/More/Protect (см. гл. 12 PARADOX User's Guide)
      >> использовать генератор защиты PARADOX, описанный  в
 книге  "руководство  администрированием  в  сети"  (Network
 Administrator's Guide)
      Если же вы собираетесь создавать некоторые  таблицы  в
 среде  Personal  Programmer, то вам следует сначала создать
 их, а потом уже вводить систему защиты. Удостоверьтесь, что
 вы установили ее до того, как начнете  распространять  свое
 приложение.
      Если  нет необходимости защищать информацию, то вы мо-
 жете обойтись без парольной защиты. Тогда пользователи  от-
 вечают  на  запрос  о пароле простым нажатием клавиши ввода


                             - 37 -
 [Enter], и приложение будет работать не передавая пароли  в
 PARADOX.

                     СОЗДАНИЕ  ДИРЕКТОРИЯ

      Хотя все файлы Personal Programmer находятся в  едином
 директории  (\PARADOX2\Personal Programmer), вы можете выз-
 вать Personal Programmer из любого директория вашего  жест-
 кого  диска. Единственное ограничение: все составляющие ва-
 шего приложения и его программные файлы должны находиться в
 одном директории. Мы очень советуем иметь отдельный  дирек-
 торий  для каждого вашего приложения.При этом легко опреде-
 лить, какие составляющие и  программы  относятся  к  какому
 приложению. В противном случае, если в данном директории вы
 создаете несколько приложений, вам будет трудно определить,
 какие составляющие и программы относятся к какому  приложе-
 нию. Поэтому прежде чем запустить Personal Programmer реко-
 мендуется выполнить следующее:

      1. Создать новый директорий  командой md дисковой опе-
         рационной системы.
      2. Сделать созданный директорий текущим используя  ко-
         манду cd дисковой операционной системы.
      3. Скопировать все  таблицы, формы, отчеты, программы,
         уже созданные  для данного приложения  в этот новый
         директорий,  используя  либо   возможность  системы
         PARADOX "Tools/Copy"  либо команду "Copy"  дисковой
         операционной системы.

                ВХОД  В  Personal Programmer

      Сначала удостоверьтесь, что подсказка дисковой ОС [C>]
 имеет место, и что текущий директорий - это  директорий,  в
 котором вы  собираетесь хранить ваше завершенное приложение
 (в нашем примере \PARADOX2\Personal Programmer\VIDEO).  Для
 запуска  Personal  Programmer рядом с подсказкой вы вводите
 "Personal Programmer" и нажимаете клавишу  ввода.  Помните,
 что  вы  можете работать с составляющими объектами того ди-


                             - 38 -
 ректория из которого вы запустили Personal Programmer.
      Если что-то получается не так, это означает,  что  от-
 сутствует какой либо файл программного обеспечения Personal
 Programmer. Посмотрите приложение А данного руководства для
 анализа сообщения об ошибке. Если вы видите сообщение "File
 not found" (файл не найден), то скорее всего у вас ошибка в
 операторе  "Path"  ДОС'а  (см. глава 2 - установка Personal
 Programmer). Если возникают неприятности при чтении  инфор-
 мации  на экране обратитесь к главе 10 - описание программы
 конфигурации системы.

            Пример 4-1. Создание директория и вход в
                        Personal Programmer

            Шаги:
      1. Использовать команду ДОС md для создания нового ди-
 ректория под названием:\PARADOX2\Personal Programmer\VIDEO.

               c>md c:\PARADOX2\Personal Programmer\VIDEO

     2. Использовать команду ДОС cd для  изменения  текущего
 директория:

               c>cd c:\PARADOX2\Personal Programmer\VIDEO

      3. Скопировать имеющиеся таблицы, формы, отчеты, прог-
 раммы  с дискеты Personal Programmer Disk 1, поместив его в
 драйв А и использовав команду ДОС copy:

               с>copy a:\VIDEO\*.*

      Для выполнения всех этих шагов в нужной последователь-
 ности имеется пакетный файл под названием VIDDEM.  Для  ис-
 пользования  его вам необходимо иметь как минимум 200К сво-
 бодных байтов на вашем жестком диске для хранения составля-
 ющих приложение и последующего создания приложения VIDEO.
      Начните с подсказки ДОС C> на экране.


                             - 39 -
      1. Введите дискету с Personal Programmer Disk 1 в дис-
 ковод А,
      2. Введите следующее:

               c>a:viddemo
               c:\PARADOX2\Personal Programmer\VIDEO

      3. Для запуска Personal Programmer введите:

               c>Personal Programmer

      На экране появится начальный  экран  системы  Personal
 Programmer.
      В верхней части экрана появится основное меню Personal
 Programmer  и  два окошка с инструкцией и информацией внизу
 (см. главу 3 - Общее описание). Третья строка в верхнем ок-
 не всегда содержит подсказку о  следующих  возможных  шагах
 при создании вашего приложения.


         СОЗДАНИЕ  И  ПРИСВОЕНИЕ ПРИЛОЖЕНИЮ НАЗВАНИЯ
 ___________________________________________________________

 *Create Modify Summarize Review Play Tools Exit
 Create a new application.
 ___________________________________________________________

                          Режим CREATE

      Для  того,  чтобы начать создавать новое приложение из
 основного меню работ  Personal  Programmer  выберите  режим
 Create. После этого Personal Programmer выдаст вам запрос о
 вводе  наименования  для вашего приложения. Оно может иметь
 до 5 символов в длину. Первый символ - обязательно  буквен-
 ный, остальные могут быть буквами, цифрами, символами $, -,
 !
      Наберите  наименование  приложения  и  нажмите клавишу
 [ENTER].


                             - 40 -

                         ВЫБОР  ТАБЛИЦ

 ___________________________________________________________

 *ExitingTable NewTable RemoveTable DO-IT! Cancel
 Choce an existing table to use in the application.
 ___________________________________________________________

      Прежде всего Personal Programmer должен знать, с каки-
 ми таблицами будет работать ваше приложение. В одном прило-
 жении может быть задействовано до 15 таблиц.
      Для того, чтобы произвести выбор таблиц, вам предлога-
 ется меню со следующими режимами работ:
      >> "Existing Table":   выбор существующей таблицы
         (Существующая таблица)
      >> "New Table"     :   создание новой таблицы
         (Новая таблица)
      >> "Remove Table"  :   отказаться от уже выбранной
                             таблицы
      >> "DO-IT"         :   закончить выбор таблиц
         (Выполнить)         (аналогично нажатию клавиши
                             [F2])
      >> "Cancel"        :   прекращение процесса выбора
         (Прекращение        таблиц и возврат в основное
          работ)             меню Personal Programmer
      Выбор режима NewTable в Personal Programmer аналогичен
 выбору  режима  Create oсновного меню системы PARADOX. (см.
 главу 6 режим Create руководства PARADOX User's Guide).
      Для работы по созданию приложения вам необходимо  выб-
 рать хотя бы одну таблицу.
      Нельзя выбирать временные таблицы системы PARADOX (ти-
 па ANSWER), поскольку они могут либо отсутствовать, либо не


                             - 41 -
 соответствовать требуемому варианту.
      Как   только   вы  завершили  выбор  таблиц,  Personal
 Programmer просит вас ввести описание для каждой  выбранной
 таблицы.  Эти  описания помогут вам запомнить с какой целью
 они были созданы и как будут  использованны  в  дальнейшем.
 Если  вы не введете описание для таблицы (т.е. оставите его
 пустым), то Personal Programmer создаст его сам ( для  таб-
 лицы Ordes строка описания бутет выглядеть Orderstable).


         Пример 4-2. Создание приложения и выбор таблиц


             Шаги:
      Начинаем с картинки основного меню Personal Programmer
 (режим "Create")(Пример 4-1.)
      1.  Выбираем  режим  "Create" основного меню. Personal
 Programmer просит ввести наименование вашего нового  прило-
 жения.

 ___________________________________________________________

 Application:
 Enter new application name.
 ___________________________________________________________

      2. Наберите VIDEO и нажмите клавишу [ENTER].
      Вы увидите меню выбора таблиц.
 ___________________________________________________________

 *ExistingTable NewTable RemoveTable DO-IT! Cancel
 Chooce an existing table to use in the application.
 ___________________________________________________________

      3.  Выберите режим Existing Table (Существующая табли-
 ца).  Personal Programmer просит вас ввести имя нужной
 вам существующей таблицы.


                             - 42 -
      4. Наберите название первой таблицы "filmcat" или наж-
 мите клавишу [ENTER] и выберите ее  из  приводимого  списка
 существующих  таблиц.  (См. рис.4.2).
      Как только вы заказали таблицу "filmcat", ее  название
 появится  в  списке  выбранных таблиц распологающемся сразу
 под меню таблиц.
      5. Повторите шаги 3-4  для  выбора  следующих  таблиц:
 films, orders, ordtemp и customer.
      6.  Окончив  выбор  таблиц, выберите режим DO-IT! (или
 нажмите клавишу [F2]) для того, чтобы дать  знать  Personal
 Programmer, что выбор таблиц завершен.
      Вы  увидите  список всех заказанных таблиц в виде меню
 из их названий, причем первая выбранная таблица filmcat бу-
 дет находиться в освещенном  мигающем  прямоугольнике.  Под
 ним будет расположен большой освещенный прямоугольник.
      7.  Для  каждой  таблицы,  по очереди, нажмите клавишу
 [ENTER].
      Ниже приводится список ракомендуемых текстов описания:


 ------Таблица------------Описание--------------------------

       filmcat            Типы фильмов
       films              Названия фильмов, регистрационный
                          номер, дата проката
       orders             Таблица заказов на фильмы
       ordtemp            Временная таблица, используемая
                          при выписке счетов
       customer           Фамилия пользователя и его адрес


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

                             - 43 -

                                                Г Л А В А   5
 ____________________________________________________________

                   ПОСТРОЕНИЕ СИСТЕМЫ МЕНЮ
 ____________________________________________________________

      Следующий  важный шаг при создании  Вашего  приложения
 (после выбора используемых таблиц) - построение системы ме-
 ню.
      Этот процесс начинается  обьявлением  основного  меню.
 Это  меню  похоже на самое первое меню, которое Вы увидели,
 когда вошли в систему PARADOX. Оно управляет  всей  работой
 Вашего приложения.
     Приложения, создаваемые при помощи Personal Programmer,
 строятся  как  меню  в  стиле системы PARADOX. Режимы работ
 располагаются на верхней строке экрана, а подсказки или по-
 яснения по каждому выбранному  режиму  -  на  строке  ниже.
 Пользователи могут либо набрать первую букву нужного им ре-
 жима  работ,  либо  использовать ключи управления движением
 курсора для передвижения освещенного прямоугольника  выбора
 режима  работ, и затем нажать клавишу [ENTER]. При передви-
 жении по режимам работ строка пояснений меняется в  зависи-
 мости  от режима. Каждое действие, выполняемое в Вашем при-
 ложении , должно быть отражено соответствующим режимом  ра-
 бот в меню работ.
     Меню  режимов  работ  приложения,  как  и  меню системы
 PARADOX, имеют иерархическую структуру. Это  означает,  что
 выбрав какой - либо режим работ из основного меню, Вы може-
 те  вывести  подменю дополнительных более детальных режимов
 работ и так вплоть до 10 уровней подменю. При необходимости
 Вы можете сгруппировать аналогичные режимы работ под  одним
 режимом  меню верхнего уровня, например, все запросы об от-
 четах могут находиться как подменю режима работ " ОТЧЕТЫ  "
 меню верхнего уровня.
     В данной главе обьясняется каким образом:
     >> вести названия режимов работ Вашего меню;


                             - 44 -
     >>  создавать строки комментария для каждого из введен-
 ных режимов работ;
     >> редактировать созданное меню.
     Хотя все примеры, приводимые в данной главе относятся к
 правилам  построения основного меню приложения, все cказан-
 ное ниже относится также к правилам построения подменю ниж-
 них уровней.


      ВВОД НАЗВАНИЙ ДЛЯ РЕЖИМОВ РАБОТ И КОММЕНТАРИЕВ К НИМ


     Поскольку процесс выбора таблиц для  Вашего  приложения
 завершен,  Personal  Programmer  предложит Вам приступить к
 построению основного меню задачи. Вы увидите окошко  экрана
 создания  меню  (см.  пример  5-1  ). В правом верхнем углу
 окошка находится название создаваемого Вами меню. В  окошке
 есть место для:
     >>  ввода  названий режимов работ меню. Название задает
 пользователь, его длина может достигать 20 символов;
     >> ввода комментария. Строки комментария  могут  дости-
 гать  60 символов в длину. Если Вы не заполните строку ком-
 ментария Personal Programmer создаст ее для  Вас  сам.  Как
 наименования режимов работ, так и строки комментариев могут
 состоять  из букв, цифр, печатных символов и пробелов. Ста-
 райтесь, чтобы первые буквы наименований режимов работ  от-
 личались друг от друга. Тогда Вы можете ввести первую букву
 режима, тем самым осуществив его выбор. Иначе Вы должны бу-
 дете  использовать  ключи  управления движением курсора. Вы
 можете использовать те же буквы в названиях  режимов  работ
 меню других уровней.



                             - 45 -
                       РЕДАКТИРОВАНИЕ МЕНЮ

     Если  Вам нужно изменить название режима работ уже соз-
 данного меню, нажмите клавиши:
     - [->] или [<-] для движения по Вашему меню;
     - [->] от последнего режима для  того,  чтобы  добавить
       новый режим в конец меню;
     - [Ins]   для  того,  чтобы вставить новый режим работы
       слева от освещенного квадрата с существующим режимом;
     - [Del] для того, чтобы удалить режим  работы,  находя-
       щийся в освещенном квадрате;
     -  редактирование [F9] для того, чтобы внести изменения
       в название режима работы, находящегося  в  освещенном
       квадрате.
     В режиме редактирования Вы можете:
     1.  вводить  символы, чтобы добавить текст в конец выб-
       ранного названия;
     2. нажать клавишу [Backspace], чтобы убрать символы  от
       конца выбранного названия, или [Ctrl][Backspace], что-
       бы стереть все имя;
     3.нажать  клавишу  [ENTER],  чтобы спуститься на строку
       комментария и редактировать  ее  аналогичным  образом
       (вводить текст или корректировать его );
     4. нажать клавишу [Esc] для возврата к предыдущему сос-
       тоянию.  Для  окончания  редактирования  меню нажмите
       клавишу [F2] DO-IT!, затем нажмите  клавишу  [F10]  и
       выберете режим DO-IT! ( выполнение ) или Cancel ( от-
       каз от выполнения ).

      Пример 5-1. Создание основного меню приложения VIDEO

     Шаги:
     Начинаем с экрана, соответствующего примеру, описанному
 в  пункте  "Создание  приложения  video" главы 4. Подсказка
 попросит ввести названия режимов работ и комментарий к ним.
 (Enter   the   names   of   menu   selections   and   their
 descriptions).
     1. Введите "Запрос" и нажмите клавишу  [ENTER].  Курсор


                             - 46 -
 сдвинется на строку комментария.
     2.  Введите  "Запросы  о  к/фильмах".  Нажмите  клавишу
 [ENTER]. Теперь курсор передвинулся на строку режимов работ
 справа от слова "Запрос".
 __________________________________________________________

 Inquiry
 Inquire about customers or films.
 __________________________________________________________


     3. Повторите шаги 1-2 и введите следующую информацию:


 -----Режимы работ-------Комментарии----------------------

      Ведение БД         Обновление/добавление  информации
                         пользователях или к/фильмах
      Заказы             Обработка запросов  о возможности
                         проката к/фильмов и сроках  возв-
                         рата
      Помощь             Подробные пояснения о перечислен-
                         ных режимах работ


     4. Ох! Мы "случайно" забыли ввести еще один режим рабо-
 ты и поэтому можем ознакомиться  с  режимом  редактирования
 создаваемого  меню. Наш второй режим должен называться "От-
 четы".
     Используем клавиши [->] и [<-] для продвижения светяще-
 гося квадрата  к  режиму  "Ведение  БД".  Нажимаем  клавишу
 [INS].
     Слова  "Ведение БД" сдвигаются вправо, чтобы освободить
 место для ввода нового, пустого наименования режима работ.
     5. В этом месте наберите слово "отчеты" и нажмите  кла-
 вишу [ENTER].


                             - 47 -
     В  строке  комментария наберите текст: "вывод на печать
 отчетов" и снова нажмите клавишу [ENTER].

 ___________________________________________________________

 Inquiry *Reports Maintenanse Orders Help        Main
 Print reports.
 ___________________________________________________________


 ---------------The Paradox Personal Programmer----------

 Creating new Video application.
 Designing MAIN menu.
 >Enter the names of menu selections and their
 descriptions.
___________________________________________________________

 Menu  selection names can be up to 20 characters long,
 descriptions up to 60.

 [->] and [<-] move you around the menu you are designing.
 [Ins] inserts a new selection. [F9] allows you to edit
 the  highlighted  selection  name  or its description;
 when you are finished editing, press [Enter].

 When you  are  finished  designing  the  current  menu
 level,  press  [F2]  or  press [F10] and select DO-IT!
 from the menu.
 ___________________________________________________________

     6. Нажмите  клавишу [F2]  DO-IT!.
     При этом Personal Programmer запомнит ваше основное ме-
 ню  и  добавит  режим работы "Leave" (выход из приложения),
 чтобы пользователь мог выйти из задачи.
     После этого на экране появится меню  привязки  действий
 по задаче ( Definition menu ), которое будет описано в сле-
 дующей главе.


                             - 48 -
     Если  вы хотите немного передохнуть,то завершите выпол-
 нение примера 5-2.


                ПОСТРОЕНИЕ ПОДМЕНЮ НИЗШИХ УРОВНЕЙ

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


                       ПЕРЕРЫВ В ИЗУЧЕНИИ

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


      Пример 5-2. Как сделать перерыв в создании приложения
                         на данном этапе


     Шаги:
     Начинаем  с  меню  определения   действий   по   задаче
 (Definition Menu) на экране.
 ___________________________________________________________

 *SpecifyAction  DO-IT!  Cancel
 Define the action to be associated  with  the  current
 menu selection.
 ___________________________________________________________


                             - 49 -

     Если  вы находитесь в процессе создания основного меню,
 завершите его. Если вы создаете меню более низкого  уровня,
 закончите его создание таким образом, чтобы появился следу-
 ющий  режим  работы  основного  меню. Затем нажмите клавишу
 [ESC] для того,  чтобы  появилось  меню  привязки  действий
 (Definition Menu ).
 ___________________________________________________________

 *Design   Modify  NoSplashScreen
 Omit a new splash screen for the application.
 ___________________________________________________________


     1. Выберите  DO-IT!  из меню определения действий.
     Все  ваши  неопределенные  режимы работ получают статус
 неопределенных (NotDefined) - вы их сможете изменить  позд-
 нее.
 ___________________________________________________________

 Tables MenuAction NotDefined SplashScreen *DO-IT! Cancel
 Save  the  modified application and return to the Main
 menu.
 ___________________________________________________________

     2.  Из  появившегося на зкране меню создания титульного
 экрана задачи вы выбираете режим NoSplash Screen (нетитуль-
 ный экран). (Вы сможете создать титульный зкран позднее).

     3. Из последнего меню вы выбираете режим  DO-IT!
     После  этого  Personal  Programmer  начинает  создавать
 программы, называемые scripts , на текущее состояние вашего
 приложения. Когда этот процесс закончится, вы снова увидите
 основное меню Personal Programmer.
     4.  Выбирайте  режим  Exit/Yes  для  выхода из Personal
     Programmer.


                             - 50 -


                  Пример 5-3. Как снова начать


     Когда вы будете готовы возобновить работу  по  созданию
 приложения VIDEO, войдите в среду Personal Programmer как и
 раньше.
     1. Из основного меню выберите режим Modify вместо режи-
 ма Create.
     2. Когда появится запрос о наименовании приложения, на-
 берите VIDEO и нажмите клавишу [ENTER].
     3. Из появившегося на экране меню Modify выберите режим
 Not  Defined, чтобы попасть на первый не определенный режим
 работы вашего меню.
     4. Нажмите [F10] (меню) и выберите режим Action.
     5. И, наконец, вы задаете режим DEFINE,  чтобы  опреде-
 лять режим работы из титульного экрана.
     После этого на экране появится меню Action, вы получите
 возможность  определить новый режим работы в вашем приложе-
 нии, как вы это делали раньше. Но, поскольку, вы находитесь
 в режиме изменения, а не  создания  вашего  приложения,  вы
 осознаете,  что между ними есть различие: после определения
 каждого режима работ, вам придется переходить к  следующему
 режиму и повторять шаги 4 и 5. (В режиме Creat это происхо-
 дит автоматически).
     Помните об этом, когда вы начнете изучать материал сле-
 дующей главы и главы 7 (Изменение приложения), где объясня-
 ется, почему нужны эти этапы.
     6.  Когда  вы закончили определения всех режимов работ,
 выберите режим Splash screen из меню  Modify  для  создания
 начального (титульного) экрана вашего приложения.
     7. Выберите режим DO-IT! из меню Modify, чтобы окончить
 работу  с  вашим  приложением  и  вернуться в основное меню
 Personal Programer.
.

                             - 51 -


                                                 Г Л А В А  6
 ____________________________________________________________

                    МЕНЮ  ПРИВЯЗКИ  ДЕЙСТВИЙ
 ____________________________________________________________

     Как привязать определенные действия, выполняемые прило-
 жением, к режимам работ созданной системы  меню  для  этого
 приложения?  Это  основной момент при создании программного
 приложения средствами Personal Programmer.
     В настоящей главе объясняется,  каким  образом  следует
 привязывать  действия,  выполняемые  приложением, к режимам
 работы системы меню. Вы научитесь:
     >> высвечивать подменю;
     >> просматривать,корректировать и добавлять новые запи-
 си в таблицы;
     >> печатать отчет;
     >> запускать программы;
     >> высвечивать экраны помощи;
     >> прекращать выполнение работы из меню;
     >> выводить титульный экран.
     Вы также научитесь выполнять действия из других меню, а
 также записывать созданное программное обеспечение.
     Это наиболее важная глава данного пособия. Если вы пой-
 мете приводимый ниже материал,  вы  сможете  самостоятельно
 создавать любые приложения посредством Personal Programmer.
     ЗАМЕЧАНИЕ.  Если вы захотите прерваться в процессе изу-
 чения данного материала, то выполните все шаги, описанные в
 примере 5-2 главы 5 (построение системы меню). Когда вы во-
 зобновите изучение материала данной главы, вы будете  рабо-
 тать  в режиме изменений (MODIFY) вашего приложения, однако
 процесс  будет  анологичен   режиму   создания   приложения
 (CREATE).




                             - 52 -
                         МЕНЮ  ПРИВЯЗКИ

 ___________________________________________________________

 *Specify Action     DO-IT!     Cancel
 Define  the  action  to  be  associated  with  the
 current menu selection.
 ___________________________________________________________


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

        Specify Action   - определить действия для выбранно-
                           го пункта меню работ приложения;

        DO-IT!           - классифицировать все еще  не  за-
                           данные пункты меню работ  прило-
                           жения  как  неопределенные  (Not
                           Defined); запомнить все действия,
                           выполненные  до данного  момента;
                           и выбраться  в  основное    меню
                           работ   Personal Programmer;

        Cancel           - отменить  все действия по созда-
                           нию/ модификации вашего приложе-
                           ния  и  возвратиться  в основное
                           меню  работ Personal Programmer.

     Выбор режима DO-IT! позволяет вам не  только  закончить
 процесс создания приложения, но и сделать перерыв в работе.
 Это происходит потому, что Personal Programmer сам присваи-
 вает   неопределенным   вами  пунктам  меню  значений  "Not


                             - 53 -
 Defined" (неопределено). Если вы начали работу в вашем при-
 ложении и выбрaли режим, определенный как Not Defined,  вам
 будет выдано соoбщение, что никаких действий по этому выбо-
 ру  не  может  быть произведено. Вы возвратитесь в меню ра-
 бот,из которого пытались  выполнить  это  задание.  Другими
 словами,  это означает, что вы можете создавать свое прило-
 жение по частям и отлаживать эти части, затем  возвращаться
 в  основное меню и, используя возможность Modify, проводить
 дaльнейшую разработку режимов работ.
     Не выбирайте режим Cancel если у  вас  нет  уверености,
 что все сделаное вами в дальнейшем не пригодится.
     Заказав  режим  Spеcify Action, вы увидите экран с меню
 Action, который будет описан ниже. Из этого меню вы  можете
 вернуться в меню привязки действий (Definition menu), нажав
 клавишу  [ESC].  Это  же меню будет всякий раз при создании
 подменю, до того как вы определите первый  его  пункт.  Это
 позволяет  вам  либо запомнить, либо отменить выполняемые в
 процессе привязки действий изменения.



          МЕНЮ  ВЫБОРА  ДЕЙСТВИЙ - ACTION  MENU.

 ___________________________________________________________

 *Menu View Report DataEntry Edit Script NotDefined Cancel
 Attach a submenu to the current menu selection.
 ___________________________________________________________


     Если вы  задаете  режим  определения  действий  Specify
 Action  из  меню  привязки  действий (Deefinition menu), то
 последнее замещается на меню выбора действий. В нем  приво-
 дится  список возможных действий, которые вы можете связать
 с определенным пунктом  основного  меню  создаваемого  вами
 приложения (того самого, который находится в мигающем осве-
 щенном прямогольнике меню привязки действий). Действия, ко-


                             - 54 -
 торые  вы  здесь выберете, определяют, что сможет выполнить
 пользователь вашего приложения, если он выберет данный  ре-
 жим работы. Здесь вы можете определить следющие действия:

     Menu          - вывести меню низшего уровня  приложения
                     (меню) на экран;

     View          - дать пользователю возможность просмотра
     (просмотр)      всей или  части  одной  или  нескольких
                     таблиц;

     Report        - дать пользователю  возможность выводить
     (отчет)         на  печать,просматривать  на экране или
                     записать в виде внешнего  файла опреде-
                     ленный отчет по задаче;

     Data  entry   - дать  пользователю возможность доввести
     (ввод данных)   новые  записи в одну или несколько таб-
                     лиц;

     Edit          - дать пользователю возможность откоррек-
     (редак-         тировать некоторые или все записи в од-
     тивание)        ной или нескольких таблицах;

     Script        - дать  возможность  отработать программу
     (прог-          на языке PAL при выборе данного режима;
     рамма)
     Help          - вывести  экран помощи для   пользовате-
     (средство       ля;
     помощи)

     Not  defined  - обойти  на данный момент привязку опре-
     (работа с не-   деленного действия к пункту меню прило-
     определенным    жения;
     пунктом меню)

     Cancel        - возврат к меню верхнего уровня создава-
     (прекраще-      емого  приложения  при  выборе  данного
     ние работ)      режима.


                             - 55 -



      Меню  выбора  действий  - сердцевина процесса создания
 приложения. Его девять режимов покрывают все основные дейс-
 твия системы PARADOX за исключением режима запуска программ
 (Script), каждый из режимов позволяет задавать  необходимые
 действия  в  диалоговом режиме в среде Personal Programmer.
 Помните, что находясь в меню выбора действий,путем  нажатия
 клавиши  ESС  вы имеете возможность вернуться на меню более
 высокого уровня - меню привязки действий. И уже из  послед-
 него  вы можете закончить этап работ по созданию приложения
 или изменить все, что было вами сделано за сеанс работы .


                 Что произойдет при выборе Вами
                      конкретного действия

     Когда вы выбираете действие, которое  будет  связано  с
 определенным пунктом  пользовательского  меню, то вы будете
 получать вопросы от Personal Programmer. Этот процесс будет
 определяться выбранными вами действиями:
     >> Для  режимов Not Defined и Cancel не требуется даль-
 нейшей информации. Personal Programmer  выполнит  указанное
 действие  и вернет вас к меню привязки действий для продол-
 жения работы.
     >> Для режимов Menu, Script и Help вы должны будете от-
 ветить  на запрос о создании меню, программы или экрана по-
 мощи, по которым будут производиться привязки к  определен-
 ному  пункту  работ  вашего приложения. Процесс определения
 меню выполняется по правилам, приводимым в главе 5  (Созда-
 ние меню приложения). Привязка конкретной программы на язы-
 ке  PAL к Personal Programmer будет означать, что вы объяв-
 ляете имя вашей программы, которая  будет  отрабатывать  по


                             - 56 -
 заданию  определенного  режима меню приложения. Задав режим
 создания экрана помощи, вы  получаете  возможность  вводить
 интересующую  вас информацию, используя генератор форм сис-
 темы PARADOX.
    >> Для режимов View  (просмотр),  Report  (отчет),  Data
 Entry  (ввод  данных) и Edit (редактирование) вам прийдется
 по запросам точно определить, какая информация должна  быть
 выведена  на  экран, распечатана в виде отчета, введена или
 откорректирована согласно правилам, приводимым ниже.


                        1.  Выбор таблиц

 ___________________________________________________________

 *SelectTable  AllTables  DO-IT!  Cancel
 Select a table to use in the current operation.
 ___________________________________________________________

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

    Select Table - выбор таблицы - выбрать одну или несколь-
                                   ко таблиц по отдельности;

    All Tables   - все таблицы   - выбрать все таблицы,  за-
                                   действованные для  работы
                                   вашего приложения;

    DO-IT!       - выполить      - дать   знать     Personal
                                   Progrаmmer,   что   выбор
                                   таблиц закончен;

    Cancel       - прекратить    - дать    знать    Personаl
                   работу          Programmer, что вы  отме-
                                   няете все действия по вы-
                                   бору таблиц и хотите вер-
                                   нуться в  меню выбора дей-
                                   ствий.


                             - 57 -

    Режим Select Table высвечивает список всех таблиц, кото-
 рые вы определили для вашего приложеия (см. главу 4 - выбор
 таблиц).  Из  этого списка вы можете заказать одну или нес-
 колько таблиц для выполнения данного этапа работ. Соответс-
 твенно, вы можете выбрать режим  All  Tables,  чтобы  иметь
 доступ ко всем таблицам вашего приложения. Другими словами,
 система  PARADOX  хранит список выбранных вами таблиц. Если
 вы удовлетворены этим списком,нажмите клавишу [F2] или  за-
 дайте режим DO-IT! из меню работ.


                      2. Определение полей

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


         Создание экрана выбора полей для одной таблицы

    Аналогично  созданию запроса в системе PARADOX, операция
 создания экрана выбора полей (View) в  Personal  Programmer
 позволяет вам заказать поля для вывода. Таким образом, если
 вы  определите экран выбора полей для одной таблицы, то по-
 лучите меню с двумя возможными  вариантами:  Select  Fields
 (выбор полей) и All Fields (все поля).

 ___________________________________________________________

 *SelectFields  AllFields
 Use a query form  to  select  active  fields  in  the
 current operation.
 ___________________________________________________________


                             - 58 -


    Select  Fields  - выбор полей  -  использование    формы
                                      запроса  для  указания
                                      требуемых полей;

    All Fields      - все  поля    -  использование всех по-
                                      лей таблицы для данно-
                                      го действия.

    Запомните, если вы выбрали режим Select Fields, то у вас
 есть возможность ввести здесь критерий выборки (см. ниже).
    Если у вас возникнет необходимость выбрать поле для опе-
 раций Report, Data Entry или Edit, (для которых меню заказа
 полей  не  предусмотренно),  сделайте  следующее:  пометьте
 только те поля, которые вам будут нужны в спецификации фор-
 мы или отчета, или ограничьте доступ пользователя  к  полям
 таблицы, введя дополнительные пароли для нее.


           Создание экрана выбора полей для нескольких
                       таблиц одновременно


    Если  вы  собираетесь осуществить операции с несколькими
 таблицами одновременно, Personal Programmer  попросит  соз-
 дать  вас экран выбора полей для нескольких таблиц, связан-
 ных друг с другом. Создание экрана подобного вида  подробно
 описывается  в  главе  10 ("Вопросы повышенной сложности"),
 оно требует предварительно организованной таблицы "map" для
 того, чтобы соотнести  данные  из  одной  исходной  таблицы
 (source  table)  к  двум  или более таблицам выхода (target
 tables). Имеется два пути для этого:




                             - 59 -
 ___________________________________________________________
 *Create   Borrow
 Create  a  new multitable view (sourse table and map)
 for the current operation.
 ___________________________________________________________


    Create        -  создать  -  построить новый экран выбо-
                                 ра полей нескольких таблиц,
                                 заполняя  формы запроса;

    Borrow        -  взять    -  использовать  уже существу-
                                 ющий экран выбора полей.

    Создание нового экрана выбора полей будет состоять в за-
 поминании  форм  запроса,  имеющего целью связать выбранные
 таблицы и указать поле выбора, подобно тому, как это  дела-
 ется  в  режиме  Modify/Multi  Entry/Set Up системы PARADOX
 (см. главу 9 пособия "Paradox User s Guide"). Помните,  что
 на этом этапе вы не можете указывать критерии выбора в фор-
 мах  запроса  -  это  следующий этап. Здесь вы только даете
 указания системе, как будут объединяться таблицы и указыва-
 ете поля вывода информации. Экраны выбора  полей  для  нес-
 кольких таблиц, создаваемые посредством Personal Programmer
 для операций просмотра данных и выдачи отчета по ним, могут
 включать и внешнее объединение, позволяющее включать несвя-
 занные записи из одной таблицы в другую. (См. "Внешнее объ-
 единение" глава 10 (Вопросы повышенной сложности) для более
 подробного ознакомления).
     Если  экран  выбора  уже создан, вы можете использовать
 его, вызвав по режиму Borrow и указав имена исходных таблиц
 и таблицы "map", или же, указав пункт меню,  где  вы  ранее
 определяли этот экран.




                             - 60 -
               3. Определение используемых записей
 ___________________________________________________________

 *SelectRecords  AllRecords
 Create a query to specify the records to be shoun  in
 this operation.
 ___________________________________________________________

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

     Select Records - выбор действий -  создать  запрос  для
                                        выбора записей;

     All Records    - все  записи    -  отобразить, дать от-
                                        корректировать   или
                                        вывести в отчет  все
                                        записи таблицы.

     Если вы выберете режим Select Records, то на экране по-
 явится форма запроса для вывода таблицы или ее отображения.
 Запомните  ее,  вводя  критерии выборки нужных вам записей,
 как это описано в главе  4  (ASK)  пособия "Paradox  User`s
 Guide". Поскольку  вы  осуществляете выборку записей, вы не
 можете использовать:

     >> знаки отметки выбираемых полей (F6, ALT/F6, посколь-
 ку вы определили поля на предыдущем этапе работы);
     >> знак ввода "примера" F5  для  определения  элементов
 сравнения  (т.о.  вы  не  можете соеденить цепочки запросов
 оперераторами AND и OR);
     >> операторы calc, insert, delete, changeto и find.



                             - 61 -
     Если  возникнет необходимость дать пользователю возмож-
 ность самому задавать критерии выборки в процессе работы  с
 вашим  приложением,  в форму запроса следует вместо опреде-
 ленных значений включать так называемые  тильда-переменные.
 Тильда-переменные  -  это некоторые цепочки символов, перед
 которыми ставится знак тильда (~). Когда вы закончите  фор-
 мирование запроса, Personal Programmer задаст вопрос, каким
 образом  запросить  пользователя ввести значения для каждой
 определенной таким образом переменной. Этот процесс  описан
 в примерах 6-2, 6-3 ниже в этой главе и подробнее описаны в
 главе 10 (Вопросы повышенной сложности).
     Вас  также  просят указать тип вводимых данных. В боль-
 шинстве случаев вы можете взять тип данных, предназначаемый
 Personal Programmer. Однако, если  предполагатся  использо-
 вать  вводимые данные для арифметических вычислений (напри-
 мер, текущая дата - n дней), то может возникнуть  необходи-
 мость поменять тип данных.
      Форма  запроса, созданная на данном этапе,не использу-
 ется для выбора полей,это было сделано ранее. Если вы хоти-
 те ограничить число  полей  в  одной  таблице  для  режимов
 Report,  Data  Entry  или  Edit, включите нужные вам поля в
 описание формы или отчета, или же ограничьте права  доступа
 пользователя к таблице.


                   4. Создание форм и отчетов


      На данный момент вы показали какую информацию вы хоти-
 те получить, следующий этап работы - каким образом ее пред-
 ставить: View, Edit, Data Entry.
      Если вы не работаете с отчетами, то вам будет  предло-
 жено меню следующего вида:

 ___________________________________________________________

 *FormView  Table  FormToggle
 Display the information using a form.
 ___________________________________________________________


                             - 62 -

      Form View    - для вывода одной записи за шаг  работы,
                     используя  либо стандартную, либо зара-
                     нее созданную пользователем форму;

      Table View   - вывод данных в табличной форме;

      Form Toggle  - дать  возможность  пользователю  менять
                     выбранный режим  путем  нажатия клавиши
                     [F7].

      Обратите  внимание,  что генератор создания приложения
 версии 1.1 дает возможность высвечивать данные только в ви-
 де формы. Personal Programmer позволяет высвечивать  данные
 еще и в табличной форме.
      Если вы выбрали режим высвечивания формы, то вам будет
 задан вопрос, какая форма будет использоваться для просмот-
 ра таблицы или нескольких таблиц одновременно:

 ___________________________________________________________

 *Design  Borrow  StandartForm
 Design a new form to use in the current operation.
 ___________________________________________________________


      Design      -    выход в средство создания новой формы
                       системы PARADOX;

      Borrow      -    использовать уже созданную и записан-
                       ную с определенным именем форму;

      Standard    -    вызвать  стандартную   форму  системы
      Form             PARADOX для таблицы.



                             - 63 -
      Подробная информация о создании форм для таблиц содер-
 жится в главе 11 (Формы) пособия "Paradox User`s Guide".
      При  работе  с  отчетами, вас попросят задать описание
 отчета с помощью меню:

 ___________________________________________________________

 *Design  Borrow  StandartReport
 Design a new report to use in the current operation.
 ___________________________________________________________


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

      Borrоw      -  использовать уже созданный и записанный
                     с определенным именем отчет;

      Standard    -  выдать    стандартный   отчет   системы
      Report         PARADOX.

     Подробная  информации  о  создании отчетов содержится в
  главе 12 (Reports) пособия "Paradox User`s Guide".
     Затем  вы  получите  запрос  о  том, куда нужно вывести
  сформированный отчет.

 ___________________________________________________________

 *Printer  Screen  File
 Send the report to the print.
 ___________________________________________________________


      Printer       - распечатать отчет;

      Screen        - высветить отчет на экране;

      File          - записать отчет в виде файла.


                             - 64 -



              5. Определение установочных значений

 ___________________________________________________________

 *Setting  InsertDelet  DO-IT!  Cancel
 Create validity checks and image setting.
 ___________________________________________________________

     И,  наконец,  для  режимов Data Entry и Edit вам дается
 возможность ограничить  через  которые  пользователь  может
 вводить или редактировать записи. На экране появляется меню
 с четырьмя режимами.

     Settings      - создать  правила  проверки на достовер-
                     ность  информации  и  устaновить, каким
                     образом информация вводится в таблицу;

     Insert Delete - определить,  может ли пользователь вво-
                     дить/ удалять записи (не применяется  в
                     режиме Data Entry);

     DO-IT!        - записать все определенные на данный мо-
                     мент установки (аналогично нажатию кла-
                     виши [F2]);

     Cancel        - отменить все определенные на данный мо-
                     мент установки и возвратиться в  преды-
                     дущее меню форм.

     Если вы выбираете режим  Settings  Personal  Programmer
 высвечивает  вам  пустую  запись либо в виде данных, либо в
 виде таблицы, в зависимости  от  сделанного  ранее  выбора.
 Здесь  вы  можете  задать установочные значения для нужного


                             - 65 -
 вам поля. Затем вы можете нажать клавишу [F10] - для  полу-
 чения меню работ из четырех режимов:

 ___________________________________________________________

 *Format  ValCheck  DO-IT!  Cancel
 Change a column format in the table.
 ___________________________________________________________


     Format        - изменить вид выдачи числовых данных или
                     выдать на экран;

     Valcheck      - установить правила  проверки на  досто-
                     верность для текущего поля;

     DO-IT!        - запомнить новые установленные  значения
                     и    возвратиться в  предыдущее    меню
                     Settings  (аналогично  нажатию  клавиши
                     [F2]);

     Cancel        - отменить любые сделанные вами установки
                     и возвратиться на шаг назад в работе.

     И,  снова,  определение установочных значений во многом
 похоже на то, как это производится в  системе  PARADOX.(Для
 более детальной  информации  см. гл.9 (Modify) и 10 (Image)
 пособия Paradox User's Guide).
     Помните,  что  установки  на достоверность данных будут
 относиться к любому последующему режиму работ с этой табли-
 цей.




                             - 66 -
                       Возврат на шаг назад

     Как  всегда  имеют место два пути, вернуться на шаг на-
 зад, если вы сделали ошибку:
     - если на экране есть меню или подсказка - нажмите кла-
 вишу [ESC];
     - если на экране нет ни меню, ни  подсказки  (например,
 при создании подменю или создание экрана просмотра для нес-
 кольких таблиц) нажмите клавишу [F10].
     Вы увидите меню из двух режимов как минимум:

 ___________________________________________________________

 *DO-IT!    Cancel
 ___________________________________________________________


      DO-IT!   - закончить ваши действия и перейти к следую-
                 щему этапу (аналог нажатия клавиши [F2]);

      Cancel   - отменить все сделанные  операции  и возвра-
                 титься на шаг назад (при этом вас  попросят
                 подтвердить  правильность  желаемых  дейст-
                 вий).

     Другие режимы также могут присутствовать на экране  ме-
 ню.  Это  зависит  от  вида выполняемой вами работы. Помимо
 всех предлaгаемых вариантов работы вы также  можете  нажать
 клавишу [Esc] и возвратиться на шаг назад.


                        СОЗДАНИЕ  ПОДМЕНЮ


 ___________________________________________________________

 *Menu  View  Report  Data  Entry  Edit  Script
 Attach a submenu to the current menu selection.
 ___________________________________________________________



                             - 67 -

     Чтобы привязать подменю к режиму работы основного меню,
 выберите режим Specify  Action  из  меню  привязки  дейсвий
 (Definition menu), затем выберете режим Menu из меню выбора
 действий (Action). Подменю определяются по тем же правилам,
 что  и  основное меню (см. главу 5 - Создание меню приложе-
 ния). Также как и основное меню каждое подменю может содер-
 жать до 15 пунктов режимов работ и  каждое  может  вызывать
 подменю следующего уровня (до 10 уровней иерархии).
     Единственное отличие состоит в том, что  хотя  Personal
 Programmer автоматически включает режим Leave (выход) в ос-
 новное меню любого приложения, режим Cancel для возврата из
 подменю в меню более высокого уровня автоматически не появ-
 ляется.  Это делается потому, что пользователь всегда может
 нажать клавишу [ESC] для выхода из подменю. Вы можете вклю-
 чить режим Cancel, если считаете это  нужным.  Позднее,  не
 забудьте привязать действие Cancel к режиму меню Cancel.
     Когда  вы  создадите  некоторое  подменю,  то  Personal
 Programmer ожидает, что вы определите его режим  работы  до
 того, как перейдете к работе с пунктами меню более высокого
 уровня.  Если вы не готовы сделать привязку к этим режимам,
 то определите их как NotDefined. Позднее  Вы  сможете  вер-
 нуться и сделать нужные вам изменения.


                        ПРОСМОТР  ТАБЛИЦ

 ___________________________________________________________

 Menu  *View  Report  DataEntry  Edit  Script  Help
 Allow users to view the records in one or more tables.
 ___________________________________________________________

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


                             - 68 -
     1. Указать необходимые одну или несколько таблиц.
     2. Для одиночной таблицы задайте режим All Fiеlds  (все
 поля)  или  примените запрос для указания нужных полей. Для
 нескольких таблиц создайте или определите экран выбора  по-
 лей по этим таблицам.
     3. Выберите режим All Records или используйте созданный
 ранее запрос, содержащий критерии выборки записей.
     4.  Определите, будете ли вы использовать отображение в
 виде формы или таблицы и какую конкретную форму  (если  она
 уже создана) вы хотите видеть.


                  Пример 6.1. Создание подменю.


     Вспомните,  что  при создании основного меню приложения
 VIDEO (см. гл. 4) заданный режим работ "Запрос" должен  был
 в свою очередь вызывать меню следующего уровня, из которого
 пользователи могли бы выбирать варианты опроса системы (ли-
 бо "потребители", либо "фильмы"). Меню низшего уровня нужны
 также для режимов "Отчеты" и "Ведение БД".
     Начните  с  меню  выбора  действий  на экране, при этом
 пункт основного меню приложения "Запросы" находится в осве-
 щенном мигающем прямоугольнике (конец примеров 5-1 и 5-2).
     1. Выберите режим Specify Action из меню привязки дейс-
 твий, чтобы попасть в меню выбора действий. (См. рис.6.1).
     2. Выберите режим Menu меню выбора действий. Тотчас  же
 в центре экрана высветится пустая рамка для создания вашего
 подменю.
     3.  Следуйте правилам, которые вы отрабатывали при соз-
 дании основного меню приложения (пример  5-1),  и  создайте
 подменю со следующими режимами работ:





                             - 69 -

 -------Выбор----------------Объяснения------------------
        Поставщики           Запрос о поставщиках
        Фильмы               Запрос о кинофильмах
        Выход                Возврат в основное меню

     4. Когда вы закончили процесс создания подменю и прове-
 рили,  не  опустили  ли  вы что-либо, нажмите клавишу [F2].
 Снова появится меню привязки действий; а первый из  режимов
 работ  вашего подменю "Поставщики" будет находиться в осве-
 щенном мигающем прямоугольнике. Вы можете  произвести  при-
 вязку действий к этому пункту работ прежде чем снова верне-
 тесь к работе с режимами основного меню вашего приложения.
     Как  и  другие  операции,  режим View достаточно гибок,
 чтобы уменьшить объем отображаемой информации. Запросы, ко-
 торые вы формируете для указания по каким полям  и  записям
 вы  хотите видеть данные, позволяют вам выбирать информацию
 из больших БД. Обычно, чем более тщательно и  осторожно  вы
 сужаете диапазон отражаемой информации, тем легче будет ра-
 ботать с вашим приложением.


         Пример 6.2. Привязка отображений для просмотра
                     информации к пунктам меню.


     Вы работаете с подменю режима работ "Запросы" основного
 меню вашего приложения VIDEO. "Запросы" означает,что вы да-
 ете пользователю возможность просмотра информации.
     Меню привязки действий должно находиться в верхней час-
 ти  вашего  экрана  (конец  примера 6-1). Подменю "Запросы"
 должно находиться в рамке создаваемого вами меню с  пунктом
 "Поставщики" - в освещенном мигающем прямоугольнике.
     1. Выберите режим Specify Action для вывода меню выбора
 действий.




                             - 70 -
 ___________________________________________________________

 *SpecifyAction  DO-IT!  Cancel
 Define  the  action  to be associated with the current
 menu selection.
 ___________________________________________________________

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

 ___________________________________________________________

 *Menu View Report DataEntry Edit Script Help NotDefined Cancel
 Allow users to view the reports in one or more tables.
 ___________________________________________________________

     3. Выберите режим Select Table. Вы увидите список  всех
 таблиц, задействованных в вашем приложении.

 ___________________________________________________________

 *SelectTable  AllTables  DO-IT!  Cancel
 Select a table to use in the current operation.
 ___________________________________________________________


     4. Выберите таблицу "Customer" из списка и нажмите кла-
 вишу [F2] для завершения процесса выбора таблиц.

 ___________________________________________________________

 Filmcat  Films   Orders  Ordtemp  *Customer
 Customer name and adress data.
 ___________________________________________________________

     Затем Personal Programmer спросит вас, будете ли вы вы-
 бирать отдельные поля.


                             - 71 -
     5.  Поскольку  вы  хотите дать возможность пользователю
 видеть всю информацию об интересующем его потребителе,  вы-
 берете режим All Fields.

 ___________________________________________________________

 SelectFields  *AllFields
 Use all fields ln the table for the current operation.
 ___________________________________________________________


     Если  по какой-либо причине вы хотите ограничить диапа-
 зон выводимой информации, вам следует заказать режим Select
 Fields, затем заполнить форму запроса для  указания  нужных
 вам полей.
     Затем  Personal  Programmer  спросит  вас, хотите ли вы
 уменьшить число выводимых записей.

 ___________________________________________________________

 *SelectRecords  AllRecords
 Use a query to specify the records to be shoun in  this
 operation.
 ___________________________________________________________


     6. Поскольку вы хотите  дать  возможность  пользователю
 самому выбрать, по какому потребителю ему нужна информация,
 выберете режим Select Records. Вы увидите форму запроса для
 таблицы Customer.
     7.  Для того, чтобы пользователю выводилась подсказка о
 вводе имени  и  фамилии  потребителя,  в  поле  LastName  и
 FirstName вы вводите тильда-переменные ~lname и ~fname (см.
 рис.6.2.1).

     8.  Нажмите  клавишу  [F2],  чтобы  дать знать Personal
 Programmer,  что  вы  закончили  ввод  критериев   выборки.
 Personal Programmer теперь задает вам вопрос, каким образом


                             - 72 -
 запросить пользователя о необходимости ввода данных в пере-
 менную Iname.

 ___________________________________________________________

 Prompt:
 Enter the prompt for variable "Iname".
 ___________________________________________________________


     9. Введите текст: "Введите фамилию потребителя и нажми-
 те клавишу [ENTER].
     Personal Programmer предложит вам тип  данных  A20  для
 переменной  lname  (это  тип  данных поля Last Name таблицы
 Customer).

 ___________________________________________________________

 Data type:A20
 Enter the correct data type for variable "Iname".
 ___________________________________________________________

     10. Если вас это устраивает, нажмите  клавишу  [ENTER].
     11.  Повторите  шаги 9 и 10, чтобы ввести подсказку для
 ввода данных об имени потребителя: "Введите имя  потребите-
 ля" и согласитесь с предложенным типом данных A10 для пере-
 менной fname.
     Теперь Personal Programmer хочет получить инструкции от
 вас, каким образом вывести данные для пользователя.

 ___________________________________________________________

 *FormView  TableView  FormToggle
 Display the information using a form.
 ___________________________________________________________



                             - 73 -
     12.  Если  вы хотите заказать отображение в виде формы,
 выберите режим FormView.
     Следующее меню спросит вас, какую именно форму вы хоти-
 те использовать.

 ___________________________________________________________

 *Design  Borrow  StandartForm
 Design a new form to use in the current operation.
 ___________________________________________________________


     13. Чтобы создать новую форму выберите режим Design.
     -  На вопрос, какую форму вы будете создавать, выберите
 номер 2.
     - На вопрос об описании данной  формы,  введите:  Форма
 отображения   данных   о  потребителе,  и  нажмите  клавишу
 [ENTER].
     -  Когда   появится шаблон для создания формы, сделайте
 ее похожей на рис.6.2.2.(для того, как это делается,  прос-
 мотрите главу 2 (Формы) пособия Paradox User's Guide.
     - Нажмите [F2], чтобы записать созданную форму.
     Поскольку  на этом кончается процесс определения дейст-
 вия View, вы вернетесь в меню выбора действий со  следующим
 пунктом  меню "Запросы" (Фильмы) в освещенном мигающем пря-
 моугольнике.
     14. Для описания действий по режиму "Фильмы" вы  произ-
 водите  аналогичные  действия.  Ниже приводится укороченный
 вариант:
     - Выберите режим View из меню выбора действий.
     - Используйте режим Select  Table  для  выбора  таблицы
 Films и нажмите клавишу [F2].
     - Выберите режим All Fiеlds.
     - Выберите режим Select Records и введите: текст "like
 ~film" в поле Film Name шаблона запроса  для таблицы  Films.
 Нажмите [F2].
     При  этом  оператор like позволит пользователю получить
 информацию о фильме, даже если он  сделает  орфографическую


                             - 74 -
 ошибку при вводе названия фильма.
     При  запросе  о подсказке для ввода данных в переменную
 film, введите: "Введите название интересующего вас фильма и
 нажмите клавишу [ENTER]." Согласитесь с предлагаемым  типом
 данных A30 и нажмите снова клавишу [ENTER].
     -  Выберите  режим Form View. Вместо того, чтобы созда-
 вать новую форму, закажите режим Borrow. Единственная имею-
 щаяся форма (под название "Форма редактирования  информации
 о кинофильмах") появится в списке имеющихся форм для табли-
 цы; закажите ее, нажав клавишу [ENTER].
     Поскольку  на  этом  кончается  работа  с  пунктом меню
 "Фильмы", перед вами снова появится меню выбора действий со
 следующим пунктом меню "Запросы" - Выход - в освещенном ми-
 гающем прямоугольнике.
     15. Режим "Выход" позволит  пользователю  вернуться  из
 меню  "Запросы"  в основное меню приложения. Чтобы осущест-
 вить привязку этого действия выберите режим Cancel  из меню
 выбора действий.

 ___________________________________________________________

 Menu View Report DataEntry Edit Script Help NotDefined Cancel
 Return the user to the previos menu.
 ___________________________________________________________

      Поскольку  режим "Выход" в этом подменю дублирует воз-
 можность, предоставляемую при нажатии клавиши [ESC], то  во
 всех последующих подменю приложения VIDEO она будет опущена
 (см. Возврат к меню более высокого уровня - данной главы).
     Теперь подменю "Запросы" будет замещено  основным  меню
 создаваемого  приложения, причем в освещенном мигающем пря-
 моугольнике будет уже находиться пункт "Отчеты"
     - Замечание: Если вы находитесь в режиме Modify для ва-
 шего приложения, напоминаем,  что  вы  должны  предпринять,
 прежде чем перейти к отработке следующего примера:
         1.  Используйте клавиши [ESC], [ENTER], [->] и [<-]
         для того, чтобы передвинуться к следующему  опреде-


                             - 75 -
         ляемому режиму работ (в нашем случае - пункт основ-
         ного меню "Отчеты"). 2. Нажмите клавишу [F10] - ме-
         ню,  выберите  режим Action с тем, чтобы дать знать
         Personal Programmer о  вашем  намерении  произвести
         некоторые изменения в действиях, выполняемых по вы-
         зову  данного пункта меню вашего приложения. 3. Вы-
         берите режим Define для осуществления этого. Теперь
         вы можете перейти к примеру 6-3.



                   ВЫВОД  ОТЧЕТОВ  НА  ПЕЧАТЬ


     Для вывода отчета на печать произведите привязку требу-
 емого пункта вашего меню к режиму Report меню выбора дейст-
 вий.
     При этом Personal Programmer задает вам следующие  воп-
 росы:
     1. Закажите нужную вам таблицу/таблицы.
     2. Если вы заказали несколько таблиц, укажите или  соз-
 дайте экран вывода данных по ним.
     3.  Выберите  режим All Records или создайте запрос для
 отбора нужных вам записей.
     4. Задайте нужные спецификации отчетов и дайте указание
 Personal Programmer, будете ли вы выводить на печать, экран
 или во внешней файл ваш отчет.
     Обратите внимание, что вам нет необходимости определять
 поля для отчета по единичной  таблице,  поскольку  это  уже
 сделано в спецификации отчета по ней.



                  Пример 6.3. Создание отчетов.


     Выбрав  режим  Reports  из  основного  меню  приложения


                             - 76 -
 VIDEO, пользователь должен увидеть  список  всех  имеющихся
 вариантов  отчетов, из которых он будет сам выбирать нужную
 ему информацию.
     Начните с меню выбора действий (конец  примера  6-2)  с
 пунктом основного меню приложения Отчеты - в освещенном ми-
 гающем прямоугольнике.
     1. Для того, чтобы создать подменю Отчеты, выберите ре-
 жим Menu из меню выбора действий. (См. рис.6.3.1).В прямоу-
 гольнике для ввода наименований введите следующее:

 -----Selection----------Explanation---------------------

      Catalog            Print a listing of all films and
                         categories.

      Overdue            Print overdue film list.

      Utilization        Print film utilization report.

     (см.  пример  5-1,  чтобы вспомнить, как это делается).
 Нажмите клавишу [F2], чтобы закончить создание этого подме-
 ню. Вы тотчас же увидете меню привязки  действий  вместе  с
 вашим  новым  подменю Отчеты, причем первый пункт подменю -
 Каталог будет находиться в освещенном мигающем  прямоуголь-
 нике.
     Выбор режима Каталог позволит пользователю системы рас-
 печатать список всех имеющихся к/фильмов по их категориям.
     2.  Выберите  режим Specify Action, чтобы получить меню
 выбора действий.

 ___________________________________________________________

 *SpecifyAction   DO-IT!    Cancel
 Define  the  action  to be associated with the current
 menu slection.
 ___________________________________________________________



                             - 77 -

     3. Выберите режим Report.
     4. На вопрос, какие таблицы нужно включить, используйте
 режим Select Table для выбора двух таблиц: films и filmcat.
 Нажмите [F2].

 ___________________________________________________________

 Menu View *Report DataEntry Edit Script Help NotDefined Cancel
 Allow  users  to send a report to the printer, a screen, or
 file.
 ___________________________________________________________

      Так как вы заказали две таблицы,  Personal  Programmer
 попросит  вас  создать экран отображения для этих двух таб-
 лиц.

 ___________________________________________________________

 *SelectTable  AllTables  DO-IT!  Cancel
 Select a table to use in the current operation.
 ___________________________________________________________


     5. Поскольку у вас нет заранее созданного экрана  отоб-
 ражения по этим таблицам, вы должны выбрать режим Create.

 ___________________________________________________________

 *Create   Borrow
 Create  a  new  multitable view (sourse table and map)
 for current operation.
 ___________________________________________________________


     Теперь  Вы  видите  на  экране 2 схемы для формирования
 запроса по этим таблицам.  Заполните  их  согласно  рисунку


                             - 78 -
 6.3.2.
     Вы формируете экран отображения по этим таблицам,  свя-
 зывая  их  по  полям Category и задавая вывод всех столбцов
 кроме  одного  во  избежание  повторения  столбца Category.
     7. Нажмите [F2].
     8.  Поскольку вам нужен список всех к/фильмов, выберите
 режим All Records.

 ___________________________________________________________

 SelectRecords   *AllRecords
 Use all records in the current operation.
 ___________________________________________________________

     При этом вы могли бы заказать режим  SelectRecords  для
 распечатки  информации  по определенной категории к/фильмов
 или дать возможность пользователю самому определить,  какие
 к/фильмы ему будут нужны.
     Теперь вы получите запрос о том, какую спецификацию от-
 чета вы хотите использовать.
     9. Чтобы создать новый отчет, выберите режим Design.

 ___________________________________________________________

 *Design   Borrow   StandardReport
 Design a new report to use in the current operation.
 ___________________________________________________________


     -  Когда вас спросят, какую спецификацию вы будете соз-
 давать, ответьте 1.
     - Когда вас попросят ввести  наименование  для  отчета,
 введите: Каталог к/фильмов, и нажмите клавишу ввода.
     - Когда вас спросят о типе вашего отчета, закажите таб-
 личный (Tabulat).
     - Когда появится предлагаемая спецификация отчета, сде-
 лайте ее похожей на приводимый ниже рисунок 6.3.3.


                             - 79 -
     - Нажмите [F2] для завершения создания спецификации ва-
 шего отчета.
     Затем  Personal  Programmer  спросит вас, куда посылать
 этот отчет.
     10. Выберите режим Printer.

 ___________________________________________________________

 *Printer   Screen  File
 Send the report to the printer.
 ___________________________________________________________

     На этом формирование отчета Католог заканчивается. Сно-
 ва появляется меню привязки действий и подменю приложения с
 пунктом: Просроченные_фильмы - в освещенном мигающем прямо-
 угольнике.
     11. Используйте ту же процедуру для определения  отчета
 о просроченных к/фильмах:
     - Выберите режим Report из меню выбора действий.
     - С  помощью   режима  Select  Table  закажите  таблицы
 Orders, Films и Customer, и нажмите [F2].
     - Поскольку мы создали экран отображения по этим табли-
 цам, воспльзуемся режимом Bоrrow. Personal Programmer  зап-
 росит вас о дальнейшей информации.
     - Выберите  режим  Name и  на запрос об именах исходной
 таблицы и таблицы-map закажите Oversrc и Overmap.

 ___________________________________________________________

 Menu   *Name
 Enter the names of the source and map tables to borrow.
 ___________________________________________________________

     - Выберите режим Select Records и заполните форму  зап-
 роса по аналогии с рис. 6.3.3. По этим условиям мы отбираем
 только  те  к/фильмы, срок возврата которых не проставлен в
 таблице.


                             - 80 -
     - Воспользуйтесь режимом Borrow и закажите отчет  номер
 2 (Просроченные к/фильмы). Выберите режим Printer.
     12.  Режим  "Фильмы в прокате" должен выводить вместе с
 информацией о к/филмах информацию о том, есть ли на них еще
 заказы. Для достижения этого следует воспользоваться специ-
 альным  способом  объединения  таблиц,  который  называется
 внешней связью (outer join).
     - Выберите режим Report из меню выбора действий.
     - Закажите таблицы Films и Orders.
     -  Создайте экран отображения по таблицам, как показано
 на рис. 6.3.4. Знак "!" указывает на внешнюю связь, которая
 означает, что включены все фильмы, даже те, для которых  не
 было  заказов. Для подробного ознакомления см. гл. 10 (Воп-
 росы повышенной сложности).
     - Выберите режим All Records.
     - Выберите режим Design и создайте спецификацию  отчета
 1   под  названием  "фильмы  в  прокате"  как  показано  на
 рис.6.3.4.
     - Выберите режим Printer.
     На этом заканчивается процесс привязки действий к режи-
 му подменю "Отчеты". У вас на экране -  снова  меню  выбора
 действий  и основное меню приложения с режимом "Ведение БД"
 - в освещенном мигающем прямоугольнике.


                          ВВОД  ДАННЫХ

 ___________________________________________________________

 Menu View Report *DataEntry Edit Script Help NotDefined Cancel
 Allow users to enter new records in one or more tables.
 ___________________________________________________________


     Режим Data Entry меню выбора действий дает  возможность
 пользователю, работая в приложении, осуществлять ввод новой


                             - 81 -
 информации. Также как и в системе PARADOX, режим Data Entry
 предпочтительнее  режима Edit при вводе значительного коли-
 чесва записей.
     Personal Programmer запросит:
     1. Ввести необходимые для работы таблицы.
     2. Для более, чем одной таблицы - создать экран отобра-
 жения.
     3.  Определить,  какого  вида форму ввода вы будете ис-
 пользовать (табличную или нет).
     4. Задать условия проверки на достоверность вводимых
 данных и изменить установочные значения.


           Пример 6-4. Ввод данных в приложении VIDEO.


     Режим  "Ведение  БД" основного меню пользователя должен
 выводить подменю, позволяющее пользователю вводить/редакти-
 ровать  записи  в  таблицах  потребителей   или   к/фильмов
 (Customer или Films).
     Продолжаем  с  момента  окончания  работ примера 6-3. В
 верхней части экрана - меню выбора действий, под ним -  ос-
 новное  меню  пользователя с режимом "Ведение БД" - в осве-
 щенном мигающем прямоугольнике.
     1.  Для  создания  подменю режима "Ведение БД" выберите
 режим Menu из меню выбора действий. (См. рис.6.4.1).В  пря-
 моугольнике ввода пунктов меню введите следующее:

 -----Selection----------------Explanation---------------

      Customers                Add new custumers.
      Films                    Add new films.
      Edit                     Edit the custumer or films
                               table.

     (см. пример 5-1). Нажмите [F2]. Появится меню  привязки
 действий  вместе  с  новым подменю для режима "Ведение БД".


                             - 82 -
 Выбор режима "Потребители" должен дать возможность  пользо-
 вателю вводить информацию о новых клиентах.
     2.  Выберите  режим Specify Action, чтобы получить меню
 выбора действий.

 ___________________________________________________________

 *SpecifyAction   DO-IT!    Cancel
 Define  the  action  to be associated with the current
 menu slection.
 ___________________________________________________________

                                                   *Main
 Inquiry  Reports  Maitenance  Orders  Help  Leave
 Inquiry about custumers or films.
 ___________________________________________________________

      
     3. Выберите режим Data Entry.
      
 ___________________________________________________________

 Menu View Report *DataEntry Edit Script Help NotDefined Cancel
 Allow users to enter new records in one or more tables.
 ___________________________________________________________

      
     4. На  вопрос  о  требуемых  таблицах,  выберите  режим
 Select Table и закажите таблицу Customer. Нажмите [F2].
      
 ___________________________________________________________
 
 *SelectTable  AllTables  DO-IT!  Cancel
 Select a table to use in the current operation.
 ___________________________________________________________
 
      


                             - 83 -
     Вас попросят сообщить, как вы хотите представить табли-
 цу Customer.
     5. Дайте пользователю возможность переключения с одного
 вида  ввода  информации  на другой (форма или таблица). Для
 этого выберите режим FormTable.
      
 ___________________________________________________________
 
 FormView  TableView  *FormToggle
 Allow the user to toggle between form view  and  table
 view.
 ___________________________________________________________
 
      
     Следующее меню запросит о том, какую форму использовать
 при работе в режиме форм.
     6. Выберите режим Borrow и когда появится меню форм за-
 кажите уже готовую форму под названием - "Форма  ввода  ин-
 формации о потребителях".
      
 ___________________________________________________________
 
 Design  *Borrow   StandardReport
 Borrow an existing form to use in the current operation.
 ___________________________________________________________
 
     Далее  последует вопрос об определении критериев досто-
 верности ввода информации.
     7. Поскольку вы хотите иметь уверенность, что пользова-
 тель всегда введет фамилию, имя и номер потребителя,  выбе-
 рите режим Settings.
      
 ___________________________________________________________
 
 *Settings   DO-IT!    Cancel
 Create validity checks and image settings.
 ___________________________________________________________


                             - 84 -
 
     8. Когда на экране появится заказнная форма, передвинь-
 те курсор к полю LastName (вообще говоря, он уже стоит там)
 и нажмите клавишу [F10] - Menu.
     Personal Programmer спросит вас, какие установки вы хо-
 тите сделать.
     9.  Выберите  режим  ValChec,  затем Define и Required,
 подтвердите выбор, ответив Yes.(См. рис.6.4.2).
     10. Повторите шаги  8  и  9  для  полей  First  Name  и
 Customer #.
     11. Нажмите клавишу [F2] для возврата в меню установки,
 снова  нажмите клавишу [F2], чтобы запомнить ваши установоч-
 ные значения.
     Повторите  аналогичные процедуры для режима "К/фильмы",
 по которому пользователь сможет вводить данные о к/фильмах.
     12. Снова появляется меню  выбора  действий  и  подменю
 "Ведение БД" с режимом "редактирование" в освещенном мигаю-
 щем прямоугольнике.
                                        
      
                     РЕДАКТИРОВАНИЕ  ТАБЛИЦ
                                
      
     Чтобы  дать возможность пользователю корректировать за-
 писи в одной или нескольких таблицах, присвойте режим  Edit
 из  меню выбора действий соответствующему пункту меню работ
 вашего приложения.
     Редактирование таблиц - это наиболее сложный режим  ра-
 боты  пользователя,  поддерживаемый  Personal Programmer. В
 зависимости от характера вашей задачи у вас  может  возник-
 нуть необходимость дать более детальную информацию для это-
 го  действия, чтобы облегчить защиту данных в таблице.Кроме
 того, на процесс редактирования накладываются некоторые ог-
 раничения (см. гл. 10 - Вопросы повышенной сложности).
     В процессе присвоения режима Edit  Personal  Programmer
 задаст вам несколько вопросов:
     1. Закажите таблицу/таблицы для использования.


                             - 85 -
     2. Если было заказано несколько таблиц, то создайте или
 закажите экран отображения для них.
     3.  Выберите  режим  All Records или используйте запрос
 для указания критерия выборки записей (для единичной табли-
 цы возможность указания записей  для  редактирования  может
 быть использована, если для таблицы заданы ключевые поля).
     4. Выберите форму редактирования записей (табличная или
 нет) и при наличии готовой формы - задайте ее.
     5.  За исключением случая, когда корректируются все за-
 писи в единичной таблице, не разрешается редактировать  ин-
 формацию  в ключевых полях (они должны быть защищены и объ-
 явлены в шаблоне формы как Display Only - "только для прос-
 мотра"). Если какие-либо ключевые поля были объявлены обыч-
 ными полями, у вас будет  возможность  внести  изменения  в
 шаблон формы, чтобы предохранить эти поля от изменения.
     6.  Задайте условия проверки на достоверность и устано-
 вочные значения. Вы также должны решить, дадите ли вы  воз-
 можность  пользователю  вставлять  новые записи или удалять
 старые. По умолчанию пользователи не могут ни вставлять, ни
 удалять записи. Если вам нужны эти операции, то  вы  должны
 задать их в явной форме.
                                       
      
      Пример 6-5. Добавление режима редактирования записей
                       в приложение VIDEO.
      
      
     Если  мы выберем режим Редактирования для меню "Ведение
 БД", то на экране  должно  появиться  подменю,  позволяющее
 пользователю  корректировать  записи  в  таблицах Customer,
 Films или Methods.
     Начните с меню выбора действий (конец  примера  6-4)  с
 режимом Edit меню "Ведение БД" в освещенной мигающем прямо-
 угольнике.
     1.  Создайте подменю редактирования. Для этого выберите
 режим Menu из меню выбора действий.(См. рис.6.5.1).
     В прямоугольнике ввода пунктов меню введите следующее:


                             - 86 -
      
      
 -----Selection----------------Explanation---------------
      
      Customers                Add new custumers.
      Films                    Add new films.
      
      
     (см. пример 5-1). Нажмите клавишу [F2]  для  завершения
 процесса  создания подменю. На экране снова появляется меню
 привязки действий и  новое  меню  "Ведение  БД"  с  пунктом
 "Customers" в освещенном мигающем прямоугольнике. Выбор ре-
 жима  Customers  должен  позволить пользователю осуществить
 редактирование записей из таблицы Customer.
     2. Выберите режим Specify Action для  вывода  на  экран
 меню выбора действий.(См. рис.6.5.1).
     3. Закажите режим Edit.
      
 ___________________________________________________________
     
 Menu View Report DataEntry *Edit Script Help NotDefined Cancel
 Allow the user to modify records in one or more tables.
 ___________________________________________________________
 
     4.  На  запрос  о таблицах выберите режим Select Table,
 чтобы заказать таблицу Customer. Нажмите клавишу [F2].
      
 ___________________________________________________________

 *SelectTable  AllTables  DO-IT!  Cancel
 Select a table to use in the current operation.
 ___________________________________________________________
 
     Теперь вы получите запрос о  том,  какие  записи  нужно
 включить.


                             - 87 -
      
     5.  Для  редактирования всех записей в таблице выберите
 режим All Records.
 ___________________________________________________________
     
 SelectRecords   *AllRecords
 Use all records in the current operation.
 ___________________________________________________________
 
     Затем  вы получите вопрос о том, в каком виде вам нужна
 информация по таблице Customer.
     6. Для указания формы, выберите режим Form View.
                                                            
 ___________________________________________________________
 
 *FormView  TableView  FormToggle
 Display the information using form.
 ___________________________________________________________
 
      
     Следующее меню запросит вас, какую форму вы хотите  ис-
 пользовать.
     7. Выберите режим Borrow и потом, когда появится список
 форм,  закажите  форму  под названием "Форма ввода данных в
 таблицу Customer".
                                                   
 ___________________________________________________________
 
 Design  *Borrow   StandardReport
 Borrow an existing form to use in the current operation.
 ___________________________________________________________
     
     Теперь Personal Programmer спросит вас,  будете  ли  вы
 задавать условия на проверку достоверности данных или изме-
 нять установочные условия, позволите ли пользователю встав-
 лять или удалять записи.
     8. Поскольку вы уже задавали условия на проверку досто-
 верности  данных  при  работе  с таблицей Customer в режиме
 Data Entry (см. пример 6-4), они распространяются и на  ре-


                             - 88 -
 жим редактирования этой таблицы.
     Одновременно  с этим мы принимаем предлагаемое по умол-
 чанию запрещение ввода новых записей, поскольку эта возмож-
 ность предоставляется в режиме Data Entry. Но поскольку  вы
 хотите дать возможность пользователю удалять записи из таб-
 лицы Customer, выберите режим Insert Delete.
      
 ___________________________________________________________
 
 Settings   *InseartDelete   DO-IT!    Cancel
 Specify whether to allow the user to inseart or delete
 records.
 ___________________________________________________________
 
 
     Personal  Programmer  спрашивает вас, какую операцию вы
 хотите разрешить.
     9. Выберите режим Delete и подтвердите это, введя ответ
 Yes.
 ___________________________________________________________
 
 Inseart    *Delete
 Specify whether or not to allow  the  user  or  delete
 records during the edit.
 ___________________________________________________________
     
     
     10. Нажмите клавишу [F2], чтобы запомнить ваши установ-
 ки. Поскольку на этом все действия с таблицей Customer  за-
 канчиваются, на экране снова появится меню выбора действий.
     В меню редактирования режим Films находится в освещен-
 ном мигающем прямоугольнике.(См. рис.6.5.2).
     11.  Повторите вышеописанные действия для режима Films,
 по которму пользователь получит  возможность  редактировать
 записи о к/фильмах.


                             - 89 -
     Ниже приводится укороченный вариант ваших действий:
     - Выберите режим Edit из меню выбора действий.
     - Выберите   таблицу  Films и Filmcat и нажмите клавишу
 [F2].
     - При вопросе об экране отображения таблиц закажите ре-
 жим Borrow/Menu. Используйте клавиши со стрелками,  [ENTER]
 и  [ESC], чтобы попасть в режим Reports/Catalog. Затем наж-
 мите клавишу [F10] - "Меню" и закажите режим Borrow View.
     При этом Personal Programmer даст  вам  предупреждение,
 что в таблицах вывода (tаrget tables) отсутствует однознач-
 ная взаимосвязь между записями, записи из таблицы Filmcat в
 экране отображения появятся более чем один раз. Вы проигно-
 рируете  это предупреждение из-за боязни испортить данные в
 таблицах. Однако, поскольку вы защитите поля Categоry, объ-
 явив его DisplayOnly и заполняете его автоматически,  поль-
 зователи  не  могут испортить информацию в таблице Filmcat,
 если они будут менять информацию в поле Category. Таким об-
 разом, вы можете проигнорировать это предупреждение,  нажав
 клавишу [F2].
     -  Выберите режим All Records.
     -  Выберите  режим  Form  View и затем Desing. Закажите
 форму номер 1 и назовите ее  "Форма  корректировки  таблицы
 Film".
     Создайте  форму  по  рис.6.5.3. Удостоверьтесь, что для
 полей film # и Category description были  выполнены  дейст-
 вия: Fild/Place/DisplayOnly (поле film # должно иметь режим
 DisplayOnly  поскольку  это  ключевое  поле таблицы Films).
 Нажмите [F2] для указания, что процесс создания  формы  за-
 кончен.
     - Поскольку вы не хотите менять форматы полей или уста-
 новочные  значения,  и не хотите, чтобы пользователь вашего
 приложения мог вставлять или удалять записи, на этом  этапе
 снова нажмите клавишу [F2].
     В примере 7-1 вы вернетесь к этому вопросу и произведе-
 те  модификацию вашего приложения таким образом, чтобы поле
 Category description заполнялось автоматически.
     Поскольку на этом шаге заканчивается  процесс  привязки
 режима редактирования к пункту "Ведение БД", на экране сно-


                             - 90 -
 ва  появляется основное меню вашего приложения, пункт режи-
 мов работ которого "Заказы" находится в освещенном мигающем
 прямоугольнике.
      
      
            ОГРАНИЧЕНИЯ  НА  ПРОЦЕСС  РЕДАКТИРОВАНИЯ
      
      
     Редактирование данных в таблицах с использованием  зап-
 росов или экранов отображения для нескольких таблиц - весь-
 ма  деликатная операция. Если вы будете придерживаться ниже
 приводимых правил, то вы избежите потерь записей и непонят-
 ностей с ключевыми значениями.
               
      
 -Одиночная таблица-------Экран отображения для-------------
                          нескольких таблиц
 
  Режим All Records       Все таблицы выхода (target tables)
                          должны быть проиндексированы по
                          ключам

  Таблица не обязательно  Все ключевые поля таблицы выхода
  может быть проиндекси-  должны присутствовать в исходной
  рована по ключам        таблице (source table)
 
  Режим Select Records    Ключевые поля должны быть защищены
                          от редактирования
 
  Таблица должна быть     Ни одна запись таблицы выхода не
  проиндексирована по     может появиться более чем в одной
  ключам                  записи исходной таблицы
                                                                                                                                                                                                                                                              
 
                         
  Ключевые поля должны
  быть защищены от
  редактирования


                             - 91 -
 
 
                     ЗАЩИТА  КЛЮЧЕВЫХ  ПОЛЕЙ
      
      
     Использование запроса для определения того, что  только
 определенные  записи  могут редактироваться - очень удобная
 вещь. Вы можете, например, позволить пользователю  обновить
 информацию по таблице Customer только по определенному поч-
 товому индексу.
     При  этом  могут  возникнуть некоторые проблеммы: Когда
 пользователь приложения заканчивает процесс редактирования,
 система PARADOX должна возвратить отредактированные  записи
 в  их соответствующие места в таблице. Система должна знать
 какая запись соответсвует какой записи. Та же  самая  проб-
 лемма  возникает, когда вы производите процесс редактирова-
 ния, используя экран отображения для нескольких таблиц, да-
 же если вы и не используете запрос для выборки записей.
     Система PARADOX может определить, какая запись  откуда,
 только  используя  информацию  ключевого поля для записи! В
 связи с этим возникает одно из ограничений на  процесс  ре-
 дактирования в системе Personal Programmer.
  
       При осуществлении процесса редактирования с использо-
   ванием  запросов  или  экранов  отображения по нескольким
   таблицам, таблицы обязательно должны быть проиндексирова-
   ны по ключевым полям и данные в этих полях не должны  ре-
   дактироваться.
 
     Для защиты ключевых полей от редактирования, используй-
 те режим Form View и определите их как Dislay Only при фор-
 мировании формы для таблицы (см. пример 6-5).
     Вы можете также защитить ключевые поля от редактирования
 введя дополнительные пароли, которые ограничат права пользо-
 вателя  на поле до режима Read Only. Преимущество этого спо-
 соба состоит в том, что он может быть применен как для  таб-


                             - 92 -
 личной  формы  отображения,  так и для нетабличной. Основным
 неудобством этого метода является то,  что  это  ограничение
 распространяется  уже  и  на все другие операции с таблицей.
 Плюс к этому, Personal Programmer  не  может  контролировать
 этот вид защиты.
     При каждой возможности Personal Programmer позволяет вам
 перевести обычные поля в поля вывода Display Only. Например:
     -  Когда  вы создаете или вызываете форму редактирования
 для таблицы, имеющей запрос или входящей в экран отображения
 (для нескольких таблиц) вас спросят, будете ли вы  модифици-
 ровать форму, чтобы защитить ключевые поля. Если вы закажите
 режим  Modify,  вы войдете в режим создания формы, где у вас
 появится возможность стереть (Erase), а потом заново  ввести
 ключевое поле (Place).
     -  Если  вы  заказываете табличный режим отображения для
 таблицы, имеющей запрос или  входящей  в  экран  отображения
 (для нескольких таблиц), вы получите напоминание, что следу-
 ет  использовать  нетабличное отображение (в виде формы) или
 ограничить права на использование ключевых полей.
     Поскольку Personal Programmer  не  может  распространить
 данное  правило на уже созданные формы, вы можете проигнори-
 ровать предупреждение от Personal Programmer. Вы это сделае-
 те на собственный страх и риск. Если вы позволите редактиро-
 вать ключевые поля, вы можете либо потерять записи, либо мо-
 жет измениться порядок их записи.
                                                           
      
             Разрешение связей при работе с экранами
               отображения для нескольких таблиц.
      
      
     Возникают дополнительные трудности при работе с экранами
 отображения для нескольких таблиц. Предположим,  что  запись
 из  таблицы  назначения появляется более, чем один раз в ис-
 ходной таблице. Например, в экране  отображения  для  таблиц
 Films  и  Filmcat  заданная категория к/фильмов появляется в
 нескольких записях таблицы Films. Если при этом пользователь


                             - 93 -
 редактирует поля в таблице Filmcat поля в одной из этих  за-
 писей,  то это приведет к конфликтной ситуации с другими за-
 писями.
     Отсюда появляется второе правило:

       При редактировании с экранами отображения для  нес-
   кольких таблиц, записи в выходных таблицах должны иметь
   взаимно  однозначное соответствие. Это означает, что ни
   одна запись выходной таблицы не может  появиться  более
   чем  в одной исходной таблице, если ее поля не защищены
   от редактирования.
 
     Если записи выходных таблиц при использовании их в рабо-
 те с экранами отображения для  нескольких  таблиц  не  имеют
 взаимно  одназначного  соответствия,  то Personal Programmer
 выдаст вам предупреждение, что это  может  повлеч  за  собой
 противоречивость  информации.  Хотя  вам и будет предложено,
 выбрав режим Cancel, выйти ипровести редактирование  в  еди-
 ничной  таблице или заказать другой экран редактирования, вы
 можете также окончить вашу работу и нажать  клавишу  [F2]  -
 т.е. выполнить действие не беспокоясь о последствиях.
     Если  вы все-таки хотите работать с экраном такого типа,
 вам следует защитить от редактирования все поля таблицы, за-
 писи с которыми могут встретиться более одного раза. И снова
 вы можете использовать режим отображения  Display  Only  или
 ограничить права доступа пользователя к этим полям (см. при-
 мер 6-5). Более подробная информация по этому вопросу приво-
 дится в гл. 10 (Вопросы повышенной сложности).
                                                                                                                                                                                                                                                              
 
                                                                                                                                                                                                                                                              
 
                        ВЫЗОВ ПРОГРАММ
                                                     
 ___________________________________________________________
 
 Menu View Report DataEntry Edit *Script Help NotDefined Cancel
 Attach a predefined script to the current selection.
 ___________________________________________________________


                             - 94 -
      
     Есть вещи, которые Personal Programmer делать не в сос-
 тоянии. К ним относятся:
     >> Осуществление действий по открытию и закрытию таблиц
 и  записей  в явном виде при многопользовательском режиме в
 сети;
     >> Сложные формы защиты по паролю;
     >>  Сложные операции по вводу или редактированию данных
 (которые используют  инструментарий  ввода  данных  -  Data
 Entry Toolkit);
     >> Действия, для выполнения которых  требуется  наличие
 таблиц, форм и т.п. в другом директории.
     Однако вы можете добавить эти возможности в ваше прило-
 жение.  Для этого скопируйте или напишите программу, выпол-
 няемую  в  системе  PARADOX   (эти   программы   называются
 Scripts),  которая будет выполнять нужные для вас действия,
 затем выберите режим Script в меню выбора действий  с  тем,
 чтобы привязать выполнение данной программы требуемому пун-
 кту меню вашего приложения.
     Поскольку вы можете связать режим Script только с опре-
 деленным пунктом вашего меню, вам придется в вашей програм-
 ме   продублировать    некоторые    возможности    Personal
 Programmer. Например, вам хочется воспользоваться расширен-
 ными  возможностями  инструментария  по  вводу данных (Data
 Entry Toolkit) в вашем приложении, поэтому создаваемая вами
 программа должна будет выполнять весь (!) процесс по  вводу
 данных.  Поскольку вы не можете к одному пункту меню вашего
 приложения привязать сразу два режима: Script и Data  Entry
 (или  же определить режим Script как подчиненный для режима
 Data Entry), ваша программа должна быть полным  заменителем
 режима Data Entry.
     Когда  вы  выбираете режим Script из меню выбора дейст-
 вий, Personal Programmer спрашивает вас о названии вызывае-
 мой программы.


                             - 95 -
 ___________________________________________________________
      
 Script:
 Enter  name of script to play, or press  to see
 a list of scripts.
 ___________________________________________________________
      
     Помните,  что  вызываемая программа должна находиться в
 текущем директории, чтобы Personal  Programmer  смог  найти
 ее.  Не забудьте скопировать эту программу в директорий ва-
 шего  приложения  до  того,  как  вы   запустили   Personal
 Programmer.
     Сама  программа  может  быть  написана  в среде системы
 PARADOX или создана в каком-либо текстовом редакторе. Очень
 удобно   сначала    воспользоваться    системой    Personal
 Programmer,  чтобы создать некоторое приложение максимально
 покрывающее те возможности, которые должно выполнинять соз-
 даваемое вами приложение. Затем, используя программный  ре-
 дактор  языка PAL вы переводите созданное приложение в еди-
 ничную или многомодульную программу,  и  корректируете  ее.
 Затем вы снова вызываете Personal Programmer и присваиваете
 эту гибридную программу к пункту меню вашего приложения.
     Вы  можете ускорить выполнение вашей программы и предс-
 тавить ее как некоторое число процедур, находящихся в  биб-
 лиотеке.  Тогда  программа, которая будет отрабатываться по
 вызванному режиму вашего меню, будет просто загружать и вы-
 полнять эти процедуры (см. гл. 6 - Процедуры  и  15  -  как
 улучшить  временные  характеристики  выполняемых программ в
 пособии по языку PAL (PAL User's Guide) ).
 
         Пример 6-6. Вызов программы из меню приложения
                                                                                                                                                                                                                                                              
 
     Режим "Заказы" основного меню приложения VIDEO  слишком
 сложен для Personal Programmer, чтобы рассматривать его как
 некое единичное действие. Мы хотим, чтобы была выведена не-
 которая контрольная форма, которая:
     >> Запрашивала бы номер потребителя.
     >> Проверяла,  присутствует  ли заданный номер  таблице
 Customer, и если да, автоматически выводила бы информацию о


                             - 96 -
 потребителе.
     >> Запрашивала бы номер к/фильма и автоматически  выво-
 дила бы информацию о к/фильме из таблицы Films.
     >>   Создавала  бы  соответствующую  запись  в  таблице
     Orders.
     >>  Выводила на печать чек для оплаты потребителя. Ана-
 логичную операцию приложение должно выполнять с  данными  о
 возвращенных  к/фильмах. Personal Programmer не может прис-
 вать выполнение всех этих операций одному пункту  меню.  По
 этому мы для вас написали программу на языке PAL под назва-
 нием VIDENT. Сейчас мы можем привязать к пункту меню "Зака-
 зы" выполнение этой программы.
     Начинаем  с меню выбора действий (пример 6-5). Пункт ос-
 новного меню приложения "Заказы"  -  в  освещенном  мигающем
 прямоугольнике.
     1. Выберите режим Script.
     Personal Programmer запросит вас о названии программы.
 ___________________________________________________________
      
 Menu View Report DataEntry Edit *Script Help NotDefined Cancel
 Attach a predefined script to the current selection.
 ___________________________________________________________
      
                                                   *Main
  
 Inquiry  Reports  Maitenance  Orders  Help  Leave
 Handle film rentals and returns.
 ___________________________________________________________
      
 ___________________________________________________________
      
 Script:
 Enter  name of script to play, or press 
 to see a list of scripts.
 ___________________________________________________________
 
      


                             - 97 -
     2.  Введите  VIDENT или нажмите клавишу ввода и закажите
 его из списка имеющихся программ.
     Вот и все. Вы произвели требуемое действие. На экране  -
 снова меню выбора действий и режим "Пояснения" основного ме-
 ню приложения - в светящемся мигающем прямоугольнике.
            
      
             ВВЕДЕНИЕ  ПОЯСНЕНИЙ  ПО  РЕЖИМАМ  РАБОТ
                       ВАШЕГО  ПРИЛОЖЕНИЯ
 
 ___________________________________________________________
      
 Menu View Report DataEntry Edit Script *Help NotDefined Cancel
 Show a help screen to the user.
 ___________________________________________________________
      
     Personal  Programmer  позволяет безболезненно добавлять
 текстовые экраны, с пояснениями по режимам работ или  подс-
 казками,  что делать дальше. Для создания экранов с поясне-
 ниями вы должны воспользоваться режимом  Help  меню  выбора
 действий и связать созданные экраны с соответствующими пун-
 ктами меню вашего приложения.
     Когда вы закажите режим Help, вы получите пустой экран,
 в  который вы можете вводить информацию в том виде, в каком
 она будет представлена потом пользователю  вашего  приложе-
 ния.  Создание  экрана  помощи во многом похоже на создание
 пользовательской формы в системе PARADOX (см. гл. 11  посо-
 бия "PARADOX User's Guide").
     Вы можете:
     - Вводить любые символы с клавиатуры
     - Пользоваться клавишами передвижения курсора
     -  Нажимать  клавишу  [INS],  чтобы переходить из режима
 вставки символов в режим их замены.
     - Нажимать клавишу [DEL] и [Backspace] для удаления сим-
 волов.
     - Нажимать клавишу [F2] (DO-IT!) для указания  на  конец
 создания экрана пояснений и записи его.


                             - 98 -
     -  Нажимать клавишу [F10], чтобы вывести меню редактиро-
 вания со следующими возможностями:
         - Area - передвинуть или стереть кусок экрана
         - Border - нарисовать рамку или линии на экране
         - DO-IT! - окончить создание экрана пояснений и  за-
           писать его (аналог [F2])
         - Cancel -  уйти  в  режим меню выбора действий.
     Обратите внимание, что меню по режиму Help отличается от
 меню создания форм системы PARADOX, поскольку в нем отсутст-
 вуют следующие возможности:
         - Field (в экране пояснений нет полей из таблиц)
         -  Page  (в  экране пояснений содержится только одна
           страница)
         - Style (вы не можете изменить шрифт в экране  пояс-
           нений)
         - Help (вместо этого вы должны нажать [F1] для полу-
           чения нужной информации)
     Экран  вашего пояснения может быть очень подробным. Нап-
 ример, вы можете создать целое подменю, по пунктам  которого
 будут выдаваться пояснения. Или же вы можете привязать экран
 пояснения к каждому пункту вашего меню.
     Экраны  пояснений  по вашему приложению не выводится при
 нажатии клавиши [F1]. Они выводятся по  выбору  пользователя
 из меню приложения.
                                                                  
    Пример 6-7. Создание экранов пояснений в приложении VIDEO
                                                                  
     Выбор режима Help основного меню приложения VIDEO выдает
 на экран пояснения по всем пунктам меню приложения.
     Начинаем  с  меню  выбора действий по концу примера 6-6.
 Пункт "Пояснения" основного меню приложения должен находить-
 ся в освещенном мигающем прямоугольнике.
     1. Выберите режим Help.(См. рис.6.7.1).
     Вы получаете чистый экран, на котором можете писать свой
 текст.
     2. Используя возможности, приводимые выше, нарисуйте эк-
 ран как на стр. 70.


                             - 99 -
     3. Когда вы закончите, нажмите клавишу [F2].
     Personal Programmer записывает экран пояснений и опреде-
 ляет следующий режим работы - "Выход" -  автоматически  (см.
 ниже - Выход из приложения). Поскольку вы завершили привязку
 действий  ко  всем  пунктам  меню вашего приложения, то меню
 VIDEO уже нет на экране, а вместо него появляется меню  соз-
 дания титульного экрана для приложения.
                                                                  
        ВЫХОД  ИЗ  МЕНЮ  -  РЕЖИМ  РАБОТЫ  НЕ  ОПРЕДЕЛЕН
      
 ___________________________________________________________
      
 Menu View Report DataEntry Edit Script Help *NotDefined Cancel
 Leave the current selection undefined for now.
 ___________________________________________________________
     
      
     Нет  необходимости  осуществлять привязку каждого пункта
 меню, чтобы записать или отработать ваше приложение. Заказав
 режим Not Defined из меню выбора действий,  для  конкретного
 пункта меню, переходите к работе со следующим пунктом вашего
 меню.   Соответственно,   когда   вы  выходите  из  Personal
 Programmer, а некоторые пункты вашего меню не получили  при-
 вязку к конкретным операциям, система сама определяет их как
 Not  Defined, еще  до того, как станет создаваться программа
 отработки приложения.
     И в том, и в другом случаях  результаты  одинаковы.  При
 работе в вашем приложении в случае, когда пользователь выби-
 рает  пункт меню, для которого отсутствует привязка конкрет-
 ных действий, выдается сообщение: "Режим не определен".
     Поскольку всегда существует возможность внести изменения
 в меню привязки действий для приложения (режим Modify),  нет
 ничего страшного, что вы определяете таким образом пункт ва-
 шего меню. Действительно, обычно  сначала  создается  полная
 структура меню приложения скаждым пунктом не вызывающем меню
 следующего  уровня,  определенным  как  Not Defined. Позднее
 разработчик приложения возвращается к  введенным  пунктам  и


                             - 100 -
 осуществляет  привязку конкретных действий по решению задачи
 к ним (см. гл. 7 - Внесение изменений в  созданное  приложе-
 ние).
                                                                  
           ВОЗВРАТ  К  МЕНЮ  БОЛЕЕ  ВЫСОКОГО  УРОВНЯ.
                                                       
 ___________________________________________________________
      
 Menu View Report DataEntry Edit Script Help NotDefined *Cancel
 Return the user to the previous menu.
 ___________________________________________________________
      
     Это последний режим работы меню выбора действий - Cancel
 - и предназначен он для возврата в меню более высокого уров-
 ня. Вообще говоря, в режиме Cancel нет особой необходимости,
 т.к.  для  возврата  на  шаг назад пользователь может нажать
 клавишу [ESC]. Однако, если вы хотите, чтобы возможность вы-
 хода присутствовала в вашем  меню  в  явном  виде,  включите
 пункт  "Выход" в ваше меню и свяжите его с режимом Cancel из
 меню выбора действий.  Вы  это  уже  делали  в  примере  6-2
 (Inqury/Cancel).  Нет  необходимости в каких-либо дальнейших
 операциях. Действие, вызванное выбором по  меню  приложения,
 будет аналогично действию по нажатию клавиши [ESC].
                                                                  
                     Выход из приложения.
                                                                  
     Из главы 5 вам известно, что Personal Programmer автома-
 тически вставляет последним пунктом основного меню работ ва-
 шего приложения пункт Leave (Выход). Выбор этого режима дает
 возможность пользователю уйти из приложения  и  вернуться  в
 среду системы PARADOX (в гл. 10 вы научитесь создавать "зак-
 рытое" приложение и выходить из него прямо в DOS).
     При  вызове режим Leave выдает подменю из двух пунктов:
 ___________________________________________________________
 
 *No   Yes
 Do not leave the application.
 ___________________________________________________________


                             - 101 -
      
     -  No  -  Отменить выполнение режима Leave и вернуться в
 основное меню приложения.
     - Yes - Выход из приложения.
     Режим Leave создается  автоматически  системой  Personal
 Programmer,  вы не должны с ним что-либо еще делать. Наличие
 этого режима обеспечивает выход пользователя из  приложения.
 Если  вы хотите изменить действия, выполняемые по Leave, вам
 следует внести изменения в основную  программу,  создаваемую
 системой Personal Programmer.
                                                                  
                 КАК  ЗАПИСАТЬ  ВАШЕ  ПРИЛОЖЕНИЕ
      
          Создание титульного экрана (Splash Screen).
 ___________________________________________________________
      
 *SplashScreen   NoSplashScreen
 Design a splash screen for your application.
 ___________________________________________________________
      
     После  того, как вы определили последний пункт основного
 меню вашего приложения, или когда вы  выбрали  режим  DO-IT!
 или  нажали клавишу [F2] из меню привязки действий, вы полу-
 чаете возможность создать титульный экран вашего приложения.
 Если вы решили его создавать, то помните, что это будет пер-
 вое, что увидит пользователь вашего приложения  одновременно
 с запросом пароля для входа в приложение.
     Режим Splash Screen предлагает вам два варианта:
     - Splash Screen - создать титульный лист для приложения.
     -  No Splash Screen - опустить титульный лист для прило-
       жения.
     Если вы зададите режим Splash Screen, то экран очищается
 и вы можете рисовать свой титульный экран. Этот процесс ана-
 логичен созданию экранов пояснений (см. выше).  Задействовав
 чуть-чуть  вашего  воображения,  вы  сможите даже графически
 изобразить название вашего приложения, используя знаки  рас-
 ширенной графики.


                             - 102 -
     Если  вы  выберите  режим No Splash Screen, и не станите
 создавать титульный экран, пользователь будет вводить пароль
 на пустом экране.
                                                                  
                              КОНЕЦ
 ___________________________________________________________
      
 *DO-IT!   Cancel
 Generate  and  save  the  script  files  for   current
 application.
 ___________________________________________________________
      
     И, наконец, вы увидите меню из двух пунктов:
     - DO-IT! - запомнить ваше приложение, записать созданные
       на данный момент программы и возвратиться  в  основное
       меню  Personal  Programmer (аналогично нажатию клавиши
       [F2]).
     - Cancel - отменить работы по созданию  приложения  (или
       по  изменению  его)  и  возвратиться  в  основное меню
       Personal Programmer.
     ** Предупреждение : На этом этапе работ Cancel не самая
 полезная возможность, если вы не хотите  потерять  все,  что
 сделали  до  этого момента. Cancel лучше использовать в про-
 цессе внесения изменений в уже  созданное  приложение,  пос-
 кольку при этом оригинал остается неизменным, а ненужные вам
 изменения теряются.
                                                                  
                                                                  
      Пример 6-8. Завершение работ по созданию приложения.
                                                                  
     Начинаем с меню создания титульного экрана (конец приме-
 ра 6-7).
     1. Выберите режим Splash Screen.
 ___________________________________________________________
      
 *SplashScreen   NoSplashScreen


                             - 103 -
 Design a splash screen for your application.
 ___________________________________________________________
      
     Экран очистится и можете создавать титульный экран ваше-
 го приложения.
     2.  Пользуясь правилами создания экранов пояснений нари-
 суйте картинку, показанную на рис. 6.7.2.
     3. Когда закончите, нажмите клавишу [F2].
     Вы увидете меню выхода из Personal Programmer.
     4. Чтобы записать все сделанное по  созданию  приложения
 VIDEO, выберите режим DO-IT! или нажмите клавишу [F2].
 ___________________________________________________________
      
 *DO-IT!   Cancel
 Generate  and  save  the  script  files  for   current
 application.
 ___________________________________________________________
      
     А  теперь  смотрите, как Personal Programmer транслирует
 программы для вашего приложения и создает библиотеки  проце-
 дур.  Ваше приложение будет состоять из нескольких различных
 программ (см. гл. 11 -  Хитрости  для  программиста).  Когда
 процесс  генерации  приложения  закончится, вы снова увидите
 основное меню системы Personal Programmer.
     5. Если на  этом  этапе  вы  хотите  выйти  из  Personal
 Programmer,  закажите Exit/Yes.
 ___________________________________________________________
      
 Create  Modify  Summarise  Rewiew  Play  Tools  *Exit
 Leave the Personal Programmer and return to DOS.
 ___________________________________________________________
      
     Вы можете вместо этого заказать режим Play и поработать
 с вашим приложением или перейти к главе 7, чтобы  научиться
 вносить изменения в ваше приложение.

.

                             - 104 -
 
     
                                               Г Л А В А  7
 ___________________________________________________________
     
                   МОДИФИКАЦИЯ ПРИЛОЖЕНИЯ
 ___________________________________________________________
     
     
 ___________________________________________________________
                           
 Create *Modify Summerize Review Play Exit
 Change an existing application.
 ___________________________________________________________
      
     Иногда  Вам может  понадобиться  изменить  или  улучшить
 приложение, созданное в среде Personal Programmer. Для этого
 служит  услуга  Modify, которую также можно использовать для
 завершения создания приложения, в  котором  остались  услуги
 меню с неопределенным действием.
     Выбор  услуги Modify в Personal Programmer не приводит к
 полной регенерации приложения, Personal Programmer использу-
 ет алгоритм, называемый  избирательной  реконструкцией,  при
 котором  переписываются  только  те программы и процедуры, в
 которых были сделаны изменения. Другими  словами,  маленькое
 изменение  приложения приведет к маленьким изменения в текс-
 тах программ. Поэтому , Personal Programmer генерирует  при-
 ложение значительно быстрее в случае модификации, чем в слу-
 чае первоначального создания.
     В этой главе объясняется:
     - что можно изменять,
     - как изменить действия, которые Вы уже определили,
     - как перенести услугу на более низкий уровень меню.
     Для того, чтобы изменить приложение, в текущем каталоге
 должна  находиться  модифицируемая  копия,  или приложение,
 сгенерированное услугой Create (и измененная средствами ус-
 луги Modify), или копия  приложения,  созданная  средствами


                             - 105 -
 услуги  Tools/Copy. Услуга Modify не работает с исполняемой
 копией приложения, созданной с помощью программы "cp",  или
 услугой  Tools/Settings/LibrariesOnly.  (см.  главу 8 и 9).
 Исполняемая копия не подходит потому, что она  не  содержит
 исходный  код  процедур,  хранящихся в библиотеках, а также
 другую внутреннюю  информацию,  необходимую  для  изменения
 приложения.
     
                       МЕНЮ УСЛУГИ Modify
      
 ___________________________________________________________
                
 *Tables MenuAction NotDefined SplashScreen DO-IT! Cancel
 Add one or more tables to the application.
 ___________________________________________________________
     
     При  выборе  услуги  Modify  из  главного меню, Personal
 Programmer попросит указать имя приложения, которое Вы хоти-
 те изменить. Напомним, что все файлы  и  объекты  приложения
 должны  находиться в текущем каталоге. (Чтобы изменить теку-
 щий каталог, можно воспользоваться услугой  Tools/Directory,
 описанной в главе 9).
     После  того,  как Personal Programmer убедится, что имя
 набрано правильно, он проверит нет ли в приложении  таблиц,
 защищенных  паролем. Если такие таблицы есть, для них нужно
 указать пароли. Убедитесь, что  вводимые  пароли  открывают
 все  права  доступа  к таблицам приложения. Затем на экране
 появится меню услуги Modify, в котором перечислены  измене-
 ния, которые можно внести в приложение:
     
    - Tables            - изменить таблицы приложения;
       (таблицы)
    - MenuAction        - изменить меню или действия, опреде-
       (действия)         ленные для услуг меню;
     
    - NotDefined        - найти первую услугу  меню, для  ко-
      (без определения)   торой не было определено действие и
                          определить его;


                             - 106 -
     
    - SplashScreen      - изменить или создать титульный  эк-
      (титульный экран)   ран приложения;
     
    -  DO-IT!           - сохранить сделанные изменения и вер-
       (выполнить)        нуться в главное меню;
     
    - Cancel            - oтказаться от сделанных изменений  и
      (oтказаться)        вернуться в главное меню.
     
     При  выборе  одной  из  первых  четырех  услуг  (Tables,
 MenuAction, NotDefined или SplashScreen) Вы попадете в соот-
 ветствующий раздел приложения. Далее Вы можете изменить этот
 раздел, удалить его или сохранить без изменений. Любые изме-
 нения будут сопровoждаться теми же средствами, меню и описа-
 ниями,  которые использовались при создании приложения. Нап-
 ример, если Вы выбрали услугу Tables, Вы увидите меню выбора
 таблиц (описанное в главе 4.), из  которого  можете  выбрать
 или создать дополнительные таблицы для приложения.
     После  окончания  изменений, выберите DO-IT! или нажмите
 [F2],  чтобы  сохранить  измененное  приложение.   Поскольку
 Personal  Programmer изменяет только те программы и процеду-
 ры, для которых были сделаны изменения,  процесс  сохранения
 приложения не будет долгим.
     Напоминаем,  что  приложение  может быть изменено произ-
 вольное число раз. Таким образом, Вы можете за один раз  де-
 лать небольшие изменения, что облегчит отладку.
     Кроме  того с помощью услуги Cancel из меню Modify можно
 отказаться от всех изменений, сделанных за текущий  сеанс, и
 оставить  оригинальную версию приложения без генерации новых
 программ. Поскольку в этом случае Вы рискуете потерять часть
 проделанной работы, услуга  Cancel  сопроваждается  дополни-
 тельным меню.
     
      


                             - 107 -
     
                     ИЗМЕНЕНИЕ СПИСКА ТАБЛИЦ
 ___________________________________________________________
                            
 *Existing Table NewTable RemoveTable DO-IT! Cancel
 Add one or more new tables to the application.
 ___________________________________________________________

      
     Выбор  услуги  Tables из меню Modify позволяет Вам изме-
 нять таблицы приложения. После выбора услуги на экране  поя-
 вится меню выбора таблиц, описанное в главе 4:
      
 ___________________________________________________________
     
 *Existing Table NewTable RemoveTable DO-IT! Cancel
 Chose an existing table to use in the application.
 ___________________________________________________________
      
      
     Выбор  таблиц тот же самый, как и при создании приложе-
 ния. Однако, Вы можете ограничиться  только  удалением  тех
 таблиц,  которые  не  использовались ни в одном меню (с по-
 мощью услуги RemoveTable).
      
      
             ИЗМЕНЕНИЕ МЕНЮ ИЛИ ДЕЙСТВИЯ УСЛУГИ МЕНЮ
      
 ___________________________________________________________
      
 Tables *MenuAction NotDefined SplashScreen DO-IT! Cancel
 Modify  a menu selection or an action^ associated with a
 menu selection.
 ___________________________________________________________
     
     Услуга MenuAction, наиболее общая из меню Modify, позво-
 ляет Вам изменять как структуру  (меню),  так  и  содержание
 (определение  услуг)  приложения.  Поскольку  на первом шаге
 нужно указать Personal Programmerу какое меню или какую  ус-


                             - 108 -
 лугу  меню  Вы хотите изменить, при выборе услуги MenuAction
 вы увидите главное  меню  генератора  приложений.  Используя
 обычные методы перемещения по меню, выбирите меню или услугу
 меню, которую нужно изменить.
     Затем, нажмите [F10], чтобы вызвать меню MenuAction, ко-
 торое содержит четыре услуги:
      
 ___________________________________________________________
     
 *Menu Action DO-IT! Cancel
 Modify  the  current menu by adding, deleting or editing
 selections.
 ___________________________________________________________

      
     - Menu           - изменить названия услуг или пояснения
       (меню)           к названиям;
     
     - Action         - изменить действие,  определенное  для
       (действие)       текущей услуги;
     
     - DO-IT!         - сохранить сделанные изменения и  вер-
       (выполнить)      нуться в меню Modify;
     
     - Cancel         - отказаться от сделанных  изменений  и
       (oтказаться)     вернуться в меню Modify.
     
     
                         Изменение меню
      
 ___________________________________________________________
      
 *Menu Action DO-IT! Cancel
 Modify the current menu by adding, deleting  or  editing
 selections.
 ___________________________________________________________
     


                             - 109 -
     При выборе услуги Menu из меню MenuAction, на экране по-
 явится  маска,  в  которой Вы первоначально определите меню.
 Ваши возможности остаются теми же самыми. Вы можете  создать
 новые услуги меню или редактировать существующие. Более под-
 робно  об  этом смотрите главу 5. В примере 7.2, приведенном
 ниже в этой главе, содержится иллюстрация изменения меню.
      
      
                       Изменение действий
                                   
____________________________________________________________
      
 Menu  *Action  DO-IT!  Cancel
 Modify   the   action  assotiated  with  current  menu
 selection.
 ___________________________________________________________

      
      После выбора услуги Action из меню действий,  Personal
 Programmer  попросит указать, как Вы хотите изменить дейст-
 вие. У Вас есть 4 возможности:
      
 ___________________________________________________________
      
 *Define  Revise  Borrow  MoveDown
 Give the selection a new defenition.
 ___________________________________________________________
      
      
      - Define         -  определить услугу меню заново;
        (определить)
     
      - Revise         -  сделать выборочные изменения пред-
        (пересмотреть)    варительно определенного действия;
     


                             - 110 -
      - Borrow         -  перенести копию определения дейст-
        (перенести)       вия  из  другого   меню   (заменив
                          предыдущее  определение),  которое
                          Вы в дальнейшем можете изменить  с
                          помощью услуги Revise;
     
      - MoveDown       -  перенести  услугу  меню  на уровень
                          ниже  и  определить  с этого места
                          новую  услугу.
                               
      
      
                    Переопределение  действия
      
 ___________________________________________________________

 *Define  Revise  Borrow  MoveDown
 Give the selection a new defenition.
 ___________________________________________________________
      
      
      Услуга Define позволяет заново  переопределить  услугу
 меню.   Если  для   услуги  определено  действие,  Personal
 Programmer попросит подтвердить изменение текущего  опреде-
 ления:
 ___________________________________________________________
 
 *Cancel   Replace
 Do not overwrite the definition of this selection.
 ___________________________________________________________
      
      
      - Cancel        - оставить текущее определение без из-
        (отказаться)    менений и вернуться в меню изменения
                        действий.
     
     


                             - 111 -
     
      - Replace       - переопределить действие, заменив те-
        (заменить)      кущее определение.
     Если  выбрана  услуга Replace, на экране появится меню
 Action, описанное в главе 6. В ней подробно описано опреде-
 ление действия услуги меню.
                         
                       Пересмотр  действия
     
 ___________________________________________________________
      
 Define  *Revise  Borrow  MoveDown
 Modify the existing defenition.
 ___________________________________________________________
      
      
      Услуга Revise позволяет Вам изменять избранные аспекты
 определения текущей услуги, сохраняя остальные без  измене-
 ний.  При  выборе этой услуги изменения будут производиться
 по тому же алгоритму, что и при определении услуги.  Напри-
 мер,  при  изменении  отчета, Personal Programmer предложит
 выполнить действия, нeoбходимые при определении отчета: вы-
 бор таблиц, выбор соединения таблиц, выбор  записей,  выбор
 описания отчета и т.д. На каждом шаге к услугам стандартных
 меню будут добавлены 2 услуги:
      
      - Keep          -  сохранить текущий аспект  и перейти
        (сохранить)      к следующему;
                              
      - Modify        -  изменить текущий аспект и перейти к
        (изменить)       следующему.
     
      
      


                             - 112 -
                Пример 7.1.  Пересмотр действия.
      При определении услуги Maintenance/Edit/Films в приме-
 ре 6.5, мы сделали поле описания категории фильма (Category
 Description) типа DisplayOnly (только для просмотра), чтобы
 избежать случайных изменений в таблице filmcat. Давайте из-
 меним  определение  услуги,  чтобы  поле описания категории
 фильма заполнялось автоматически, если пользователь  запол-
 нил поле категории (Category). Это можно сделать, определив
 ограничения     целостности    типа    ссылочной    таблицы
 (TableLookup) для поля категория (Category).
      Начнем с главного меню Personal Programmer.
      
 ___________________________________________________________
      
 Create *Modify Summarize Review Play Tools Exit
 Change an existing application.
 ___________________________________________________________
      
      1. Personal Programmer спросит,  какое  приложение  Вы
 хотите изменить.
      
 ___________________________________________________________
      
 Application:
 Enter name application to modify.
 ___________________________________________________________

      
      2. Наберите video и нажмите [ENTER]. На экране появит-
 ся меню Modify.
 ___________________________________________________________
      
 *Table MenuAction NotDefined SplashScreen DO-IT! Cancel
 Modify  a  menu selection or an action associated with
 menu selection.
 ___________________________________________________________
      
      3. Выберите услугу MenuAction, т.к. нам нужно изменить
 действие для услуги меню.


                             - 113 -
      Personal Programmer выдает главное меню  приложения  в
 рамке  и просит Вас выбрать меню или услугу, которую Вы хо-
 тите изменить.
 ___________________________________________________________
      
 *Inquiry Reports Maintenance Orders Help Leave
 Inquire about customers or films.
 ___________________________________________________________
      
      4.  Как  обычно, выбираем  услугу  Maintenance/Edit из
 главного меню приложения, чтобы войти в меню Edit.  Выберем
 в меню услугу, которую нужно изменить (Edit).
 ___________________________________________________________
      
 *Customers Films Edit
 Edit the customer or film case.
 ___________________________________________________________
      
      5. Нажмите [F10], чтобы вызвать меню MenuAction. Изме-
 ните действие, связанное с текущей услугой.
 ___________________________________________________________
      
 *Menu Action DO-IT! Cancel
 Modify   the   action  associated  with  current  menu
 selection.
 ___________________________________________________________
      
      
      6. Т.к. нам нужно изменить действие, связанное с услу-
 гой Films, выбираем услугу Action.
 ___________________________________________________________
      
 *Define Revise Borrow  Move Down
 Modify the existing definition.
 ___________________________________________________________
      


                             - 114 -
      7. Выберите услугу Revise, поскольку  большинство  ас-
 пектов тeкущего определения остаются неизменными.
      Personal Programmer выдает главное меню  приложения.
      Теперь Personal Programmer предлагает аспекты действия
 по  услуге  Edit,  которые  могут быть изменены. Сначала он
 спрашивает, нужно ли изменить таблицы.
      8. Выберите услугу Keep, поскольку  соединение  таблиц
 остается неизменным.
 ___________________________________________________________
      
 *Keep Modify
 Keep the existing table or multitable view.
 ___________________________________________________________
      
      Как  только соединение определено, Personal Programmer
 предупреждает, что таблицы соединения не связаны отношением
 один к одному. Вновь,  мы  игнорируем  это  предупреждение,
 поскольку   все   поля   таблицы   filmcat  определены  как
 DisplayOnly (только для просмотра).
      9. Выберите DO-IT!
      Теперь Personal Programmer спрашивает, нужно ли  изме-
 нить выбор записей.
 ___________________________________________________________
      
 *Cancel DO-IT!
 Go ahead and use this multitable view.
 ___________________________________________________________
      
      10.  Снова,  выбираем  Keep, чтобы как и ранее выбрать
 все записи.
 ___________________________________________________________
      
 *Keep Modify Create No Query
 Keep the existing query for selecting records.
 ___________________________________________________________
      
      Personal Programmer спросит  Вас,  нужно  ли  изменить
 форму.


                             - 115 -
      
      11.  Выберите Keep, чтобы оставить форму неизменной.
 ___________________________________________________________
     
 *Keep Modify FormView TableView FormToggle
 Keep the existing form "Videos2.F1"  for  the  current
 operation.
 ___________________________________________________________
      
      Personal Programmer обнаруживает, что ключевые поля не
 помещены в форму как  поля  типа  DisplayOnly  (только  для
 просмотра).
 ___________________________________________________________
      
 Modify *DO-IT!
 Disregard the warning. Save the forms as is.
 ___________________________________________________________
      
      Выберите DO-IT! из меню, чтобы указать Парадоксу,  что
 мы хотим оставить форму без изменений.
 ___________________________________________________________
      
 *Settings InsertDelete DO-IT! Cancel
 Create validity checks and image settings.
 ___________________________________________________________
      
      12. Выберите DO-IT!
      Вас  попросят изменить определения ограничений целост-
 ности, установок параметров образа или  привелегий  включе-
 ния/удаления.(См. рис.7.1.1).
      13. Выберите услугу Settings.
      На  экране появится форма для заполнения установок па-
 раметров.
      14. Определите ограничения целостности:
      - переместите курсор в поле Категория фильма (Category).
      - нажмите [F10].
      - выберите услугу ValCheck/Design/TableLookup, выбери-
 те      таблицу      filmcat      и      затем       услугу
 AllCorrespondingFields/HelpAnd Fill.


                             - 116 -
      15. Нажмите DO-IT! дважды, чтобы сохранить новые уста-
 новки параметров.
      Меню  приложения  Edit  остается на экране, а Personal
 Programmer предлагает Вам перейти к следующей услуге, кото-
 рую Вы хотите изменить.
      
                        Перенос действия
      
 ___________________________________________________________
      
 Define Revise *Borrow Move Down
 Borrow an existing definition.
 ___________________________________________________________

      
      Услуга Borrow (Перенести) позволяет копировать  дейст-
 вие из какой-либо услуги меню в текущую. Она полезна, когда
 одна услуга очень похожа на другую.
      При выборе услуги Borrow, нужно  пройти  по  структуре
 меню  приложения до услуги меню, действие которой нужно пе-
 ренести. Выделив эту услугу, нажмите [F10]. На экране  поя-
 вится меню:
 ___________________________________________________________
      
 *BorrowAction Cancel
 Borrow the action asigned to the highlighted selection.
 ___________________________________________________________
      
      - BorowAction             - сделать копию действия  из
        (перенести действие)      высвеченной услуги в теку-
                                  щую (с заменой определения
                                  действия текущей услуги);
     
      - Cancel                  - отказаться   от   переноса
        (oтказаться)              действия, сохранив сущест-
                                  вующее  определение  неиз-
                                  менным.
     


                             - 117 -
      После переноса действия, можно воспользоваться услугой
 Revise,  чтобы  сделать изменения (иначе в приложении будут
 две одинаковые услуги). Более подробно  о  переносе  услуги
 смотрите пример 7-2.
      
                               
                          Перенос вниз
     
 ___________________________________________________________
      
 Define Revise Borrow *Move Down
 Move the selection down one menu level.
 ___________________________________________________________
     
     С  помощью услуги MoveDown  можно перенести услугу меню
 и действие, связанное с ней, на более низкий уровень струк-
 туры  меню.  Это  удобно  при изменении сложных приложений.
 Обычно это используется для замены существующей услуги  бо-
 лее общей услугой вида меню.
     Например, меню поддержки приложения video имеет 2 услу-
 ги ввода данных и одну услугу редактирования.
 ___________________________________________________________
     
 Data entry selection
 ___________________________________________________________
     
                                            Maintenance
 *Customers  Films  Edit
 Add new customer.
 ___________________________________________________________
     
 Edit selection
 ___________________________________________________________
     
                                            Edit
 *Customers  Films
 Edit customer information.
 ___________________________________________________________


                            - 118 -
     Структура  этого меню несовершенна, т.к. операции ввода
 данных и редактирования находятся на разных уровнях меню. С
 помощью услуги Move Down можно добавить второй уровень меню
 в части ввода данных и переместить одну из  операций  ввода
 данных на этот уровень.(См. рис. 7.1.2).
    Для пустой услуги, которая  возникла в меню Maintenance,
 нужно  ввести  имя новой услуги. Пустая услуга определяется
 по алгоритму, описанному в Главе  5.  Новый,  более  низкий
 уровень автоматически получает имя перенесенной услуги.
     Обратите  внимание,  что услугу нельзя переносить в су-
 ществующее меню. Если вы хотите перенести услугу Films,  ее
 нельзя  перенести  в  меню  Add,  где  уже  имеется  услуга
 Customers. Вместо этого в меню Add  можно  добавить  услугу
 Films,  перенести  ее  определение и удалить первоначальную
 услугу.(См. рис. 7.1.3).
     За одно действие можно перенести  только  одну  услугу.
 Напомним,  что  Personal  Programmer поддерживает структуры
 меню до 10 уровней в глубину. Если вы уже имеете 10 уровней
 и пытаетесь переместить услугу  на  более  низкий  уровень,
 Personal Programmer выдаст сообщение об ошибке.
                   
     Пример 7.2. Перенос услуг меню на более низкий уровень
      
     Предположим, что вам понадобилось изменить услуги ввода
 данных приложения video, чтобы они находились рядом с услу-
 гами редактирования.
     Начнем с меню  Maintenance/Edit.
     1.Нажмите  [Esc], чтобы войти в меню Maintenance, и вы-
 берите услугу Customers.
 ___________________________________________________________
     
 Menu  *Action  DO-IT!  Cancel
 Modify the action associated with the current menu selection.
 ___________________________________________________________
   
                                            Maintenance
 *Customers  Films  Edit
 Add new customer.
 ___________________________________________________________


                             - 119 -
    
     2. Нажмите [F10], чтобы войти в меню  MenuAction.
     3. Поскольку, нам нужно изменить действие, связанное  с
 услугой Customers, выберите Action.
     Personal  Programmer  спросит, нужно ли изменить дейст-
 вие.
     4. Выберите услугу MoveDown.
     
 ___________________________________________________________
      
 Define Revise Borrow *Move Down
 Move the selection down one menu level.
 ___________________________________________________________
     
                                            Maintenance
     
           Films  Edit
 ___________________________________________________________
     
     
     Personal Programmer создаст новое меню и перенесет туда
 услугу  Customers.
     
 ___________________________________________________________
     
 Customers
 Add new customers.
 ___________________________________________________________
                   


                             - 120 -
     5. Наберите имя новой услуги Add и нажмите [ENTER]. За-
 тем наберите пояснительный текст к имени услуги  и  нажмите
 [ENTER].
     Поскольку  заполнение  бланка  описания  меню завершает
 операцию MoveDown, Personal Programmer  предлагает  выбрать
 следующую  услугу, которую нужно изменить. Новая услуга Add
 остается текущей в форме определения меню.
     6. Чтобы создать подменю Add,  нажмите  [ENTER],  чтобы
 перейти  на  уровень  вниз,  где  находится  только  услуга
 Customers. Нажмите [F10] и выберите Menu.
     
 ___________________________________________________________
     
 *Menu  Action  DO-IT!  Cancel
 Modify the current menu by  adding,  deleting,  or  editing
 selection.
 ___________________________________________________________
   
                                                Add
 Customers  _________
 ___________________________________________________________
              
  _________ <- Type the new selection name here.
     
 ___________________________________________________________
     
     Теперь можно начать редактирование меню Add.
     7. Нажмите клавишу [->], чтобы войти в бланк заполнения
 новой услуги. Введите имя Films.
     Нажмите DO-IT! [F2], чтобы сохранить новую услугу меню.
     Personal  Programmer  снова  попросит указать следующую
 услугу, которую нужно изменить. Услуга Add остается в блан-
 ке меню.
     8. Чтобы определить услугу Films, нужно выполнить  сле-
 дующие действия:
     >> Перенесите курсор на услугу Films.
     >> Нажмите [F10] и выберите услугу Action.
     >> Выберите Borrow, поскольку действие услуги уже опре-
 делено.


                             - 121 -
 ___________________________________________________________
      
 Define Revise *Borrow MoveDown
 Borrow an existing defenition.
 ___________________________________________________________
     
                                             Add
 Customers   Films
 ___________________________________________________________
     
     Personal  Programmer  выдаст в бланке меню Главное меню
 приложения и попросит указать услугу, которую  нужно  пере-
 нести.
     >> Перейдите в меню Maintenance/Films.
     >> Нажмите [F10] и выберите услугу BorrowAction.
 ___________________________________________________________
     
 *BorrowAction  Cancel
 Borrow the action assigned to the highlighted section.
 ___________________________________________________________
                         
                                               Maintenance
 *Add  Films
 Add new films.
 ___________________________________________________________
 
     9.  Удалите  повторяющуюся  услугу в меню Maintenance и
 выберите Films.
     >> Нажмите [Esc], чтобы войти в меню Maintenance и  вы-
 берите Films.
     >> Нажмите [F10] и выберите услугу Menu, т.к. вам нужно
 сделать изменение в меню.
     >> Нажмите [Del] и выберите Yes, чтобы подтвердить уда-
 ление услуги Films.
     Услуга Films исчезнет, и текущей станет услуга Edit.
     10. Теперь нажмите [F2] трижды, чтобы сохранить измене-


                             - 122 -
 ния и выйти из услуги Modify.
     Personal Programmer генерирует новые программы и высве-
 чивает заново Главное меню приложения.
     Теперь ваше приложение video полное! Далее можно перей-
 ти  к  главе  8, где описывается, как запустить приложение,
 или  выбрать  услугу  Exit/Yes,  чтобы  выйти  из  Personal
 Programmer.
     
                     Передвижение подменю
     
     Если вы перешли вниз к услуге, которая выдает меню, ме-
 ню будет также перенесено на уровень ниже. Новое меню, соз-
 данное  между двумя прежними, состоит из услуги, которую вы
 переместили на нижний уровень.
     Представьте, например, что ваше приложение имеет следу-
 ющую структуру:
     
     
     CustList         MonthlyReports       EmpList
             
                       IncomeStmt
                       BalanceSheet
     
     С  помощью услуги MoveDown сделайте новое меню на теку-
 щем уровне, которое содержит только услугу  MonthlyReports.
 Она  содержит меню из двух услуг IncomeStmt и BalanceSheet.
 В итоге вы получите:
     
     CustList         (Unnamed)          EmpList
                      
                       MonthlyReports
     
                        IncomeStmt
                        BalanceSheet
     
     
                 ПОИСК  НЕОПРЕДЕЛЕННЫХ  УСЛУГ


                             - 123 -
     
 ___________________________________________________________
      
 Table MenuAction *NotDefined SplashScreen DO-IT! Cancel
 Go  to  the  first  undefined  menu  selection  and   begin
 modifying from that point.
 ___________________________________________________________
     
     Услуга  NotDefined позволяет вам найти только те услуги
 меню в приложении , для которых еще не были определены дей-
 ствия. Выберите  NotDefined  из  меню  Modify,  и  Personal
 Programmer  перейдет к первой неопределенной услуге в вашем
 приложении. Теперь вы можете нажать [F10], чтобы выдать ме-
 ню MenuAction и выполнить  действия,  описанные  в  разделе
 "Изменение действия" ранее в этой главе.
     
     
                 ИЗМЕНЕНИЕ  ТИТУЛЬНОГО  ЭКРАНА
     
 ___________________________________________________________
      
 Table MenuAction NotDefined *SplashScreen DO-IT! Cancel
 Modify the application`s splash screen.
 ___________________________________________________________
                                        
     Услуга  SplashScreen  позволяет  вам изменять титульный
 приложения или создать новый. При выборе этой услуги из ме-
 ню Modify вы увидите следующее :
     
 ___________________________________________________________
     
 *Design    Modify    NoSplashScreen
 Design a new splash screen for the application.
 ___________________________________________________________
     


                             - 124 -
     
     - Design           - создать  новый  титульный  экран с
       (создать)          помощью редактора форм.
     - Modify           - изменить титульный экран с помощью
       (изменить)         редактора форм.
     
     - NoSplashScreen   - удалить титульный экран.
     
     Более подробно смотрите раздел "Создание титульного эк-
 рана" в главе 6.
     
     
             РЕДАКТИРОВАНИЕ  ПРОГРАММ,  СОЗДАННЫХ
                      Personal Programmer
     
     Если вы работаете  с  Personal  Programmer,  приложение
 можно  изменить другим способом: в редакторе программ PAL`а
 или в другом текстовом редакторе отредактируйте  программы,
 созданные Personal Programmer. Вы увидите, что код, создан-
 ный  Personal Programmer, хорошо структурирован и легок для
 понимания.
     Для более детальной  информации  о  коде,  генерируемом
 Personal Programmer, смотрите главу 11.
     
     Ниже  вы изучите способы запуска приложения, созданного
 Personal Programmer.
     
.

                             - 125 -
      
                                                Г Л А В А  8
 ___________________________________________________________
      
                     ВЫПОЛНЕНИЕ ПРИЛОЖЕНИЯ
 ___________________________________________________________
      
      
     Если Вы последовательно выполняли примеры,  приведенные
 в главах 4 - 7, то Вы построили первое приложение с исполь-
 зованием  Personal  Programmer.  Существует несколько путей
 выполнения    приложения,     сгенерированного     Personal
 Programmer.  Это зависит от того, что использует приложение
 и как осуществляется доступ к PARADOX. Эта глава  объясняет
 как  копировать  файлы,  составляющие Ваше приложение и как
 выполнять приложение.
     - из Personal Programmer;
     - из PARADOX;
     - из DOS;
     - из PARADOX Runtime.
     Проиллюстрируем все эти приемы  на  примере  приложения
 video, созданного в соответствии с главами 4 - 7 настоящего
 руководства.  Для выполнения Вашего приложения замените его
 имя на video и установите директорий \paradox2\pprog\video.
    Заметим, что если Ваши  файлы  полностью  помещаются  на
 гибком диске,  пользователям нет необходимости использовать
 винчестерский диск, даже если приложение создано с его  по-
 мощью.
    
      
                      СОСТАВ ПРИЛОЖЕНИЯ
      
      
     Все  файлы  приложения умещаются в одном директории. Он
 включает:
     - выполняемые файлы: управляющие программы,  библиотеч-
 ную  процедуру,  титульные  экраны  и  экраны  помощи  (или


                             - 126 -
 help-экраны), созданные Personal Programmer;
     -  модификационные   файлы:   программы,   использующие
 Personal Programmer для создания библиотечной процедуры;
     - строительные блоки: таблицы, формы, отчеты, отдельные
 программы, запросы и многотабличные просмотры, используемые
 в приложении.
     Модификационные файлы для выполнения приложения не нуж-
 ны. Также необходимо помнить, что строительные блоки  могут
 содержать  несколько источников. В частности, Ваше приложе-
 ние может использовать таблицы, созданные перед использова-
 нием Personal Programmer. Если  другие  пользователи  также
 используют эти таблицы, Вы должны их скопировать в директо-
 рий Вашего приложения. Вы, очевидно, не захотите менять те-
 кущие  версии  этих  таблиц при создании приложения. Будьте
 осторожны: хотя Вы можете копировать  файлы  приложения  на
 дискеты,  Вы  должны  копировать только строительные блоки,
 если они не находятся в данный момент в обращении.  Сущест-
 вует три пути копирования приложения:
     - используя специальную программу,  созданную  Personal
 Programmer для Вашего приложения
     - выбрав  в  Personal  Programmer опции Tools/Copy (см.
 главу 9.)
     - используя команду Copy DOS.

      
               ИСПОЛЬЗОВАНИЕ ПРОГРАММЫ КОПИРОВАНИЯ
      
      
     Всякий раз, когда Вы создаете или модифицируете  прило-
 жение  с  помощью  Personal Programmer, создается программа
 копирования. Эта программа именуется -----cp, где тире  со-
 ответствует  пяти-символьному имени Вашего приложения. Нап-
 ример, приложение video содержит программу videocp. Вы  мо-
 жете выполнить эту прграмму с помощью PARADOX, создавая ис-
 полнительную версию Вашего приложения посредством копирова-
 ния  необходимых  файлов  из директория приложения в другой
 директорий или диск.


                             - 127 -
      
      
                     КОПИРОВАНИЕ ПРИЛОЖЕНИЯ
      
      
     Предположим,  Вы хотите скопировать video приложение на
 форматированную дискету, вставленную в  устройство  A.  Для
 этого необходимо:
     1.  Запустить  PARADOX.  Выбрать  Tools/More/Directory,
 ввести  имя директория, в котором находится Ваше приложение
 и нажать клавишу [ENTER].
     Для  video  приложения введите c:\paradox2\pprog\video,
 если Вы следовали всем нашим рекомендациям.
     Выберите   для  подтверждения  выбора  OK,  после  чего
 PARADOX будет настроен на Ваш директорий.
     2. Выберите Script/Play, напечатайте имя программы  ко-
 пирования Вашего приложения и нажмите [ENTER].
     Для video приложения печатайте videocp.
     Программа выдаст на экран сообщение:
 ___________________________________________________________
     
 Path name:
 ENTER to drive and directory to which you wount to copy
 the application.
 ___________________________________________________________
     
     3. Напечатайте имя устройства и/или директорий, куда Вы
 хотите скопировать приложение и нажмите [ENTER].
     Для video приложения, печатайте a:.
     Все исполняемые программы и  строительные  блоки  будут
 скопированы в определенный директорий и/или диск.
     Программа  ENTRY  присоединяет  к orders три объекта, о
 которых ничего не знает Personal Programmer. Это:
     
     - ORDERS.F1; ORDTERMP.F1; ORDTEM.VAL.
      


                             - 128 -
     После прекращения работы с Personal Programmer,  обяза-
 тельно сделайте их копию на Ваш дистрибутивный диск или ди-
 ректорий.
     Вы можете также выполнить программу копирования, выбрав
 PLAY  в основном меню Personal Programmer. Все действия вы-
 полняются аналогично.
     Заметим, что команда копирования копирует  строительные
 блоки из директория приложения также успешно, как выполняе-
 мые программы и библиотечную процедуру. Как обсуждалось ра-
 нее, если Ваше приложение использует существующую базу дан-
 ных, Вы обычно не хотите заменять текущие строительные бло-
 ки  на  Вашем диске или директории. Вы должны уметь сделать
 копию приложения  вручную  или  использовать  DOS  операцию
 erase  для устранения строительных блоков после использова-
 ния программы копирования.
     Заметим, что программа копированияне  контролирует  па-
 мять  на  диске, подразумевая, что приложение полностью по-
 местится на данном носителе.
     Наконец заметим: Если Вы используете в приложении  свою
 предварительно созданную программу (выбрав Script из Action
 меню),  Personal Programmer может не знать о всех объектах,
 которые используются в программе. Данные объекты  не  будут
 скопированы программой копирования.
     Точно также, как мы действовали с объектами, связанными
 с entry Вы должны побеспокоиться об этих "extra" файлах са-
 ми и помнить о том, чтобы скопировать их в  дирикторий  или
 на диск, в котором приложение будет выполняться.
      
      
                 КОПИРОВАНИЕ ПРИЛОЖЕНИЯ ВРУЧНУЮ
      
      
     Вы  можете,  конечно, копировать файлы приложения вруч-
 ную, используя DOS. Это достаточно легко, если Вы  создаете
 только  1 приложение в директории. Используете операцию DOS
 copy *.* и все файлы будут переписаны в  заданный  директо-
 рий.  Данная  операция  будет  копировать и модификационные
 файлы, которые не используются при  выполнении  приложения.


                             - 129 -
 После копирования, Вы можете удалить их.
     Еcли Вы создали несколько приложений в одном директории
 (не  рекомендуем),  Вы  должны  уметь отделять файлы одного
 приложения от другого. Для того, чтобы узнать как  это  де-
 лать, смотрите главу 9.
           
      
                      ВЫПОЛНЕНИЕ ПРИЛОЖЕНИЯ
      
      
     Существует несколько путей выполнения приложения, сге-
 нерированного Personal Programmer.
      
      
                
          ВЫПОЛНЕНИЕ ПРИЛОЖЕНИЯ ИЗ Personal Programmer
 
 ___________________________________________________________
      
 Create Modify Summarize Review *Play Copy Delete Settings Exit
 Plan an application.
 ___________________________________________________________
      
      
     Когда  используется  Personal Programmer, Вы можете вы-
 полнить приложение, выбрав Play из основного меню и  набрав
 пятисимвольное  имя приложения. Конечно, Вы должны работать
 в директории приложения, или  использовать  Tools/Directory
 для его изменения.
     Этот способ полезен для тестирования приложения при его
 разработке.
      После  выполнения приложения управление вернется к Ос-
 новному Меню Personal Programmer, где Вы можете  немедленно
 набрать Modify и сделать изменения.
                                                        
      


                             - 130 -
    
    Пример 8.1. Выполнение приложения из Personal Programmer.
     
      Запустить  Personal  Programmer  из  \paradox2\pprog\
 video директория.
      1. Из основного меню выбрать Play.
 
 ___________________________________________________________
      
 Create Modify Summarize Review *Play Copy Delete Settings Exit
 Play an application.
 ___________________________________________________________
      
      
      Personal  Programmer спросит, какое приложение Вы хо-
 тите выполнить.
      2. Наберите video и нажмите [Enter].
      
 ___________________________________________________________
      
 Application:
 Enter the name of the application to play.
 ___________________________________________________________
      
      
      Когда приложение загрузится, Вы увидите Основное Меню
 video приложения на Вашем экране. Когда Вы выйдете из при-
 ложения video Personal Programmer вернет управление в  Ос-
 новное Меню.
      
      
                                           
     


                             - 131 -
     
               ВЫПОЛНЕНИЕ  ПРИЛОЖЕНИЯ ИЗ  PARADOX
    
          Пример 8.2. Выполнение приложения из Paradox.
     
      Все  файлы  приложения должны находиться в директории
 \paradox2\pprog\video.
      1. Запустите Paradox.
      2. Выберите Tools/More/Directory из Основного Меню.
      3. Введите директорий приложения   c:\paradox2\pprog\
 video и нажмите [Enter].
 ___________________________________________________________
      
 Directory: c:\paradox\
 Enter new working directory specification
 (e.g.a:\data or b:).
 ___________________________________________________________
      
      4.  Выберите  OK для подтверждения изменения директо-
 рия. После этого Вы увидите Основное Меню Paradox.
      5. Выберите Scripts/Play.
      6. Наберите имя приложения video и нажмите [Enter].
      
 ___________________________________________________________
      
 Script:
 Enter name of script to play, or press [Enter] to see
 a list of scripts.
 ___________________________________________________________
     
      
                ВЫПОЛНЕНИЕ  ПРИЛОЖЕНИЯ  ИЗ  DOS
     
      Если Вы создаете приложение  для  других  пользовате-
 лей, для того, чтобы не посвящать их в тонкости взаимодей-
 ствия  с  Paradox, из среды DOS имеется возможность запус-
 тить приложение на выполнение и после выхода из него опять
 вернуться в DOS.
      Для этого необходимо, чтобы в команде path  присутст-


                             - 132 -
 вовал  директорий \paradox2. Затем измените текущий дирек-
 торий на  \paradox2\pprog\video  и  запустите  приложение,
 введя команду paradox2 video.
      
                               
      
                   ИСПОЛЬЗОВАНИЕ  BATCH-ФАЙЛА
      
      
      Вы можете создать batch файл для автоматической уста-
 новки  Вашего  приложения.  Например, для приложения video
 может быть создан следующий скрипт:
      
      echo off
      cls
      echo Loading VIDEO. One moment please...
      cd \paradox2\pprog\video
      paradox2 video
      cd \
      cls
      echo You have been returned to the root directory  on
      your disk.
      
      Этот  batch  файл необходимо запомнить в корневом ди-
 ректории или директории, указанном в команде path.
      
                               
      
          ВЫПОЛНЕНИЕ  ПРИЛОЖЕНИЯ  ИЗ  PARADOX  RUNTIME
      
      
      Код, сгенерированный  Personal  Programmer,  полностью
 совместим  с  программой  Paradox  Runtime.  Вам необходимо
 только добавить файлы Paradox Runtime к Вашему  приложению.
 Этот способ выполнения имеет несколько преимуществ:
      - Runtime стоит гораздо дешевле, чем Paradox.
      -  приложение  управляет доступом к таблицам, програм-
 мам, формам и другим объектам.


                             - 133 -
      - пользователь приложения может не знать Paradox.
      Как   выполнять  приложение  под  управлением  Paradox
 Runtime, детально рассмотрено в  "Руководстве  пользователя
 Paradox Runtime", а также в главе 18 "Руководства пользова-
 теля PAL".
      Мы  объяснили,  как  создавать и выполнять приложения,
 созданные с помощью Personal  Programmer.  Следующая  часть
 объясняет, как управлять и документировать их. Вы также уз-
 наете, как изменить установки Personal Programmer и Ваш ра-
 бочий директорий.
 
.

                             - 134 -

                                                 Г Л А В А  9
 ____________________________________________________________
      
           ДЕЙСТВИЯ ПО ПОДДЕРЖАНИЮ ВАШЕГО ПРИЛОЖЕНИЯ
 ____________________________________________________________
 
     Вы  научились  создавать,  вносить изменения и вызывать
 ваше приложение средствами Personal Programmer. В этой гла-
 ве  дают  объяснения  остальным   пунктам   меню   Personal
 Programmer. Здесь объясняется как:
    >> документировать ваше приложение;
    >> линеализировать структуру приложения (систему меню);
    >> копировать, переименовывать и удалять приложение;
    >> менять  установки системы Personal Programmer для пе-
 чати, средства помощи и написания программ;
    >> изменять рабочий директорий;
    >> конвертировать приложение, созданное генератором при-
 ложений PARADOX.
     Мы нызываем эти вопросы "поддержанием приложения", пос-
 кольку они позволяют производить некоторые действия с  соз-
 данным вами приложением. Как и раньше основным условием яв-
 ляется  то, что ваше приложение должно находиться в текущем
 директории.
                                                                  
                       РЕЗЮМЕ (SUMMARIZE)
            
 ___________________________________________________________
      
 Create Modify *Summarize Review Play Tools Exit
 Generate  a  summary  of the menus and operations in an
 application.
 ___________________________________________________________
      
     Рассматрим режим Summarize как генератор создания доку-
 ментации для вашего приложения. Он создает отчеты,  которые
 помогают вам лучше понять, какова структура вашего приложе-
 ния, что оно делает и какие файлы использует.


                             - 135 -
                                                                  
     Когда  вы  выберите  режим  Summarize из основного mеню
 Personal Programmer, вы получите вопрос,  какое  приложение
 вы хотите документировать.
 ___________________________________________________________
      
 Application name:
 Enter the name of the application to summarize.
 ___________________________________________________________
      
     Введите  пятизначное  имя  приложения и нажмите клавишу
 [ENTER]. Приложение должно находиться в текущем директории.
 Затем появится меню из четырех  пунктов,  определяющих  вид
 интересующей вас документации:
 ___________________________________________________________
      
 *MenuListing  ApplicationListing  TreeListing  All
 Display the menu structure and  the  contents  of  each
 selection.
 ___________________________________________________________
      
     - Menu  Listing        - показать структуру меню,  дей-
                              ствия и объекты, привязанные к
                              каждому пункту меню
     - Application Listing  - дать список файлов, используе-
                              мых приложением
     - Tree Listing         - показать структуру меню графи-
                              чески
     - All                  - Создать все три  вышеуказанные
                              виды документации
     Когда вы закажете тип документации, Personal Programmer
 спросит вас, куда вы хотите ее вывести:
 ___________________________________________________________
      
 *Printer  Screen  File
 Send the summary to the printer.
 ___________________________________________________________


                             - 136 -
      
     - Printer              - вывести на печать
     - Screen               - вывести на экран
     - File                 - вывести отчет в тестовый файл
     Документация,  выводимая  на  печать использует текущие
 установочные значения для печати (см. режим  Tools/Settings
 ниже). Документация выводимая на экран, выводится поэкранно
 и вы можете двигаться по ней, нажимая на любую клавишу. До-
 кументация,  выводимая  во  внешний  файл, дописывается как
 Ascit text, и вы можете просматривать  и   модулировать  ее
 любым  текстовым редактором. Наименование файлов документа-
 ции имеет расширение типа .PRT, если вы не зададите другое.
      
      
                          Menu Listing
      
 ___________________________________________________________
      
 *MenuListing  ApplicationListing  TreeListing  All
 Display  the  menu  structure  and the contents of each
 selection.
 ___________________________________________________________
      
     Документация по режиму Menu Listing содержит информацию
 о  пунктах системы меню приложения всех уровней и действиях
 системы Personal Programmer, выполняемых для каждого  пунк-
 та.  Здесь также указываются программы и библиотеки, управ-
 ляющие каждым меню; таблицы и подпрограммы, связанные с вы-
 полнением каждого конкретного пункта.
     Режим Menu Listing особенно полезен, когда  вы  вносите
 изменения  в ваше приложение. Например, вы можете использо-
 вать его для нахождения таблиц map и source, если вы хотите
 использовать их и в других режимах работы  вашего  приложе-
 ния. рис.9.1.1.
                                                                  


                             - 137 -
     
                       Application Listing
        
 ___________________________________________________________
      
 MenuListing  *ApplicationListing  TreeListing  All
 Display  the  files  which   comprise   the   generated
 application.
 ___________________________________________________________
      
     Режим  Application Listing выдает документацию простого
 вида, где указываются наименования  различных  файлов,  ис-
 пользуемых в приложении. Для каждого типа файлов приводятся
 отдельные  списки  (напр.,  для  библиотек процедур - .LIB,
 программ - .SC, таблиц - .DB и т.д.).
     Вы  можете заметить, что некоторые названия в документе
 Application Listing вам известны, поскольку вы сами задава-
 ли их (напр., таблица Customer), другие же некоторым  обра-
 зом   варьируют   наименование  вашего  приложения  (напр.,
 Videoq3). В  главе  11  даются  объяснения,  каким  образом
 Personal  Programmer дает названия создаваемым им файлам, и
 в каких содержиться информация, которую вы можете  просмат-
 ривать и изменять.
                                                                  
                          Tree Listing
 
 ___________________________________________________________
      
 MenuListing  ApplicationListing  *TreeListing  All
 Display the application in a tree a structure form.
 ___________________________________________________________
      
     Документация, получаемая по режиму Tree Listing, выдает
 графическое  представление иерархической структуры меню ва-
 шего приложения.
     Здесь  используются  графические  символы  для указания
 связей соответствующих пунктов меню и подменю  и  указания,
 какие  действия выполняет Personal  Programmer  по конечным
 пунктам подменю.


                             - 138 -
     Если линия, ведущая к пункту подменю,  разрывна  (точки
 вместо целой линии), это означает, что данный пункт меню не
 имеет дальнейшей привязки действий (см. рис. 9.1.2).
      
             
                             Review
      
 ___________________________________________________________
      
 Create Modify Summarize *Review Play Tools Exit
 Browse through the menu structure of an application.
 ___________________________________________________________

      
     Режим Review основного меню системы Personal Programmer
 очень  удобен для того, чтобы осуществить просмотр меню ва-
 шего приложения. При этом нет действительной работы с  при-
 ложением,  но  вы  можете "пройтись" по всей структуре меню
 вашего приложения. Когда вы закажете режим Review основного
 меню Personal Programmer, вас спросят об имени интересующе-
 го вас приложения.
      
 ___________________________________________________________
      
 Application name:
 Enter the name of the application to review.
 ___________________________________________________________
      
     Введите имя приложения и нажмите клавишу [ENTER].  Ваше
 приложение должно находится в текущем директории. Теперь вы
 видите  основное меню вашего приложения. Вы можете "гулять"
 по структуре меню, как если бы вы отрабатывали ваше  прило-
 жение.  Вы не сможете вызвать конкретные действия по выпол-
 нению какого-либо пункта меню, но вы можете  отследить  все
 пункты всех подменю приложения. Нажмите клавишу [Esc], что-
 бы  выйти из меню приложения и затем клавишу [F2] для возв-
 рата в основное меню системы Personal Programmer.


                             - 139 -
     Режим  Review  не  позволяет  вам  вносить  изменения в
 структуру меню прложения, но  вы  легко  можете  для  этого
 сделать шаги Modify/MenuAction.
                                                                                                                                                                                                                                                              
 
                              Tools
       
 ___________________________________________________________
      
 Create Modify Summarize Review Play *Tools Exit
 Copy,   rename,   or  delete  an  application,  specify
 settings, or change directory.
 ___________________________________________________________
      
     Режим  Tools основного меню системы Personal Programmer
 предоставляет пользователю целый набор  способов  "ведения"
 вашего  приложения  и  самой  системы . Заказав режим Tools,
 вы увидите подменю из пяти пунктов:
 ___________________________________________________________
      
 *Copy Delete Rename Settings Directory
 Copy the modifiable form of an application  to  another
 directory.
 ___________________________________________________________
      
       - Copy           - скопировать  приложение  на другой
                          диск или директорий;
       - Delete         - удалить приложение с диска;
       - Rename         - дать новое  название вашему прило-
                          жению;
       - Установка      - изменить   выходные   установочные
                          значения Personal  Programmer  для
                          печатающего устройства, вывода эк-
                          ранов пояснения или программ;
       - Directiry      - изменить рабочий директорий.

      


                             - 140 -
     
                           Режим Copy
       
 ___________________________________________________________
      
 *Copy Delete Rename Settings Directory
 Copy  the  modifiable form of an application to another
 directory.
 ___________________________________________________________
      
     Режим Copy позволяет скопировать приложение целиком  из
 текущего  директория в другой директорий или диск. При этом
 копируются все  программы  данного  приложения,  библиотеки
 процедур,  таблицы, созданные системой Personal Programmer,
 плюс все, формы, отчеты, запросы и отображения для несколь-
 ких таблиц, используемые при работе вашего приложения.
     Когда вы заказываете режим Copy из меню Tools, Personal
 Programmer спрашивает вас, какое приложение вы будете копи-
 ровать.
 ___________________________________________________________
      
 Application name:
 Enter the name of the application.
 ___________________________________________________________
      
     Введите пятисимвольное наименование вашего приложения и
 нажмите клавишу [ENTER]. Это приложение должно находиться в
 текущем директории.
     Затем  последует  вопрос, куда вы будете копировать это
 приложение.
 ___________________________________________________________
     
 Directory:
 Enter the name of the directory in which  you  want  to
 copy the application.
 ___________________________________________________________
      
     Вы можете задать любое наименование. Выходной диск дол-
 жен  иметь достаточное пространство для включения всех фай-


                             - 141 -
 лов приложения. Если такого места нет, то удалите  файлы  с
 диска, либо используйте команду DOS Copy, чтобы скопировать
 файлы на несколько дисков.
     Copy  копирует  изменяемую  версию  приложения, которая
 включает больше файлов, чем требуется для  работы  приложе-
 ния.  Если  вам  нужно скопировать приложение в исполняемом
 виде, используйте программу  "copy",  созданную  в  системе
 Personal Programmer для вашего приложения. (см. главу 8)
     Копирование приложения не убирает его из  текущего  ди-
 ректория.  Если  вам  нужно  удалить его, используйте режим
 Delete.
                          Режим Delete
      
 ___________________________________________________________
 
 Copy *Delete Rename Settings Directory
 Delete all script files for an application.
 ___________________________________________________________
      
     Режим  Delete  производит  удаление  всего приложения с
 диска, включая все программы и таблицы, созданные  Personal
 Programmer.  При  этом не удаляются таблицы, формы, отчеты,
 запросы, экраны отображений, а также программы,  написанные
 не в среде Personal Programmer. Эти файлы остаются нетрону-
 тыми.
     Когда  вы  задаете режим Delete из меню Tools, Personal
 Programmer спрашивает вас, какое приложение вы хотите  уда-
 лить.
 ___________________________________________________________
     
 Application name:
 Enter the name of the application to delete.
 ___________________________________________________________
      


                             - 142 -
     Введите пятисимвольное наименование вашего приложения и
 нажмите клавишу [ENTER]. Это приложение должно находиться в
 текущем директории.
     Поскольку это необратимое действие, вам будет представ-
 лена возможность либо  отказаться,  либо  подтвердить  ваше
 действие.
                                                                                                                                                                                                                                                              
 
        Предупреждение:
        --------------
     Ваше  приложение  может быть результатом долгого труда.
 Если его можно будет  хотя  бы  частично  использовать,  мы
 предлагаем  сначала скопировать его на дискету, а уже потом
 стирать с жесткого диска. При этом вы всегда можете восста-
 новить его и воспользоваться плодом своего труда.
                                                                                                                                                                                                                                                              
 
                          Режим Rename
      
 ___________________________________________________________
      
 Copy Delete *Rename Settings Directory
 Rename the modifiable form of an application.
 ___________________________________________________________
      
     Режим  Rename  позволяет  изменить название приложения.
 При этом меняются не только имена составляющих файлов  дан-
 ного  приложения, но и все ссылки на эти файлы в программах
 этого приложения.
     Режим Rename особенно полезен при конвертировании  при-
 ложений,  созданных  генератором  приложений  PARADOX 1.1 в
 среду Personal Programmer.
     Когда вы задаете режим Rename из меню  Tools,  Personal
 Programmer  просит вас ввести имя нужного программного при-
 ложения.
 ___________________________________________________________
      
 Aplication name:
 Enter the name of application to rename.
 ___________________________________________________________
                                                                                                                                                                                                                                                              
 


                             - 143 -
     Введите  пятизначное  наименование  вашего приложения и
 нажмите клавишу [ENTER]. Это приложение должно находится  в
 текущем директории.
   Затем вас попросят ввести новое имя для этого приложения.
 ___________________________________________________________
     
 Application name:
 Enter the new name for the application.
 ___________________________________________________________
      
     Вводимое вами наименование может иметь до пяти знаков в
 длину  и обязательно начинаться буквой. Остальные знаки мо-
 гут быть буквами, цифрами и специальными символами $,_ и !.
     Режим Rename может быть использован только для приложе-
 ний в изменяемой форме (modifiable),  т.е.  для  приложения
 созданного,  откорректированного или скопированного средст-
 вами Personal Programmer. Режим Rename не  может  быть  ис-
 пользован  для приложения в исполняемой форме (executable),
 т.е. для приложения  переписанного  программой  копирования
 приложения    (cp)    или    полученного   при   посредстве
 Tools/Settings/LibrariesOnly - и поэтому библиотеки  проце-
 дур  не могут быть изменены, поскольку отсутствуют програм-
 мы, которые создали их.
                                                                                                                                                                                                                                                              
 
                         Режим установки
      
 ___________________________________________________________
      
 Copy Delete Rename *Settings Directory
 Set  printer  settings,  help  mode,  or  script output
 parameters.
 ___________________________________________________________
      
     Режим Установки - Settings - это функция, которая наст-
 раивает  не  ваше  конкретное  приложение,  а  сам Personal
 Programmer. Этот режим позволяет вам осуществить  настройку
 установочных  значений Personal Programmer для вашего печа-


                             - 144 -
 тающего устройства и вашей пользовательской системы.
      Как описывается в главе 10 ("Вопросы повышенной  слож-
 ности") для настройки системы Personal Programmer вы можете
 использовать   программу  настройки  (Custom  Configuration
 Program). Ее  использование  и  представляемые  возможности
 аналогичны существующим в системе PARADOX  (см.  гл.  16  -
 "Вопросы  повышенной  сложности"  пособия  "PARADOX  User's
 Guide"). Режим Tools/Settings также используется для управ-
 ления возможностями.
     Как  и все другие режимы по изменению установочных зна-
 чений системы, режим Settings обычно используется только  в
 том случае, если вы хотите изменить какое-нибудь установоч-
 ное  значение  системы,  принимаемое по умолчанию. Хотя для
 многих пользователей  системы  не  возникает  необходимости
 что-то  менять  в  системе, режим Settings всегда  к  вашим
 услугам, если вам захочется сделать что-то из ряда вон  вы-
 ходящее. Если вы внесли изменения в  установочные  значения
 посредством  режима   Settings, все,  что вы закажете будет
 действовать до тех пор, пока вы их не измените или не  вый-
 дете из Personal Programmer. Если ваши установки понадобят-
 ся  вам  в  следующий сеанс вашей работы в системе Personal
 Programmer, вам придется осуществить настройку снова. Зака-
 зав режим работы Settings из меню Tools, вы получите подме-
 ню из трех пунктов:
 ___________________________________________________________
      
 *PrinterSetup  HelpMode   ScriptOutput
 Choose settings for the summary report.
 ___________________________________________________________
                                                                                                                                                                                                                                                              
 
      - Printer Setup        - изменить номер порта печатаю-
                               щего  устройства,  размер пе-
                               чатной строки.
      - Help Mode            - изменить вывод полноэкранного
                               средства  помощи  ( принятого
                               по умолчанию) на полуэкранный.
      - Script Output        - задать,  будут  ли   написаны


                             - 145 -
                               программы, создающие библиоте-
                               ки, и в каком режиме (1.1 или
                               2.0 системы  PARADOX )  будет
                               работать ваше приложение.
                                                                                                                                                                                                                                                              
 

                       Режим Printer SetUp
                           
 ___________________________________________________________
      
 *PrinterSetup   HelpMode  ScriptOut
 Choose settings for summary report.
 ___________________________________________________________
      
     Режим Printer Setup позволяет вам задать режим принтера
 для  вывода  отчетов  (reports) по режиму Summarize. Выбрав
 режим Printer Setup из меню Tools/Settings, вы увидите под-
 меню из трех пунктов:
 ___________________________________________________________
      
 *PrinterPort   Setup   Width
 Choose a printer port.
 ___________________________________________________________
      
      - Printer Port        :  для того, чтобы определить, к
                             какому  порту  присоеденен  ваш
                             принтер.  Обычно  по  умолчанию
                             это LPT1. Если ваш принтер при-
                             соединен к другому порту, то вы
                             можете  выбрать  правильный  из
                             предлогаемого списка;
      


                             - 146 -
 ___________________________________________________________
      
 Printer port:
 LPT1  LPT2  LPT3  COM1  COM2  AUX
 ___________________________________________________________
      - Setup               : для ввода установочной строки,
                             которая подготавливает или  за-
                             дает конфигурацию для принтера.
                             Некоторые принтеры требуют  по-
                             добную  установочную строку для
                             того, чтобы привести их в рабо-
                             чее состояние до получения  ко-
                             манды  о  выводе  данных на пе-
                             чать.  Например,  для  лазерных
                             принтеров   требуется  довольно
                             сложная установочная строка. По
                             умолчанию  Personal  Programmer
                             не  посылает установочной стро-
                             ки.
      - Width               : для  задания  ширины  печатной
                             строки отчета. По  умолчанию  -
                             длина  80  знаков,  но если ваш
                             принтер может печатать строки в
                             132 символа (другая стандартная
                             ширина), выберите ее из следую-
                             щего меню:
 ___________________________________________________________
      
 *80  132
 The printer has 80 character wide paper.
 ___________________________________________________________
     
     Режимы Printer Port и Setup  очень  похожи  на  процесс
 настройки  отчетов  PARADOX  и более подробно описывается в
 главе 6 (Setup/Custom пособия "PARADOX user's Guide").
     Все эти установки режима Printer  Setup  факультативны:
 большое  число печатающих устройств позволяет распечатывать
 отчеты без изменения  принятых  по  умолчанию  установочных
 значений.  Режим  Printer Setup необходим только, когда вам
 действительно нужно  изменить  настройку  системы  Personal
 Programmer.


                             - 147 -


                         Режим Help Mode

 ___________________________________________________________

 PrinterSetup   *HelpMode  ScriptOut
 Set help mode as terse or verbose.
 ___________________________________________________________

     Обычно  Personal Programmer выводит экраны помощи прак-
 тически на любом этапе процесса создания приложения. Меню и
 подсказки появляются в верхней части экрана,  прямоугольник
 с  информацией о режиме работы (со следующим предпологаемым
 действием) - в середине, а сам экран помощи - внизу.
     Но вам может не понравится внешний вид экрана помощи.
     Тогда, задав режим Help Mode,  вы  можете  видоизменить
 экран  помощи и работать с более свободным, но менее инфор-
 мативным  экраном.  Задав   режим   Help   Mode   из   меню
 Tools/Settings, вы получите подменю из двух пунктов:
     - Verbose               - обычное  полноэкранное  сред-
                             ство помощи Personal Programmer;
     - Terse                 - позволяет удалить пояснения с
                             экрана,  оставив  только  меню,
                             комментарии и сообщение о режи-
                             ме работ (status box).


                       Режим Scriptoutput

 ___________________________________________________________

 PrinterSetup   HelpMode  *ScriptOut
 Set  the  script  vertion  or  whether  to  write  the
 scripts.
 ___________________________________________________________


                             - 148 -

     Режим ScriptOutput управляет процессом генерации вашего
 приложения. Когда вы заказываете режим ScriptOutput из меню
 Tools/Setting, вы получаете подменю из двух пунктов:
 ___________________________________________________________

 *LibrariesOnly   ScriptVersion
 Write the application scripts or not.
 ___________________________________________________________


     - Libreries Only       : для определения писать ли про-
                             граммы  вместе  с  библиотеками
                             процедур;
     - Script Version       : для определения, в  какой вер-
                             сии системы PARADOX будет рабо-
                             тать ваше приложение.


                         Libreries Only

     Для  улучшения  показателей  работы приложения Personal
 Programmer записывает большую часть программ  в  библиотеки
 процедур  языка PAL. Программы, создающие библиотеки, кото-
 рые содержат текст этих процедур, требуются только для  то-
 го, чтобы изменять приложение, а не вызывать его работу.
     Вы можете использовать режим Libraries Only для генера-
 ции  приложения  в исполняемой форме, без программ, которые
 создают эти библиотеки. Приложения,  сгенерированные  таким
 образом, работают нормально, но занимают меньше пространст-
 ва на диске.
        Важно: Если вы используете эту возможность, мы реко-
    мендуем вам иметь хотя бы одну копию вашего приложения в
    изменяемой  форме  со всеми необходимыми программами. Вы
    должны иметь изменяемую версию вашего приложения,  чтобы
    иметь возможность вносить каким-то образом ваше приложе-
    ние.


                             - 149 -
     Режим Libraries Only особенно полезен, когда вы создали
 изменяемую  версию  приложения в системе PARADOX 2.0, и те-
 перь используете режим Tools/Settings/Script  Output/Script
 Version для создания выполняемой версии для PARADOX 1.1.
     Когда   вы   задаете   режим  Libraries  Only  из  меню
 Tools/Settings/Script Output, вы  получаете  меню  из  двух
 пунктов:

 ___________________________________________________________

 *No   Yes
 Write the scripts as well as the libraries.
 ___________________________________________________________


        - No         : Чтобы сгенерировать изменяемую версию
                     приложения с программами и библиотеками
                     процедур.
        - Yes        : Чтобы сгенерировать исполняемую  вер-
                     сию приложения с библиотеками процедур.
     Вы  также  можете  использовать  программу  копирования
 (SC), включаемую в каждое приложение, чтобы скопировать ис-
 полняемую версию приложения. См. гл. 8 (Работа приложения)


                         Scrirt Vertion


     Personal Programmer обычно создает библиотеки  процедур
 для  того,  чтобы  улучшить  работу приложения в версии 2.0
 системы PARADOX. Это означает, что приложение не будет  ра-
 ботать с более ранними версиями PARADOX.
     Режим Script Version позволяет генерировать приложения,
 которые  могут работать с версией 1.1 системы PARADOX. Хотя
 эти приложения будут также работать и с версией 2.0, их по-
 казатели будут хуже, как если бы  приложение  было  создано
 для  этой конкретной версии. Т.о., если ваше приложение бу-


                             - 150 -
 дет работать в двух версиях PARADOX, вы  можете  сгенериро-
 вать  две  различные  версии  вашего приложения. (см. режим
 Tools/Settings/Script Output/Libraries Only для того, чтобы
 сохранить пространство  вашего  диска,  сделав  версии  1.1
 только исполняемой).
     Когда   вы   задаете   режим  Script  Version  из  меню
 Tools/Settings/ScriptOutput, вы получаете меню из двух пун-
 ктов:
 ___________________________________________________________

 1.1     *2.0
 Write the application for Paradox vertion 2.0.
 ___________________________________________________________


         1.1       : Сгенерировать приложение, которое будет
                   работать  либо с версией 1.1, либо с вер-
                   сией 2.0. системы PARADOX.
         2.0       : Сгенерировать приложение, которое будет
                   работать только  с  версией  2.0  системы
                   PARADOX.

     К  сожалению,  Personal  Programmer  не может создавать
 приложения, которые будут работать с  версией  1.0  системы
 PARADOX.






                             - 151 -

                         Режим Directory
 ___________________________________________________________

 Copy   Delete  Rename  Setting  *Directory
 Change to another directory.
 ___________________________________________________________

     Когда вы используете Personal Programmer, все файлы ва-
 шего  приложения (с которым вы работаете) должны находиться
 в рабочем директории. Обычно, это директорий из которого вы
 запускаете Personal Programmer. Режим  Directory  позволяет
 вам изменять рабочий директорий.
     Конечно, вы не можете быть в процессе создания или  из-
 менения   вашего   директория,   когда   вы  задаете  режим
 Directory, вы также не  можете  использовать  файлы  вашего
 приложения, которые находятся одновременно в нескольких ди-
 ректориях.  Однако  режим  Directory  очень удобен, если вы
 ошиблись  в  названии  директория  при   запуске   Personal
 Programmer, или же хотите работать с двумя разными приложе-
 ниями одновременно, в один сеанс работы.
     Когда   вы  задаете  режим  Directory  из  меню  Tools,
 Personal Programmer просит вас ввести наименование директо-
 рия, в который вы хотите перейти.
 ___________________________________________________________

 Directory:
 Set  working  directory;  clear  workspace  and delete
 temprorary tables.
 ___________________________________________________________

     Название вашего текущего директория будет еще находится
 на экране. Измените его, чтобы указать на ваш новый рабочий
 директорий и затем нажмите клавишу [ENTER]. После этого бу-
 дет установлен новый рабочий директорий.

.

                             - 152 -
                                                  ЧАСТЬ III
 __________________________________________________________

         ВОПРОСЫ  ПОВЫШЕННОЙ  СЛОЖНОСТИ  И  РЕКОМЕНДАЦИИ
 __________________________________________________________


      ГЛАВА 10  ВОПРОСЫ ПОВЫШЕННОЙ СЛОЖНОСТИ

        Экран отображения для нескольких таблиц
        Использование индексированных таблиц
        Внешние соединения
        Тильда-переменные в форме запроса
        Работа приложения в сети ЭВМ
        Адаптация   системы  Personal  Programmer  к  Вашему
        компьютеру

      ГЛАВА 11  СОВЕТЫ ПРОГРАММИСТАМ

        Структура приложения
        Структура кода
        Использование переменных
        Изменение,которые Вы возможно захотите сделать
        Парольная защита

.

                             - 153 -
                                             Г Л А В А   10.
  __________________________________________________________

                  ВОПРОСЫ ПОВЫШЕННОЙ СЛОЖНОСТИ
  __________________________________________________________


     Если  вы последовательно знакомились с предлагаемым вам
 материалом этой книги, то вы знаете практически все возмож-
 ности системы Personal Programmer. Вы знаете, как внести  в
 него изменения и как работать с ним. Вы знаете, каким обра-
 зом  выполнить  те  или  иные  действия  в системе Personal
 Programmer.Вам известны и ограничения, которые  накладывает
 на ваше приложение используемая система.
     В  настоящей  главе более подробно рассматриваются пять
 вопросов повышенной сложности, свободное владение тонкостя-
 ми которых поможет вам решать ваши проблемы  более изящно и
 профессионально.
     Здесь рассматриваются:
    >> экраны отображения для нескольких таблиц;
    >> использование индексированных таблиц;
    >> создание "внешнего" соединения между таблицами;
    >> работа приложения в сети ЭВМ;
    >> вопросы адаптации системы к вашему компьютеру (Custom
 Configuration Program).


           ЭКРАН  ОТОБРАЖЕНИЯ  ДЛЯ  НЕСКОЛЬКИХ  ТАБЛИЦ

     Являясь  системой, поддерживающей базы данных реляцион-
 ного типа, PARADOX дает лучшие характеристики, когда  имеет
 дело с небольшими таблицами в нормализованном виде (см. гл.
 8  -  Create  пособия"PARADOX User's Guide"). Это не только
 упрощает структуры данных, с которыми вы  работаете,  но  и
 позволяет  связывать  их между собой по мере необходимости.
 Когда вам требуется информация по нескольким таблицам  сра-
 зу, вы можете использовать:


                             - 154 -
     >> режим Ask с указанием типов связей соединения любого
 числа  таблиц  в единую временную таблицу ANSWER (см. гл. 4
 пособия "PARADOX User's Guide").
     >> режим Modify/MultiEntry для ввода новых  записей  из
 исходной  (source)  таблицы  в  произвольное число выходных
 (target)  таблиц  (см.  гл.  12  пособия  "PARADOX   User's
 Guide").
     >> режим Tools/More/MultiAdd для добавления  существую-
 щих  записей  из  исходной  (source) таблицы в произвольное
 число выходных (target) таблиц (см. гл. 12 пособия  PARADOX
 User's Guide).
     Все  другие операции, проводимые над произвольным коли-
 чеством таблиц сразу, достаточно сложны. Если вы хотите по-
 лучить один отчет по нескольким таблицам одновременно,  вам
 придется  разбить  это действие на несколько этапов. Напри-
 мер, вы можете объединить их с помощью запроса, скопировать
 нужную заранее созданную спецификацию отчета для  результи-
 рующей  таблицы  ANSWER и вывести отчет на печать. Если вам
 требуется откорректировать записи в нескольких таблицах од-
 новременно,  вы должны объединить их с помощью запроса, от-
 редактировать   записи   и   затем    использовать    режим
 Tools/More/MultiAdd/Updata для обновления выходных таблиц.
     Personal Programmer облегчает работу с несколькими таб-
 лицами одновременно в вашем приложении. Вы можете заказать-
 создание экрана отображения для нескольких таблиц в режимах
 View,  Report,  Data  Entry  и Edit, при этом вы связываете
 таблицы так, как вам это нужно. Этот процесс описан как шаг
 2 в разделе "Что произойдет, если вы сделаете выбор  дейст-
 вия" в гл. 6 ("Определение режимов меню").
     Вообще  говоря,  экран отображения - это просто большая
 таблица, в которй находятся поля из других таблиц. В ней не
 хранится постоянная информация; она используется только для
 выполнения  операций  над  несколькими  таблицами для того,
 чтобы временно сохранить данные, которые затем будут  запи-
 саны  в  другие  меньшие по размеру таблицы. Таким образом,
 таблица, которую мы называем экраном отображения, в  чем-то
 аналогична временной таблице ANSWER, получающейся в резуль-


                             - 155 -
 тате отработки запроса по нескольким таблицам, или исходной
 (source) таблице в режимах MultiAdd.
     Рис.  10  - получение экрана отображения для нескольких
 таблиц.
     Рис. 10 - связывание таблиц для получения экрана  отоб-
 ражения.
     В  каждой  из  этих  операций, экран отображения должен
 быть связан с таблицами, на основании которых он создается.
 Это нужно для того, чтобы система PARADOX знала, как  пере-
 сылать  записи из таблиц в экран отображения и обратно. При
 создании запроса связь между таблицами задается непосредст-
 венным указанием на связывающие их  поля  (режим  Example).
 В  режимах Multi Entry и Multi Add формы запросов использу-
 ются для создания специальной таблицы связей (maptable),  в
 которой хранятся указания по взаимосвязи между таблицами.
     Экраны  отображения для нескольких таблиц также исполь-
 зуют таблицу связей (maptable)  для  указания  взаимосвязей
 между  исходной  и  выходными  таблицами. Например,в отчете
 Catalog, который вы создавали в примере 6-3,  вы  создавали
 таблицу  связей  для  объединения  таблиц Films и Filmcat в
 единую "исходную" таблицу, по которой и выдается отчет.
     Как вы уже видели, таблица  связей  состоит  просто  из
 списка  полей  исходной таблицы, где содержится указание на
 поле выходной таблицы и таблицы, откуда это  поле  берется.
 Более  подробная  информация о таблицах  связи содержится в
 главе 9 (режим Modify/MultiEntry)  пособия  PARADOX  User's
 Guide.
     Естественно, когда вы создаете экран отображения в сис-
 теме  Personal  Programmer, вы не думаете о таблице связей.
 Все, что вам требуется, - это заполнение форм  запроса  для
 указания  связей  между  таблицами, аналогично тому, как вы
 создаете запрос, по которому вы объединяете выходные табли-
 цы во временную таблицу ANSWER.
     Если вы заполняете формы запроса, то  система  Personal
 Programmer автоматически использует их для создания таблицы
 связей. Таблица связей важна для нас, поскольку, в  отличие
 от форм запроса, она хранится в вашей базе данных. Вы може-


                             - 156 -
 те  воспользоваться ею, если вам она будет нужна при выпол-
 нении еще каких-то операций. Например, в  примере  6-5,  вы
 использовали  созданный  ранее  для  выдачи отчета в режиме
 "Отчеты/Каталог" экран отображения для работы в режиме  ва-
 шего меню "Ведение БД/Редактирование/К/фильмы.
     В  системе  Personal  Programmer  предусматривается два
 способа вызова ранее созданного экрана отображения:
     - явное указание на пункт меню его создания;
     - ввод наименований существующих таблицы связей  и  ис-
 ходной таблицы.
     Второй  способ  позволяет вам использовать сушествующие
 исходную и таблицу связей, которые вы могли заранее создать
 в системе PARADOX, работая в режимах MultiEntry или MultiAdd.
     Экран отображения  нескольких  таблиц  -  очень  мощное
 средство,  которое  позволит  сделать ваше приложение более
 функциональным и облегчит вам его использование. Существует
 несколько тонких моментов, о которых вы должны помнить:
     - Для режима Edit: все выходные (target)  таблицы,  за-
 действованные в данном отображении, должны быть проиндекси-
 рованы  по  ключевым  полям.  Все ключевые поля должны быть
 представлены в исходной (source) таблице и защищены от  ре-
 дактирования.  Записи  в  выходных (target) таблицах должны
 иметь взаимооднозначное соответствие.
     Более подробно см. раздел: "Ограничения на редактирова-
 ние" в гл. 6 (Определение режимов меню).
     - Для операций в режимах DataEntry и Edit с  индексиро-
 ванными  таблицами  в  случаях,  когда  записи  из исходной
 (source) таблицы переносятся в  выходную  (target)  таблицу
 могут возникнуть неприятности с ключами. Предпологаемые пу-
 ти обхода этой ситуации приводятся ниже, в разделе "Исполь-
 зование индексированных таблиц в вашем приложении".
     -  Для операций в режимах View и Report, экраны отобра-
 жений для нескольких таблиц могут включать операцию  "внеш-
 нее  соединение" (Outer joins), при которой записи из одной
 таблицы не связаны специальным образом с  записями  другой.
 См. раздел "Внешнее соединение" ниже.



                             - 157 -

             ИСПОЛЬЗОВАНИЕ  ИНДЕКСИРОВАННЫХ  ТАБЛИЦ

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

         Использование ключа для идентификации записи.

     Как уже было объяснено в гл. 6 (Определение режимов ме-
 ню) в разделе "Ограничениия на редактирование", при  завер-
 шении  операции  по редактированию с использованием запроса
 или экрана отображения нескольких таблиц,  система  PARADOX
 должна  поместить  откорректированные записи на их исходные
 места в таблицах, откуда они были взяты. Значения в  ключе-
 вых  полях используются именно для этого. Если вы позволите
 пользователю изменить ключевое поле в одной из этих  ситуа-
 ций, значения ключей уже не будут соответствовать друг дру-
 гу,  и  система PARADOX не сможет заместить старые значения
 новыми.
     Поэтому мы ввели следующее правило:

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

     Это правило не распространяется на редактирование  еди-
 ничной  таблицы  в  режиме  All Records, поскольку при этом
 PARADOX просто замещает все старые записи на  новые. В этой
 ситуации  таблица может не быть проиндексирована, и пользо-
 ватель имеет право корректировать  информацию в любом поле,
 включая и ключевые.
     Для защиты ключевых полей от редактирования  вы  можете
 задать  или  режим отображения (Dispay Only),или же ограни-


                             - 158 -

 чить права доступа пользователя к этому полю.
     При  операциях  редактирования экранов отображения нес-
 кольких таблиц могут быть и другие ловушки.  Расширяя  выше
 сформулированное   правило,  можно  сказать,  что  исходная
 (source) таблица должна содержать все ключевые поля из всех
 выходных (target) таблиц, и все эти поля должны быть  защи-
 щены от редактирования.
     Кроме того, ни одна запись выходной (target) таблицы не
 может  появиться  более,  чем  один раз в исходной (source)
 таблице. Если вы допускаете это, и пользователь корректиру-
 ет одну "копию" записи, не изменяя все остальные,  то  поя-
 вится неполноценная  версия одой и той же записи в одной и
 той же таблице.
     Отсюда вытекает наше второе правило:

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

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

               Неприятности с ключевыми полями.

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


                             - 159 -

 ем  ранее  существующей таблицы Keyviol. Таким образом, ин-
 формация из этих таблиц не теряется. Вы найдете  информацию
 с  неверными  ключевыми  значениями  в  таблицах  с именами
 Kv######, где Kv - означает, что это таблица с несоответст-
 виями в ключевых значениях (Key Violation),а #  -  числовое
 значение (до 6 знаков). Каждое новое несоответствие хранит-
 ся  в  новой  таблице, называемой соответственно Kv1, Kv2 и
 т.д.
     Хотя Personal Programmer и осуществляет  перенаименова-
 ние таблиц Keyviol, чтобы они не исчезли, он не обеспечива-
 ет  пользователя средством согласования этих несоответствий
 с данными в основной таблице. Имеется две возможности прео-
 долеть эти неприятности с ключами:
     >> Заставить  пользователя  визуально  проанализировать
 таблицы  Kv######  и разрешить возникшие противоречия. Если
 они не пользуются средством PARADOX RUNTIME, то  вы  можете
 дать  им  возможность  осуществить  это  средствами системы
 PARADOX в интерактивном режиме.
     >> Напишите программу на языке PAL, которая:
        >> Проверяет наличие  таблиц  с  наименованием  типа
           Kv######;
        >> Выводит как запись из таблицы Kv######, так и со-
           ответствующую ей запись из основной таблицы;
        >> Позволяет  пользователю откорректировать ключевые
           значения с тем, чтобы исключить имеющееся несоот-
           ветствие;
        >> Записывает  эту  новую  запись в основную таблицу
           данных.
     Написав эту программу, используйте режим Modify,  чтобы
 присоединить ее к пункту меню под названием Resolve Viols в
 меню ведения БД вашего приложения.
      Естественно, второй способ предпочтительнее, однако он
 требует от вас работы по программированию.

                       ВНЕШНИЕ  СОЕДИНЕНИЯ

     Под внешним соединением понимается такой способ объеди-


                             - 160 -

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

                Пример 10-1. Обычное соединение

     Предположим,  что  вам  нужно  вывести список фильмов в
 прокате по названию фильма. Информация о фильмах в  прокате
 содержится  в  таблице  Orders, но она содержит только поле
 Film # с его кодом. Названия фильмов  содержатся  только  в
 таблице Films, с его кодом. Итак, вы создаете экран отобра-
 жения  для двух таблиц, объединяя эти две таблицы по их об-
 щему полю Film #. (См. рис.10.1).
     Как вы и ожидали, этот экран аналогичен таблице ANSWER,
 которая получилась бы в случае, если бы вы создали  обычный
 запрос.  Каждый фильм, находящийся в прокате, будет выведен
 в список фильмов вместе с другой нужной информацией из таб-
 лицы Orders.
     Но  если, наоборот, вам нужна информация о всех к/филь-
 мах с указанием, находятся ли они в прокате или нет?  Каким
 образом  вы сможете включить фильмы, которые не находятся в
 прокате (т.е. отсутствуют в таблице Orders)? В примере 10-1
 для связывания двух таблиц было использовано поле  Film  #,
 общее для них. Поэтому только те к/фильмы, которые присутс-
 твовали  и  в первой и во второй таблицах (т.е. те, которые
 хоть однажды  были в  прокате)  будут  выведены  в  таблицу
 ANSWER.

                 Пример 10-2. Внешнее соединение

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


                             - 161 -

 нение как присоединение записей, которые при обычном связы-
 вании выпадали бы из выходной таблицы.
     В системе PARADOX  вам  требуется  выполнить  несколько
 действий, чтобы создать внешнее соединение (см. конец гл. 4
 (Ask)  пособия  "PARADOX  User's  Guide").  Однако Personal
 Programmer позволяет вам легко осуществить внешнее соедине-
 ние при создании экранов отображения  нескольких  таблиц  в
 режимах View  и  Report. Это задается добавлением восклица-
 тельного знака (!) в поле указания связи (Example) для таб-
 лицы,  из  которой  вы  хотите  получить  все   записи.(См.
 рис.10.2).
     Это  внешнее соединение - то же самое, что вы использо-
 вали для получения отчета о просроченных к/фильмах в приме-
 ре 6-3 - выдает список к/фильмов, срок возврата которых ис-
 тек.
     Рис.  10.2.  "!" - выбирает все записи из таблицы Films
 вне зависимости, есть  ли  у  них  соответствие  в  таблице
 Orders.
     Запрос, построенный в этом примере, полностью идентичен
 запросу примера 10-1,  за  исключением  знака  "!"  в  поле
 film_# таблицы Films. Этот восклицательный знак имеет боль-
 шую  силу. Результирующая таблица Answer имеет ту же струк-
 туру, что и в предыдущем примере, но включает все к/фильмы,
 вне зависимости были ли они в прокате когда-либо  или  нет.
 Вы  можете  представить  себе этот процесс, как дописывание
 пустой записи к таблице Orders, которая добавляется к любой
 записи таблицы Films, для которой отсутствует реально соот-
 ветствующая запись из таблицы Orders.
     В примере 10-2 только в таблице Films присутствует ука-
 затель поля для внешнего соединения (!). Это потому, что вы
 хотите  иметь список всех имеющихся к/фильмов, все к/фильмы
 в прокате и так будут присутствовать в выходной таблице. Но
 предположим,  что в таблице Orders присутствуют фильмы, от-
 сутствующие в таблице Films (например, по  ошибке)  или  же
 кое-какие  фильмы были удалены из таблицы Films, тогда, по-
 местив знак "!" в поле film # таблицы Orders, вы сможете их
 также вывести в выходную  таблицу  Answer.  Вообще  говоря,


                             - 162 -

 "!",  помещенный после поля связи в форме запроса (Example)
 отберет все имеющиеся записи вне зависимости от того,  есть
 ли  соответствующая им пара в другой таблице, с которой она
 объединена.

               ТИЛЬДА-ПЕРЕМЕННЫЕ  В ФОРМЕ  ЗАПРОСА

     Когда вы используйте PARADOX для работы в интерактивном
 режиме, вы можете настраивать запросы  по  вашему  желанию.
 Если  потребитель меняет свой адрес, вы можете заказать ре-
 жим Ask, ввести его фамилию в  форму  запроса  для  таблицы
 Customer  и  вывести требуемую запись для ее корректировки.
 Вы свободно можете обращаться с информацией, полученной  по
 запросу.
     Но,  когда  вы работаете в системе Personal Programmer,
 вы должны предварительно создать утверждение запроса.  Пос-
 кольку сейчас вы не знаете, какую запись захочет отредакти-
 ровать  ваш  пользователь в некий момент времени, вам очень
 хочется оставить поле для заказывания  фамилии  потребителя
 пустым,  тем  самым  вы вызываете все имеющиеся записи. При
 этом пользователь будет вынужден просматривать всю таблицу,
 чтобы отыскать единственную, нужную ему запись для  коррек-
 тировки.  Если  таблица  достаточно велика, то поиск нужной
 записи займет много времени, что, естественно, вызовет чув-
 ство неудовольствия.
     Вместо  этого вы можете задать тильда-переменные, кото-
 рые придают гибкость вашему приложению. Как и  другие  виды
 переменных, тильда-переменная представляет собой нечто  по-
 хожее  на ящичек для хранения писем на почте, в котором на-
 ходится какой-то кусочек информации. В форме запроса  тиль-
 да-переменная представляет собой некоторое множество знаков
 (до  132), начинающееся буквой и оканчивающееся знаком (~),
 который отличает эту переменную от введенных критериев  вы-
 борки или полей связи (Example). Эти знаки представляют со-
 бой  название  переменной  (метка на ящичке), которая может
 быть задействованы вместо реальной информации,  находящейся
 в ящичке с данной меткой.


                             - 163 -

     Как  информация попадает в ящичек? Когда вы используйте
 тильда-переменную в форме запроса  для  вашего  приложения,
 Personal  Programmer спрашиват вас, каким образом попросить
 пользователя ввести информацию, и как она должна выглядеть:

 ___________________________________________________________

 Prompt:
 Enter the prompt for variable "Iname".
 ___________________________________________________________
 ___________________________________________________________

 Data type:A20
 Enter the correct data type for variable "Iname".
 ___________________________________________________________

     Вопрос к ползователю о вводе той или иной информации  в
 запросе  появится на экране, когда пользователь вызовет ре-
 жим меню  приложения,  использующий  данный  запрос.  Ответ
 пользователя (он должен соответствовать заказанному формату
 для  вводимой  информации)  подставляется в форму запроса в
 процессе его выполнения.
     В примере 10-3 вы можете увидеть, каким образом исполь-
 зование тильда-переменных дает пользователю вашего приложе-
 ния возможность варьировать запросы и как быстро они  нахо-
 дят требуемую запись.
     Запомните,   что  если  пользователь  нажимает  клавишу
 [ENTER]  без  ввода  ответа на вопрос, то по запросу ищутся
 записи, не содержащие информации  в  искомом  поле.  Эффект
 аналогичен тому, как если бы ввели "blank" в форму запроса.

          Пример 10-3. Использование тильда-переменных

     Перед вами формазапроса, созданная в примере 6-2,  поз-
 воляющая  пользователю получать информацию, задавая фамилию
 и имя потребителя. Когда  вы  создали  эту  форму  запроса,
 Personal  Programmer cпрашивал вас, каким образом запросить


                             - 164 -

 пользователя о вводе имени и фамилии потребителя,  и  какой
 тип данных для этих полей нужно определить.
     При работе вашего приложения в случае,  если  пользова-
 тель выбирает режим Inquiry/Customers, он получает запрос о
 вводе  фамилии и имени интересующего его потребителя (в том
 виде, как вы это задали).(См. рис.10.3).
    Ответы  подставляются вместо переменных в форме запроса,
 и PARADOX выведет требуемую информацию о конкретном  потре-
 бителе.(См. рис.10.3).


                       Фонетический поиск.

     Предположим, что пользователь неточно помнит имя потре-
 бителя (не то Daphne, не то Daisy, а фамилия то ли Dunston,
 то ли Dunphy или что-то похожее).
     В этом случае, если пользователь неверно введет фамилию
 или имя, то запрос не отработает. Есть два пути, как обойти
 это:
    >>  Oбучите вашего пользователя, как задавать примеры на
 подобное написание. PARADOX использует знак @ для замещения
 любого одиночного символа, а .. - для указания любого коли-
 чества знаков. Таким образом, если пользователь отвечает на
 вопрос о вводе фамилии следующим образом: Da.. и Du.. соот-
 ветственно, он получит запись для Daphne и Duston. Помните,
 что задавать примеры на подобное написание вы можете только
 в версии PARADOX 2.0.
    >> Используйте оператор "like" вместе с вашей тильда-пе-
 ременной.  Это  заставит  PARADOX произвести поиск значений
 наподобие введенной вашим пользователем.
     Второй способ не требует от пользователя знаний  правил
 написания примеров на подобие, но он ищет похожие слова да-
 же тогда, когда пользователь их ввел безошибочно. Это может
 вызвать  некоторое  недоумение  у  пользователя,  но это не
 страшно.



                             - 165 -

            Пример 10-4. Исользование оператора like
                      c тильда-переменными.

     По этому запросу выводятся записи, фамилии и имена  ко-
 торых пишутся похоже на фамилию и имя, вводимые пользовате-
 лем.
     Теперь,  если  пользователь  отвечает  на  запрос   как
 "Daphne" и как "Dunston", то правильная запись будет найде-
 на. Пользователь должен правильно задать только первую бук-
 ву.
                РАБОТА  ПРИЛОЖЕНИЯ  В  СЕТИ  ЭВМ

     Приложение,   созданное   вами   при   помощи  Personal
 Programmer, будет работать без каких-либо изменений в  сети
 с  установленной сисемой PARADOX или PARADOX RUNTIME версии
 2.0.
     Это означает, что:
     - любое конкретное приложение может работать с таблица-
 ми общего пользования в директории хранения  данных  общего
 пользования;
     - любое конкретное приложение может осуществлять дейст-
 вия по закрытию таблиц для обеспечения целостности и досто-
 верности данных;
     -  если  действие по закрытию таблиц не может буть осу-
 шествлено по каким-либо причинам, то приложение будет  зап-
 рашивать  пользователя: попытаться ли снова закрыть таблицу
 или перейти к выполнению следующего действия.
     Приложения, созданные при помощи  Personal  Programmer,
 вообще  говоря, не являются многопользовательскими система-
 ми, это однопользовательские приложения, работающие в сети.
 В частности, операции по внесению изменений в данные,  про-
 водимые   в  приложениях,  созданных  при  помощи  Personal
 Programmer, используют режим Edit, а не Coedit, т.е. режим,
 где несколько пользователей одновременно могут вносить свои
 изменения  в одну и ту же таблицу. Отсюда следует, что если
 один пользователь данного приложения вносит изменения в не-
 которую таблицу данных, никакой другой пользователь не смо-
 жет как-либо изменить эту таблицу.


                             - 166 -

     Вы можете использовать язык PAL  для  того,  чтобы  для
 данного приложения ввести дополнительную возможность много-
 пользовательского его применения. Например, вы  можете  все
 или определенные таблицы корректировать в режиме многополь-
 зовательского  редактирования. Если вас интересует, как это
 делается, смотрите гл. 17 (Как  работать  с  многопользова-
 тельскими приложениями) пособия "PAL User's Guide". В  этой
 главе описывается, какие моменты следует учесть при написа-
 нии такого рода программы, и даются практические советы для
 программиста.


             АДАПТАЦИЯ  СИСТЕМЫ  Personal Programmer
                      К  ВАШЕМУ  КОМПЬЮТЕРУ

     Также как и в системе PARADOX программа PARADOX  Custom
 Configuration  поможет вам внести изменения в установленную
 версию Personal Programmer и приспособить его к вашей  ЭВМ.
 Если   эта   программа   отработала   в   системе  Personal
 Programmer, то все  сделанные  изменения  будут  относиться
 только к ней и не отразятся на системе PARADOX.

           Как запустить Custom Configuration Program?

     Начинаем из основного меню Personal Programmer.
     1.  Выберете  режим  Tools/Directory  из основного меню
 системы.
     2.  Если  вы  имеете  установленную   версию   Personal
 Programmer   на   жестком   диске,   войдите  в  директорий
 \PARADOX2. Если вы работаете с Personal Programmer в  сети,
 войдите   в  директорий,  где  содержатся  системные  файлы
 PARADOX, который обычно называется  \PARADOX2  и  связан  с
 драйвером сети (network drive). Если вам требуется помощь в
 определении этого директория, обратитесь  к  администратору
 сети.
     3. Теперь закажите режим Play из основного меню.


                             - 167 -

     4.  На  вопрос  об  наименовании  приложения,  ответьте
 Custom и нажмите клавишу [ENTER].
     Поскольку вы запустили Custom  Configuration  Programm,
 ваши действия по работе с ней будут аналогичны, как если бы
 вы  работали  с  ней в системе PARADOX (см. гл. 16 "Вопросы
 повышенной сложности" пособия "PARADOX User's Guide").
     Следует обратить внимание, что:
     - некоторые возможности как Video и Mode/EMS, непосред-
 ственно касаются системы Personal Programmer.
     - другие возможности,  например  Reports,  относятся  к
 итоговым  отчетам, порождаемым системой Personal Programmer
 и приложением, которые работают в этой системе.
     - некоторые возможности, как, например, Int'l,  Network
 и  More/Blabk=Zero  относятся только к приложениям, которые
 работают в системе Personal Programmer.
     - две  возможности:  Set  Directory  и  More/Pal/Editor
 здесь  не  важны и не действуют при работе системы Personal
 Programmer.
     Будучи запомненными эти  установки  будут  иметь  место
 всякий раз, когда вы входите в систему Personal Programmer.
     Помните,   что   вы   всегда   можете   заказать  режим
 Tools/Settings из основного меню  Personal  Programmer  для
 изменения  установок  печати, экранов помощи и вывода прог-
 рамм.  Эти  установки  действуют  только  на  сеанс  работы
 Personal  Programmer.  Изменения  по  режиму  Printer Setup
 уничтожают на сеанс работы установочные значения  прогроммы
 Custom Configuration.

.

                             - 168 -

                                            Г Л А В А  11
___________________________________________________________

                     СОВЕТЫ  ПРОГРАММИСТАМ
___________________________________________________________

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


                     СТРУКТУРА ПРИЛОЖЕНИЯ

      В процессе генерации  приложения  Personal  Programmer
 создает много файлов; точное число зависит от сложности Ва-
 шего приложения. Включенные файлы:
      - скрипты, в которых Ваши приложения закодированы  в
 виде процедур;
      - процедура генерации библиотеки из скриптов;
      -  скрипты и таблицы, использующие "to store internal"
 Personal Programmer информации;
      - объекты, используемые в приложении, включающие  таб-
 лицы,   запросы,   формы,   отчеты,   индексы  и  установки
 (settings);
      - скрипт, который может использоваться для копирования
 Вашего приложения.
      Файлы, которые создаются Personal Programmer приведены
 в  таблице  11-1, где ------- представляет 5-символьное имя
 приложения, и # представляет числа.
      Для более детальной информации о именах,  используемых
 в  Парадоксе, смотрите главу 2 "Руководства пользователя Па-
 радокса".
.

                             - 169 -
                                               Таблица 11-1.

        Файлы приложения, создаваемые Personal Programmer
____________________________________________________________

 Имя файла          Описание           Пример      Можно ли
                                       video       дакти-
                                                   ровать
____________________________________________________________

 Скрипты

 -----.SC        Основной скрипт      VIDEO.SC        Да
                 (driver)
 -----###.SC     Скрипты мeню         VIDEO1.SC       Да
                 действий
 -----Q##.SC     Скрипты запросов     VIDEOQ1.SC      Да
 -----H##.SC     Скрипты помощи на    VIDEOH1.SC      Да
                 экране
 -----G##.SC     Splash экранный      VIDEOG1.SC      Да
                 скрипт
 -----CP.SC      Скрипт копирования   VIDEOCP.SC      Да
                 приложений
 -----P.SC       Информация для       VIDEOp.SC       Нет
                 модификации
 SC#####.SC                           SC1.SC          Нет
 SC#####P.SC     Внутренняя           SC1P.SC         Нет
                 информация
 SCP#####.SC     Personal             SCH1.SC         Нет
                 Programmer

 Таблицы

 -----S##.DB     Таблицы Multitable   VIDEOS1.DB      Нет
                 Source
 -----M##.DB     Таблицы Multitable   VIDEOM1.DB      Нет
                 Map


                             - 170 -
 -----.DB        Структура меню       VIDEO.DB        Нет
                 приложения
 -----P.DB       Файлы/таблицы        VIDEOP.DB       Нет
                 приложения

 Библиотеки

 -----###.LIB    Библиотечная         VIDEO1.LIB      Нет
                 процедура

.

                             - 171 -


     Так как скрипты, создаваемые Personal Programmer сохра-
 няются в Ascii формате, как и любой другой PAL  скрипт,  Вы
 можете редактировать их редактором Парадокса или любым дру-
 гим.  Таким образом, файлы, которые входят в приложение мо-
 гут быть разделены на 3 категории:
      - файлы, которые можно редактировать;
      - файлы, которые нельзя редактировать;
      - файлы, которые нужно редактировать осторожно (в  ос-
 новном таблицы данных приложения).


                   Что Вы можете редактировать


      С одним исключением (-----p, описано в следующем  раз-
 деле)  Вы можете редактировать любой скрипт (.SC файл), ко-
 торый начинается с 5-символьного имени программы (представ-
 ленного ----- в этих примерах). Это включает следующие под-
 категории скриптов:
     >> Главный скрипт (driver), чьe имя  -  имя  программы,
 -----  (VIDEO.SC  для  программы video). Главная цель этого
 скрипта - загрузить и выполнить процедуру, содержащую глав-
 ное меню программы.
     >> Скрипты меню действий, названные -----### (например,
 VIDEO5.SC), которые содержат процедуры для выборов меню Ва-
 шей программы. Это отдельные скрипты для каждого пункта ме-
 ню, определенные как редактирование или подменю.  Процедуры
 записаны  в  библиотеках  с  тем  же именем (VIDEO5.LIB для
 VIDEO5.SC). Cкрипт и библиотека с номером 1 содержат  глав-
 ное меню; большие номера определяют меню и действия.
     >>   Скрипты  запросов  с  именем  -----q##  (например,
 VIDEOQ1.SC) содержат операторы запросов.
     >>  Скрипты  помощи  с   именем   -----h##   (например,
 VIDEOH1.SC) содержат процедуры, определяющие экраны помощи.
     >> "Приветственные" скрипты с именем -----g1 (например,


                             - 172 -

 VIDEOG1.SC)  содержат процедуру для титульного экрана прог-
 раммы.
     >> Скрипты  копирования  с  именем  -----cp  (например,
 VIDEOCP.SC)  помогают  Вам  копировать  выполняемую  версию
 программы на другой диск или каталог.
      Все эти скрипты и любую процедуру из них можно модифи-
 цировать (естественно, не делая ошибок с точки зрения языка
 PAL). Смотрите раздел "Изменения, которые Вам, возможно за-
 хочется сделать" далее в этой главе.
      Если Вы модифицируете любой из этих скриптов, помните,
 что эти изменения не поддерживаются Personal Programmer при
 дальнейшем использовании "Modify" для изменения  программы.
 Изменения также должны быть согласованы с другими скриптами
 программы. Убедитесь в том, что:
      >> Структуры таблиц используются согласованно. При из-
 менении  структуры таблиц измените также все запросы, формы
 и структурные скрипты, использующие эту таблицу.
     >> Делайте изменения в таком же модульном стиле, в  ка-
 ком  генерируется Personal Programmer. Например, можно вно-
 сить изменения внутрь процедуры, но создание новой процеду-
 ры, которая заменяет  несколько  процедур,  сгенерированных
 Personal Programmer, приведет к ошибке. Это особенно важно,
 если  процедуры, созданные Personal Programmer, находятся в
 различных скриптах.
     >> Новые или измененные процедуры записываются в подхо-
 дящие библиотеки. Каждый модуль  сгенерированной  программы
 состоит  из  процедур, записанных в библиотеки. Таким обра-
 зом, "driver" ожидает, что он сможет вызвать их  с  помощью
 чтения  библиотеки  в  память  и запуска. Если Вы заменяете
 процедуры, вызываемые из программы, убедитесь, что  Вы  ис-
 пользуете правильное имя процедуры и правильную библиотеку,
 используя команду PALа WRITELIB.



                          - 173 -
                 Что Вы не можете редактировать

      Personal  Programmer создает несколько файлов, которые
 нельзя модифицировать, хотя они выглядят так, как будто  Вы
 можете это сделать. Эти файлы включают:
      -  скрипты, которые содержат внутреннюю информацию для
 Personal Programmer, именуемые sc#####, sch#####, sc######p
 (такие как SC1.SC, SCH1.SC, SC1P.SC).
      -  скрипт  модификации,  именуемый  -----p  (например,
 VIDEOP.SC),  который содержит информацию о модификации, ис-
 пользуемую Personal Programmer. Существует единственное ис-
 ключение из правила, Вы можете редактировать любой  скрипт,
 который начинается с имени приложения.
      -  таблицы,  созданные  Personal Programmer, именуемые
 -----,  -----p,  -----s##,  -----m##  (например,  VIDEO.DB,
 VIDEOP.DB, VIDEOS1.DB, VIDEOM1.DB).


              Что Вы можете редактировать осторожно

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




                             - 174 -

                        СТРУКТУРА  КОДА

      Скрипты,  созданные  Personal Programmer, используют
 стандартные PAL команды. Скрипты строятся из  высокоорга-
 низованного кода, состоящего из нескольких типовых управ-
 ляющих структур. Это показано на рис. 11.1.1.


                   ИСПОЛЬЗОВАНИЕ  ПЕРЕМЕННЫХ

      Personal Programmer использует переменные последова-
 тельно. Однако, возможно объявление переменных как собст-
 венных  для процедур. Это обеспечивает то, что память под
 переменные не отводится глобально, и то, что  взаимовлия-
 ние между процедурами является маловероятным.
      В то время, как PAL-команды и ключевые слова пишутся
 большими  буквами  в  скриптах Personal Programmer, имена
 переменных всегда записываются маленькими. Имена перемен-
 ных, выбранные Personal Programmer, обычно такие:
      - простые, как  x  или  x1,
      - бессмысленные ( с малой  вероятностью  дублируемые
 Вами), как xxxxexit и xxxmexit в тексте фрагмента на рис.
 11.1.1.
      Только, когда переменная  имеет  четко  определенное
 назначение или значение, такое как escape в примере  рис.
 11.1.1, тогда Personal Programmer использует имя,  совпа-
 дающее с одним из выбранных Вами. Это сделано так для то-
 го, чтобы Вы  проконтролировали,  для  чего  используются
 данные  переменные. В общем, имена переменных подбираются
 Personal  Programmer подбирает имена переменных, по возмож-
 ности не допускающие дублирования.



                             - 175 -

       ИЗМЕНЕНИЯ, КОТОРЫЕ  ВЫ  ВОЗМОЖНО ЗАХОТИТЕ  СДЕЛАТЬ

      Наиболее частое изменение -  это  создание  титульного
 экрана для каждого пункта меню. Это можно сделать с помощью
 оператора CASE. Смотрите пример на рис.11.1.2.
      Вы можете также добавить Play "Mntscrn" в первую стро-
 ку процедуры Video Menu.


                      ПАРОЛЬНАЯ ЗАЩИТА


      Как описано в главе 4 (Начало нового приложения), при-
 ложения Personal Programmer - программы всегда начинаются с
 запроса пароля. Эту возможность можно использовать для  уп-
 равления доступом к таблицам, используемым в Ваших програм-
 мах. Одного пароля, введеного для каждого пользователя дол-
 жно  быть достаточно для полного разграничения доступа. Од-
 нако, если надо, чтобы пользователь вводил более  чем  один
 пароль,  можно  использовать команду ACCEPT для запроса до-
 полнительного пароля и затем PASSWORD - чтобы передать  его
 в  Парадокс. Помните, что однажды введенный пароль остается
 в действии до того, пока не будет дана команда  UNPASSWORD.
 В главе 7 (Special Topics) в PAL "User's Guide" имеется до-
 полнительная информация об использовании парольной защиты в
 PAL.
      Также можно использовать команды PAL, чтобы ввести до-
 полнительные уровни защиты. Например, надо, чтобы пользова-
 тель  вводил  пароль до выполнения выбора Maintenance. Один
 из способов - это  добавление  запроса  пароля  в  оператор
 CASE:

  casex = ''Maintenance'':
 ;Here's where we added password protection.
 ;Assume that the correct for the selection is ''OLINRTH'':
 Prompt ''Password:'',''Enter the Maintenance Module password."
       @1,10 ;position cursor
       Accept ''A7''to Response
       If Response = ''OLINRTH''


                             - 176 -
              THEN
                   Readlib  ''Video1'' Video3Menu escape = not
                   Video3Menu() Release procs Video3Menu
              ELSE
                   Message ''Incorrect Password supplied.''
       Endif

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


                      Cистема ввода данных

      Другое изменение которое вы можете сделать в  програм-
 ме,  - это использование Toolkit для расширения действий по
 вводу  данных. Более детально - в гл.22 "Инструкции пользо-
 вателя PAL". Если вы широко используете Toolkit и в большом
 количестве процедуры для ввода полей, возможно, легче  сде-
 лать секцию программы для ввода полей как отдельный, закон-
 ченный скрипт. Затем можно использовать выбор Scripts в ме-
 ню  Action, чтобы присоединить этот скрипт к выбору из меню
 в Вашей программе. Использование Toolkit  включает  в  себя
 изменение основного скрипта Вашей программы. А в случае от-
 дельной  секции для ввода данных можно будет модифицировать
 программу, не затрагивая секцию ввода.

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

      Программы,  созданные Personal Programmer, могут рабо-
 тать для одного пользователя в сети. Можно использовать PAL
 для превращения их в многопользовательские. Подробно о воз-
 можностях многопользовательской  работы  написано  в  гл.17
 (Создание многопользовательских программ) "Руководства поль-
 зователя PAL".



                             - 177 -
                  Создание закрытых приложений

      Программы, сгенерированные Personal Programmer, обычно
 выходят по окончании в Paradox, даже если они стартуются из
 ДОС. Если надо, чтобы они выходили в ДОС, вставьте  EXIT  в
 конце программы. Программы, запущенные под Paradox Runtime,
 всегда выходят в ДОС.

                         Предупреждения
              Выделение сложных изменений в скрипт

      После  больших  изменений  программы,   генерированной
 Personal  Programmer,  мы настоятельно рекомендуем Вам соз-
 дать модуль, содержащий изменения, как отдельный Script.
      Затем используйте выбор Script меню Action, чтобы при-
 соединить этот скрипт к нужному пункту меню Вашего приложе-
 ния.
      Причиной этого является то, что изменения, которые  вы
 делаете  вручную, не поддерживаются Personal Programmer при
 дальнейшем изменении с его помощью. Например, при использо-
 вании Toolkit при вводе данных (как это описано выше),  из-
 менения  будут такими сложными, что Вам не захочется делать
 их еще раз. Но, чтобы их не потерять,  нельзя  использовать
 Personal Programmer для модификации программы. Поэтому все,
 что изменяли, выделяйте в отдельный скрипт.

            Ограничения использования команды Release

      Скрипты,  сгенерированные Personal Programmer, исполь-
 зуют много переменных и процедур. В этом свете,  надо  быть
 очень  осторожным при использовании Release, когда вы моди-
 фицируете код, или присоединяете скрипт к пункту меню.
      В особенности будьте осторожны и не используйте коман-
 ды RELEASE VARS ALL или RELEASE PROCS ALL в контексте, ког-
 да можно по невнимательности очистить переменные или проце-
 дуры, определенные в другой части программы.
      Делайте, как делает Personal Programmer:
      - отдельно выполняйте RELEASE для переменных и  проце-
      дур;
      - используйте локальные переменные в  процедурах,  где
 это возможно, т.к. они освобождаются при окончании процеду-
 ры.
      - используйте локальные переменные в  процедурах,  где
 это возможно, т.к. они освобождаются при окончании процеду-
 ры.

.

                             - 178 -
 _____________________________________________________________

                                       П Р И Л О Ж Е Н И Е  А
 _____________________________________________________________

      СООБЩЕНИЯ ОБ ОШИБКАХ

      All tables in a multitable edit must be keyed
      ----------------------------------------------
      В  случае  редактирования одновременно нескольких таб-
 лиц, все они должны быть с ключами. Если у таблицы нет клю-
 ча, надо выйти из ApGen и изменить структуру таблицы назна-
 чением одного из полей ключевым. Более подробно о ключах  -
 гл.6 "Paradox User's Guide".
      Cannot redefine the Leave action
      --------------------------------
      ApGen  автоматически  добавляет  пункт Leave в главное
 меню программы. Можно изменить это имя, но нельзя  изменять
 функцию.  Это для защиты от создания приложений, не имеющих
 выхода.
      Cannot find ... cancelling creation of the  application
      -------------------------------------------------------
      directory
      ---------
 ApGen не может найти один из системных скриптов. Надо  поп-
 робовать установить ApGen снова.
      No more selections along current menu path
      ------------------------------------------
      При "путешествии" по структуре меню, вы достигли конца
 ветви. Больше на этом пути нет пунктов меню.
      No table (script) names left to use;leaving the ApGen
      -----------------------------------------------------
      Это  сообщение  появляется  в случае, когда ApGen надо
 использовать более, чем 999 таблиц или скриптов  для  одной
 программы.  Попробуйте  перегенерировать  программу выбором
 Modify и, затем нажмите [F2].


                             - 179 -

    No enough space ... to install the Application Generator
    --------------------------------------------------------
      Чтобы установить и работать с ApGen, надо иметь  около
 1.8 МБайт памяти на винчестере. Создайте дополнительную па-
 мять путем уничтожения ненужных файлов.
      Not enough memory to run the Application Generator
      --------------------------------------------------
      Для  запуска ApGen надо иметь 640К оперативной памяти.
 Уничтожьте резидентные программы. Это сообщение может также
 возникнуть, если вы пытались стартовать ApGen из Paradox.



                             - 180 -

                                             РИСУНКИ



Яндекс цитирования