3.1. Описание языка программирования. Hовое в FOXPRO версии 2.0 По отношению к предыдущим версиям FOXPRO 2.0 располо- гает рядом новых вохможностей. Важной особенностью является возможность создания EXE.модулей при помощи дополнительно поставляемых редактора связей WLINK8.EXE и ряда библиотек. Hовый построитель проекта на основании программ, экранов, меню, отчетов, меток, библиотек, запросов, форматов и любых других файлов создает проект. RQBE (Реляционный запрос по образцу) позволяет создавать простые или сложные запросы (т.e., SQL SELECT команды) используя простые RQBE окна. С помощью таких запросов начинающие пользователи могут иметь доступ к базе дан- ных без знания программирования, опытные пользователи могут создавать комплекс запросов прямо в программах. Построитель эк- рана предоставляет новые возможности по проектированию экранов. Построитель меню позволяет легко и быстро в интерактивном режи- ме создать проект меню и на выходе получить исходный текст программы. Поддержка Драйвера Принтера ─ новое. можно точно установить драйвер принтера через Printer Setup..., через опцию File главного меню или через генератор отчетов и построитель ярлыков. Допускается создание своего собственного драйвера принтера. Также имеется множество новых возможностей, новых ди- алогов, например: 1. Контекстно-зависимая помощь для интерфейса с переключателями See Also и Lookup. 2. Редактор макрокоманд клавиатуры позволяет создавать и редактировать клавиатурные макрокоманды. 3. Усовершенствованы такие функции текстового ре- дактора как "вырезать" и "вставлять" с автоматическим продолже- нием до левого отступа. 4. В диалоге Append From реализована возможность импортирования значительно большего числа типов -   - файлов. - Предоставляется возможность определения шрифтов и ти- пов заголовков отчета. - Окно Trace дополнено меню. Изменения в языке программирования. FoxPro 2.0 имеет множество совершенно новых и улучшенных операторов, команд, функций, и системных переменных. Введено более 50 новых команд, внесены изменения в более, чем 50 команд, введено около 50 новых функ- ций, ряд функций модифицирован, введено 12 новых системных пе- ременных. Команды, используемые в разработанной программе. @ ... SAY/GET @ <ряд, столбец> [SAY <выр1>] [GET <пер> [PICTURE <вырC2>] [FUNCTION <функция2>] [DEFAULT <выр2>] [RANGE [<выр3>] [, <выр4>]] [SIZE <вырN2>, <вырN3>] [VALID <вырL1> | <вырN4>] [WHEN <вырL2>] [COLOR SCHEME <вырN5> |COLOR <список цветовых пар2>]] Осуществляет ввод/вывод в заданных координатах экрана. ACTIVATE POPUP <вертикальное меню> [AT <ряд>, <колонка>] [BAR <вырN>] [NOWAIT] [REST] Высвечивает и активизирует вертикальное меню. Команда ACTIVATE POPUP используется совместно с командами DEFINE POPUP и DEFINE BAR, которые определяют и создают вертикальное меню. Команда ACTIVATE POPUP осуществляет вывод на экран или в окно верти- кального меню с именем <вертикально меню> и активизирует его для использования. -   - APPEND [BLANK] Добавляет новые записи в конец активного файла базы данных. Это основная команда для полноэкранного ввода данных. Имеется две формы команы APPEND. Обе они добавляют записи в конец активного файла базы данных. BAR() Возвращает номер опции, выбранной из вертикального меню. Каждая опция меню имеет номер, назначаемый командой DEFINE BAR. После выбора опции из меню функция BAR() возвращает соответствующий номер. После этого, в зависимости от полученного номера, в программе выполняется требуемый переход. Функция BAR() возвра- щает ноль, если нет активного вертикального меню или если была нажата клавиша Esc. BROWSE [FIELDS <список полей>] [NODELETE] [NOEDIT | NOMODIFY] [NOMENU] [NOWAIT] [TITLE <вырC2>] [[WINDOW <имя окна1>] [IN [WINDOW] <имя окна2> Просмотр/корректировка базы данных. B ROWSE - одна из наиболее полезных команд, имеющихся в FoxPro. Команда BROWSE использу- ется для открытия окна и высвечивания записей из файла базы данных. Имеется возможность редактирования и добавления за- писей. Если памяти достаточно, то окно Browse может быть откры- то для каждой рабочей области. ACTIVATE WINDOW [[<имя1>] [,<имя2>][, ...]] | ALL [BOTTOM | TOP | SAME][NOSHOW] Вывод и активизация окна. Данная команда выводит и активизирует предварительно определенное окно или окна. Активизация окна приводит к направлению всего экранного вывода в это окно. Окна -     - создаются и определяются пользователем посредством команды DEFINE WINDOW. Hа экране может располагаться одновременно несколько окон, но вывод будет направляться только в последнее, активизированное командой ACTIVATE WINDOW. Когда на экране присутствует несколько окон, деактивизация текущего окна приво- дит к удалению его с экрана, а последующий вывод будет направ- ляться в активизированное до него окно, а при отсутствии тако- вого - на экран. DEACTIVATE POPUP Деактивизирует вертикальное меню и удаляет его с экрана. С по- мощью данной команды активное вертикальное меню деактивизиру- ется и удаляется с экрана, но не из памяти. В каждый момент времени может быть активным только одно вертикальное меню, поэ- тому нет необходимости указывать в команде имя меню Меню может быть активизировано вновь с помощью команды ACTIVATE POPUP с указанием имени меню. DEACTIVATE WINDOW <имя1> [,<имя2>] [,...] | ALL Деактивизирует окна и удаляет их с экрана. С помощью данной ко- манды активное окно или набор активных окон деактивизируются и удаляются с экрана. Эти окна не удаляются из памяти и могут быть выведены снова командой ACTIVATE WINDOW или SHOW WINDOW. Можно деактивизировать единственное окно или несколько окон посредством указания в команде одного имени окна или списка имен. При использовании команды DEACTIVATE WINDOW ALL деактиви- зируются все окна. DEFINE BAR <вырN1> OF <вертикальное меню> PROMPT <вырC1> [COLOR <список пар цветов> | COLOR SCHEME <вырN2>] -   - Создание опции вертикального меню. Команда DEFINE BAR использу- ется совместно с командой DEFINE POPUP для создания вертикаль- ного меню. Вертикальное меню создается при помощи команды DEFINE POPUP. Затем при помощи последовательности команд DEFINE BAR определяются его опции. Вертикальное меню можно наполнить опциями, созданными при помо- щи последовательности команд DEFINE BAR. Команда DEFINE BAR яв- ляется обязательной для каждой опции вертикального меню. Коман- да DEFINE BAR должна содержать <вертикальное меню>, для которо- го определяется опция. DEFINE POPUP <имя меню> [FROM <ряд1>, <кол1>] [TO <ряд2>, <кол2>] [IN [WINDOW] <имя окна> ] [MARGIN] [PROMPT FIELD <выраж> [TITLE <вырC4>] [COLOR SCHEME <вырN> | COLOR <список пар цветов>] Определение вертикального меню. С помощью команды DEFINE POPUP создается вертикальное меню. В качестве опций этого меню могут использоваться значения поля базы данных, список файлов или по- лей в структуре базы данных. При помощи ряда команд DEFINE BAR определяются опции ертикального меню. Для размещения записей, файлов или полей в вертикальном меню используются ключевые сло- ва PROMPT FIELD, PROMPT FILES или PROMPT STRUCTURE этой коман- ды. При активизации вертикального меню по команде ACTIVATE POPUP меню высвечивается на экран и дается возможность выбора опции. В зависимости от выбранной опции, может выполняться программа или высвечиваться и активизироваться другое вертикальное меню. Если при выборе опции вертикального меню высвечивается другое вертикальное или горизонтальное меню, то это вертикальное меню называется иерархическим вертикальным меню. Более подробную ин- формацию о создании иерархических меню см. в опис нии команды ON BAR. -     - DEFINE WINDOW <имя окна1> FROM <ряд1>, <кол1> TO <ряд2>, <кол2> [TITLE <вырC2>] [COLOR SCHEME <вырN> | COLOR <список пар цветов>] Создание окна. Команда DEFINE WINDOW создает окно пользователя и определяет его атрибуты. После определения окон их можно высветить на экран при помощи команда ACTIVATE WINDOW или SHOW WINDOW. Количество определяемых при помощи команды DEFINE окон ограничи аеися только размером доступной памяти. DELETE [<сфера>] [FOR <вырL1>] [WHILE <вырL2>] [NOOPTIMIZE] Помечает для исключения записи активного файла базы данных. Если не определено иначе <сферой> или фразами WHILE или FOR, для исключения помечается только текущая запись. <сфера> Если указана сфера действия команды, будут помечены все записи в пределах, заданных <сферой>. Команда DELETE не выполняет физического удаления записей, а лишь помечает их. Физическое удаление записей выполняет команда PACK. Сброс признака исключенной записи выполняет команда RECALL. READ Активизирует объекты, созданные командами @ ... GET и @ ... EDIT. В версии FoxPro 2.0 команда модифицирована. Добавлены фразы: ACTIVATE, COLOR, CYCLE, DEACTIVATE, LOCK, MODAL, NOLOCK, OBJECT, SHOW, VALID, WHEN, WITH. Команда READ активизирует объекты GET. Объектами GET являются поля в команде GET, области редактируемого текста, диалоговые индикаторы (Push Button), индикаторы группы (Radio Button), ме- ню типа Popup, двоичные индикаторы (Check Box), и сп ски (List). Активизируются все объекты GET, созданные после послед- ней выдачи команды READ или CLEAR GETS. -     - SET FILTER TO [<вырL>] Позволяет выводить и обрабатывать только те записи файла базы данных, которые удовлетворяют заданному условию. Команда SET FILTER работает только с файлом базы данных, открытым в той ра- бочей области, где указана команда. Поэтому соответствующий фильтр может быть установлен для каждого открытого файла базы данных. При активной команде SET FILTER для вывода и обработки доступны только те записи базы данных, которые удовлетворяют заданному выражению. Создается иллюзия, что в базе данных присутствуют только эти записи. Команда SET FILTER TO (без параметров) отключает фильтр актив- ного файла базы данных. SELECT <рабочая область | псевдоним> Обеспечивает выбор одной из десяти доступных рабочих областей для открытия файла базы данных или выбор рабочей области, в которой уже открыт файл ба- зы данных. По умолчанию активна рабочая область 1. Если в команде SELECT в качестве параметра указать 0, активизи- руется свободная рабочая область с наименьшим номером. SET SKIP TO [<псевдоним1> [, <псевдоним2>] ... ] Создает между базами данных отношения типа "один-ко-многим". Отношение "один-ко-многим" устанавливается наподобие отношения "один-к-одному". Прежде всего отношения между исходной и порож- денными базами данных устанавливается посредством SET RELATION. Затем выдается команда SET SKIP, что формир ет отношение "один-ко-многим".