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



 

Часть 19

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             UPDATE              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Обновление содержимого базы данных с помощью данных из другой базы
данных
    Синтаксис
    UPDATE ON  FROM  | 
      REPLACE  WITH  [,  WITH  ... ]
      [RANDOM]
    Смотри также
    INDEX, JOIN, SORT
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Команда UPDATE обновляет файл базы данных,  открытый в текущей ра-
бочей области,  данными из файла,  который открыт в другой рабочей об-
ласти. Вы можете обновлять поля в текущей базе данных выборочно.

       Команда  UPDATE  позволяет  откорректировать данные в
активном файле  базы  данных  с  использованием  файла  FROM
  (псевдоним). Файл  должен быть активен в од-
ной из неактивных рабочих областей.
Корректировка  произво-
дится на основании значений ключевого поля . Имя ключе-
вого поля  должно совпадать в обоих базах данных.
       Если в состав команды не введен параметр  RANDOM,  то

Записи  в файле  должны быть индексированы или отсор-
тированы по полю .

    Дополнительные опции
    
    Активная база данных и база данных из которой  берется  информация
для  обновления  должны  иметь  общее  поле.  Это общее поле,  ON , управляет обновлением. Активная база данных обязательно должен
быть  индексирована  по полю  или должна быть отсортирована
по полю . Осуществление команды UPDATE улучшается, если об-
новляющая база данных также отсортирована или проиндексирована.

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

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

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


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             UPDATED             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает логическое  значение "истина" (.T.) если последняя опе-
рация READ изменила какие либо данные.
    Синтаксис
    UPDATED()
    Возвращаемое значение
    Логическое
    Смотри также
    @  ... SAY/GET, INKEY(),READ, READKEY()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция UPDATE  ()  возвращает  логическое значение "истина" (.T.)
если последняя операция READ изменила какие либо данные в соответству-
ющих GET полях или объектах.
    Если данные в GET полях или областях редактирования текста изменя-
лись, либо был сделан выбор из GET объекта (управляющая рамка,  селек-
тивная кнопка или  невидимая  кнопка,  текстовая  кнопка,  список  или
всплывающее меню),  UPDATE()  возвращает  "истина" (.T.),  в противном
случае возвращается логическое значение "ложь"(.F.).


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              UPPER              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает заданную символьную строку в верхнем регистре.
    Синтаксис
    UPPER()
    Возвращаемое значение
    Символьное
    Смотри также
    ISLOWER(), ISUPPER(), LOWER()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    UPPER() возвращает исходную строку, заменяя все символы на заглав-
ные. Все  строчные  буквы (a-z) преобразуются в прописные буквы (A-Z),
все остальные символы остаются без изменения.

    Дополнительные опции
    
    Символьное выражение  преобразуется в верхний регистр.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Пример              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
STORE 'Fox Software, Inc.' TO company
? UPPER(company)
FOX SOFTWARE, INC.


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               USE               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Открывает файл базы данных
    Синтаксис
    USE [ | ?]
     [IN ]
     [AGAIN]
     [INDEX  | ?
     [ORDER [|<.idx index file>|[TAG][OF <.cdx file>]
     [ASCENDING | DESCENDING]]]]
     [ALIAS ]
     [EXCLUSIVE]
     [NOUPDATE]
    Замечания
    Расширена в FoxPro 2.0: опции AGAIN, ORDER, ASCENDING, DESCENDING
    Смотри также
    CREATE, DBF(), USED()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Команда USE  открывает файл базы данных  и делает его актив-
ным в текущей активной рабочей области.
    Если команда USE вводится без указания файла , активный файл
базы данных закрывается. Активный файл базы данных также закрывается и
в  том  случае,  если вводится команда USE для другого файла в этой же
самой рабочей области.

    Дополнительные опции
     | ?
     - имя открываемой базы .  Если символ запроса ? использован
вместо явного задания имени файла ,  то отображается диалог Отк-
рытия Файла (Open File) со списком имеющихся баз  данных.  Вы  можете
выбрать из показанного списка нужную вам базу данных и открыть ее.

    IN 
    Используя необязательное  предложение  IN  (рабочая об-
ласть),  вы можете открыть файл базы данных в неактивной  рабочей  об-
ласти. Кроме этого вы можете закрыть файл базы данных в другой рабочей
области, если используете команду USE без имени файла и с предложением

    AGAIN
    База данных может быть открыта одновременно в  нескольких  рабочих
областях. Для того,  чтобы открыть файл конкурент в другой рабочей об-
ласти, можно поступить одним из следующих способов:
    - Выбрать другую рабочую область и подать команду USE с именем ба-
зы данных, включив опцию AGAIN.
    - Подать  команду USE с именем базы данных,  включив опцию AGAIN и
опцию IN , с другой рабочей областью.
    Любые индексные файлы открытые для базы данных, также доступны для
этой базы данных,  открытой в другой рабочей области. Базе данных пов-
торно открытой назначается псевдоним по умолчанию для рабочей области.
Можно включать псевдоним каждый раз, когда Вы открываете базу данных в
нескольких областях, пока есть уверенности что псевдоним уникальный.
    Когда база данных снова открывается в другой рабочей области, база
данных в  новой  рабочей  области берет атрибуты файла из оригинальной
базы данных. Например, если база данных открыта только по чтению или в
однопользовательском режиме, то база данных повторно открытая в другой
рабочей области будет также доступна только по чтению или в  однополь-
зовательском режиме.

    INDEX  | ?
    Можно открыть индексные файлы вместе с открываемой  базой  данных,
включив опцию INDEX .  Необязательно указывать расши-
рение индексных файлов,  пока они имеют расширение .IDX и .CDX.  Можно
включить единичный индексный файл включив, его имя в 
или указав INDEX ? для высвечивания диалога Открытия Файла(Open File),
который позволяет выбрать индексный файл из предложенного списка. Если
база данных имеет структурный составной индексный файл, то он открыва-
ется вместе с базой данных автоматически.
    Можно открыть с базой данных несколько индексных файлов, указав их
имена в  списке,  отделив  друг от друга запятыми.  Список  может содержать любую комбинацию .IDX и составных .CDX индексных
файлов.
    Первый индексный файл в списке  становится  глав-
ным индексным файлом, который определяет порядок в котором осуществля-
ется доступ к записям базы данных и в котором они выводятся  на  экран
дисплея. Если первым является
.CDX составной индексный файл,  записи базы данных  доступны  в  физи-
ческом порядке.  Вы  можете  назначить главный индексный тег или файл,
отличный от первого,  включив в команду опцию ORDER. Команда SET ORDER
также может указывать главный индексный тег или файл.

    ORDER []
    Числовое выражение    может  использоваться  для  назначения
главного индексного  тега  или файла,  оно описывает индексные файлы в
порядке их появления в .
    .IDX индексные  файлы  нумеруются первыми в порядке их появления в
списке.  Затем идут теги в структурном индексном файле (если такой су-
ществует), которые нумеруются в порядке их создания. И наконец, теги в
независимых составных .CDX индексных файлах,  нумеруются в порядке  их
создания.
    Если  больше чем суммарное количество всех индексных тегов и
файлов  различного типа,  выводится сообщение об ошибке "Индексный тег
не найден"(Index tag not found).  Если  равно 0,  то доступ либо
высвечивание  базы данных осуществляется в физическом порядке следова-
ния записей.  ORDER 0 позволяет открыть индексный файл для обновления,
хотя  записи базы данных рассматриваются как неиндексированные.  ORDER
без дополнительных параметров идентична ORDER 0.

    ORDER [<.idx index file>]
    ORDER [[TAG ] [OF <.cdx file>]]
    Вы можете назначить исключительно .IDX индексный файл  в  качестве
главного индекса,  включив его имя в <.idx index file>. Для назначения
исключительно тега .CDX индексного файла  в  качестве  главного  тега,
включите его имя в .   может быть из любого откры-
того .CDX индексного файла.  Если имена тегов повторяются в  различных
.CDX файлах,  включите в OF <.cdx file> имя соответствующего .CDX фай-
ла, содержащего необходимый тег.

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

ALIAS 
    Эта опция  используется для создания имени псевдонима базы данных,
открытой с использованием команды USE.  База данных может  описываться
своим псевдонимом,  в командах и функциях,где требуется указание рабо-
чей области,  имени базы данных или ее псевдонима.  Когда база  данных
открывается  ее автоматически присваивается псевдоним,  если псевдоним
явно не указан,  то по умолчанию он совпадает с названием базы данных.
На псевдоним распространяются требования,  предъявляемые к именам вре-
менных переменных - может содержать до 10 символов,  должен начинаться
с буквы или подчеркивания, кроме которых может содержать только цифры.
    Если одна база данных открывается в нескольких  рабочих  областях,
без указания псевдонима, он назначается автоматически, как это принято
по умолчанию.  В конфликтных ситуациях с псевдонимами,  также назнача-
ется псевдоним принятый по умолчанию.

    EXCLUSIVE
    Открывает базу данных в  однопользовательском  режиме.  Эта  опция
имеет эффект только для пользователей FoxPro/LAN. Для получения допол-
нительной информации смотрите описание команды SET EXCLUSIVE в  данном
руководстве.

    NOUPDATE
    Параметр NOUPDATE запрещает любые изменения,  которые могут  иметь
место в исходном файле базы данных.  База данных, открытая в таком ре-
жиме  также  застрахована  от  изменения  структуры  командой  MODIIFY
STRUCTURE. Хотя структуру при этом можно просмотреть.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є       Пример программы          є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
CLOSE ALL
SELECT 1
USE payments ORDER date
SELECT B
USE invoice
USE customer IN 3

? DBF()
C:\FOXPRO2\INVOICE.DBF

? DBF(1)
C:\FOXPRO2\PAYMENTS.DBF

? DBF(3)
C:\FOXPRO2\CUSTOMER.DBF
    В этом  примере три базы данных открываются в трех различных рабо-
чих областях.  DBF() возвращает имя файла, открытого в каждой из рабо-
чих областей.


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              USED               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает логическое значение "истина" (.T.) если база данных от-
крыта в указанной рабочей области.
    Синтаксис
    USED([ | ])
    Возвращаемое значение
    Логическое
    Смотри также
    ALIAS(), SELECT

ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция USED () возвращает логическое значение "истина" (.T.) если
база данных открыта в рабочей области  идентифицированной  выражением.
Логическое значение "ложь" (.F.) возвращается в том случае если в ука-
занной рабочей области нет открытой базы данных.

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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Примеры              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
CLOSE ALL
SELECT A
USE customer
SELECT B
USE items
SELECT C
USE salesrep

? USED(1)
.T.
? USED('B')
.T.
? USED(4)
.F.


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є  User-Defined Functions (UDFs)  є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Создает специальные функции.
    Смотри также
    FUNCTION, PROCEDURE, RETURN, PARAMETERS, PARAMETERS(),
    SET PATH, SET UDFPARMS
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Хотя FoxPro и включает около 200 встроенных функций, иногда возни-
кают ситуации,  когда необходимо определить специализированные функции
для конкретных приложений, такие функции называются функциями, опреде-
ленными пользователем (UDF).
    UDF -  это часть FoxPro языка,  которая может включаться во многие
команды FoxPro,  разрешенные в  данной  версии.  Например,  в  команду
BROWSE, открывающую окно Browse, в котором можно просматривать и изме-
нять данные.  Можно включить UDF в BROWSE WALID, для проверки правиль-
ности ввода данных.

    Что такое UDF?
    UDF - Это программы FoxPro, которые возвращают значение в вызываю-
щую  программу (программа в которой стартуется UDF называется вызываю-
щей). Значение может быть возвращено в вызывающую программу при помощи
команды RETURN . UDF может быть выполнена в виде отдельной прог-
раммы, либо в виде процедуры или функции в программе.

    Конструирование UDF.
    Если UDF является функцией или процедурой, первая ее строка должна
содержать команду FUNCTION или PROCEDURE,  которая присваивает ей имя.
Затем  следует  любое  количество  операторов.  Смотри описание команд
FUNCTION и PROCEDURE,  для получения дополнительной информации по соз-
данию функций и процедур в FoxPro.
UDF нельзя присваивать тоже имя, что и встроенной функции, так как эти
имена являются зарезервированными и имеют преимущество, в такой ситуа-
ции будет выполняться встроенная функция FoxPro.

    Возвращаемое значение
    Значение может  быть  возвращено в вызывающую программу при помощи
команды RETURN . Эта команда является последней командой UDF.
    Следите за типом значения,  которое возвращается из UDF в вызываю-
щую программу.  Например, если вызывающая программа ожидает, что функ-
ция вернет числовое значение,  а та в свою очередь возвращает символь-
ное выражение, будет генерироваться сообщение об ошибке.
    Если UDF  не возвращает значение (команда RETURN не включена в UDF
или RETURN не содержит значения), в вызывающую программу автоматически
возвращается логическое значение "истина".

    Передача параметров.
    Данные передаются UDF в форме параметров. Команда PARAMETERS иден-
тифицирует  данные,  передаваемые  UDF и назначает локальные имена для
данных. Содержимое элементов массива можно передавать в UDF.
    Когда параметры  передаются  UDF,  и  функция становится активной,
первая выполняющаяся команда в UDF должна быть оператором  PARAMETERS.
Если UDF процедура или функция, оператор PARAMETERS должен быть первой
выполнимой командой, следующей непосредственно за объявлением FUNCTION
или PROCEDURE.

    Переменное число параметров.
    Число параметров передаваемых UDF может быть меньше числа парамет-
ров, перечисленных в списке оператора PARAMETERS. В этом случае остав-
шиеся параметры инициализируются логическим значением "ложь". Перемен-
ное число параметров может передаваться UDF, число переданных парамет-
ров можно определить при помощи функции PARAMETERS().
    Если число  параметров  передаваемых  UDF больше числа параметров,
перечисленных в списке оператора PARAMETERS, генерируется сообщение об
ошибке "Неверное число параметров"(Wrong number of parameters).
    В следующем простеньком примере функция HOWMANY имеет 10  парамет-
ров. PARAMETERS()  использованная  в  качестве  возвращаемого значения
RETURN, вернет число параметров, переданных UDF.

    FUNCTION howmany
    PARAMETERS n1, n2, n3, n4, n5, n6, n7, n8, n9, n10
    RETURN PARAMETERS()

    ? HOWMANY('A', 'B', 'C', 'D')
    4
    Когда параметры (временные переменные или массивы элементов) пере-
даются UDF, они могут передаваться по значению или по ссылке.
    По умолчанию,  переменные  передаются  пользовательской функции по
значению. Когда переменная передается по значению, значение переменной
может быть изменено процедурой или пользовательской функцией,  но ори-
гинальное значение в вызывающей программе при этом не изменится.
    Когда переменная передается по ссылке и  пользовательская  функция
изменяет ее значение, оригинальное значение этой переменной в вызываю-
щей программе также изменяется.  Для передачи параметров UDF по ссылке
установите перед вызовом функции SET UDFPARMS TO REFERENCE.
    Для получения дополнительной информации по вопросу передачи  пара-
метров смотрите описание PARAMETERS, PARAMETERS(), SET UDFPARMS в дан-
ном руководстве.

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

    UDF в логических выражениях
    Если используется  одна или более UDF в логических выражениях,  то
они оцениваются слева направо.
    Когда два  операнда  (возможно  UDF) сцеплены оператором отношения
AND, оценка выражения заканчивается,  когда операнд принимает значение
"ложь". Например,  две UDF ниже,  LOGICAL1() и LOGICAL2(),  возвращают
логические выражения связанные оператором AND:
    LOGICAL1() AND LOGICAL2()
    Если LOGICAL1() возвращает логическое выражение "истина", оценива-
ется LOGICAL2(). Однако, если LOGICAL1() возвращает логическое выраже-
ние "ложь", LOGICAL2() уже не оценивается.
    Когда два  операнда  (возможно  UDF) сцеплены оператором отношения
OR,  оценка выражения заканчивается,  когда операнд принимает значение
"истина".

    UDF в командах
    Многие FoxPro команды допускают UDF в своих опциях.  UDF позволяют
выполнять процедуры,  которые  могут  проверять  правильность  данных,
высвечивать сообщения,  разрешать/запрещать управление  и  так  далее.
Следующий пример демонстрирует использование UDF в опции VALID команды
BROWSE.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         Пример программы        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Открывается база данных CUSTOMER,  команда BROWSE  открывает  окно
Browse для этой базы данных.  Опция VALID вызывает RIGHTTAX() UDF, ко-
торая проверяет правильность ввода ставки налога в поле TAXRATE.  Пра-
вильное значение ставки налога лежит в диапазоне от 1.0 до 10.0.
    Если ставка налога не попадает  в  указанный  диапазон,  выводится
сообщение с  допустимым  диапазоном  для  ставки налога.  Нельзя пере-
местится на другую запись,  пока не будет введено допустимое  значение
для ставки налога.

CLOSE ALL
USE customer

BROWSE FIELDS taxrate, company, contact VALID:F righttax()

FUNCTION righttax  && Вызывается BROWSE VALID

IF NOT BETWEEN(taxrate, 1.0, 10.0)  && Неверная ставка налога
        WAIT WINDOW 'Enter tax rate from 1.0 to 10.0' NOWAIT
        RETURN 0
ELSE         && допустимая ставка налога
        RETURN .T.  && Можно перейти к другому полю или записи
ENDIF

    Этот пример описывает UDF,  названную VALIDATE(),  в @ ... GET для
проверки правильности ввода поля STATE. Если значение введено неверно,
то UDF  высвечивает  всплывающее  меню допустимых значений для данного
поля, из которых необходимо сделать выбор.

CLOSE ALL
SELECT 0
USE states TAG state
DEFINE POPUP popstate FROM 0,60 TO 15,65 PROMPT FIELD state
ON SELECTION POPUP popstate DO deactpop
SELECT 0
USE customer
CLEAR
@ 1,3  SAY 'Customer: ' GET company
@ 3,3  SAY 'Address: '  GET address1
@ 5,3  SAY 'City: '     GET city
@ 7,3  SAY 'State: '    GET state PICTURE '!!' VALID validate(state)
@ 7,18 SAY 'Zip: '      GET zip
READ
USE
RETURN

*** UDF, которая проверяет правильность аббревиатуры штата ***

FUNCTION validate
PARAMETER stateid
SELECT states
SEEK stateid

IF FOUND()
        SELECT customer
        RETURN .T.
ENDIF

DO WHILE NOT FOUND()
        ACTIVATE POPUP popstate
        SEEK mprompt
ENDDO

SELECT customer
REPLACE state WITH states.state
SHOW GET state
RETURN .T.

PROCEDURE deactpop
STORE PROMPT() TO mprompt
DEACTIVATE POPUP
RETURN

    Где могут использоваться UDF
    UDF могут  использоваться  только в некоторых опциях некоторых ко-
манд. Следующая таблица представляет полный список команд (с опциями),
где можно использовать UDF.
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 Команда                   Опции, поддерживающие UDF
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Все команды            - строка экрана или окна
    поддерживающие опции    - колонка экрана или окна
                           COLOR SCHEME
                           FOR
                           WHILE
----------------------------------------------------------------------
    =                      Пример: nwar=UDF()
----------------------------------------------------------------------
    ?,??                   Выражения , ...,
                           AT
----------------------------------------------------------------------
    ???                    Выражение 
----------------------------------------------------------------------
    @ ... SAY/GET          SAY выражение 
                           DEFAULT
                           ERROR
                           MESSAGE
                           RANGE
                           VALID
                           WHEN
----------------------------------------------------------------------
    @ ... GET
     - Контрольная рамка   DEFAULT
     - Невидимая кнопка    MESSAGE
     - Текстовая кнопка    VALID
     - Селективная кнопка  WHEN
----------------------------------------------------------------------
    @ ... GET              DEFAULT
     - Список всплывающих  MESSAGE
       меню                RANGE
                           VALID
                           WHEN
----------------------------------------------------------------------
    @ ... GET              DEFAULT
     - Область             ERROR
       редактирования      MESSAGE
        текста             VALID
                           WHEN
----------------------------------------------------------------------
    AVERAGE                Список выражений 
----------------------------------------------------------------------
    BROWSE                 FIELDS  - вычисляемые поля
    CHANGE                 :V - проверка
    EDIT                   :E - ошибка
                           :P - шаблон
                           :H - название
                           :W - когда
                           ERROR
                           FOR
                           TIMEOUT
                           TITLE
                           VALID
                           WHEN
                           Форматный файл в BROWSE, если указан
----------------------------------------------------------------------
    DEFINE BAR             PROMPT
    DEFINE PAD             MARK
                           MESSAGE
                           SKIP FOR
----------------------------------------------------------------------
    DEFINE MENU            MARK
                           MESSAGE
----------------------------------------------------------------------
    DEFINE POPUP           FOOTER
                           MARK
                           MESSAGE
                           PROMPT FIELD
                           TITLE
----------------------------------------------------------------------
    DEFINE WINDOW          FILL
                           FOOTER
                           TITLE
----------------------------------------------------------------------
    DISPLAY FIELDS         Вычисляемые поля
    LIST FIELDS
----------------------------------------------------------------------
    DO                     WITH 
----------------------------------------------------------------------
    DO CASE                CASE ,
----------------------------------------------------------------------
    DO WHILE               WHILE 
----------------------------------------------------------------------
    EVALUATER()            Оценка производится UDF
----------------------------------------------------------------------
    FOR                    Начальное и конечное значение счетчика
                            и 
----------------------------------------------------------------------
    INDEX                  Индексное выражение 
----------------------------------------------------------------------
    IF                     Условие "если" 
----------------------------------------------------------------------
    KEYBOARD               , в буфере
----------------------------------------------------------------------
    Ярлыки (Lables)        Выражения полей
----------------------------------------------------------------------
    PLAY MACRO             TIME 
----------------------------------------------------------------------
    READ                   ACTIVATE
                           DEACTIVATE
                           SHOW
                           TIMEOUT
                           VALID
                           WHEN
----------------------------------------------------------------------
    REPLACE                WITH ,,...
----------------------------------------------------------------------
    Отчет(Report)          Выражения для полей
                           Переменные отчета
                           Выражения для групп
----------------------------------------------------------------------
    RETURN                 Возвращаемое выражение 
----------------------------------------------------------------------
    SET COLOR OF SCHEME    Выражение для второй цветовой схемы 
----------------------------------------------------------------------
    STORE                  Сохраняемое выражение 
----------------------------------------------------------------------
    SUM                    Список выражений 
----------------------------------------------------------------------
    WAIT                   TIMEOUT выражение 
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               VAL               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращение числовое значение символьного выражения,  заполненного
цифрами.
    Синтаксис
    VAL()
    Возвращаемое значение
    Числовое
    Смотри также
    SET DECIMALS, STR()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция VAL()  возвращает численное значение,  передающее значение
цифр,  содержащихся в символьной строке . Перемещаясь слева нап-
раво, VAL() процесс доходит до не цифрового символа (лидирующие пробе-
лы игнорируются). Если первый символ выражения  не является циф-
рой, функция VAL() вернет ноль (0).

    Параметры
    
    Включает символьное  выражение    состоящее из цифр в VAL().
Возвращается соответствующее числовое значение.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Примеры             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
STORE '12' TO A
STORE '13' TO B

? VAL(A) + VAL(B)
25.00

STORE '1.25E3' TO C
? 2 * VAL(C)
2500.00


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             VARREAD             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает имя текущего поля или объекта.
    Синтаксис
    VARREAD()
    Возвращаемое значение
    Символьное
    Смотри также
    @ ... SAY/GET, BROWSE, CHANGE, EDIT, SYS(18)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Эта функция  возвращает  имя переменной памяти,  массива или поля,
которые используются для создания текущего GET поля или объекта.  Если
Browse,  Change или Edit окно активно,  возвращается имя текущего поля
(первая буква заглавная).  Если GET поле или объект активны, возвраща-
ется  имя переменной памяти,  массива элементов или поля базы данных в
заглавных буквах.
    VARREAD ()  идентична  функции  SYS (18) и может быть использована
для передачи имени текущего поля или объекта в пользовательскую проце-
дуру. Процедура  при  этом может поддерживать контекстную помощь,  как
это показано в следующем примере.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         Пример программы        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
ON KEY LABEL F1 DO Help WITH VARREAD()
SET TALK OFF
USE customer
SCATTER TO temp
DEFINE WINDOW input FROM 6,10 to 18,70 PANEL
ACTIVATE WINDOW input
@ 1,3 SAY 'Customer: ' GET company
@ 3,3 SAY 'Address: ' GET address1
@ 5,3 SAY 'City: '  GET city
@ 7,3 SAY 'State: ' GET state
@ 7,18 SAY 'Zip: ' GET zip
@ 9,07 SAY 'Press  to cancel or  for help'
READ
IF LASTKEY() = 27
   GATHER FROM temp
ENDIF
DEACTIVATE WINDOW input
ON KEY LABEL F1
DISPLAY
RETURN

*** Help Procedure ***

PROCEDURE Help
PARAMETERS fieldname
DO CASE
        CASE fieldname = 'COMPANY'
                WAIT WINDOW 'Enter the company name' NOWAIT
        CASE fieldname = 'ADDRESS1'
                WAIT WINDOW 'Enter the entire street address' NOWAIT
        CASE fieldname = 'CITY'
                WAIT WINDOW 'Enter the city name' NOWAIT
        CASE fieldname = 'STATE'
                WAIT WINDOW 'Enter a two character state abbreviation' NOWAIT
        CASE fieldname = 'ZIP'
                WAIT WINDOW 'Enter the five digit Zip code' NOWAIT
ENDCASE
RETURN


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             VERSION             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает номер версии FoxPro
    Синтаксис
    VERSION()
    Возвращаемое значение
    Символьное
    Смотри также
    GETENV(), OS()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция VERSION () возвращает символьную строку,  которая содержит
номер версии текущего исполняемого варианта FOXPRO.
    Эта функция может быть использована для определения условий приме-
нения ваших прикладных программ.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            Пример               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
? VERSION ( )
FoxPro 2.00


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               WAIT              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Ожидание ввода данных с клавиатуры
    Синтаксис
    WAIT
      []
      [TO ]
      [WINDOW [NOWAIT]]
      [TIMEOUT ] [CLEAR]
    Замечания
    Расширена в FoxPro 2.0: Ключ NOWAIT для опции WINDOW
    Смотри также
    ACCEPT
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Команда  WAIT приостанавливает работу до ввода с кла-
виатуры символа.

    Дополнительные опции
    
    Можно указать собственное WAIT сообщение  в  необязательной  опции
.  Если в команде не используется выражение , то на экране
отображается системное сообщение "Press any key to continue..."  (Наж-
мите любую клавишу для продолжения...), принятое по умолчанию. Выраже-
ние  может быть строкой символов или символьной переменной  па-
мяти.  Если  выражение    представлено строкой символов,  то эта
строка должна быть ограничена либо кавычками (одинарными  или  двойны-
ми), либо квадратными скобками.

    TO 
    Код символа может быть сохранен, если в состав команды введен нео-
бязательный параметр TO  (переменная памяти); в противном слу-
чае, код введенного символа будет потерян.
    Команда в  формате  WAIT  TO   заносит в переменную памяти
 символ, введенный с клавиатуры. Если указанная переменная па-
мяти  не была задана ранее,  она будет создана при выполнении команды.
Если с клавиатуры введен символ возврата каретки (carriage return) или
другой непечатный символ, то он будет сохранен как символ NULL (нуль).

    WINDOW
    По умолчанию определено, что команда WAIT выводит свое сообщение в
текущем  рабочем окне вывода или на экран.  При задании в этой команде
необязательного ключевого слова WIN- DOW ее сообщение будет выведено в
окне  системных сообщений в верхнем правом углу экрана.  Нажав клавишу
Ctrl или Shift,  можно временно убрать это окно. Его также можно пере-
местить в другое место экрана с помощью мыши или нажав комбинацию кла-
виш Ctrl-F7.

    CLEAR
    Убирает системное  окно или сообщение WAIT  NOWAIT с экра-
на.
    Например, если SET TALK WINDOW, отклик от сортировки, индексирова-
ния и т.п.  направляется в системное окно, в правом верхнем углу экра-
на.  Окно  исчезает с экрана при нажатии клавиши или перемещении мыши.
Для очистки окна из программы, необходимо подать команду WAIT CLEAR.

    NOWAIT
    Создает WAIT WINDOW сообщение, которое выглядит подобно системному
сообщению FoxPro,  которое появляется в верхнем  правом  углу  экрана.
Например, после неудачного поиска в тексте или окне Browse, появляется
системное сообщение "Not Found"(Не найден).  Как и в случае системного
сообщения, достаточно нажать на кнопку,  или переместить мышь, сообще-
ние исчезнет.При этом нажатый символ не пересылается (он будет пересы-
латься, только если отсутствует NOWAIT).

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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         Пример программы        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
SET TALK OFF
CLEAR
USE customer
STORE .F. TO mexit
DEFINE WINDOW mskip FROM 9,30 TO 17,50 DOUBLE
DO WHILE NOT mexit
   ACTIVATE WINDOW mskip
   @ 1,5 PROMPT 'Forward  '
   @ 3,5 PROMPT 'Backward '
   @ 5,5 PROMPT 'Quit     '
   MENU TO mchoice
   DEACTIVATE WINDOW mskip
   DO CASE
     CASE mchoice = 1
         SKIP
         IF EOF()
            WAIT 'End of file encountered' WINDOW
            SKIP -1
         ENDIF
     CASE mchoice = 2
          SKIP - 1
         IF BOF()
            WAIT 'Beginning of file encountered' WINDOW
            GO TOP
         ENDIF
     CASE MCHOICE = 3
         STORE .T. TO mexit
         LOOP
   ENDCASE
   @ 20,10 SAY 'Company: ' + company
ENDDO



ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             WBORDER             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает логическое значение "истина", если у окна есть рамка
    Синтаксис
    WBORDER([])
    Параметры
     - имя окна
    Возвращаемое значение
    Логическое
    Замечания
    Новая для FoxPro 2.0
    Смотри также
    ACTIVATE WINDOW, DEFINE WINDOW
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Эта функция  возвращает  логическое  значение "истина",  если окно
имеет рамку, в противном случае возвращается значение "ложь". По умол-
чанию окно  имеет рамку.  Для создания окна без рамки,  включите опцию
NONE  в команду DEFINE WINDOW, при создании окна.

    Дополнительные опции
    
    Если указать  в WBORDER(),  она возвратит  логическое
значение "истина",  если  данное окно имеет рамку.  Если окно не имеет
рамки, или указанного окна не  существует,  функция  возвращает  логи-
ческое значение "ложь"


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             WCHILD              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает количество и имя дочернего окна
    Синтаксис
    WCHILD([][])
    Параметры
     Имя родительского окна
      0, для верхнего окна
             не 0, для остальных дочерних окон
    Возвращаемое значение
    Символьное или Числовое
    Замечания
    Новая для FoxPro 2.0
    Смотри также
    ACTIVATE WINDOW, DEFINE WINDOW, WPARENT()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Эта функция  возвращает  либо количество либо имя дочернего окна в
порядке их вложения в родительское окно.
    Вы можете  создать  (родительское) окно и поместить другие (дочер-
ние) окна внутри него.  Включив опцию IN или IN WINDOW при определении
создаваемых окон,  Вы  тем  самым  создаете дочерние окна внутри роди-
тельского окна.  Дочернее окно созданное внутри родительского окна  не
может перемещаться  за  его пределы.  Если родительское окно перемеща-
ется, то дочернее перемещается вместе с ним.
    Если Вы  вызываете  функцию без аргументов,  возвращается дочернее
окно для активного в настоящий момент времени окна.

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

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

    ВНИМАНИЕ
    Если активным был экран,  все окна являются дочерними по отношению
к экрану. Серия вызовов функции WCHILD() с ненулевым значением возвра-
тит имя любого активного окна.

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


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              WCOLS              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращаемое число колонок в окне.
    Синтаксис
    WCOLS([])
    Возвращаемое значение
    Числовое
    Смотри также
    SCOLS(), SROWS(), WROWS(), WLCOL(), WLROW()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция WCOLS() возвращает число колонок в окне.

    Параметры
    
    Если  не указано, возвращается число колонок активно-
го выходного окна.  Если активных окон нет, возвращается число колонок
экрана.  Число колонок экрана можно также возвратить указав в качестве
 пустую строку.
    Заметим, что пустая строка может использоваться для указания экра-
на в функциях, которые возвращают размеры или положение окна (WLCOL(),
WLROW(), WCOLS(), WROWS(), и т.д.).
    Если вы укажите  в WCOLS(),  возвращается число коло-
нок в заданном окне.  WCOLS() можно использовать для определения числа
колонок в системных окнах FoxPro.
    Если системное  окно  FoxPro (Command,  View window,  ASCII Chart,
Browse ... ) было открыто и является видимым или скрытым (его имя есть
в  меню  Window),  можно указать это окно в WCOLS().  Если указать имя
закрытого  окна,   появится   предупреждение   "WINDOW   hasnot   been
defined."(Окно не определено).  Окно Debug является исключением.  Даже
если оно закрыто, его имя можно указывать в качестве параметра функции
WCOLS(), если оно хотя бы однажды открывалось.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         Пример программы        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Центрируем короткое  выходное  сообщение,  в последней строке окна
неизвестного размера.

DO SendMesg WITH 'Message', WCOLS(), WROWS() - 1
*** SendMesg ***
PROCEDURE SendMesg
PARAMETERS msg_string, w_cols, row
STORE (w_cols - LEN(msg_string))/2 TO col
@ row, col SAY msg_string
RETURN



ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             WEXIST              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает логическое значение "истина"(.Т.),  если указанное окно
было определено.
    Синтаксис
    WEXIST()
    Возвращаемое значение
    Логическое
    Смотри также
    ACTIVATE WINDOW, DEFINE WINDOW, WONTOP(), WOUTPUT(), WVISIBLE()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция WEXIST()  возвращает  логическое  значение "истина" (.T.),
если окно было определено командой DEFINE,  в противном случае возвра-
щается  логическое  значение  "ложь"(.F.).  Окно не обязательно должно
быть активным или видимым в текущий  момент,  для  получения  значения
"истина".

    Дополнительные опции
    
    Указывает имя окна в WEXIST().  Если окно  было опре-
делено функция возвращает логическое значение "истина" (.T.), если ок-
но не было определено командой DEFINE возвращается логическое значение
"ложь"(.F.).
    Можно включать имена системных окон FoxPro (Command,  View window,
ASCII Chart, Browse ... ), если окно является видимым или скрытым (его
имя есть в меню Window),  WEXIT() возвратит"истина".  Если указать имя
закрытого окна, WEXIT() возвратит "ложь".
появится   предупреждение   "WINDOW   hasnot   been
defined."(Окно не определено).
    Окна Command и Debug являются исключениями. Для окна Command всег-
да возвращается "истина". Если окно Debug хотя бы однажды открывалось,
будет возвращаться "истина", даже если в настоящий момент оно закрыто.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Примеры             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
DEFINE WINDOW screen1 FROM 10,10 TO 20,69
DEFINE WINDOW screen2 FROM 1,0 TO 19,79
? WEXIST('screen1')
.T.
STORE 'screen2' TO win_name
? WEXIST(win_name)
.T.
? WEXIST('screen3')
.F.


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              WLCOL              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращаемое положение колонки окна.
    Синтаксис
    WCOLS([])
    Возвращаемое значение
    Числовое
    Смотри также
    SET DISPLAY, WCOLS(), WLROW(), WROWS()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция WLCOL() определяет номер колонки для левого верхнего  угла
окна. Этот номер всегда отсчитывается относительно экрана.
    Отметим, что получаемое с помощью функции WLCOL() значение зависит
от текущего режима работы видеодисплея. Отметим также, что окна FoxPro
могут располагаться вне экрана.  В этом случае,  если окно расположено
слева  от  экрана,  будет возвращаться отрицательный результат функции
WLCOL().  Если окно расположено справа от экрана,  то функция  WLCOL()
выдаст положительное значение,  которое,  однако,  будет больше ширины
экрана.

    Параметры
    
    Если  не указано,  возвращается номер колонки для ле-
вого  верхнего угла активного выходного окна.  Если активных окон нет,
возвращается положение колонки экрана.  Это значение всегда  равно  0.
Если пустая строка указана в качестве имени окна ,  возвращается поло-
жение колонки экрана (0).
    Заметим, что пустая строка может использоваться для указания экра-
на в функциях, которые возвращают размеры или положение окна (WLCOL(),
WLROW(), WCOLS(), WROWS(), и т.д.).
    Если вы укажите  в  WLCOL(),  возвращается  положение
колонки заданного окна. WLCOL() можно использовать для определения по-
ложения колонки системных окон FoxPro.
    Если системное  окно  FoxPro (Command,  View window,  ASCII Chart,
Browse ... ) было открыто и является видимым или скрытым (его имя есть
в  меню  Window),  можно указать это окно в WLCOL().  Если указать имя
закрытого  окна,   появится   предупреждение   "WINDOW   hasnot   been
defined."(Окно не определено).  Окно Debug является исключением.  Даже
если оно закрыто, его имя можно указывать в качестве параметра функции
WLCOL(), если оно хотя бы однажды открывалось.



ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              WLAST              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает логическое значение "истина"(.Т.),  если указанное окно
было активным перед текущим окном.
    Синтаксис
    WLAST([])
    Возвращаемое значение
    Символьное или Логическое
    Смотри также
    ACTIVATE WINDOW,  DEFINE WINDOW,  WEXIST(),  WONTOP(),  WOUTPUT(),
    WVISIBLE()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция WEXIST()  возвращает  логическое  значение "истина" (.T.),
если окно было активным перед текущим окном,  в противном случае возвра-
щается  логическое  значение  "ложь"(.F.).
    Можно также определить окно,  которое было активным перед  текущим
окном.

    Дополнительные опции
    
    Указывает имя окна в WEXIST().  Если окно  было опре-
делено функция возвращает логическое значение "истина" (.T.), если ок-
но не было определено командой DEFINE возвращается логическое значение
"ложь"(.F.).
    Если окно, которое было активным перед текущим окном, являлось ок-
ном Отладки,  Трассировки или  Командным  окном,  возвращается  пустая
строка. При отладке программы,  которая использует WLAST(), невозможно
выдвинуть эти окна вперед.



ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              WLROW              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращаемое положение строки окна относительно экрана.
    Синтаксис
    WLROW([])
    Возвращаемое значение
    Числовое
    Смотри также
    SET DISPLAY, WCOLS(), WLCOL(), WROWS()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция WLROW()  определяет  номер  строки для верхней рамки окна.
Этот номер всегда отсчитывается относительно экрана.
    Отметим, что получаемое с помощью функции WLROW() значение зависит
от текущего режима работы видеодисплея. Отметим также, что окна FoxPro
могут располагаться вне экрана.  В этом случае,  если окно расположено
ниже  экрана,  будет  возвращаться  отрицательный  результат   функции
WLCOL(). Если окно расположено снизу от экрана, то функция WLROW() вы-
даст положительное значение,  которое, однако, будет больше высоты эк-
рана.

    Параметры
    
    Если   не указано,  возвращается номер верхней рамки
активного выходного окна. Если активных окон нет, возвращается положе-
ние верхней строки экрана. Это значение всегда равно 0.
    Заметим, что пустая строка может использоваться для указания экра-
на в функциях, которые возвращают размеры или положение окна (WLCOL(),
WLROW(), WCOLS(), WROWS(), и т.д.).
    Если вы  укажите   в WLROW(),  возвращается положение
верхней рамки заданного окна. WLROW() можно использовать для определе-
ния положения верхней рамки системных окон FoxPro.
    Если системное  окно  FoxPro (Command,  View window,  ASCII Chart,
Browse ... ) было открыто и является видимым или скрытым (его имя есть
в  меню  Window),  можно указать это окно в WLROW().  Если указать имя
закрытого  окна,   появится   предупреждение   "WINDOW   hasnot   been
defined."(Окно не определено).  Окно Debug является исключением.  Даже
если оно закрыто, его имя можно указывать в качестве параметра функции
WLROW(), если оно хотя бы однажды открывалось.



ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            WMAXIMUM             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает логическое значение "истина"(.Т.),  если указанное окно
максимально.
    Синтаксис
    WMAXIMUM([])
    Возвращаемое значение
    Логическое
    Смотри также
    DEFINE WINDOW, WMINIMUM(), ZOOM WINDOW
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Окно можно расширить таким образом,  что оно будет  занимать  весь
экран. Достигнуть этого можно выбрав опцию Zoom  из всплывающего меню
Window,  нажатием клавиш Ctrl+F10, нажатием кнопки мыши в на управле-
ние разверткой или командой ZOOM WINDOW. Пользовательские окна создан-
ные командой DEFINE WINDOW могут быть максимизированы,  только если  в
их описание было задействовано ключевое слово ZOOM.
    Функция WMAXIMUM() возвращает логическое значение  "истина",  если
указанное окно максимизировано,  в противном случае возвращается логи-
ческое значение "ложь".

    Параметры
    
    Если  не включено в WMAXIMUM(),  логическое  значение
возвращается для текущего активного окна.
    Для определения,  является  ли  заданное  окно  максимизированным,
включите  имя  требуемого окна в WMAXIMUM().  Можно также включить имя
системного окна  FoxPro  (Command,  View,  ASCII,  Browse  и  т.д.)  в
WMAXIMUM().



ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            WMINIMUM             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает логическое значение "истина"(.Т.),  если указанное окно
минимально.
    Синтаксис
    WMINIMUM([])
    Возвращаемое значение
    Логическое
    Смотри также
    DEFINE WINDOW, WMAXIMUM(), ZOOM WINDOW
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Окно можно минимизировать,  только если имя окна или его заголовок
видимы. Достигнуть этого можно выбрав опцию Zoom  из всплывающего ме-
ню Window,  нажатием клавиш Ctrl+F9, нажатием кнопки мыши в на управ-
ление разверткой или командой ZOOM WINDOW.  Пользовательские окна соз-
данные командой DEFINE WINDOW могут быть минимизированы, только если в
их описание было задействовано ключевое слово MINIMIZE.
    Функция WMINIMUM() возвращает логическое значение  "истина",  если
указанное  окно минимизировано,  в противном случае возвращается логи-
ческое значение "ложь".

    Параметры
    
    Если  не включено в WMINIMUM(),  логическое  значение
возвращается для текущего активного окна.
    Для определения,  является  ли  заданное  окно  минимизированным,
включите  имя  требуемого окна в WMINIMUM().  Можно также включить имя
системного окна  FoxPro  (Command,  View,  ASCII,  Browse  и  т.д.)  в
WMINIMUM().


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              WONTOP             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает логическое значение "истина" (.T.), если названное окно
является передним.
    Синтаксис
    WONTOP([])
    Возвращаемое значение
    Символьное или Логическое
    Смотри также
    ACTIVATE WINDOW, DEFINE WINDOW, WEXIST(), WOUTPUT(), WVISIBLE()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция WONTOP() возвращает логическое значение "истина" (.T.),
если названное окно является передним. Если окно не является передним,
или указанное  окно  не  существует,  возвращается логическое значение
"ложь".

    Параметры
    
    Если имя окна  не указывается,  то  возвращается  имя
текущего переднего окна.
    Для определения, является ли указанное окно передним, включите его
имя  в  WONTOP().  Можно  также  включить  имя  системного окна FoxPro
(Command, View, ASCII, Browse и т.д.) в WONTOP().
    Если окно,  которое  было передним окном,  являлось окном Отладки,
Трассировки или Командным окном,  возвращается пустая строка.  При от-
ладке программы, которая использует WONTOP(), невозможно выдвинуть эти
окна вперед.
        Name of window.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         Пример программы        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
DEFINE WINDOW screen1 FROM 10,10 TO 20,69 CLOSE FLOAT
DEFINE WINDOW screen2 FROM 1,0 TO 19,79 CLOSE FLOAT
ACTIVATE WINDOW screen1
ACTIVATE WINDOW screen2
* <Следующие команды позволяют пользователь переместить или скрыть окно>
IF NOT WONTOP('screen1')
        ACTIVATE WINDOW screen1
ENDIF



ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             WOUTPUT             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает логическое значение "истина" (.T.), если названное окно
является текущим выходным окном.
    Синтаксис
    WOUTPUT([])
    Возвращаемое значение
    Символьное или Логическое
    Смотри также
    ACTIVATE WINDOW, DEFINE WINDOW, WEXIST(), WONTOP(), WVISIBLE()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция WOUTPUT() возвращает логическое значение "истина" (.T.),
если названное окно является текущим выходным окном. Последнее пользо-
вательское окно,  активизированное командой ACTIVATE WINDOW,  является
текущим окном вывода.

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

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         Пример программы        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
DEFINE WINDOW screen1 FROM 10,10 TO 20,69 CLOSE FLOAT
DEFINE WINDOW screen2 FROM 0,0 TO 19,79 CLOSE FLOAT
ACTIVATE WINDOW screen1
ACTIVATE WINDOW screen2
* <Следующие команды позволяют пользователь изменить окно вывода>
IF WOUTPUT('screen1')
        ? 'Screen 1 is the current output window.'
ELSE
        IF WOUTPUT('screen2')
                ? 'Screen 2 is the current output window.'
        ENDIF
ENDIF



ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             WPARENT             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Эта функция возвращает имя родительского окна.
    Синтаксис
    WPARENT([])
    Возвращаемое значение
    Символьное
    Замечания
    Новая для FoxPro 2.0
    Смотри также
    ACTIVATE WINDOW, DEFINE WINDOW, WCHILD()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Эта функция возвращает имя родительского окна для дочернего окна.
    Вы можете  создать  (родительское) окно и поместить другие (дочер-
ние) окна внутри него.  Включив опцию IN или IN WINDOW при определении
создаваемых окон,  Вы  тем  самым  создаете дочерние окна внутри роди-
тельского окна.  Дочернее окно созданное внутри родительского окна  не
может перемещаться  за  его пределы.  Если родительское окно перемеща-
ется, то дочернее перемещается вместе с ним.

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



ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              WREAD              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает логическое значение "истина" (.T.), если названное окно
вовлекается в текущую команду READ.
    Синтаксис
    WREAD([])
    Возвращаемое значение
    Логическое
    Смотри также
    RDLEVEL(), READ, READKEY(), WONTOP()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    WREAD() возвращает  логическое значение "истина" (.T.),  если наз-
ванное окно участвует в текущей команде READ.  Если указанное окно  не
участвует в текущей команде READ или его не существует,  функция возв-
ращает логическое значение "ложь".
    Окно может привлекаться к участию в READ при помощи:
     Включением заголовка окна в команду READ с  опцией  WITH.  Окна,
которые обычно  не  участвуют в READ,  могут включаться в команду READ
при помощи опции WITH.  Окна просмотра (Browse),  окна  редактирования
текста и  полей примечаний,  системные окна FoxPro и им подобные могут
включаться в READ при помощи опции WITH.
     Порождением  команды  @ ...  GET в окне.  Команда READ может за-
действовать множество окон,  порождением команд @ ... GETs более чем в
одном окне, а затем порождением самой команды READ.

    Параметры
    
    Для определения вовлечено ли окно в текущую команду READ, включите
имя окна  в функцию WREAD().
    Если не указывать имя окна,  WREAD() возвратит логическое значение
для текущего переднего окна (То есть окна, имя которого можно получить
при помощи функции WONTOP()).



ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              WROWS              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает количество строк в окне.
    Синтаксис
    WROWS([])
    Возвращаемое значение
    Числовое
    Смотри также
    SCOLS(), SROWS(), WCOLS(), WLCOL(), WLROW()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция WROWS() возвращает количество строк в окне..

    Параметры
    
    Если  не указано,  возвращается число строк активного
выходного окна. Если активных окон нет, возвращается число строк экра-
на.  Число строк экрана  можно  также  возвратить  указав  в  качестве
 пустую строку.
    Заметим, что пустая строка может использоваться для указания экра-
на в функциях, которые возвращают размеры или положение окна (WLCOL(),
WLROW(), WCOLS(), WROWS(), и т.д.).
    Если вы укажите  в WROWS(),  возвращается число строк
в заданном окне.  WROWS() можно  использовать  для  определения  числа
строк в системных окнах FoxPro.
    Если системное окно FoxPro (Command,  View  window,  ASCII  Chart,
Browse ... ) было открыто и является видимым или скрытым (его имя есть
в меню Window),  можно указать это окно в WROWS().  Если  указать  имя
закрытого   окна,   появится   предупреждение   "WINDOW   hasnot  been
defined."(Окно не определено).  Окно Debug является исключением.  Даже
если оно закрыто, его имя можно указывать в качестве параметра функции
WROWS(), если оно хотя бы однажды открывалось.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         Пример программы        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Центрируем короткое  выходное  сообщение,  в последней строке окна
неизвестного размера.

DO SendMesg WITH 'Message', WCOLS(), WROWS() - 1
*** SendMesg ***
PROCEDURE SendMesg
PARAMETERS msg_string, w_cols, row
STORE (w_cols - LEN(msg_string))/2 TO col
@ row, col SAY msg_string
RETURN



ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              WTITLE             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает заголовок назначенный окну.
    Синтаксис
    WTITLE([])
    Возвращаемое значение
    Символьное
    Смотри также
    ACTIVATE  WINDOW, DEFINE WINDOW, WEXIST(), WLAST(), WONTOP(),
    WOUTPUT(), WREAD()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Пользовательским окнам можно присвоит заголовок,  который  появля-
ется в верхней рамке экрана. Если окно создано с использованием коман-
ды DEFINE WINDOW,  можно включить опцию TITLE для  создания  заголовка
окна.  Все системные окна FoxPro (Browse,  Command,  ASCII,  ...  ) по
умолчанию имеют заголовок.
    WTITLE() может использоваться для получения заголовка окна.
Если  не включается в  WTITLE(),  возвращается  заголовок
переднего окна.  Если передним является окно Отладки,  Трассировки или
Командное окно, функция возвращает пустую строку.

    Параметры
    
    Для возвращения заголовка указанного окна включите  в
WTITLE().  Если указать пользовательское окно (окно созданное командой
DEFINE WINDOW), вернется заголовок окна, назначенный ему опцией TITLE.
    Когда подается  команда  BROWSE  WINDOW для создания окна Browse с
характеристиками пользовательского окна,  будет возвращаться заголовок
пользовательского окна, если окно Browse не имеет заголовка. Если окно
Browse имеет заголовок, то будет возвращен заголовок окна Browse.

    Заголовки и имена окон
   ДДДДДДДДДДДДДДДДДДДДДДД
    Здесь приводится некоторая информация о заголовках, которые назна-
чаются пользовательским   окнам,   системным   окнам  и  окнам  Browse
(просмотра). Заголовки присваиваются окнам следующим образом:
    Пользовательские окна получают свои имена из команд DEFINE WINDOW.
После команды DEFINE WINDOW ,    становится
именем  окна.  Существует  разница между именем и заголовком окна.  По
умолчанию пользовательское окно не имеет заголовка.  Если он указан --
DEFINE WINDOW  TITLE  -- ,  то  указывает за-
головок, который появляется в верхней рамке окна.
    Заметим, что  только  в пользовательские окна,  созданные командой
DEFINE WINDOW,  может быть направлен вывод.  Пользовательские окна  не
включают окна просмотра, системные окна, окна редактирования, окна от-
четов и так далее.
    Системные окна  получают свои имена из заголовков.  Системные окна
являются частью интерфейса FoxPro.  Примеры системных окон -  Command,
View, Trace, Filer, Help, Puzzle и так далее.
   Окна CREATE или MODIFY COMMAND,  REPORT, LABEL и FILE получают свои
имена от имен создаваемых или модифицируемых файлов.  Имена окон вклю-
чают и расширение файла, если оно присутствует.
    Окно Browse  получает свое имя из заголовка окна.  Имя и заголовок
этого окна получается одним из трех методов.  По умолчанию именем окна
Browse   является   псевдоним  базы  данных.  Если  в  команде  BROWSE
присутствует опция WINDOW,  имя окна Browse совпадает с заголовком (не
путать  с  именем)  указанного пользовательского окна.  Если пользова-
тельское окно не имеет заголовка, имя окна совпадает с псевдонимом ба-
зы данных.  Если опция TITLE присутствует в команде BROWSE, то указан-
ный в ней заголовок становится именем окна Browse.  Если  указаны  обе
опции TITLE и WINDOW, заголовок указанный в опции TITLE команды BROWSE
становится именем окна.

    Некоторые дополнительные замечания по именам окон

    Если не уверенности в имени окна,  необходимо выбрать  всплывающее
меню Window, где перечислены все окна.
    Текущее окно отмечено в списке символом диамонд (ромб). Если теку-
щий  вывод направлен на экран и не определено ни одно пользовательское
окно, символ диамонд отсутствует во всплывающем меню Window.
    После подачи  команды  BROWSE  WINDOW  существуют два
окна.  Окно Browse,  взявшее атрибуты пользовательского окна, является
разделенным  окном.  Если окно активно перед запуском команды BROWSE и
Вы не указываете опцию WINDOW, окно Browse будет брать атрибуты актив-
ного  окна.  Можно  избежать  этого,  включив  опцию  NORMAL в команду
BROWSE.
    Имена окон,  содержащие пробелы могут трансформироваться в команды
или  функции,  поддерживающие  имена  окон  (MOVE  WINDOW,  DEACTIVATE
WINDOW, WONTOP(), и т.д.), указанием части имени окна, которая начина-
ется с первого символа и заканчивается последним перед пробелом. Поль-
зовательские  окна не могут содержать пробелов в своих именах в отличии
от окон Browse и системных окон.  Окно Browse с именем 'Invoice Entry'
может быть перемещено командой:
MOVE WINDOW invoice BY 1,1.


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є            WVISIBLE             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает логическое значение "истина" (.T.), окно активизировано
и видимо на экране
    Синтаксис
    WVISIBLE()
    Возвращаемое значение
    Логическое
    Смотри также
    ACTIVATE WINDOW, DEFINE WINDOW, WEXIST(), WLAST(), WONTOP(), WOUTPUT()
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция WVISIBLE () возвращает логическое значение "истина" (.T.),
указанное  окно  является  активным  и  видимым на экране (не является
скрытым),  и возвращает логическое значение в противном случае "ложь",
если оно  было  деактивизировано или убрано с экрана.  Смотри описание
команд ACTIVATE WINDOW,  DEACTIVATE WINDOW,  SHOW WINDOW,  HIDE WINDOW
для получения дополнительной информации.

    Параметры
    
    Для описания указанного окна, если оно видимо включается указанная
опция. Если включается пустая строка,  функция всегда возвращает логи-
ческое значение  "истина".  Пустая строка в оконных функциях описывает
экран.
    Если системное  окно  FoxPro (Command,  View window,  ASCII Chart,
Browse ... ) было открыто и является видимым или скрытым (его имя есть
в меню Window),  можно указать это окно в WVISIBLE(). Если указать имя
закрытого  окна,   появится   предупреждение   "WINDOW   hasnot   been
defined."(Окно не определено).  Окно Debug является исключением.  Даже
если оно закрыто, его имя можно указывать в качестве параметра функции
WVISIBLE(), если оно хотя бы однажды открывалось.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є         Пример программы        є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
DEFINE WINDOW screen1 FROM 10,10 TO 20,69 CLOSE FLOAT
DEFINE WINDOW screen2 FROM 0,0   TO 19,79 CLOSE FLOAT
ACTIVATE WINDOW screen1
ACTIVATE WINDOW screen2
* <Следующие команды позволяют пользователю закрыть выходное окно>
* Если окно было закрыто, оно больше не существует
IF NOT WEXIST('screen1')
        DEFINE WINDOW screen1 FROM 10,10 TO 20,69 CLOSE FLOAT
ENDIF
* Если окно было скрыто
IF NOT WVISIBLE('screen1')
        ACTIVATE WINDOW screen1
ENDIF



ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є              YEAR               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Возвращает год из выражения для даты.
    Синтаксис
    YEAR()
    Возвращаемое значение
    Числовое
    Смотри также
    я0DATE(), DOW(), SET CENTURY
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Функция YEAR()  возвращает  численное  выражение года из выражения
для даты.  Значение всегда возвращается вместе  со  столетием.  Причем
установка SET CENTURY не оказывает влияния на возвращаемое значение.

    Параметры
    
    Включает выражение даты . Выражение может быть функцией, ко-
торая возвращает дату,  переменной памяти типа даты, элементом массива
или полем базы данных.  Также выражение может быть строкой литеральных
данных (например,{06/09/91}).

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Примеры             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
? YEAR(DATE())
1991
? MOD(YEAR(DATE()), 4)
3


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є               ZAP               є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Удаление всех записей из базы данных
    Синтаксис
    ZAP
    Смотри также
    DELETE, PACK
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Команда ZAP удаляет все записи из активной базы данных,  не разру-
шая только ее структуру. Команда ZAP аналогична последовательности ко-
манд DELETE ALL и PACK, но выполняется намного быстрее.
    Если установлено SET SAFETY ON, то у оператора будет запрашиваться
подтверждение операции удаления всех записей из файла базы данных.

ВНИМАНИЕ:
       Записи,  удаленные  из  активной базы данных командой
ZAP, не смогут быть восстановлены командой RECALL. Они  про-
падают навсегда.


ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є           ZOOM WINDOW           є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
    Изменение размеров пользовательских и системных окон.
    Синтаксис
    ZOOM WINDOW  MIN [AUTO] | MAX | NORM
     [AT  | FROM 
     [SIZE  | TO ]]
    Замечания
    Новая для FoxPro 2.0
    Смотри также
    ACTIVATE WINDOW
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
    Описание
    Эта команда позволяет изменять размеры системных окон и окон,  оп-
ределенных пользователем.  Окно можно уменьшить до минимального разме-
ра, только если имя или заголовок окна видимы, а увеличить до размеров
целого экрана или до промежуточного размера можно в любой момент. Окно
может быть увеличено сразу от минимального до максимального размера, и
наоборот. Можно также указать положение, где окно с измененными разме-
рами будет размещаться.
    Примеры системных  окон  включают  окно Command (Командное),  окна
Browse (Просмотра),  окна редактирования текста,  окно Filer и так да-
лее, (Размеры окон Filer, Calculator и Puzzle не могут быть изменены).
Пользовательские окна создаются при помощи команды DEFINE WINDOW.  Для
получения дополнительной  информации  о создании пользовательских окон
смотрите описание команды DEFINE WINDOW в данном руководстве.
    FoxPro позволяет  устанавливать  связь родительское-дочернее между
окнами. Окна (дочерние) могут помещаться  внутри  других  окон  (роди-
тельских) при  помощи  опции  IN  [WINDOW]  команд DEFINE или ACTIVATE
WINDOW. Окна Browse,  окна редактирования текста, окна отчетов и ярлы-
ков, окно  Filer  и  окно  подсказки также могут быть помещены внутрь
других окон. Дочерние окна связаны с родительским окном, в которое они
помещены. Если используется команда ZOOM WINDOW для изменения дочерне-
го окна,  максимальный размер дочернего окна не может превысить размер
родительского окна.

    Дополнительные опции
    
    Окно, размеры которого Вы хотите изменить.

    MIN
    Устанавливает размер окна в минимальный,  допустима в случае, если
имя или заголовок окна видимы на экране или в окне.
    Минимизация окон применяется с целью размещения на экране как мож-
но большего  количества  информации или для освобождения максимального
пространства для  вывода  информации.   Например,   можно   разместить
аксессуары FoxPro  (Calculator,  Calendar/ASCII  и т.п.) в минимальных
размерах в верхней строке экрана, для легкого доступа к ним и быстрого
использования.
    Все системные окна можно привести к минимальному размеру,  но  для
этого они должны быть сначала открыты на экране или в окне.
Только те пользовательские окна,  которые созданы с опцией MINIMIZE  в
своем описании могут быть минимизированы.  Пользовательские окна могут
быть минимизированы после своего определения, не является необходимым,
чтобы окно было активным перед изменением размеров.
    Системное активное или пользовательское окно можно минимизировать,
выбрав  опцию  Zoom    из всплывающего меню Window,  нажатием клавиш
Ctrl+F9,  нажатием кнопки мыши в на управление разверткой или командой
ZOOM  WINDOW.  При нажатии Shift+Ctrl+F9 или выборе Zoom  при нажатом
Shift,  окно будет минимизировано и помещено в правый верхний угол эк-
рана.  Для возврата окна к оригинальному размеру, необходимо повторить
вышеперечисленные действия.

    AUTO
    Если опция AUTO включена вместе с опцией MIN,  окно минимизируется
и помещается в верхний правый угол экрана.  Если опция AUTO включается
вместе с опциями MAX или NORM, она игнорируется.

    MAX
    Расширяет окно до размеров полного экрана.  Если дочернее окно по-
мещено внутри родительского, и дочернее окно максимизируется, его раз-
меры увеличиваются до размеров родительского окна.  Если  используются
опции в ZOOM WINDOW (AT, SIZE, TO ), то они игнорируются.
    Окно можно расширить выбрав опцию  Zoom    из  всплывающего  меню
Window,  нажатием клавиш Ctrl+F10, нажатием кнопки мыши в на управле-
ние разверткой или командой ZOOM WINDOW. Пользовательские окна создан-
ные  командой DEFINE WINDOW могут быть максимизированы,  только если в
их описание было задействовано ключевое слово ZOOM.  Для возврата окна
к   оригинальному   размеру,  необходимо  повторить  вышеперечисленные
действия.

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

    AT  | FROM 
    Восстановление окна после минимизации или  максимизации  к  ориги-
нальным размерам но с изменением местоположения.
Координаты  указывают положение левого угла окна. Положение
окна также можно изменить при помощи команды MOVE WINDOW.  Для получе-
ния дополнительной информации смотрите описание команды MOVE WINDOW  в
данном руководстве.
    Можно указать положение минимизированного окна включением необяза-
тельных опций AT и FROM.  Левое ребро минимизированного окна будет по-
мещено на экран или в окно с координатами .  Если включа-
ются также необязательные опции SIZE или TO, то они игнорируются.
    Заметим, что когда Вы покидаете FoxPro Позиции размещения  миними-
зированных  системных окон сохраняются ы файле ресурсов (FOXUSER.DBF).
В следующий раз минимизированные системные окна будут размещаться так-
же как и в предыдущем сеансе работы FoxPro.

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



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