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


http://solide-steine.ru/ как правильно подобрать утеплитель для теплоизоляции бани.

 

Часть 6

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є          COPY TO ARRAY          є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Пересылка данных из записи базы данных в массив
  Синтаксис
COPY TO ARRAY 
        [FIELDS ]
        []
        [FOR ]
        [WHILE ]
        [NOOPTIMIZE]
    Смотри также
APPEND FROM ARRAY, DECLARE, DIMENSION, GATHER, PUBLIC, SCATTER, STORE

    Описание
    Команда COPY TO ARRAY пересылает данные из текущей выбранной  базы
данных  в  массив  переменных памяти.  Команды COPY TO ARRAY и SCATTER
аналогичны.  COPY TO ARRAY позволяет переслать в массив  нескоько  за-
писей, в то время как SCATTER пересылает в массив или набор переменных
памяти одну запись базы данных.  COPY TO ARRAY требует,  чтобы  массив
был сначала создан командами DIMENSION, DECLARE или PUBLIC. Команда же
SCATTER в случае, если массив или набор переменных ранее определены не
были, сама создает их.
    Для копирования одной записи  вы  должны  использовать  одномерный
массив.  Массив должен иметь элементов,  не менее, чем полей базы дан-
ных,  отличных от полей памяти memo. Поля памяти игнорируются командой
COPY TO ARRAY.
    Для копирования нескольких записей или всей базы данных  (если  вы
имеете достаточно памяти) используйте двумерные массивы. Первый индекс
массива (строки) указывает на номер хранимой записи,  второй (столбцы)
указывает на номер поля.
    В случае одномерного массива первое поле записи помещается в  пер-
вый  элемент  массива,  второе поле во второй элемент массива,  и т.д.
Если одномерный массив имеет больше элементов,  чем база данных  имеет
полей,  то  оставшиеся элементы массива не изменяются.  Если же массив
имеет меньше элементов,  чем база данных полей, то оставшиеся поля иг-
норируются.
    Двумерные массивы создаются в построчно-столбцовом формате. В слу-
чае команды COPY TO ARRAY запись помещается в строку массива, а каждое
поле записи приэтом занимает отдельный столбец. Для каждой записи пер-
вое  поле  хранится  в  первом столбце массива,  второе поле во втором
столбце массива,  и т.д.  Если массив имеет больше столбцов,  чем база
данных  полей,  то оставшиеся элементы массива не изменяются.  Если же
массив имеет меньше столбцов, чем база данных полей, то оставшиеся по-
ля в массив записны не будут.
    Каждая последующая строка массива заполняется содержимым следующей
записи  в описанном выше построчно-столбцовом формате.  Работа команды
заканчивается тогда, когда либо в массиве не осталось свободных строк,
либо в базе данных кончились записи.
    Данные можно переслать назад из массива в записи базы  данных  при
помощи  команды APPEND FROM ARRAY.  Команда GATHER позволяет пересылку
данных как из массива, так и из переменных памяти.

    Опции
    
    Массив переменных памяти в который производится копирование.

    FIELDS  (<список полей>)
    Включив предложение FIELDS ,  вы можете задать,  какие
именно поля будут скопированы в массив .  Если  же  предложение
FIELDS опущено, то в массив будут скопированы все поля.

    
    Вы можете задать контекст  копируемых записей.  Будут копи-
роваться только те записи, которые попадают в заданный контекст.
    По умолчанию контекст команды COPY TO ARRAY совпадает со всеми за-
писями.

    FOR 
    Если предложение FOR  включено, то копируются только те за-
писи, которые удовлетворяют заданному логическому условию . Это
позволяет  обрабатывать  только  заданную  группу  записей,  игнорируя
остальные.
    Технология Rushmore оптимизирует запрос COPY TO  ARRAY  FOR,  если
 является оптимизируемым выражением. Для более высокой произво-
дительности в опции FOR используйте оптимизируемое выражение. Обсужде-
ние  оптимизируемых выражений Rushmore проводится в главе "Оптимизация
ваших прикладных программ" в книге документации по FoxPro "Руководство
Разработчика" ("Developer's Guide").

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

    NOOPTIMIZE
    Для заблокирования возможности использования Rushmore технологии в
команде COPY TO ARRAY включите необязательную опцию NOOPTIMIZE.  Более
подробная информация о Rushmore технологии приводится при описании ко-
манды SET OPTIMIZE в этом руководстве и  в  главе  "Оптимизация  ваших
прикладных  программ" в книге документации по FoxPro "Руководство Раз-
работчика" ("Developer's Guide").

    Пример
CLOSE ALL
USE customer
DIMENSION temp(3,10)
COPY NEXT 3 TO ARRAY temp
DISPLAY MEMORY LIKE temp
    В этом примере открывается база данных CUSTOMER.  Затем  создается
двумерный массив  в  который копируются 3 записи из CUSTOMER.  Команда
DISPLAY MEMORY выводит содержимое массива переменных памяти на экран.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               COS               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает значение косинуса числового выражения
    Синтаксис
COS()
    Тип возвращаемого значения
Числовой
    Смотри также
ACOS(), DTOR(), RTOD(), SET DECIMALS, SIN()

    Описание
    Эта тригонометрическая функция возвращает значение косинуса число-
вого выражения.

    Параметр 
    Эта тригонометрическая  функция  возвращает  значение  cos .
Значение    представляет  собой  угол,  измеряемый  в  радианах.
Используя функцию DTOR(),  можно преобразовать угол, измеренный в гра-
дусах, и выразить его в радианах.
    Возвращаемый функцией  COS() результат будет лежать в диапазоне от
-1 до 1. Число десятичных разрядов, возвращаемых функцией COS(), может
быть указано с помощью команды SET DECIMALS.

    Примеры
? COS(0)
1.00
? COS(PI())
-1.00
? COS(DTOR(180))
-1.00
STORE PI() * 3 TO angle
? COS(angle)
-1.00

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              COUNT              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Подсчет записей базы данных
    Синтаксис
COUNT []
        [FOR ]
        [WHILE ]
        [TO ]
        [NOOPTIMIZE]
    Замечания
Расширена в FoxPro 2.0:  для подсчета возможно использование оптимиза-
ции Rushmore.
    Смотри также
CALCULATE, SET DELETED, SET TALK

    Описание

    Данная команда подсчитывает записи,  попадающие в контекст 
,  и для которых опции FOR  и  WHILE    дают  логическую
"истину" (.T.).  Если действует команда SET TALK ON, то на дисплее ре-
зультаты подсчета записей будут выведены в форме:
    nnnnnn records
    Если до этого выполнена команда SET TALK WINDOW,  то  подсчитанные
записи будут выведены в системное окно.
    Записи, помеченные для удаление,  будут включены в  подсчет,  если
DELETE находится в состоянии SET OFF.

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

    FOR 
    Если предложение FOR  включено, то подсчитываются только те
записи,  которые  удовлетворяют заданному логическому условию .
Это позволяет обрабатывать только заданную группу  записей,  игнорируя
остальные.
    Технология Rushmore оптимизирует запрос COUNT  FOR,  если  
является  оптимизируемым выражением.  Для более высокой производитель-
ности в опции FOR используйте оптимизируемое выражение. Обсуждение оп-
тимизируемых  выражений Rushmore проводится в главе "Оптимизация ваших
прикладных программ" в книге документации по FoxPro "Руководство  Раз-
работчика" ("Developer's Guide").

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

    TO  (<переменная памяти>)
    Подсчитанное число   записей   размещается   в  переменной  памяти
. Если  еще не определена, то она будет создана.

    NOOPTIMIZE
    Для заблокирования возможности использования Rushmore технологии в
команде COUNT включите необязательную опцию NOOPTIMIZE.  Более подроб-
ная  информация  о Rushmore технологии приводится при описании команды
SET OPTIMIZE в этом руководстве и в главе "Оптимизация ваших  приклад-
ных  программ" в книге документации по FoxPro "Руководство Разработчи-
ка" ("Developer's Guide").

    Пример
USE Customer
COUNT TO mcount FOR city = `Perrysburg'
WAIT WINDOW `Общее число клиентов в Пресбурге ' + LTRIM(STR(mcount))
    В данном примере командой COUNT подсчитывается общее число  клиен-
тов в Пресбурге.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             CREATE              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Создание новой базы данных
    Синтаксис
CREATE [ | ?]
    Смотри также
MODIFY STRUCTURE

    Описание
    Команда CREATE  выполняет  построение  нового  файла  базы  данных
FoxPro.  Вы  можете  задать  имя создаваемого нового файла  базы
данных. Если имя файла не задано, либо если включить в команду знак ?,
то  ваи  будет выдано диалоговое окно,  посредством которого вы можете
ввести имя создаваемого файла .
    База данных создается командой CREATE посредством определения име-
ни,  типа и размера каждого его поля.  После создания структуры  файла
базы данных вы можете добавлять в него записи.
    Более подробную информацию о создании  и  модификации  баз  данных
смотри в   главе   "Меню  File"  "Руководства  по  Интерфейсу  FoxPro"
("Interface Guide").

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є        CREATE COLOR SET         є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Создание набора цветов из текущих цветовых установок
    Синтаксис
CREATE COLOR SET  (<имя цветового набора>)
    Смотри также
SET COLOR SET, SET COLOR OF SCHEME, SET COLOR TO

    Описание
    Команда CREATE  COLOR  SET  создает  новый набор цветов из текущих
цветовых установок.  В создаваемом вами  цветовом  наборе  сохраняется
каждая пара в каждой цветовой схеме. Имя цветового набора может содер-
жать до 10 символов и может включать цифры и знак подчеркивания, но не
должно начинаться с числа.
    Однажды создав цветовой набор вы  можете  загружать  его  в  Color
Picker или  командой SET COLOR SET.
    Цветовые наборы сохраняются в файле ресурсов FoxPro.  При  задании
цветового набора с уже существующем именем, он обновляется.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           CREATE FROM           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Создание базы данных из файла, полученного командой COPY STRUCTURE EXTENDED
    Синтаксис
CREATE [] FROM []
    Смотри также
COPY STRUCTURE EXTENDED

    Описание
    Данный вариант команды CREATE предполагает,  что ранее при  помощи
команды  COPY  STRUCTURE EXTENDED или вручную был создан файл .
Новая база данных  создается со структурой, описываемой в файле
. Создаваемый данной командой файл становится текущей использу-
емой базой данных.  Файл  имеет фиксированный формат и содержит
четыре поля. Имена этих четырех полей и их содержимое следующие:
-----------------------------------------------------------------
| FIELD_NAME  | Имена полей выбранной базы данных               |
|---------------------------------------------------------------|
| FIELD_TYPE  | Тип поля:                                       |
|             | C = символьное            L = логическое        |
|             | N = числовое              M = поле памяти MEMO  |
|             | F = с плавающей точкой    P = шаблон            |
|             | D = дата                                        |
|---------------------------------------------------------------|
| FIELD_LEN   | Ширина поля                                     |
|---------------------------------------------------------------|
| FIELD_DEC   | Число десятичных разрядов в числовых полях      |
-----------------------------------------------------------------
    Если вы не задали ни ,  ни ,  либо ни одного из них,
появляется диалоговое окно Open File. В нем вы можете задать либо соз-
даваемый файл, либо исходный, либо оба.

    Пример
CLOSE ALL
USE items
COPY STRUCTURE EXTENDED TO temp
USE temp
APPEND BLANK
REPLACE field_name WITH 'allcost'
REPLACE field_type WITH 'N'
REPLACE field_len WITH 10
REPLACE field_dec WITH 2
CREATE backup FROM temp
USE backup
APPEND FROM items
REPLACE ALL allcost WITH quantity * price

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є          CREATE LABEL           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Открытие окна построения этикеток
    Синтаксис
CREATE LABEL [ | ?]
  [[WINDOW ]
  [IN [WINDOW]  | IN SCREEN]]
    Смотри также
MODIFY LABEL, LABEL

    Описание
    Данная команда активирует утилиту FoxPro, позволяющую генерировать
этикетки.  Она позволяет легко создавать и распечатывать любые этикет-
ки. Данная утилита позволяет создание этикеток в стандартном этикеточ-
ном формате,  либо позволяет разработку собственных форматов пользова-
теля.  Вы сможете до печати посмотреть, как буддет выглядеть созданная
вами этикетка,  воспользовавшись средством предварительного  просмотра
Page Preview.
    Вызов команды CREATE LABEL без дополнительных аргументов открывает
новое окно   редактирования   этикеток.   Этикетке  присваивается  имя
UNTITLED. При выходе из окна редактирования этикеток вы можете  сохра-
нить определение этикетки в файле под определенным именем.

    Опции
     | ?

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

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

    IN [WINDOW] 
    Если опция IN WINDOW  включена, то окно создания ме-
ток  будет  открыто внутри порождающего окна.  Но из этого не следует,
что оно примет все его характеристики.  Окно создания этикеток, откры-
тое внутри порождающего окна, не может быть перемещено за его пределы.
При перемещении порождающего окна, окно создания этикеток перемещается
вместе с ним.
    Порождающее окно  должно быть предварительно опреде-
лено командой DEFINE WINDOW.   для доступа к окну созда-
ния этикеток должно быть видимым.

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


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           CREATE MENU           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Открытие окна построения меню
    Синтаксис
CREATE MENU  [ | ?]
        [[WINDOW ]
        [IN [WINDOW]  | IN SCREEN]]
    Замечания
Новая для FoxPro 2.0
    Смотри также
DEFINE MENU, MODIFY MENU

    Описание
    Команда CREATE MENU активизирует Построитель Меню (Menu  Builder).
С помощью построителя меню легко создаются пользовательские и всплыва-
ющие меню. После создания вашего меню информация о нем хранится в фай-
ле базы данных FoxPro с расширением .MNX.  Затем на основе этих данных
программой шаблонов Генерация Меню (Menu Generation) могут быть  полу-
чены коды этого меню.
    Вызов команды CREATE MENU без дополнительных аргументов приведет к
открытию  нового  окна  построения  меню.  Определению  меню  временно
присваивается имя UNTITLED.  При выходе из окна редактирования меню вы
можете сохранить определение меню в файле под определенным именем.

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

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

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

    IN [WINDOW] 
    Если опция IN WINDOW  включена, то окно создания ме-
ню будет открыто внутри порождающего окна. Но из этого не следует, что
оно примет все его характеристики. Окно создания меню, открытое внутри
порождающего окна,  не может быть перемещено за его пределы. При пере-
мещении  порождающего  окна,  окно создания меню перемещается вместе с
ним.
    Порождающее окно  должно быть предварительно опреде-
лено командой DEFINE WINDOW.   для доступа к окну созда-
ния меню должно быть видимым.

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

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

    SAVE
    Во время выполнения программы опция SAVE оставляет окно построения
меню открытым после вывода другого окна.  Во время выполнения програм-
мы окно,  открытое командой MODIFY MENU, закрывается после вывода дру-
гого окна.
    Включение опции  SAVE при выполнении команды из Командного окна не
вызывает никаких действий.
    Для закрытия окна построения меню,  созданного с опцией SAVE, наж-
мите Ctrl+W, Ctrl+End, Ctrl+Q или Escape, нажмите кнопку "мыши" на об-
ласти закрытия окна или выберете пункт меню Close в меню Edit.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         CREATE PROJECT          є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Создание проекта
    Синтаксис
CREATE PROJECT [ | ?]
   [WINDOW ]
   [IN [WINDOW]  | IN SCREEN]
    Замечания
Новая для FoxPro 2.0
    Смотри также
BUILD APP, BUILD PROJECT, MODIFY PROJECT

    Описание
    Команда CREATE PROJECT открывает окно  Проекта  (Project).  Проект
представляет  собой  специальную базу данных,  хранящую характеристики
всех файлов,  необходимых для создания приложения,  такие как, зависи-
мости,  ссылки и связи между файлами. База данных проекта имеет расши-
рение .PJX,  а связанный с ней файл полей памяти  расширение  .PJT.  В
проекте вы задаете все части,  необходимые для создания итогового при-
ложения,  и затем FoxPro убеждается,  что все откомпилированные  файлы
получены из последней версии исходных файлов.
    База данных проекта может быть открыта командой USE и затем  обра-
ботана всеми доступными средствами FoxPro как обычная база данных.
    Вызов команды CREATE PROJECT без дополнительных аргументов  приве-
дет  к  открытию нового окна Проекта .  Проекту временно присваивается
имя UNTITLED. При выходе из окна Проекта вы можете сохранить определе-
ние проекта в файле под определенным именем.
    Более подробная информация о создании проектов приводится в  главе
"Меню File"  ("File  Menu") в книге "Руководство по Интерфейсу FoxPro"
("Interface Guide").

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

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

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

    IN [WINDOW] 
    Если опция IN WINDOW  включена,  то окно Проекта бу-
дет открыто внутри порождающего окна.  Но из этого не следует, что оно
примет все его характеристики. Окно Проекта, открытое внутри порождаю-
щего  окна,  не может быть перемещено за его пределы.  При перемещении
порождающего окна, окно Проекта перемещается вместе с ним.
    Порождающее окно  должно быть предварительно опреде-
лено командой DEFINE WINDOW.  для доступа к окну Проекта
должно быть видимым.

    IN SCREEN
    Вы можете задать место расположения окна Проекта на  экране  путем
включения  опции IN SCREEN.  Она позволяет вам разместить окно Проекта
на экране, вместо размещения его внутри окна. Окно Проекта размещается
на экране по умолчанию.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є          CREATE QUERY           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Открыть окно RQBE
    Синтаксис
CREATE QUERY [ | ?]
    Замечания
Новая для FoxPro 2.0
    Смотри также
MODIFY QUERY

    Описание
    Команда CREATE QUERY открывает окно RQBE для создания  интерактив-
ных запросов (команда SQL SELECT). Все что вам необходимо сделать, это
установить нужные параметры в окне RQBE и FoxPro все остальное сделает
сам.
    Команда SELECT используется для осуществления поиска в  базе  дан-
ных. Это очень мощная команда,  которая заменяет последовательность из
нескольких команд FoxPro.  Т.к. одна SELECT равносильна нескольким ко-
мандам FoxPro, то ее использование оптимизирует выполнение программы.
    Команда SELECT обеспечивает механизм задания запроса FoxPro на по-
лучение нужной информации из базы данных.  Она позволяет задавать тре-
буемую информацию без указания FoxPro как ее искать.  FoxPro  сам  оп-
реднляет наилучший способ поиска этой информации.
    После создания запроса,  он хранится как простой программный  файл
FoxPro с  расширением  .QPR.  Программа запроса может быть выполнена с
помощью команды DO.
    Вызов команды  CREATE QUERY без дополнительных параметров открыва-
еет новое окно запросов RQBE.  Запросу присваивается имя UNTITLED. При
выходе  из  окна  запросов вы можете сохранять запрос в файле с нужным
именем.
    Более подробная  информация о создании запросов приводится в главе
"Меню File" ("File Menu") в книге "Руководство по  Интерфейсу  FoxPro"
("Interface  Guide")  или в уроке по созданию запросов в книге "Начало
Работы"(Getting Started").

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

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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є          CREATE REPORT          є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Создание отчета в окне построения отчета
    Синтаксис
CREATE REPORT [ | ?]
        [[WINDOW ]
        [IN [WINDOW]  | IN SCREEN]]
    Смотри также
CREATE REPORT - Быстрый Отчет, MODIFY REPORT, REPORT

    Описание
    Команда CREATE REPORT открывает окно построения отчета.
    Более подробная  информация  о создании отчетов приводится в главе
"Построитель Отчетов" ("Report Writer") в книге "Руководство по Интер-
фейсу  FoxPro" ("Interface Guide").  Команда CREATE REPORT может также
использоваться для генерации быстрого отчета без открытия окна постро-
ения отчета.  Информация о создании командой CREATE REPORT быстрых от-
четов приводится в следующей секции.

    Опции
    
    Вызов команды CREATE REPORT без дополнительных параметров открыва-
еет новое окно построения отчетов.  Отчету присваивается имя UNTITLED.
При выходе из окна построения отчетов вам предложат сохранять отчет  в
файле с нужным именем.
    Если в команде задано имя ,  то информация об  отчете  будет
записана  в файл с указанным вами именем.  Если не задавать расширения
имени этого файла,  ему будет автоматически назначено расширение .FRX.
Если  файл  отчета с таким именем уже существует,  то вы должны будете
подтвердить его перезапись (если SAFETY установлена в SET ON).

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

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

    IN [WINDOW] 
    Если опция  IN WINDOW  включена,  то окно построения
отчета будет открыто внутри порождающего окна. Но из этого не следует,
что оно примет все его характеристики.  Окно построения отчета, откры-
тое внутри порождающего окна, не может быть перемещено за его пределы.
При перемещении порождающего окна, окно построения отчета перемещается
вместе с ним.
    Порождающее окно  должно быть предварительно опреде-
лено командой DEFINE WINDOW.  для доступа к окну постро-
ения отчета должно быть видимым.

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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є  CREATE REPORT - Быстрый Отчет (Quick Report)   є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Программное создание отчета
    Синтаксис
CREATE REPORT  | ? FROM 
       [FORM | COLUMN] [FIELDS ] [ALIAS]
       [NOOVERWRITE] [WIDTH ]
    Смотри также
CREATE REPORT, MODIFY REPORT, REPORT

    Описание
    Эта форма команды CREATE REPORT создает быстрый отчет без открытия
окна построения  отчета.  Отчет создается при выборе пункта меню Quick
Report... при открытии окна построения отчета.
    Другая форма команды CREATE REPORT, которая обсуждалась в предиду-
щей секции, открывает Построитель Отчетов (Report Writer) для создания
отчета в окне.  Вы сможете до печати посмотреть,  как буддет выглядеть
созданный  вами  отчет,  воспользовавшись  средством  предварительного
просмотра Page Preview.
    Более подробная информация об интерактивном создании быстрых отче-
тов приводится в главе "Построитель Отчетов" ("Report Writer") в книге
"Руководство по Интерфейсу FoxPro" ("Interface Guide").

    Опции
    
    Если в команде задано имя ,  то информация об отчете  будет
записана  в файл с указанным вами именем.  Если не задавать расширения
имени этого файла,  ему будет автоматически назначено расширение .FRX.
Если  файл отчета с таким именем уже существует и опция NOOVERWRITE не
включена,  то вы должны будете подтвердить его перезапись (если SAFETY
установлена в SET ON).

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

    FROM 
    Файл   задает  имя  базы данных из которой создается отчет.
База данных не должна быть открыта.

    FORM | COLUMN
    Если вы включаете опцию FORM,  то быстрый отчет создается с полями
базы данных и их именами,  расположенными в полосе  Детализации  свер-
ху-вниз. Если не включаете FORM или COLUMN, то быстрый отчет принимает
по умолчанию этот формат.
    Если вы включаете опцию COLUMN, то быстрый отчет создается с поля-
ми базы данных расположенными в полосе Детализации вдоль страницы сле-
ва-направо.  Имена  полей  располагаются в полосе верхнего колонтитула
(Page header).

    FIELDS  (<список полей>)
    Опция FIELDS задает появляющиеся в отчете поля базы данных. Поля в
списке  разделяются запятыми.

    ALIAS
    Эта опция  служит для включения в отчет полей базы данных вместе с
ее псевдонимом.

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

    WIDTH 
    Предложение WIDTH  задает ширину страницы  отчета.  Числовое
выражение  задает число столбцов в отчете.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є          CREATE SCREEN          є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Открытие окна построения экрана
    Синтаксис
CREATE SCREEN [ | ?]
   [WINDOW ]
   [IN [WINDOW]  | IN SCREEN]
    Замечания
Новая для FoxPro 2.0
    Смотри также
CREATE SCREEN - Быстрый экран (Quick Screen), MODIFY SCREEN

    Описание
    Команда CREATE SCREEN открывает окно построения экрана.
    Более подробная  информация  о создании экранов приводится в главе
"Построитель Экранов" ("Screen Builder") в книге "Руководство  по  Ин-
терфейсу FoxPro" ("Interface Guide"). Команда CREATE SCREEN может так-
же использоваться для генерации  быстрого  экрана  без  открытия  окна
построения экрана.  Информация о создании командой CREATE SCREEN быст-
рых оэкранов приводится в следующей секции.

    Опции
    
    Вызов команды CREATE SCREEN без дополнительных параметров открыва-
еет  новое окно построения экрана.  Экрану присваивается имя UNTITLED.
При выходе из окна построения экрана вам предложат сохранять  экран  в
файле с нужным именем.
    Если в команде задано имя ,  то информация об  экране  будет
записана  в файл с указанным вами именем.  Если не задавать расширения
имени этого файла,  ему будет автоматически назначено расширение .SKX.
Если  файл  экрана с таким именем уже существует,  то вы должны будете
подтвердить его перезапись (если SAFETY установлена в SET ON).

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

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

    IN [WINDOW] 
    Если опция  IN WINDOW  включена,  то окно построения
экрана будет открыто внутри порождающего окна. Но из этого не следует,
что оно примет все его характеристики.  Окно построения экрана, откры-
тое внутри порождающего окна, не может быть перемещено за его пределы.
При перемещении порождающего окна, окно построения экрана перемещается
вместе с ним.
    Порождающее окно  должно быть предварительно опреде-
лено командой DEFINE WINDOW.  для доступа к окну постро-
ения экрана должно быть видимым.

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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є  CREATE SCREEN - Быстрый Экран (Quick Screen)   є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Программное создание экрана
    Синтаксис
CREATE SCREEN  | ? FROM 
        [ROW | COLUMN] [FIELDS ] [ALIAS]
        [NOOVERWRITE] [SIZE , ] [SCREEN]]
    Замечания
Новая для FoxPro 2.0
    Смотри также
CREATE SCREEN, MODIFY SCREEN

    Описание
    Эта форма команды CREATE SCREEN создает быстрый экран без открытия
окна  построения экрана.  Экран создается при выборе пункта меню Quick
Screen... при открытии окна построения экрана.
    Другая форма команды CREATE SCREEN, которая обсуждалась в предиду-
щей секции,  открывает Построитель Экранов (Screen Builder) для созда-
ния экрана в окне.
    Более подробная информация об интерактивном создании  быстрых  эк-
ранов
    приводится в главе "Построитель Экранов" ("Screen Builder") в кни-
ге "Руководство по Интерфейсу FoxPro" ("Interface Guide").

    Опции
    
    Если в  команде задано имя ,  то информация об экране будет
записана в файл с указанным вами именем.  Если не задавать  расширения
имени этого файла,  ему будет автоматически назначено расширение .ЫСX.
Если файл экрана с таким именем уже существует и опция NOOVERWRITE  не
включена,  то вы должны будете подтвердить его перезапись (если SAFETY
установлена в SET ON).

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

    FROM 
    Файл  задает имя базы данных из  которой  создается  экран.
База данных не должна быть открыта.

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


    FIELDS  (<список полей>)
    Опция FIELDS задает появляющиеся в экране поля базы данных. Поля в
списке  разделяются запятыми.

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

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

    SIZE ,
    Это предложение управляет высотой и шириной окна.  Высота окна за-
дается числовым выражением , а ширина .

    SCREEN
    Включение этой опции размещает создаваемый быстрый экран на  "сто-
ле". По умолчанию, он размещается в окне.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є       CREATE TABLE - SQL        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Создает базу данных, имеющую заданные поля.
    Синтаксис
CREATE TABLE | DBF 
        (  [( [, ]) [,  ... ]])
        | FROM ARRAY 
    Смотри также
AFIELDS(), CREATE QUERY, INSERT - SQL, MODIFY QUERY, SELECT - SQL, SQL

    Описание
    Команда CREATE  TABLE создает базу данных.  Каждое новое поле базы
данных определяется со своим именем,  типом,  точностью и числом деся-
тичных знаков.  Эти  определения  могут быть получены из самой команды
или из массива.  Новая база данных открывается исключительно, несмотря
на текущую установку SET EXCLUSIVE.

    Опции
    CREATE TABLE | DBF 
    В этом  предложении  задает имя создаваемой базы данных.
 может включать в себя маршрут и может быть именным  выраже-
нием.

    (  [( [, ]) [,  ... ]])
    В этом  предложении    и  имена полей в новой базе
данных. Каждое  может быть именным выражением.
     является буквой,  указывающей на тип данных поля. Некоторый
типы данных требуют задания  (ширины поля) и  (числа
десятичных знаков). ,  и  могут быть следующи-
ми:
Тип  Ширна Число      Описание
           десятичных
           знаков
 C     n     -        Строка символов шириной n
 D     -     -        Дата
 F     n     d        С плавающей точкой ширины n с d десятичными разрядами
 L     -     -        Логическое
 M     -     -        Памяти memo
 N     n     d        Числовое ширины n с d десятичными разрядами
 P     -     -        Шаблон

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

    Пример
CREATE TABLE employee ;
 (name C(20), addr C(30), city C(30), zip C(5), salary N(8,2), comments M)

CREATE DBF contacts FROM ARRAY ncontact

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           CREATE VIEW           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Создание файла представления из текущей среды FoxPro
    Синтаксис
CREATE VIEW 
    Смотри также
SET VIEW

    Описание
    Данный вариант команды CREATE создает файл  представления  ,
содержащий  информацию  о текущем состоянии среды FoxPro.  Команда SET
VIEW TO позволяет восстановить среду,  записанную в файл представления
командой CREATE VIEW.
    Файлы представления,  создаваемые командой CREATE  VIEW,  получают
расширение .VUE.  Файлы представления могут создаваться утилитами эти-
кеток и отчетов.  Утилиты этикеток и отчетов позволяют сохранить усло-
вия среды FoxPro на момент создания соответственных этикеток или отче-
тов.  Эти файлы представления имеют те же основные имена,  что и файлы
определения  этикеток  или  отчетов,  и  расширения  .LBV  для  файлов
представления этикеток и .FRV для файлов представления отчета.
    Информация, записываемая в файл представления, включает в себя:
*  все базы данных, индексные, альтернативные и форматные файлы,
   открытые в текущий момент во всех 25 рабочих областях
*  все поля, содержащиеся в списке SET FIELDS
*  все установленные отношения между открытыми файлами базы данных
*  все фильтры, действующие для открытых баз данных
*  установки для DEFAULT и PATH
*  установка процедурного файла
*  текущий HELP-файл
*  текущий файл ресурсов
*  статус SET SKIP
*  статус состояния линейки (ON или OFF).
    Файлы представления  полезны как в программах,  так и при отладке.
Для полного воссоздания среды, требуемой для рещения задачи, требуется
выполнить  одну  команду SET VIEW TO .  Это позволяет сэкономить
множество усилий.  При отладке установки среды можно сохранить в файле
представления,   выполнить   тестирование,   и  затем  восстанавливать
представление программно.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              CTOD               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Преобразует символьное выражение в выражение типа даты
    Синтаксис
CTOD()
    Тип возвращаемого значения
Дата
    Смотри также
DTOC(), SET CENTURY, SET DATE, SYS(1), SYS(10), SYS(11)

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

    Параметр 
    Символьное выражение  преобразуется в значение типа даты.
    Форматом   по  умолчанию является "mm/dd/yy".  Для изменения
этого формата по умолчанию могут быть использованы команды SET DATE  и
SET CENTURY.
    Если при вводе даты век не указывается  (как  это  имеет  место  в
строчном выражении "12/25/91"), подразумевается двадцатый век.
     должен содержать разрешенную дату, лежащую в пределах между
"1/1/100" и "12/31/9999".

    Примеры
STORE "7/4/1776" to the_4th
? CTOD(the_4th)
07/04/76

STORE {09/15/91} TO today
STORE CTOD("12/25/91") to christmas
STORE STR(christmas-today,3) TO days_left
? "There are", days_left, "days until Christmas"

There are 101 days until Christmas

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             CURDIR              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает текущий директорий ДОС
    Синтаксис
CURDIR([])
    Параметры
 диск
    Тип возвращаемого значения
Символьный
    Смотри также
FULLPATH()

    Описание
    Функция CURDIR()  возвращает  как строку знаков текущий директорий
DOS,  связанный с  накопителем,  который  идентифицируется  аргументом
.

    Параметр 
    Если  опущен,  предполагается, что текущим накопителем явля-
ется  накопитель по умолчанию (для FoxPro накопитель,  устанавливаемый
по команде SET DEFAULT). В случае отсутствия накопителя  возвра-
щается нулевая строка.
    Для FoxPro функция CURDIR() игнорирует значения SET PATH.

    Примеры
? CURDIR()
\FOXPRO2\

SET DEFAULT TO C:\FOXPRO2\TUTORIAL
? CURDIR('C'
\FOXPRO2\TUTORIAL\

SET DEFAULT TO C:\
? CURDIR('C')           && корневой
\
    В предлагаемом  ниже примере программы FoxPro проверяет,  является
ли текущим директорием для накопителя  C  директорий  \FOXPRO2\SAMPLE.
Если это положение не имеет места,  FoxPro устанавливает для этого ди-
ректория значение по умолчанию.
IF .NOT. CURDIR("C") = "\FOXPRO2\SAMPLE\"
   SET DEFAULT TO C:\FOXPRO2\SAMPLE
ENDIF

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              DATE               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает текущую системную дату
    Синтаксис
DATE()
    Тип возвращаемого значения
Дата
    Смотри также
SET CENTURY, SET DATE, SET MARK, SYS()

    Описание
    Функция DATE()  возвращает  текущую  дату  системы.  (Операционная
система контролирует дату системы. В FoxPro отсутствуют какие-либо ко-
манды или функции, которые могут непосредственно изменять ее).
    Формат строки,  возвращаемой функцией DATE() модифицируется коман-
дами SET CENTURY, SET DATE и SET MARK.

    Примеры
? DATE()
09/15/91

SET CENTURY ON
? MDY(DATE())
September 15, 1991
    В предлагаемом  ниже  примере  база  данных INVOICE сканируется по
всем записям,  для которых должны поступать платежи  (применительно  к
сегодняшней дате), причем не более чем с 30-дневной просрочкой.
*** Пример программы ***
USE Invoice
SCAN FOR BETWEEN(inv_date, DATE() - 30, DATE())
      ? "Send notice of payment due for" + company
        "Послать извещение об обязательном платеже"
ENDSCAN

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               DAY               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает численное  значение дня месяца,  соответствующего выражению
типа даты
    Синтаксис
DAY()
    Тип возвращаемого значения
Числовой
    Смотри также
CDOW(), DOW(), SYS()

    Описание
    DAY(), функция дня месяца, возвращает численное значение дня меся-
ца (от 1 до 31), соответствующее выражению типа даты.

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

    Примеры
STORE {05/03/91} TO bdate
?CDOW(bdate)
Friday

? DAY(bdate)
6

? "That date is", CMONTH(bdate),STR(DAY(bdate),2)
That data is May  3

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               DBF               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает имя базы данных в заданной рабочей области или  псевдо-
ниме
    Синтаксис
DBF([ | ])
    Тип возвращаемого значения
Символьный
    Смотри также
CDX(), FIELD(), NDX()

    Описание
    Функция DBF() возвращает имя базы данных, открытой в указанной ра-
бочей области, или имя базы данных из заданного псевдонима.

    Параметры  | 
    Вы можете получить имя открытой базы данных в другой  рабочей  об-
ласти  путем задания ее номера в ,  или псевдонима базы данных в
.
    В том случае,  когда оба аргумента опущены,  возвращается имя базы
даныых в текущей рабочей области.
    Более подробная информация о псевдонимах баз данных приводится при
описании команды USE далее в этом руководстве.
    Если в  указанной рабочей области не существует открытой базы дан-
ных, возвращается нулевая строка.  Если база данных не имеет псевдони-
ма, указанного  в ,  то выдается сообщение "Псевдоним не найден"
("Alias not found").

    Примеры
CLOSE ALL
USE salesrep IN 2 ALIAS salesdept
? DBF(2)
C:\FOXPRO2\SALESREP.DBF

? DBF('salesdept')
C:\FOXPRO2\SALESREP.DBF

CLOSE DATABASES
? DBF()                && возвращается нулевая строка

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         DEACTIVATE MENU         є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Деактивирует меню и удаляет его с экрана
    Синтаксис
DEACTIVATE MENU
    Смотри также
ACTIVATE MENU, CLEAR ALL, CLEAR MENU, CREATE MENU, DEFINE MENU,
HIDE MENU, RELEASE MENUS, SHOW MENU

    Описание
    Команда DEACTIVATE MENU удаляет активное меню с экрана,  но не  из
памяти. Одновременно активным может являться только одно меню, поэтому
указывать имя меню нет необходимости. Меню можно повторно активировать
командой ACTIVATE MENU с именем меню.
    Важно !!!
    При включении  Системной  линейки  меню  (_MSYSMENU)  в прикладную
программу вам не надо определять, активировать или деактивировать его.
Вместо этого,  выполните команду SET SYSMENU AUTOMATIC. Для более под-
робной отсылаем вас к книге документации по FoxPro "Руководство Разра-
ботчика" ("Developer's Guide").
    Для освобождения конкретного меню из памяти следует  дать  команду
RELEASE MENUS с именем меню. Команды CLEAR ALL и CLEAR MENUS позволяют
освободить из памяти все меню.
    Команда DEACTIVATE MENUS выполняется только из программных файлов.
Управление программой  затем  возвращается  в  строку  программы,  не-
посредственно  после  строки,  активировавшей меню,  если меню не было
создано с предложением BAR команды  DEFINE  MENU  или  активировано  с
предложением NOWAIT команды ACTIVATE MENU.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         Пример Программы        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
*** Эта программа должна иметь имя DEACMENU.PRG ***
CLEAR
DEFINE MENU mainmenu BAR AT LINE 1 KEY ALT+U
DEFINE PAD invoices  OF mainmenu PROMPT '\
        [,  ... ] | ALL
    Смотри также
ACTIVATE WINDOW, CLEAR WINDOWS, DEFINE WINDOW, HIDE WINDOW,
RELEASE WINDOWS, SHOW WINDOW

    Описание
    Команда DEACTIVATE WINDOW деактивирует активное окно или набор ак-
тивных окон и удаляет их с экрана. Окно или окна при этом не удаляются
из  памяти  и  могут  быть  снова вызваны на дисплей при помощи команд
ACTIVATE WINDOW или SHOW WINDOW.
    На экране одновременно может находиться более одного окна,  но вы-
вод может быть направлен только на окно, активированное последним. При
наличии  более чем одного окна деактивация текущего окна вывода удалит
его с экрана и перенаправит последующий вывод на  окно,  которое  было
активировано перед этим. Если окна вывода не существует, вывод направ-
ляется на экран.
    Активные окна  могут  быть  удалены с экрана и из памяти командами
CLEAR WINDOWS или RELEASE WINDOWS.

    Опции
    [,  ... ]
    Имена одного или нескольких деактивируемых окон.

    ALL
    Задание этой опции деактивирует все окна.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         Пример Программы        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
CLEAR
DEFINE WINDOW output FROM 2,1 TO 13,75 TITLE 'Output' ;
        CLOSE FLOAT GROW SHADOW ZOOM
ACTIVATE WINDOW output
USE customer
DISPLAY
WAIT
DEACTIVATE WINDOW output
    В данном примере определяется и активируется окно с именем OUTPUT.
После  вывода на дисплей записи из базы данных CUSTOMER программа ждет
(команда WAIT) нажатия клавиши, после чего окно деактивируется.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             DECLARE             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Создание массива переменных памяти
    Синтаксис
DECLARE 
        ( [, ]) [,  (
        [, ])] ...
    Замечания
Расширена в FoxPro 2.0:  Можно изменять размерность массива без потери
находящихся в нем данных
    Смотри также
APPEND FROM ARRAY, ASUBSCRIPT(), COPY TO ARRAY, DIMENSION,
GATHER, PUBLIC, PRIVATE, SET COMPATIBLE, SCATTER, STORE

    Описание
    Команда DECLARE  позволяет  создавать  одно- или двумерные массивы
переменных памяти.  По действию и синтаксису команда DECLARE идентична
команде DIMENTION.  За  более  подробной  информацией  отсылаем  вас к
описанию команды DIMENSION.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           DEFINE BAR            є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Определение опции всплывающего меню
    Синтаксис
DEFINE BAR  | 
        OF  PROMPT 
         [BEFORE  | AFTER ]
        [KEY  [, ]]
        [MARK ]
        [MESSAGE ]
        [SKIP [FOR ]]
        [COLOR  | COLOR SCHEME ]
    Замечания
Расширена в FoxPro 2.0: опции BEFORE, AFTER, COLOR, KEY и MARK
    Смотри также
ACTIVATE POPUP, DEACTIVATE POPUP, DEFINE POPUP, HIDE POPUP, ON BAR,
ON SELECTION BAR, RELEASE, SET MESSAGE, SHOW POPUP, SET SYSMENU

    Описание
    Команда DEFINE  BAR  добавляет  пункт  (опцию)  всплывающего меню.
DEFINE BAR используется совместно с командами DEFINE POPUP и  ACTIVATE
POPUP для создания всплывающего меню и вывода его на экран. Прежде чем
можно будет пользоваться командой DEFINE  BAR,  необходимо  определить
само всплывающее меню командой DEFINE POPUP. Меню можно убрать с экра-
на командой DEACTIVATE POPUP,  либо и с экрана и из  памяти  командами
CLEAR ALL, CLEAR POPUPS или RELEASE POPUPS.
    При выборе пункта меню может быть высвечено другое всплывающее ме-
ню или  выполнена  заданная  подпрограмма.  Всплывающее меню,  которое
высвечивает другие всплывающие меню или линейки меню,  называется  ие-
рархическим всплывающим  меню.  Более  подробная информация о создании
иерархических всплывающих меню приведена при описании команды ON BAR.
    Пункты меню создаются серией команд DEFINE BAR.  Необходимо выдать
эту команду для каждого пункта всплывающего меню. Вы должны обязатель-
но задать   (<имя всплывающего меню>) для указания место-
расположения данного пункта.
    Можно определять больше пунктов меню, чем может разместится на эк-
ране. Таким способом создаются всплывающие меню с прокруткой. По таким
меню вы  можете осуществлять прокрутку путем нажатия клавиш управления
курсором Вверх и Вниз,  или нажатием кнопки "мыши" на верхней или ниж-
ней граничной линии всплывающего меню.
    Предпочтительным методом включения всплывающих меню  в  прикладные
программы является  переделка  линейки  системного  меню  FoxPro  и ее
всплывающих меню.  В случае переделки под свои нужды всплывающих  меню
системной линейки  меню вам не надо вначале определять всплывающие ме-
ню, а следовательно,  и совершать связанные с этим ошибки.  Более под-
робно переделка линейки системного меню и ее всплывающих меню описыва-
ется в команде SET SYSMENU.
    Можно создать всплывающее меню, содержащее записи или поля из фай-
ла базы данных, или список файлов, доступных на диске. Более подробная
информация об  этом  приведена  в описании опций PROMPT FIELD,  PROMPT
STRUCTURE и  PROMPT FILES команды DEFINE POPUP.

    Опции
    
    Числовое выражение  присваивает  номер  пункту  вплывающего
меню.

     (<Пункты системного меню>)
    В создаваемом всплывающем меню вы можете разместить пункты  всплы-
вающего меню System. Это можно сделать включением опции . Список имен System возвращается функцией  SYS(2013).  Например,
для обеспечения   доступа   в   меню   с   именем   "OTHER"  к  пункту
Calendar/Diary (Календарь/Дневник) вы должны создать пункт командой:
    DEFINE BAR _MST_DIARY OF OTHER PROMPT 'Enter Appointments'
    Где бы этот пункт меню не выбирался, всегда будет открываться окна
FoxPro Сalendar/Diary.

    OF  (<имя всплывающего меню>)
    Имя всплывающего меню в котором заданный пункт появится.

    PROMPT 
    Опция PROMPT  задает появляющийся в данном пункте текст.
    Может быть создан пункт разделения,  который  располагается  между
опциями меню. Он создается заданием в выражении  обратного сле-
ша и дефиса (\-). Например включение команды
        DEFINE BAR 4 PROMPT '\-'
вызовет создание разделителя всплывающего меню между третьим  и  пятым
пунктом.
    Вы можете присваивать пунктам меню  "горячие"  клавиши.  "Горячая"
клавиша представляет собой подсвеченную букве, нажатие которой вызыва-
ет немедленный выбор соответствующего пункта.  Для присвоения  горячей
клавиши  перед  требуемым символом в пункте установите обратный слеш и
знак меньше (\<).  При работе  с  "горячими"  клавишами  вам  не  надо
подсвечивать нужный пункт и затем нажимать Enter или Spacebar.  Напри-
мер:
DEFINE POPUP receive
DEFINE BAR 1 OF receive PROMPT '\ | AFTER 
    Опции BEFORE  и  AFTER  задают  местоположение создаваемого пункта
всплывающего меню  относительно  другого  пункта.  Для   использования
опций BEFORE  и  AFTER  всплывающее меню должно создаваться с ключевым
словом RELATIVE в команде DEFINE POPUP,  иначе будет  зарегистрирована
ошибка.
    Опции BEFORE и AFTER задают физическое  местоположение  пункта  во
всплывающем меню.  Если включается опция BEFORE,  то создаваемый пункт
будет вставлен в меню до пункта с номером . Если включается оп-
ция  AFTER,  то создаваемый пункт будет вставлен в меню после пункта с
номером .
    Два специальных имени,  _MFIRST и _MLAST,  позволяют вам ссылаться
на первый и последний пункт в меню.  Эти имена могут использоваться  в
опциях BEFORE и AFTER.
    Если в опцию BEFORE включено имя _MFIRST, то создаваемый пункт бу-
дет  первым  во  всплывающем  меню.  Если  в  опцию AFTER включено имя
_MFIRST, то создаваемый пункт будет вторым во всплывающем меню.
    Если в опцию AFTER включено имя _MLAST, то создаваемый пункт будет
последним во всплывающем  меню.  Если  в  опцию  BEFORE  включено  имя
_MLAST, то создаваемый пункт будет предпоследним во всплывающем меню.
    Всплывающие меню,  созданные с ключевым словом RELATIVE, не резер-
вируют место для неопределенных пунктов.  Например, если вы определили
пункты 1,  2, 4 и 5, то для пункта 3 не резервируется строка. Но позже
вы можете вставить пункт 3 во всплывающее меню, и все меню раздвинется
для его размещения.
    Запустите следующие  программы и посмотрите на разницу в порядке и
месторасположении пунктов в каждом всплывающем меню:
*** Пример с RELATIVE ***
DEFINE POPUP relatyes RELATIVE FROM 1,1

DEFINE BAR 4  OF relatyes PROMPT '4444'
DEFINE BAR 3  OF relatyes PROMPT '3333'
DEFINE BAR 2  OF relatyes PROMPT '2222'
DEFINE BAR 1  OF relatyes PROMPT '1111'
DEFINE BAR 6  OF relatyes PROMPT '6666' BEFORE 4

ACTIVATE POPUP relatyes

*** Пример без RELATIVE ***
DEFINE POPUP notrelat FROM 1,10
DEFINE BAR 4  OF notrelat PROMPT '444'
DEFINE BAR 3  OF notrelat PROMPT '3333'
DEFINE BAR 2  OF notrelat PROMPT '2222'
DEFINE BAR 1  OF notrelat PROMPT '1111'
DEFINE BAR 6  OF notrelat PROMPT '6666'
ACTIVATE POPUP notrelat

    KEY  [,]
    В дополнении к выбору с помощью "горячей" клавиши,  пункт меню мо-
жет  быть выбран нажатием другой клавиши или комбинации клавиш.  Опция
KEY использует метку ключа  для  присваивания  клавише  или
комбинации клавиш функцию выбора данного пункта. В описании команды ON
KEY LABEL в этом руководстве приведен список  доступных  клавиш  и  их
комбинаций, а так же имена их меток .
    Внимание !!!
    Если с  той же меткой  уже определен макрос клавиатуры,
то макрос клавиатуры имеет более высокий приоритет и пункт меню не вы-
бирается нажатием этой клавиши или комбинации клавиш.
    Метка  располагается справа от пункта  меню.  Включение
необязательного символьного  выражения   позволяет вам заменить
метку  на ваш собственный текст.  Например,  включение  KEY
Ctrl+B разместит текст Ctrl+B за пунктом меню - вместо этого вы можете
написать KEY Ctrl+B, "^B". И для напоминания  о  возможной  комбинации
клавиш для выбора данного пункта будет использоваться текст ^В.  Вывод
метки  может быть  подавлен  включением  в    пустой
строки.

    MARK 
    Перед пунктом во всплывающем меню может располагаться символ  мар-
кировки, задаваемый командой SET MARK OF. По умолчанию символом марки-
ровки является маленький ромбик. Опция MARK  включается для из-
менения символа  маркировки,  заданного по умолчанию.  Задание символа
маркировки еще не маркирует сам пункт меню - для этого используйте SET
MARK OF.
    Если в опцию MARK  включено более одного символа,  то в ка-
честве символа маркировки будет использован только первый из них.
    Символ маркировки, заданный в DEFINE BAR, имеет преимущество перед
символом маркировки, заданным опцией MARK команды DEFINE POPUP. Коман-
да SET MARK OF используется для переключения маркировки между  состоя-
ниями включена и выключена,  и может так же задавать символ маркировки
как для отдельного пункта меню, так и для всего меню.

    SKIP [FOR ]
    В зависимости  от значения логического выражения пункты меню могут
блокироваться. При включении опции SKIP FOR   будет  оцениваться
значение логического  выражения ,  и в зависимости от результата
(истина или ложь),  данный пункт будет доступен или заблокирован. Если
 оценивается  как истина (.Т.),  то пункт блокируется и не может
быть установлен и выбран.  Если  оценивается как ложь (.F.),  то
пункт меню доступен.
    Другой способ заблокировать пункт  меню,  это  поставить  обратный
слеш (\)  до текста пункта меню. Например,
    DEFINE BAR 1 OF receive PROMPT '\Invoices'
    Первый пункт меню,  BAR 1,  выводится цветом блокировки и не может
быть установлен или выбран.
    Доступный пункт  может  быть установлен и выбран;  заблокированный
пункт не может быть установлен или выбран. Пункт всплывающего меню мо-
жет быть заблокирован включением ключевого слова SKIP. При его включе-
нии определение пункта блокируется и не может быть ни  установлено  ни
выбрано.

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

    COLOR SCHEME 
    COLOR  (<список цветовых пар>)
    По умолчанию,  цвета пунктов во всплывающем меню определяются цве-
товой схемой 2 (User Menus (Меню Пользователя)) текущего цветового на-
бора.
    Предложения COLOR SCHEME и COLOR команды DEFINE  POPUP  позволяют
задавать цвета всех пунктов ,  символов маркировки и сообщений в меню.
Включением предложений COLOR SCHEME и COLOR в команду  DEFINE  BAR  вы
можете задавать цвета отдельных пунктов, переопределяя цвета, принима-
емые по умолчанию, и цвета, задаваемые в команде DEFINE POPUP.
    Заданием COLOR  вы можете переопределять цветовые
характеристики различных состояний пункта меню (доступный,  заблокиро-
ванный  или  установленный).  Список  цветовых  пар  
представляет собой от 1 до 10 разделенных запятыми пар цветов.  Каждая
цветовая  пара  управляет различными состояниями или элементами пункта
меню. Например,  цвет 1-й пары задает цвета  заблокированного  пункта,
2-й пары - доступного пункта и т.д. Пункт User Menus (Меню Пользовате-
ля) во всплывающем меню диалога Color Picker (Выбор Цветов) показывает
каждую цветовую пару и вызываемый эффект (цветовая схема 2)..
    Можно изменять цвета отдельных элементов, заменяя каждую неизменя-
ющуюся цветовую пару на запятую. Например, для установки цвета доступ-
ного пункта (цветовая пара 2) в красный на черном и цвета  установлен-
ного  пункта  (цветовая пара 6) в синий на черном,  вы должны включить
следующее предложение
    COLOR , R/N,,,, B/N
    В результате этого будут изменены только 2-я и 6-я пары.
    Задание COLOR  SCHEME позволяет устанавливать цвета всех состояний
пункта,  "горячих" клавиш и сообщений в любые из 24 доступных цветовых
схем.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         Пример  Программы       є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
CLEAR
DEFINE MENU mainmenu
DEFINE PAD invoices  OF mainmenu PROMPT ' \ TO 
        HEIGHT  [AT LINE ]
        [SINGLE | DOUBLE | ]
    Смотри также
@ ... BOX, _BOX, PCOL(), PROW(), _PSPACEING, SET BORDER, SET PRINTER

    Описание
    DEFINE BOX  рисует рамку вокруг текста только при выводе на печать
и только в том случае,  когда системная переменная _BOX установлена  в
значение "истина" (.T.). Для рисовании прямоугольника на экране следу-
ет использовать команду @...BOX или @...TO.
    Печать рамки  возможна только при SET PRINT ON.  Рисоваение рамок,
кроме того,  возможно лишь вокруг вывода командами ?  и ??.  Рисование
рамки вокруг вывода командой @...SAY невозможно.
    Функции PCOL() и PROW() являются полезными при пользовании  коман-
дой DEFINE BOX.  Они возвращают печатуемые в настоящий момент строку и
столбец.

    Опции
    DEFINE BOX FROM  TO 
    Размер рамки задается значениями  и  и  .
Верхний левый угол рамки появится в столбце печати .  Верхний
правый угол - в столбце .

    HEIGHT 
    Высота рамки равна .  На высоту рамки будет влиять и значе-
ние системной переменной памяти _PSPACING. Например, если  рав-
но 5 и _PSPACING равна 3, то высота рамки будет 15 строк.

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

    SINGLE | DOUBLE |  (<строка контурных символов>)
    Вы можете  также определить стиль изображения граничной линии рам-
ки, задав для этого опции SINGLE, DOUBLE или . По умол-
чанию  контур  рамки рисуется одинарной линией.  Опция DOUBLE вызывает
рисование двойной линией, однако вы имеете возможность сами определить
способ  изображения  контуров рамки, задав опцию .  Син-
таксис ее задания идентичен описанному в команде SET BORDER  TO.  Син-
таксис  определения собственного контура поэтому смотри в описании ко-
манды SET BORDER TO.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           DEFINE MENU           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Создание линейки меню
    Синтаксис
DEFINE MENU 
        [BAR [AT LINE ]]
        [IN [WINDOW]  | IN SCREEN]
        [KEY ]
        [MARK ]
        [MESSAGE ]
        [NOMARGIN]
        [COLOR  | COLOR SCHEME ]
    Замечания
Расширена в FoxPro 2.0: опции BAR, AT LINE, IN WINDOW, KEY, MARK и
NOMARGIN
    Смотри также
ACTIVATE MENU, CNTPAD(), CREATE MENU, DEACTIVATE MENU, DEFINE PAD,
GETPAD(), HIDE MENU, MRKPAD(), ON PAD, ON SELECTION PAD, PRMPAD(),
RELEASE, SET MARK OF, SHOW MENU

    Описание
     Команда DEFINE  MENU  создает  линейку  меню  и назначает ей имя.
Системное меню обычно содержит горизонтальную линейку меню с  располо-
женными под каждым ее пунктом всплывающими меню. При переходе от одно-
го пункта линейки к другому на экране  появляются  соответствующие  им
всплывающие меню.
    Прежде чем вы сможете  вызвать  линейку  меню  на  экран  командой
ACTIVATE  MENU,  вы  обязаны  определить  ее при помощи команды DEFINE
MENU. Задайте имя  для линейки меню.  Затем, определите се-
рией команд DEFINE PAD каждый пункт линейки меню.  Для задания активи-
зируемого всплывающего меню для пункта линейки используйте команды  ON
PAD ...  ACTIVATE POPUP.  И наконец, создайте эти всплывающие меню ко-
мандами DEFINE POPUP. После этих шагов вы можете активизировать линей-
ку меню командой ACTIVATE MENU.
    Выбор пункта линейки меню не обязательно должен приводить к  акти-
визации всплывающего меню. Он может активизировать другую линейку меню
командами ON PAD ...  ACTIVATE MENU, или выполнить подпрограмму коман-
дой ON SELECTION PAD ... DO.
    Внимание !!!
    Предпочтительным методом  размещения меню в ваших прикладных прог-
раммах является переделка линейки системного меню FoxPro.
    При переделке линейки системного меню FoxPro вам не надо использо-
вать команду DEFINE MENU.  При попытке выполнить  команду  определения
линейки системного меню FoxPro DEFINE MENU _MSYSMENU будет зарегистри-
рована синтаксическая ошибка (_MSYSMENU это имя системной линейки  ме-
ню). Более подробная информация об использовании системной линейки ме-
ню в прикладных программах смотри главу "Меню" ("Menus") в книге доку-
ментации по FoxPro "Руководство Разработчика" ("Developer's Guide").

    Опции
    
    Имя создаваемой линейки меню.

    BAR [AT LINE ]
    Включение необязательного предложения BAR  создает  линейку  меню,
функционирующую подобно  Системной  линейке меню FoxPro.  Линейка меню
будет иметь следующие характеристики:
    - После выбора одного пункта линейка меню становится неактивной.
    - Линейка горизонтального меню высотой в одну линию будет располо-
жена по ширине экрана или окна.
    - Местоположение пунктов меню устанавливается автоматически при их
определении. Не  включайте  предложение АТ,  т.к.  в этом случае будет
сгенерирована синтаксическая ошибка.
    - Если  размер или число пунктов в линейке меню при выводе выходит
за размер экрана или окна,  то в линейке меню будет организована прок-
рутка.
    Вы можете задать строку экрана или окна,  где расположить  линейку
меню. Это осуществляется с помощью опции AT LINE предложения BAR.  Но-
мер этой строки задается числовым выражением .

    IN [WINDOW]  | IN SCREEN
    По умолчанию, если нет активных окон вывода, линейки меню распола-
гаются на экране. Если существует активное окно вывода, то линейка ме-
ню располагается в нем.
    Линейка меню может быть выведена и в окно,  задаваемое в опциях IN
или IN WINDOW.  Для этого надо задать имя окна , куда бу-
дет направлено меню.
    Включение опции IN SCREEN вызовет размещение меню на экране.

    KEY 
    Линейка меню может быть активирована нажатием клавиши или комбина-
ции клавиш.  Опция KEY использует метку ключа  для присваи-
вания клавише или комбинации клавиш функцию активации  данной  линейки
меню.  В  описании  команды  ON  KEY LABEL в этом руководстве приведен
список доступных клавиш и их комбинаций,  а так же имена их меток .  Включение  предложения  KEY  эквивалентно вызову ON KEY LABEL
 ACTIVATE MENU .
    Внимание !!!
    Если с  той же меткой  уже определен макрос клавиатуры,
то макрос  клавиатуры  имеет более высокий приоритет и линейка меню не
активизируется.

    MARK 
    Перед пунктом  в линейке меню может располагаться символ маркиров-
ки,  задаваемый командой SET MARK OF. По умолчанию символом маркировки
является маленький ромбик. Опция MARK  включается для изменения
символа маркировки, заданного по умолчанию. Задание символа маркировки
еще не маркирует сам пункт меню - для этого используйте SET MARK OF.
    Символ маркировки может использоваться для указания на существова-
ние некоторых условий - для пункта доступно всплывающее меню,  возмож-
ность, управляемая данным пунктом, включена или выключена и т.п.
    Если в опцию MARK  включено более одного символа,  то в ка-
честве символа маркировки будет использован только первый из них.
    Опция MARK устанавливает символ маркировки для всех пунктов линей-
ки меню. Символ маркировки, заданный в команде DEFINE PAD, имеет преи-
мущество перед  символом  маркировки,  заданным  опцией  MARK  команды
DEFINE MENU.  Команда SET MARK OF используется для переключения марки-
ровки между состояниями включена и выключена,  и может так же задавать
символ  маркировки  как для отдельного пункта линейки меню,  так и для
всего меню.

    MESSAGE 
    Включением предложения MESSAGE  вы можете выдавать необяза-
тельное сообщение при установке на создаваемый пункт линейки меню. При
выборе пункта отцентрированное сообщение появляется в строке, задавае-
мой командой SET MESSAGE.  Сообщение DEFINE  MENU  будет  заменено  на
сообщение, задаваемое командой DEFINE PAD.

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

    COLOR  (<список цветовых пар>)
    Заданием COLOR  вы можете переопределять цветовые
характеристики  всех  элементов меню.  Список цветовых пар  представляет собой от 1 до 10 разделенных запятыми  пар  цветов.
Каждая  цветовая  пара  соответствует различным состояниям пункта меню
(доступен,  заблокирован, установлен) или элементов линейки меню ("го-
рячих" клавиш,  сообщений) как показано в цветовой схеме 2, Меню Поль-
зователя (User Menus) в Выборе Цветов (Color Picker).
    По умолчанию,  цвета  линейки  меню,  создаваемой  командой DEFINE
MENU, задаются цветовой схемой 2,  Меню Пользователя. Вы можете задать
цвета всех  элементов  линейки  меню  включением  списка  цветовых пар
,  или линейка меню может получить  цвета  из  другой
цветовой схемы.
    Можно выборочно изменять цвета отдельных элементов, заменяя каждую
неизменяющуюся цветовую пару на запятую. Например, для установки цвета
доступного пункта линейки меню (цветовая пара 2) в красный на черном и
цвета  установленного пункта линейки (цветовая пара 6) в синий на чер-
ном, вы должны включить следующее предложение
    COLOR , R/N,,,, B/N
    В результате этого будут изменены только 2-я и 6-я пары.

    COLOR SCHEME 
    Задание COLOR  SCHEME позволяет устанавливать цвета всех состояний
пункта меню и элементов линейки в любые из 24 доступных цветовых схем.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         Пример Программы        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
     В данном  примере  определяется линейка меню MAINMENU.  Опция BAR
задают эмуляцию функционирования системной линейки меню FoxPro. Линей-
ка меню располагается в первой строке экрана.
    KEY определяет активацию меню при  нажатии  клавиш  Alt+Z.  Символ
маркировки (квадрат) задается предложением MARK CHR(254).
    При выборе пункта из линейки меню происходит выполнения  процедуры
TMЕNU.  Команда  DO  TMENU TO MENUEXAM вызывает процедуру из программы
MENUEXAM.PRG, поэтому вы не должны менять названия файлов с программа-
ми.  Процедура TMENU использует два параметра,  MMENU и MPAD,  которые
получают значения от функций MENU() и PAD().  MMENU содержит имя меню,
а MPAD содержит имя пункта, выбранного из линейки меню.
    Затем процедура TMENU выводит в окно имя  меню  и  выбранный  вами
пункт. При выборе Quit появляется сообщение,  линейка меню удаляется с
экрана и из памяти.
*** Эта программа должна называться МЕNUEXAM.PRG ***
CLEAR
DEACTIVATE MENU mainmenu
DEFINE MENU mainmenu BAR AT LINE 1 KEY ALT+Z MARK CHR(254)
DEFINE PAD invoices  OF mainmenu PROMPT '\ OF  PROMPT 
        [AT , ]
        [BEFORE 
        | AFTER ]
        [KEY  [, ]]
        [MARK ]
        [SKIP [FOR ]]
        [MESSAGE ]
        [COLOR  | COLOR SCHEME ]
    Замечания
Расширена в FoxPro 2.0: опции BEFORE, AFTER, KEY и MARK
    Смотри также
ACTIVATE MENU, CNTPAD(), CREATE MENU, DEACTIVATE MENU, DEFINE PAD,
GETPAD(), HIDE MENU, MRKPAD(), ON PAD, ON SELECTION PAD, PRMPAD(),
RELEASE, SET MARK OF, SET MESSAGE, SET SYSMENU

    Описание
    Команда DEFINE PAD служит для помещения в линейку  меню  элементов
меню. Эта команда используется совместно с командой DEFINE MENU, обыч-
но при создании системы меню.  Элементом меню является пункт в линейке
меню, который может быть установлен (подсвечен) и выбран. После выбора
пункта линейки меню может быть высвечено всплывающее меню,  другая ли-
нейка меню или выполнена заданная подпрограмма.
    Каждому элементу линейки присваивается имя . Для помеще-
ния в  линейку каждого элемента требуется одна команда DEFINE PAD.  До
определения пунктов меню вы должны определить саму линейку меню и  его
имя должно включаться в команду DEFINE PAD.
    Предпочтительным методом включения меню в прикладные программы яв-
ляется переделка линейки системного меню FoxPro и ее всплывающих меню.
В случае переделки под свои нужды системной линейки  меню  (_MSYSMENU)
вам не надо вначале определять меню, а следовательно, и совершать свя-
занные с этим ошибки. Более подробно переделка линейки системного меню
и ее всплывающих меню описывается в команде SET SYSMENU.

    Опции
    
    Имя создаваемого пункта меню.

    OF 
    Имя линейки меню в которой появляется создаваемый пункт.

    PROMPT 
    Опция PROMPT  задает появляющийся в данном пункте текст.
    Вы можете присваивать пунктам меню  "горячие"  клавиши.  "Горячая"
клавиша представляет собой подсвеченную букве, нажатие которой вызыва-
ет немедленный выбор соответствующего пункта.  Для присвоения  горячей
клавиши  перед  требуемым символом в пункте установите обратный слеш и
знак меньше (\<).  При работе  с  "горячими"  клавишами  вам  не  надо
подсвечивать нужный пункт и затем нажимать Enter или Spacebar.  Напри-
мер:
DEFINE MENU receive
DEFINE PAD 1 OF receive PROMPT '\,
    Эта опция задает месторасположение пункта меню на экране или в ок-
не. Пункты меню активизируются в порядке их определения. Пункты линей-
ки меню  могут  находится  в  любом месте экрана или окна.  Для вывода
пунктов линейки меню в окне,  линейка меню должна создаваться командой
DEFINE MENU с опцией IN WINDOW.
    Опция AT , задает координаты экрана иди  окна.  
задает строку экрана или окна,   - столбец.  Если строка 
одинакова для каждого пункта линейки меню, то создается горизонтальная
линейка меню.  Если  столбец   одинаков для всех команд DEFINE
PAD, то пункты линейки меню располагаются в вертикальном порядке.
    Если опция  АТ опущена,  то первый определенный пункт линейки меню
появится в левой 0-й строке экрана или меню, второй - справа от перво-
го пункта 0-й строки, и т.д.
    Внимание !!!
    Вы не  можете включать опцию АТ для задания местоположения пунктов
линейки меню на экране или в окне,  если эта линейка создана  командой
DEFINE MENU с опцией BAR.  Присутствие этой опции создает горизонталь-
ное меню - расположение строки линейки и ее пунктов на  экране  или  в
окне задается опцией AT LINE команды DEFINE MENU.

    BEFORE  | AFTER 
    Расположение и порядок активации пунктов меню может быть задан от-
носительно других пунктов в линейке меню. Для этого используются опции
BEFORE  и AFTER . Пункт меню, указываемый в опциях
BEFORE   или AFTER ,  должен быть определен перед
ссылкой на него.  Если пункт, на который происходит ссылка, не опреде-
лен, то местоположение создаваемого пункта определяется порядком в ко-
тором он определен, или местоположением, задаваемым необязательной оп-
цией АТ.
    Для пунктов линейки меню,  созданных без опции АТ,  опции BEFORE и
AFTER  определяют физическое местонахождение и порядок активации пунк-
тов в линейке меню. Если включается опция BEFORE, то пункт меню встав-
ляется  до задаваемого в ней пункта.  Если включается опция AFTER,  то
пункт меню вставляется после задаваемого в ней пункта. Порядок актива-
ции соответствует физическому порядку пунктов в линейке меню.
    Для линеек меню,  созданных без опции BAR,  предложения  BEFORE  и
AFTER определяют порядок активации пунктов.  Физическое местоположение
пункта задается координатами экрана или окна  в  необязательной  опции
АТ.

    Примеры
    Запустите приведенные ниже программы и вы увидите разницу в распо-
ложении пунктов  и  порядке  их активации в зависимости от присутствия
или отсутствия опции АТ:
*** Пример Программы 1 без опции AT ***

DEFINE MENU beforafter

DEFINE PAD one   OF beforafter PROMPT '1111'
DEFINE PAD two   OF beforafter PROMPT '2222'
DEFINE PAD three OF beforafter PROMPT '3333'
DEFINE PAD four  OF beforafter PROMPT '4444' BEFORE two

ACTIVATE MENU beforafter

*** Пример Программы 2 с опцией AT ***

DEFINE MENU beforafter

DEFINE PAD one   OF beforafter PROMPT '1111' AT 1,5
DEFINE PAD two   OF beforafter PROMPT '2222' AT 1,15
DEFINE PAD three OF beforafter PROMPT '3333' AT 1,25
DEFINE PAD four  OF beforafter PROMPT '4444' BEFORE two AT 1,35

ACTIVATE MENU beforafter

    KEY  [,]
    В дополнении к выбору с помощью "горячей" клавиши,  пункт меню мо-
жет  быть выбран нажатием другой клавиши или комбинации клавиш.  Опция
KEY использует метку ключа  для  присваивания  клавише  или
комбинации клавиш функцию выбора данного пункта. В описании команды ON
KEY LABEL в этом руководстве приведен список  доступных  клавиш  и  их
комбинаций, а так же имена их меток .
    Внимание !!!
    Если с  той же меткой  уже определен макрос клавиатуры,
то макрос клавиатуры имеет более высокий приоритет и пункт меню не вы-
бирается нажатием этой клавиши или комбинации клавиш.
    Метка  располагается справа от пункта  меню  в  линейке
меню  ,  созданной без опции BAR.   не выводится в линейках
меню ,  созданных с опцией BAR,  или установленных в системную линейку
меню. Включение необязательного символьного выражения  позволя-
ет вам заменить метку  на ваш собственный текст.
    Например, включение  KEY  Ctrl+B разместит текст Ctrl+B за пунктом
меню - вместо этого вы можете написать KEY Ctrl+B, "^B". И для напоми-
нания  о  возможной  комбинации клавиш для выбора данного пункта будет
использоваться текст ^В.  Вывод метки  может быть  подавлен
включением в  пустой строки.

    MARK 
    Перед пунктом во всплывающем меню может располагаться символ  мар-
кировки, задаваемый командой SET MARK OF. По умолчанию символом марки-
ровки является маленький ромбик. Опция MARK  включается для из-
менения символа  маркировки,  заданного по умолчанию.  Задание символа
маркировки еще не маркирует сам пункт меню - для этого используйте SET
MARK OF.
    Символ маркировки может использоваться для указания на существова-
ние некоторых условий - для пункта доступно всплывающее меню,  возмож-
ность, управляемая данным пунктом, включена или выключена и т.п.
    Если в опцию MARK  включено более одного символа,  то в ка-
честве символа маркировки будет использован только первый из них.
    Символ маркировки,  заданный в команде DEFINE PAD,  имеет  преиму-
щество перед символом маркировки,  заданным опцией MARK команды DEFINE
MENU.  Команда SET MARK OF используется  для  переключения  маркировки
между состояниями включена и выключена, и может так же задавать символ
маркировки как для отдельного пункта линейки меню, так и для всего ме-
ню.

    SKIP [FOR ]
    В зависимости  от значения логического выражения пункты меню могут
блокироваться. При включении опции SKIP FOR   будет  оцениваться
значение логического  выражения ,  и в зависимости от результата
(истина или ложь),  данный пункт будет доступен или заблокирован. Если
 оценивается  как истина (.Т.),  то пункт блокируется и не может
быть установлен и выбран.  Если  оценивается как ложь (.F.),  то
пункт меню доступен.
    Другой способ заблокировать пункт  меню,  это  поставить  обратный
слеш (\)  до текста пункта меню. Например,
    DEFINE PAD 1 OF pageaccts PROMPT '\Age Accounts'
    Пункт меню  PAGEACCTS выводится в линейке меню цветом блокировки и
не может быть установлен или выбран.
    Доступный пункт может быть установлен  и  выбран;  заблокированный
пункт  не  может быть установлен или выбран.  Пункт линейки меню может
быть заблокирован включением ключевого слова SKIP.  При его  включении
определение  пункта блокируется и не может быть ни установлено ни выб-
рано.

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

    COLOR SCHEME 
    COLOR  (<список цветовых пар>)
    По умолчанию,  цвета пунктов в линейке меню определяются  цветовой
схемой 2 (User Menus (Меню Пользователя)) текущего цветового набора.
    Предложения COLOR SCHEME и COLOR команды DEFINE MENU позволяют за-
давать  цвета  всех пунктов ,  символов маркировки и сообщений в меню.
Включением предложений COLOR SCHEME и COLOR в команду  DEFINE  PAD  вы
можете задавать цвета отдельных пунктов, переопределяя цвета, принима-
емые по умолчанию, и цвета, задаваемые в команде DEFINE MENU.
    Заданием COLOR  вы можете переопределять цветовые
характеристики различных состояний  пункта  линейки  меню  (доступный,
заблокированный  или  установленный),  "горячих"  клавиш и сообщений .
Список цветовых пар  представляет собой от  1  до  10
разделенных  запятыми пар цветов.  Каждая цветовая пара управляет раз-
личными состояниями или элементами пункта меню. Например, цвет 1-й па-
ры задает цвета заблокированного пункта,  2-й пары - доступного пункта
и т.д. Пункт User Menus (Меню Пользователя) во всплывающем меню диало-
га Color Picker (Выбор Цветов) показывает каждую цветовую пару и вызы-
ваемый эффект (цветовая схема 2)..
    Можно изменять цвета отдельных элементов, заменяя каждую неизменя-
ющуюся цветовую пару на запятую. Например, для установки цвета доступ-
ного пункта (цветовая пара 2) в красный на черном и цвета  установлен-
ного  пункта  (цветовая пара 6) в синий на черном,  вы должны включить
следующее предложение
    COLOR , R/N,,,, B/N
    В результате этого будут изменены только 2-я и 6-я пары.
    Задание COLOR  SCHEME позволяет устанавливать цвета всех состояний
пункта,  "горячих" клавиш и сообщений в любые из 24 доступных цветовых
схем.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         Пример Программы        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    В данном примере, PADEXAM.PRG, определяется линейка меню MAINMENU.
Опция  BAR  задают  эмуляцию  функционирования  системной линейки меню
FoxPro. Линейка меню располагается в первой строке экрана.
    KEY определяет  активацию  меню  при нажатии клавиш Alt+Z.  Символ
маркировки (квадрат) задается предложением MARK и  является  различным
для каждого пункта .  Опция SKIP блокирует и разблокирует первый пункт
(Invoices) при выборе пункта.
    При выборе  пункта из линейки меню происходит выполнения процедуры
TMЕNU.  Команда DO TMENU TO MENUEXAM вызывает процедуру  из  программы
PADEXAM.PRG,  поэтому вы не должны менять названия файлов с программа-
ми.  Процедура TMENU использует два параметра,  MMENU и MPAD,  которые
получают значения от функций MENU() и PAD().  MMENU содержит имя меню,
а MPAD содержит имя пункта, выбранного из линейки меню.
    Затем процедура  TMENU  выводит  в  окно имя меню и выбранный вами
пункт.  Символ маркировки для пункта переключается и первый пункт ста-
новится  доступным  или  заблокированным.  При  выборе Quit появляется
сообщение, линейка меню удаляется с экрана и из памяти.
*** Эта программа должна называться МЕNUEXAM.PRG ***
CLEAR
DEACTIVATE MENU mainmenu
DEFINE MENU mainmenu BAR AT LINE 1 KEY ALT+Z
PUBLIC skipvar
skipvar = .T.

DEFINE PAD invoices  OF mainmenu PROMPT '\
        [FROM , ]
        [TO , ]
        [IN [WINDOW]  | IN SCREEN]
        [FOOTER ]
        [KEY ]
        [MARGIN]
        [MARK ]
        [MESSAGE ]
        [MOVER]
        [MULTI]
        [PROMPT FIELD 
        | PROMPT FILES [LIKE ]
        | PROMPT STRUCTURE]
        [RELATIVE]
        [SCROLL]
        [SHADOW]
        [TITLE ]
        [COLOR SCHEME  | COLOR  ]
    Замечания
Расширена в FoxPro 2.0: опции IN WINDOW, FOOTER, KEY, MARGINE, MARK
MOVER, MULTI, RELATIVE, SCROLL и TITLE; PROMPT и FIELD могут принимать
символьное выражение
    Смотри также
ACTIVATE POPUP, CNTBAR(), CREATE MENU, DEFINE BAR, GETBAR(),
DEACTIVATE POPUP, DEFINE POPUP, HIDE POPUP, MOVE POPUP, MRKBAR(), ON BAR,
PRMBAR(), SHOW POPUP, SET SYSMENU, SET MESSAGE, SIZE POPUP

    Описание
    DEFINE POPUP позволяет создвать всплывающее меню. Всплывающее меню
может содержать список определяемых вами опций,  содержимое поля  базы
данных, список  файлов  или  список  полей базы данных.  Для помещения
пунктов во всплывающее меню,  используйте набор команд DEFINE BAR. Для
помещения записей,  файлов  или полей во всплывающее меню используются
предложения PROMPT FIELD, PROMPT FILES или PROMPT STRUCTURE.
    При активизации  и вводе всплывающего меню командой ACTIVATE POPUP
вы можете выбрать один из его пунктов.  В зависимости от выбранной оп-
ции, может выполнена заданная подпрограмма или активировано и высвече-
но другое всплывающее меню. Всплывающее меню, которое при выводе пунк-
тов  выводит другое выплывающее меню или линейку меню,  называется ие-
рархическим меню.  Более подробная информация о создании иерархических
всплывающих меню приведена при описании команды ON BAR.

    Опции
    
    Имя создаваемого всплывающего меню.

    FROM ,  TO , 
    Вы можете задать местоположение всплывающего меню включением  нео-
бязательного предложения FROM ,  , указывающего координаты
на экране или в окне.  В этом случае верхний левый угол меню  располо-
жится по этим координатам. Если предложение FROM ,  опуще-
но, то FoxPro расположит верхний левый угол всплывающего меню на экра-
не или в окне по адресу 0, 0.
    Вы можете так же включить необязательное  предложение  TO  ,
, задающее координаты нижнего правого угла - тем самым вы задае-
те всплывающее окно заданного размера.
    Если вы  включили  FROM  ,    но  опустили  TO ,
, то FoxPro автоматически устанавливает размер всплывающего  ме-
ню. Оно  будет  иметь ширину наибольшего пункта (если пункты создаются
командой DEFINE BAR) и иметь длину,  достаточную для  размещения  всех
пунктов. Длина  всплывающего  ограничивается размером экрана или окна.
Если размер видимой части меню недостаточен для размещения всех  пунк-
тов, то по нему осуществляется прокрутка. Вы можете осуществлять прок-
руту по меню с помощью клавиш управления курсором Вверх  и  Вниз,  или
нажатием клавиши "мыши" на верней или нижней границе меню.
    Если вы включаете оба предложения FROM и ТО, то создается всплыва-
ющее меню  заданного  размера,  затем  вы можете использовать ACTIVATE
POPUP NOWAIT для вывода всплывающего меню  без  определенного  первого
пункта. Это позволяет вам выводить меню и затем вставлять в него пунк-
ты.

    IN [WINDOW]  | IN SCREEN
    По умолчанию,  если  нет  активных  окон вывода,  всплывающие меню
располагаются на экране.  Если существует  активное  окно  вывода,  то
всплывающее меню располагается в нем.
    Всплывающее меню может быть выведена и в окно, задаваемое в опциях
IN или IN WINDOW.  Для этого надо задать имя окна ,  куда
будет направлено меню.
    Включение опции IN SCREEN вызовет размещение меню на экране.

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

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

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

    MARK 
    Перед пунктом  всплывающего меню может располагаться символ марки-
ровки,  задаваемый командой SET MARK OF.  По умолчанию символом марки-
ровки является маленький ромбик. Опция MARK  включается для из-
менения символа маркировки,  заданного по умолчанию.  Задание  символа
маркировки еще не маркирует сам пункт меню - для этого используйте SET
MARK OF.
    Если в опцию MARK  включено более одного символа,  то в ка-
честве символа маркировки будет использован только первый из них.
    Опция MARK устанавливает символ маркировки для всех пунктов всплы-
вающего меню.  Символ маркировки, заданный в команде DEFINE BAR, имеет
преимущество  перед символом маркировки,  заданным опцией MARK команды
DEFINE POPUP. Команда SET MARK OF используется для переключения марки-
ровки между состояниями включена и выключена,  и может так же задавать
символ маркировки как для отдельного пункта всплывающего меню,  так  и
для всего меню.

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

    MOVER
    При включении  опции  MOVER  вы  можете  изменить  порядок пунктов
всплывающего меню.  Когда MOVER присутствует,  слева от каждого пункта
всплывающего меню  размещается  двунаправленная  стрелка  (указывающая
вверх и вниз).  Пункты меню в этом случае можно установится  на  пункт
меню и переместить его.
    Для перемещения пункта с помощью "мыши" вы должны нажать ее кнопку
на двунаправленной стрелке и переместить пункт вверх или вниз. При ра-
боте с клавиатурой,  установитесь на нужный пункт (подсветите  его)  и
затем нажимая  комбинации  клавиш Ctrl+"Курсор Вверх" или Ctrl+"Курсор
Вниз" переместите его вверх или вниз.
    Функция GETBAR() возвращает номер пункта из позиции во всплывающем
меню, и может использоваться для определения  позиционируемого  пункта
меню.

    MULTI
    Из всплывающего меню может быть выбрано  несколько  пунктов,  если
при его  определении  использовалось ключевое слово MULTI.  При выборе
пункта всплывающего меню с левой стороны от него располагается  символ
маркировки (по умолчанию ромбик).
    Для выбора нескольких пунктов с помощью клавиатуры, нажмите клави-
шу  Shift  и  выберете  нужный пункт нажатием Enter или Spacebar.  Для
установки последовательных пунктов, выберете один пункт, нажмите Shift
и нажмите клавишу управления курсором Вверх или Вниз.
    Для выбора нескольких пунктов с помощью  "мыши",  нажмите  клавишу
Shift и нажмите клавишу "мыши" на нужном пункте.  Для установки после-
довательных пунктов,  выберете один пункт, нажмите Shift и перемещайте
указатель "мыши" по пунктам меню.
    Функция MRKBAR() может использоваться для выбранных во всплывающем
меню пунктов.  MRKBAR() возвращает логическую истину (.Т.), если пункт
помечен. Т.к. выбранный пункт всплывающего меню, созданному с ключевым
словом MULTI,  помечается, то эта функция может использоваться для оп-
ределения выбранных пунктов.
    Если вы  включаете  ключевое слово MULTI при создании всплывающего
меню, то рекомендуется включать  и  опцию  MARGIN  для  резервирования
места под символ маркировки. Если MARGIN опущена, то символ маркировки
заместит первый символ каждого пункта.
    Вы не можете производить множественный выбор из всплывающего меню,
созданного с одной из опций PROMPT (FIELD, FILES или STRUCTURE).
    В следующем  примере  создается  всплывающее меню с наименованиями
фруктов. Ключевое слово MULTI включено для обеспечения  множественного
выбора.
    Каждый пункт имеет собственный символ маркировки. При выборе пунк-
та он маркируется и подпрограмма YOURCHOICE выводит ваш выбор.
CLEAR
DEFINE POPUP  fruits FROM 5,5 MULTI MARGIN && Создание меню с множест-
                                           && венным выбором
DEFINE BAR 1 OF fruits PROMPT '\  из  открытого файла базы данных,  данные этого поля становятся
элементами всплывающего меню.  Меню будет иметь опции, соответствующие
всем записям базы данных. При активации такого всплывающего меню будет
выбираться рабочая область с соответствующей базой данных.
    Важно !!!
    Вы можете  использовать  преимущества  оптимизирующей   технологии
Rushmore для установки фильтра на поля PROMPT,  используемые во всплы-
вающем меню.  Обсуждение оптимизирующей технологии Rushmore проводится
в  главе  "Оптимизация ваших прикладных программ" в книге документации
по FoxPro "Руководство Разработчика" ("Developer's Guide").
    Общее выражение   может содержать несколько имен полей и вы-
ражений, соединенные вместе оператором сложения (+).  Выражение 
может также быть полем базы данных, открытой в другой рабочей области,
или функцией, определяемой пользователем (UDF).
    В FoxPro максимальное число пунктов всплывающего меню, создаваемых
опцией PROMPT FIELD, не превышает 32,767. Если база данных имеет боль-
ше записей,  то  выводится  предупреждение  "Всплывающее  меню слишком
большое, выводятся первые nnnnn пунктов" ("Popup too big,  first nnnnn
entries shown"). В расширенной версии FoxPro (Extended Version FoxPro)
ограничений на число пунктов во всплывающем меню,  созданном с помощью
опции PROMPT FIELD, не существует.


    PROMPT FILES [LIKE ]
    Можно легко создать меню,  показывающее файлы, имеющиеся на диске.
При использовании опции PROMPT FILES создается всплывающее меню, выво-
дящее на дисплей все доступные файлы. Для выборочного включения в меню
файлов можно использовать дополнительное предложение LIKE  (<ма-
кет_спецификации>). Макет  - это макет спецификации файлов, под-
держивающий метасимволы (?  и *).  Например, для создания всплывающего
меню, в котором бы на дисплей выводились все доступные файлы базы дан-
ных на дисководе и в директории  по  умолчанию,  включите  предложение
PROMPT FILES LIKE *.DBF.  Включив спецификацию дисковода, пути доступа
или то и другое, можно создать всплывающее меню, показывающее файлы на
других  дисководах или в других директориях.  Например,  чтобы создать
всплывающее меню файлов программ из директории PROGRAMS на дисководе A
следует включить предложение:
    PROMPT FILES LIKE A:\PROGRAMS\*.PRG.

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

    RELATIVE
    Включение ключевого  слова RELATIVE обеспечивает оправление поряд-
ком вставки пунктов во всплывающее меню.  Если всплывающее меню созда-
ется без RELATIVE,  пункт меню располагается во всплывающем меню в по-
рядке, задаваемом его номером (как задается в его команде DEFINE BAR).
Для еще  не  определенных  пунктов  во  всплывающем меню резервируется
место. Например,  первый и третий пункт определены (DEFINE  BAR  1  OF
, DEFINE BAR 3 OF ) и всплывающее меню активи-
ровано, то на втором месте  всплывающего  меню  будет  зарезервирована
пустая строка.
    Если всплывающее меню создается с RELATIVE, то пункты меню появля-
ются в  нем  в  том порядке,  в котором они определены.  Пустое прост-
ранство для неопределенных пунктов в этом случае не резервируется. Оп-
ределение меню  с RELATIVE позволяет вам пользоваться опциями BEFORE и
AFTER в команде DEFINE BAR - пункты всплывающего меню  могут  распола-
гаться относительно других пунктов. При создании всплывающего меню без
RELATIVE, использование опций BEFORE и AFTER в команде DEFINE BAR  вы-
зовет синтаксическую ошибку.
    Запустите следующие  программы и посмотрите на разницу в порядке и
месторасположении пунктов в каждом всплывающем меню:
*** Пример с RELATIVE ***
  DEFINE POPUP relatyes RELATIVE FROM 1,1

DEFINE BAR 4  OF relatyes PROMPT '4444
DEFINE BAR 3  OF relatyes PROMPT '3333'
DEFINE BAR 2  OF relatyes PROMPT '2222'
DEFINE BAR 1  OF relatyes PROMPT '1111'
DEFINE BAR 6  OF relatyes PROMPT '6666' BEFORE 4

ACTIVATE POPUP relatyes

*** Пример без RELATIVE ***
DEFINE POPUP notrelat FROM 1,1

DEFINE BAR 4  OF notrelat PROMPT '4444'
DEFINE BAR 3  OF notrelat PROMPT '3333'
DEFINE BAR 2  OF notrelat PROMPT '2222'
DEFINE BAR 1  OF notrelat PROMPT '1111'
DEFINE BAR 6  OF notrelat PROMPT '6666'

ACTIVATE POPUP notrelat

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

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

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

    COLOR  (<список цветовых пар>)
    Заданием COLOR  вы можете переопределять цветовые
характеристики  всех элементов всплывающего меню.  Список цветовых пар
 представляет собой от 1 до 10  разделенных  запятыми
пар  цветов.  Каждая  цветовая пара соответствует различным состояниям
пункта меню (доступен,  заблокирован, установлен) или элементов всплы-
вающего  меню  ("горячих"  клавиш,  сообщений) как показано в цветовой
схеме 2,  Меню  Пользователя  (User  Menus)  в  Выборе  Цветов  (Color
Picker).
    По умолчанию, цвета всплывающего меню, создаваемой командой DEFINE
MENU,  задаются цветовой схемой 2, Меню Пользователя. Вы можете задать
цвета всех элементов всплывающего меню включением списка цветовых  пар
, или всплывающее меню может получить цвета из другой
цветовой схемы.
    Можно выборочно изменять цвета отдельных элементов, заменяя каждую
неизменяющуюся цветовую пару на запятую. Например, для установки цвета
доступного пункта вплывающего меню (цветовая пара 2) в красный на чер-
ном и цвета установленного пункта меню (цветовая пара 6)  в  синий  на
черном, вы должны включить следующее предложение
    COLOR , R/N,,,, B/N
    В результате этого будут изменены только 2-я и 6-я пары.

    COLOR SCHEME 
    Задание COLOR SCHEME позволяет устанавливать цвета всех  состояний
пункта  меню и элементов всплывающего в любые из 24 доступных цветовых
схем.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є        Пример Программы         є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
CLEAR
SET ESCAPE OFF
DEFINE MENU mainmenu
DEFINE PAD invoice OF mainmenu PROMPT ' \




?????? ???????????