Часть 5
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є BUILD APP є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Создание приложения (.АРР) из файла проекта
Синтаксис
BUILD APP <.app file> FROM (<проект>)
Смотри также
BUILD EXE, BUILD PROJECT, CREATE PROJECT, MODIFY PROJECT
Описание
Команда BUILD APP использует информацию из файла проекта для соз-
дания приложения. До использования BUILD APP вы должны удостовериться,
что файл проекта содержит все необходимые для приложения файлы. Нераз-
решенные ссылки или другие ошибки, возникшие в процессе построения,
выводятся на экран и/или сохраняются в файле ошибок.
Опция FROM
Эта опция необходима для задания имени файла проекта из которого
будет происходить построение прикладной программы пользователя.
Более подробная информация о построении прикладных программ приво-
дится в книге документации по FoxPro "Руководство по Интерфейсу"
("Interface Guide").
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є BUILD EXE є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Только для владельцев продукта FoxPro Distribution Kit
Синтаксис
BUILD EXE FROM
[STANDALONE] [EXTENDED]
Замечания
Новая для FoxPro 2.0
Смотри также
BUILD APP, BUILD PROJECT
Описание
Команда BUILD EXE используется для создания из проекта стандартно-
го исполняемого файла (.ЕХЕ). Она доступна только для владельцев про-
дукта FoxPro Distribution Kit. Distribution Kit должен быть установлен
в том же каталоги, что и FoxPro.
Опции
(<исполняемый файл>)
Имя создаваемого .ЕХЕ файла. Если файл приложения .АРР имеет тоже
имя, что и создаваемый .ЕХЕ файл, то он удаляется. Заметим, что если
.ЕХЕ файл существует, и вы создаете файл .АРР с тем же именем, то .ЕХЕ
файл удаляется.
FROM
Имя файла проекта из которого строится исполняемый файл.
STANDALONE
Создает стандартную версию .ЕХЕ файла, который полностью независим
от остальных файлов и имеет те же требования, что и Стандартная версия
FoxPro (Standard version). Для создания автономного .ЕХЕ файла в ката-
логе FoxPro должны быть следующие файлы: FOXPRO.LIB, FOXPROS.LIB,
FOXCLIBM.LIB, FOXMATHM.LIB и WLINK8.EXE.
EXTENDED
Создает расширенную версию .ЕХЕ файла, который полностью независим
от остальных файлов и имеет те же требования, что и Расширенная версия
FoxPro (Extended version). Для создания автономного расширенного .ЕХЕ
файла в каталоге FoxPro должны быть следующие файлы: FOXPROX.LIB,
FOXPROSX.LIB, FOXCLIBR.LIB, FOXMATHR.LIB, FOXLDR.EXE и WLINK8.EXE.
Если ни одна из опций STANDALONE или EXTENDED не присутствует, то
создается компактный .ЕХЕ файл. Для исполнения компактного .ЕХЕ файла
в маршруте поиска ДОС должно быть указано местоположение Библиотеки
Поддержки .ЕХЕ FoxPro (FoxPro .EXE Support Library).
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є BUILD PROJECT є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Создание проекта
Синтаксис
BUILD PROJECT FROM
| | | | |
[, | | | | |
] ... ]
Замечания
Новая для FoxPro 2.0
Смотри также
BUILD APP, BUILD EXE, CREATE PROJECT, EXTERNAL, MODIFY PROJECT
Описание
Командой BUILD PROJECT автоматически создает база данных проекта
(.PJX), путем открытия и обработки одного или нескольких файлов прог-
рамм, меню, отчетов, меток, экранов и библиотек, заданных вами. Проект
сохраняет характеристики всех файлов, необходимых для создания прило-
жения, такие как, зависимости, ссылки и связи между файлами. При пост-
роении частей проекта FoxPro убеждается, что используется последняя
версия файлов. Файл проекта используется для создания программ двух
типов: приложений и исполняемых (.ЕХЕ). Более подробная информация о
построении проектов содержится в главе "Менеджер Проектов" (Project
Manager") в книге "Руководство по Интерфейсу" ("Interface Guide").
Когда FoxPro создает файл проектов при помощи BUILD PROJECT, все
ссылки программных файлов, которые включают маршруты, обрабатываются
только с использованием имени файла. BUILD PROJECT вначале осуществля-
ет поиск в каталоге по умолчанию, и если не находит, то использует
описатель маршрутов FoxPro PATH.
Например предположим, что FoxPro встретил следующую строку:
DO C:\FOXPRO2\SOURCE\STARTUP.PRG
FoxPro ищет программу с именем STARTUP.PRG в каталоге по умолча-
нию. Если программы с таким именем там нет, то FoxPro ищет ее по всем
каталогам, заданным в FoxPro PATH. Если FoxPro не находит данную прог-
рамму, то выдается сообщение об ошибке.
Когда FoxPro при создании проекта с помощью BUILD PROJECT выбирает
файл программы, меню или экрана, то он ищет его откомпилированный
файл, сравнивает его временную метку с соответствующей меткой файла
.PRG, и, если необходимо, перекомпилирует исходный код.
Каждый файл проекта содержит временную метку, поэтому вы можете
обновлять его в случае изменения входящих в него файлов или изменения
зависимостей. Это обеспечивает гарантии того, что любое приложение,
созданное из этого файла проекта, использует последние версии исходных
кодов. Для обновления файла проекта используйте BUILD PROJECT без нео-
бязательного предложения FROM. FoxPro автоматически обновит ваш про-
ект.
Наличие ошибок и неразрешимых связей во время построения файла
проекта с помощью команды BUILD PROJECT не запрещает создания файла
проекта. Это позволяет вам создавать проекты, даже в случае, когда не
все их части созданы или доступны. Неразрешенные ссылки и другие ошиб-
ки могут в дальнейшем исправляться путем обновления файла пректа новы-
ми версиями файлов или в ручную, модификацией хранимой в файле проекта
информации с помощью команды MODIFY PROJECT.
Опции
Имя создаваемой базы данных проекта.
FROM | | | | |
[, | | | | | ] ... ]
Предложени FROM является необязательным и задает файлы, включаемые
в проект. Вы можете задать один или несколько файлов программ, меню,
отчетов, меток, экранов и библиотек, и проект сохранит характеристики
этих файлов, такие как, зависимости, ссылки и связи между ними.
По умолчанию, первый выполняемый файл в предложении FROM (програм-
ма или меню) является главным файлом.
Для обновления файла проекта при изменении входящих в него файлов
или изменении зависимостей, используйте BUILD PROJECT без предложения
FROM.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є CALCULATE є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Финансовые и статистические функции
Синтаксис
CALCULATE
[] [FOR ] [WHILE ]
[TO | TO ARRAY ]
[NOOPTIMIZE]
Смотри также
AVERAGE, COUNT, DIMENSION, FV(), MAX(), MIN(), PAYMENT, PV(), SUM
Описание
Команда CFLCULATE позволяет выполнять финансовые и статистические
операции с полями базы данных или с выражениями, включающими в себя
поля.
Опции
(<Список выражений>)
может содержать любую комбинацию следующих функций:
AVG()
CNT( )
MAX()
MIN()
NPV(,,[])
STD()
SUM()
VAR()
Функции в списке выражений разделяются запятыми. Все эти функции
описываются ниже.
(<контекст>)
В вычислениях вы можете задавать контекст записей . В вы-
числения будут включаться только те записи, которые попадают в диапа-
зон, определяемый контекстом. По умолчанию CALCULATE работает со всеми
записями.
FOR
Если предложение FOR включено, то в вычислениях участвуют
только те записи, которые удовлетворяют заданному логическому условию
. Это позволяет обрабатывать только заданную группу записей,
игнорируя остальные.
Технология Rushmore оптимизирует запрос CVALCULATE FOR, если
является оптимизируемым выражением. Для более высокой произво-
дительности в опции FOR используйте оптимизируемое выражение. Обсужде-
ние оптимизируемых выражений Rushmore проводится в главе "Оптимизация
ваших прикладных программ" в книге документации по FoxPro "Руководство
Разработчика" ("Developer's Guide").
WHILE
Если опция WHILE включена, то при вычислениях записи будут
браться до тех пор, пока логическое выражение оценивается как
истина (.Т.).
TO (<список переменных>) | TO ARRAY
Результаты вычислений могут быть помещены либо в одну или несколь-
ко переменных памяти, либо в массив. Если включить в команду предложе-
ние TO для записи результата в переменную памяти, то в случае, если
такой переменной не существовало, то она будет создана командой.
Использование команды CALCULATE с несуществующим массивом приведет
к его автоматическому созданию. Если массив существует, но в нем не-
достаточно места для хранения всех результатов, то его размер будет
автоматически увеличен до требуемого. Если массив заполнен не весь, то
оставшиеся элементы не изменяются. В массиве результаты будут нахо-
диться в последовательности их заданая в команде CALCULATE.
NOOPTIMIZE
Для заблокирования возможности использования Rushmore технологии
включите необязательную опцию NOOPTIMIZE. Более подробная информация о
Rushmore технологии приводится при описании команды SET OPTIMIZE в
этом руководстве и в главе "Оптимизация ваших прикладных программ" в
книге документации по FoxPro "Руководство Разработчика" ("Developer's
Guide").
Функции
AVG()
Функция AVG вычисляет среднеарифметическое значение для поля базы
данных или выражения с полем. В расчет принимаются все записи, удов-
летворяющие условиям, заданным опциями FOR или WHILE.
CNT( )
Функция CNT( ) возвращает число записей в базе данных. Если вклю-
чены необязательные предложения FOR или WHILE, то будет возвращено ко-
личество записей, удовлетворяющих заданным условиям.
MAX()
Функция MAX( ) возвращает максимальное значение поля .
MIN()
Функция
MIN( ) возвращает минимальное значение поля . Выражение
может быть числовым, символьным или типа даты.
NPV(,,[])
Функция NPV( ) вычисляет текущее значение сальдо для серии будущих
кассовых операций, учитываемых по постоянным периодическим процентным
ставкам.
это прцентная ставка, выраженная десятичным числом.
это поле, выражение с полем или допустимое численное выра-
жение, определяющее последовательность кассовых операций. Каждая за-
пись должна содержать в этом поле кассовую операцию, с положительным
либо отрицательным знаком. В случае когда является полем или
выражением из полей, то значение в этом поле для каждой записи базы
данных рассматривается как кассовая операция.
это необязательно задаваемое первоначальное вложение. Если
эта величина не задана, то предполагается, что оно образуется к концу
первого периода. Это исходное вложение должно находиться в поле в пер-
вой запмсм и в случае, если эта первая операция заключалась в выплате
денег, должно быть отрицательной величиной. Если заданы предложения
FOR или WHILE, то в расчет будут включены только записи, удовлетворяю-
щие заданным в них условиям.
STD()
Функция STD( ) вычисляет среднеквадратическое отклонение значений,
находяихся в поле или выражении с полем. Среднеквадратическое отклоне-
ние представляет собой степень отклонения значений поля от среднего
значения для всех полей. Чем меньше среднеквадратическое отклонение,
тем меньше значения поля или выражения с полем отклоняются от средне-
го. Если заданы предложения FOR или WHILE, то в расчет будут включены
только записи, удовлетворяющие заданным в них условиям.
SUM()
Функция SUM( ) выполняет суммирование значений поля или выражения
с полем. Если включены предложения FOR или WHILE, то в расчет будут
включены только записи, удовлетворяющие заданным в них условиям.
VAR()
Функция VAR( ) вычисляет дисперсию относительно среднего значений
поля или выражения с полем. Дисперсия есть квадратный корень из сред-
неквадратического отклонения. Чем меньше дисперсия, тем меньше значе-
ния поля отличаются от среднего. Если заданы предложения FOR или
WHILE, то в расчет будут включены только записи, удовлетворяющие за-
данным в них условиям.
Примеры
USE сustomer
CALCULATE AVG(taxrate), MIN(taxrate), MAX(taxrate)
51 records
AVG(TAXRATE) MIN(TAXRATE) MAX(TAXRATE)
5.73 5.00 6.50
CALCULATE STD(taxrate), VAR(taxrate) TO mstdtax, mvartax
51 records
STD(TAXRATE) VAR(TAXRATE)
0.44 0.20
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є CALL є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Вызов в память двоичной подпрограммы
Синтаксис
CALL
[WITH | ]
[SAVE | NOSAVE]
Смотри также
LOAD, RELEASE MODULE, SET LIBRARY TO
Описание
Команда CALL работает в сочетании с командой LOAD. Эта команда
позволяет запускать в памяти пользовательскую подпрограмму в двоичном
формате.
Команда LOAD загружает в память двоичный файл. Команда CALL позво-
ляет выполнить загруженный двоичный файл.
Опции
Имя вызываемого файла. Вы можете не задавать расширение вызываемо-
го файла, т.к. при загрузке оно опускается.
WITH |
Опция WITH служит для передачи двоичной подпрограмме параметров.
Передаваться могут строки символов и переменные памяти. Переменные па-
мяти могут иметь любой тип данных.
При входе в вызываемую подпрограмму кодовый сегмент указывает на
начало модуля. Пара регистров DS и BX указывает на первый байт пара-
метра, переданного опцией WITH. Если параметр не передавался, то BX
будет содержать 0.
SAVE | NOSAVE
Команды CALL и LOAD поддерживают необязательные ключевые слова для
использования с двоичными подпрограммами, осуществляющими вывод на эк-
ран. Вы можете включать SAVE (по умолчанию берется NOSAVE) при загруз-
ке двоичной подпрограммы, или SAVE и NOSAVE при вызове двоичной подп-
рограммы, уже загруженной в память командой LOAD. Задание ключевых
слов SAVE или NOSAVE с CALL переопределяет параметры, заданные коман-
дой LOAD.
Если задано ключевое слово SAVE, то FoxPro копирует текущее содер-
жимое видеопамяти (video RAM) в "стол" FoxPro поверх возврата из дво-
ичной подпрограммы (предполагается, что двоичная подпрограмма будет
осуществлять вывод непосредственно в видеопамять). Это означает, вся
что вся выводимая двоичной подпрограммой информация становятся извест-
ной FoxPro, и рассматривается, как если ее выводил сам FoxPro. В част-
ности при задании ключевого слова SAVE, такие выведенные внешним
способом данные не будут удалены при выводе поверх них объектов
FoxPro.
Но SAVE надо использовать только при крайней необходимости, т.к.
FoxPro для каждого возврата из двоичной подпрограммы необходимо скани-
ровать и сохранять содержимое экрана.
Внимание !!!
-----------------------------------------------------------------
Тщательно изучите следующие предупреждения по интерфейсу с языком
ассемблера:
-----------------------------------------------------------------
* При использовании строковых переменных не изменяйте длину строки.
Если длина строковой переменной изменится хотя бы на один байт,
существует вероятность искажения списка свободной памяти.
* При сохранении адреса строки между вызовами вам следует также
сбросить адрес строки, который вы собираетесь сохранить, непос-
редственно перед использованием строковой переменной.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є CANCEL є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Прекращение выполнение программы
Синтаксис
CANCEL
Смотри также
QUIT, RESUME, RETURN, SUSPEND
Описание
Команда CANCEL прерывает выполнение программы FoxPro. Управление
возвращается либо к Командному окну, либо к DOS.
Если программа выполняется под управлением исполняющей системы
Runtime, FoxPro закончит работу и возвратит управление в DOS. Если же
программа выполняется в среде разработки FoxPro, то управление будет
передано Командному окну.
При выполнении команды CANCEL все частные переменные памяти осво-
бождаются.
Пример программы
SET TALK OFF
CLEAR
STORE SPACE(6) TO mpass
@ 8,29 SAY `Пароль '
@ 8,39 GET Password
READ
IF UPPER(mpass) = `FOXPRO'
@ 18,25 SAY `Пароль правильный'
ELSE
@ 18,25 SAY `К сожалению, пароль ' + mpass + ` не такой'
CANCEL
ENDIF
В данном примере программа проверяет, содержит ли переменная памя-
ти PASSWORD пароль FOXPRO. Если был введен неверный пароль, то выпол-
нение программы прерывается.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є CAPSLOCK() є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает текущее состояние CapsLock или устанавливает его
Синтаксис
CAPSLOCK([])
Тип возвращаемого значения
Логический
Смотри также
INSMODE(), NUMLOCK()
Описание
Функция CAPSLOCK() переключает режим клавиатуры CapsLock , включая
или выключая его, либо просто возвращает текущее состояние CapsLock.
CAPSLOCK(.T.) включает режим CapsLock, а CAPSLOCK(.F.) выключает режим
CapsLock. Если аргумент опущен, состояние режима CapsLock возв-
ращается без изменения текущего состояния. Если режим CapsLock вклю-
чен, то возвращается .Т. Если выключен, то возвращается .F.
Параметр
Необязательное логическое выражение задается для включения
и выключения режима CapsLock. Функция CAPSLOCK() всегда возвращает ло-
гическое значение установки CapsLock перед выполнением функции
CAPSLOCK(.T.) или CAPSLOCK(.F.).
Примеры
oldlock = CAPSLOCK (.T.) && Включить режим CapsLock
*** <Любое число команд FoxPro> ***
= CAPSLOCK(oldlock) && Возврат к первоначальной установке
*** Вашему вниманию предлагается пример переключения состояния ***
*** CapsLock на противоположное значение: ***
=CAPSLOCK(!CAPSLOCK())
В двух последних примерах знак равенства используется как оператор
выполнения функция без присваивания значения.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є CDOW() є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает день недели заданного выражения типа даты
Синтаксис
CDOW()
Тип возвращаемого значения
Даты
Смотри также
DAY(), DOW(), SYS()
Описание
CDOW(), функция дня недели, выраженного в символьной форме, возв-
ращает имя дня недели (Sunday - воскресенье, Monday - понедельник и
т.д.) для данного выражения даты .
Параметр
Выражение даты может представлять собой функцию даты системы
(DATE()), переменную памяти типа даты или поле базы данных типа даты.
Примеры
STORE {02/16/56} TO bdate
? CDOW(bdate)
Thursday
? DATE()
09/15/89
? CDOW(Date())
Friday
? "Your book was due", CDOW(Date()-2)
Your book was due Wednesday
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є CDX() є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает имена открытых составных индексных файлов .CDX
Синтаксис
CDX( [, | ])
Параметры
номер, соответствующий позиции индекса и говорящей CDX() о
том, что возвращать
номер рабочей области базы данных
псевдоним базы данных
Тип возвращаемого значения
Символьный
Замечания
Новая для FoxPro 2.0
Смотри также
INDEX, MDX(), NDX(), SET INDEX, SYS(14), SYS(14), TAG(), USE
Описание
CDX() возвращает имена открытых составных индексных файлов .CDX.
Функция CDX() идентична функции MDX().
Для базы данных индексные файлы могут быть открыты опцией INDEX в
команде USE или командой SET INDEX. Сложный структурный индексный файл
.CDX автоматически открывается при открытии его базы данных. Любые ин-
дексные файлы, открытые опцией INDEX команды USE или командой SET
INDEX, игнорируются этой функцией.
Функция TAG() может использоваться для возврата имен тегов из
составного индексного файла; для возврата имен открытых индексных фай-
лов .IDX используется функция NDX().
Параметры
Если база данных имеет структурный индексный файл и равно
1, то возвращается имя структурного индексного файла (которое всегда
идентично имени базы данных). Если равно 2, то возвращается
имя первого составного индексного файла .CDX, задаваемого в опции
INDEX команды USE или в команде SET INDEX. идентично имени базы дан-
ных). Если равно 3, то возвращается имя второго составного ин-
дексного файла .CDX и т.д. Если больше, чем число открытых
составных индексных файлов .CDX, то возвращается пустая строка.
Если база данных не имеет структурного индексного файла и
равно 1, то возвращается имя первого составного индексного файла .CDX,
задаваемого в опции INDEX команды USE или в команде SET INDEX. иден-
тично имени базы данных). Если равно 2, то возвращается имя
второго составного индексного файла .CDX и т.д. Если больше,
чем число открытых составных индексных файлов .CDX, то возвращается
пустая строка.
|
Если вы опустили необязательные аргументы и , то
имена файлов .CDX возвращаются для текущей рабочей области.
Задавая номер рабочей области в или псевдоним базы данных
в , вы можете получать имена составных индексных файлов .CDX из
других областей.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є CEILING() є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает ближайшее целое значение, которое больше или равно заданного
числового выражения
Синтаксис
CEILING()
Тип возвращаемого значения
Числовой
Смотри также
FLOOR(), ROUND()
Описание
Функция CEILING() возвращает ближайшее целое значение, которое
больше или равно значению . Эта функция округляет все положи-
тельные числа, имеющие десятичную часть, до ближайшего большего числа,
а все отрицательные числа, имеющие десятичную часть, округляет до бли-
жайшего следующего числа в сторону нуля.
Параметр
Обязательное числовое выражение. может быть числом, число-
воым выражением, переменной памяти, элементом массива или полем базы
данных.
Примеры
STORE 10.1 TO num1
STORE -10.9 to num2
STORE 10.0 TO num3
STORE -10.0 TO num4
? CEILING(num1)
11
? CEILING(num2)
-10
? CEILING(num3)
10
? CEILING(num4)
-10
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є CHANGE є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Изменение записей базы данных в окне редактирования
Синтаксис
CHANGE
[FIELDS ]
[]
[FOR ]
[WHILE ]
[FREEZE ]
[KEY [, ]]
[LAST]
[LEDIT] [REDIT]
[LPARTITION]
[NOAPPEND]
[NOCLEAR]
[NODELETE]
[NOEDIT | NOMODIFY]
[NOLINK]
[NOMENU]
[NOOPTIMIZE]
[NORMAL]
[NOWAIT]
[PARTITION ]
[PREFERENCE ]
[REST]
[SAVE]
[TIMEOUT ]
[TITLE ]
[VALID [F:]
[ERROR ]]
[WHEN ]
[WIDTH ]
[[WINDOW ]
[IN [WINDOW]
| IN SCREEN]]
[COLOR SCHEME
| COLOR ]
Замечания
Расширена в FoxPro 2.0: опции VALID и WHEN; опция PARTITION; ключевые
слова LEDIT, LPARTITION, NOLINK, NOOPTIMIZE, REDIT и REST; под-
держка COL(), ROW() и SET SKIP.
Смотри также
BROWSE, EDIT
Описание
Данная команда позволяет редактирование заданных полей в выбранной
на текущий момент базе данных. Окно редактирования CHANGE также
доступно в окне Browse. Более подробная информация об использовании
окна Browse в режиме CHANGE приведена в книге документации по FoxPro
"Руководство по Интерфейсу" ("Interface Guide").
Вы можете сохранить любые внесенные вами изменения и выйти из ко-
манды CHANGE, нажав Ctrl-W или Ctrl-End, либо нажав кнопку мыши на по-
ле закрытия команды. Нажав Ctrl-Q или Esc, вы можете выйти из команды
без сохранения сделанных в текущем поле изменений. Однако, изменения в
других измененных полях сохранятся.
Команда CHANGE работает идентично команде EDIT. Команда имеет
большой выбор опций.
Навигация в окне CHANGE
Для перемещения от записи к записи вы можете пользоваться клавиша-
ми управления курсором "вверх" и "вниз" или вертикальным указателем.
Для пролистывания группы записей вверх и вниз служат клавиши PageUp и
PageDown. Для перемещения к следующему или предыдущему полю использу-
ются клавиши Tab или Shift+Tab или горизонтальный указатель.
Сохранение изменений
Вы можете сохранить любые внесенные вами изменения и выйти из ко-
манды CHANGE, нажав Ctrl-W или Ctrl-End, либо нажав кнопку мыши на по-
ле закрытия команды. Нажав Ctrl-Q или Esc, вы можете выйти из команды
без сохранения сделанных в текущем поле изменений. Однако, изменения в
других измененных полях сохранятся.
В окне CHANGE можно редактировать поля памяти типа memo. Для этого
нужно выбрать такое поле и нажать Ctrl-PgDn. Если у вас есть мышь, то
для открытия поля памяти для редактирования достаточно два раза нажать
кнопку, находясь над этим полем. Для выхода из редактирования поля па-
мяти с сохранением внесенных изменений нажмите Ctrl-W или кнопку мыши
на поле закрытия команды. Если вы хотите выйти без сохранения измене-
ний, нажмите клавишу Esc.
Поддержка SET SKIP
SET SKIP позволяет вам создавать связь между двумя базами данных
типа один-к-многим. Для каждой записи в порождающей базе данных могут
быть несколько связанных с ней записей в дочерней базе данных. При
использовании отношений связи один-к-многим CHANGE может использо-
ваться для просмотра записей из обеих баз.
Для каждой записи из порождающей базы данных, которая появляется в
окне CHANGE, будут появляться все связанные с ней (если вообще есть)
записи из дочерней базы данных. Порождающая запись появится только
один раз с первой подходящей записью из дочерней базы данных. Последо-
вательность оставшихся подходящих записей (если они есть) появится в
строках, следующих за порождающей записью и первой подходящей дочерней
записью. Поля, содержащие информацию порождающей записи, которая соот-
веттсвует родительским записям, находящимся ниже первой из них, выво-
дятся затененными.
Если вы находитесь на порождающей записи, то нажатием клавиш
Ctrl+(курсор вниз) вы можете перейти к следующей порождающей записи в
окне CHANGE, а нажатием клавиш Ctrl+(курсор вверх) вы перейдете к
предшествующей порождающей записи. Более подробная информация об уста-
новлении связи один-к-многим приводится далее в этой главе при описа-
нии команды SET SKIP.
Пример
В следующем примере с помощью SET SKIP создается связь один-к-мно-
гим. Порождающая база данных INVOICE имеет поля, содержащие номер кви-
танции и информацию о клиенте, разместившем заказ. Для каждой квитен-
ции в порождающей базе данных создается единственная запись. Другая
база данных (LINEITMS, дочерняя) также содержит поле с номером квитан-
ции. Оставшиеся поля дочерней базы данных содержат информацию о каждом
пункте квитанции. Дочерняя база данных LINEITMS содержит несколько за-
писей (пункты квитанции) для каждой записи в порождающей базе данных.
Окно CHANGE открывается с записями из обеих баз данных.
CLEAR
CLEAR ALL
SELECT 1 && Рабочая область
USE invoice && Порождающая база данных
SELECT 2 && Следующая доступная рабочая область
USE lineitms && Дочерняя рабочая область
SET ORDER TO TAG invoice && Индексирование для установления связи
SELECT invoice && Возврат в порождающую рабочую область
SET RELATION TO invoice INTO lineitms && Создание связи
SET SKIP TO lineitms && Установление связи один-к-многим
CHANGE FIELDS invoice, lineitms.item, lineitms.descript
Поддержка функций COL() и ROW()
Функции COL() и ROW() используются для получения текущих координат
курсора в окне CHANGE. Если окно CHANGE открыто на экране, то коорди-
наты позиции курсора возвращаются в координатах экрана, а не координат
самого окна CHANGE. Если окно CHANGE открыто в окне, то COL() и ROW()
возвращают координаты курсора относительно окна.
Команда CHANGE поддерживает многочисленные опции. Ниже приводится
список этих опций с кратким описанием.
Опции
FIELDS (<список полей>)
Если FIELDS включается, то выводятся только поля, указанные в
списке полей , и они располагаются на экране в порядке их
следования в . Если опция FIELDS не используется, то выво-
дятся все поля базы данных в последовательности их расположения в
структуре базы данных.
Вы можете включать в список поля из связанных баз
данных. В этом случае, перед именем поля должен стоять псевдоним этой
базы данных и разделительная точка.
Список полей может включать в себя любую комбинацию полей баз дан-
ных или вычислимых полей.
Формат списка полей следующий:
[:R]
[:V = [:F] [:E = ]]
[:P = ]
[:B = , [:F]]
[:H = ]
[:W = ]
[, [:R] ... ]
Вычислимые поля
Поля списка могут содержать операторы для создания
вычислимых полей. Вычислимое поле содержит данные только для чтения,
которые создаются из выражения. Это выражение может иметь любую форму,
но должно быть допустимым для FoxPro.
Формат оператора создания вычислимого поля:
= (<имя вычислимого поля>=)
Например создадим вычислимое поле ADDRESS:
USE customer
CHANGE FIELDS ADDRESS = ALLTRIM(address1) + ' ' + ALLTRIM(address2)
где address1 и address2 являются полями выбранной в настоящий момент
базы данных.
Имеется восемь опциональных ключей, позволяющихзадавать специаль-
ные режимы обращения с полями в команде CHANGE. Испльзуемый в опции
FIELDS в качестве разделителя знак наклонной черты (/) можно при жела-
нии заменить на двоеточие (:).
:R
Необязательный ключ :R определяет, что поле имеет статус доступа
только для чтения - данные можно только просматривать, но нельзя ре-
дактировать.
USE customer
CHANGE FIELDS cust_id:R, company
:V =
Ключ :V (верификация) позволяет выполнять в окне CHANGE контроль
достоверности данных. При выходе из поля, если оценивается как
истина (.Т.), то вводимые данные считаются корректными и курсор пере-
мещается к следующему полю. Ключ :V игнорируется при обработки полей
памяти.
Если оценивается как ложь (.F.), то вводимые данные счита-
ются ошибочными, курсор остается в этом поле и выводится предупреждаю-
щее сообщение. Если выражение обращается в 0, то вводимые дан-
ные считаются ошибочными, курсор остается в этом поле. Сообщение об
ошибке не выдается.
По умолчанию, оценивается только при модификации поля. Для
принудительной проверки любого поля включите ключевое слово :F.
Посредством опции :Е вы можете задавать собственный текст сообще-
ния об ошибке.
:F
Ключ :F (обязательный контроль достоверности) определяет режим
оценки выражения при выходе из поля без его модификации. Если
ключ :F не включен, то сравнение будет выполняться только в случае из-
менения содержимого поля. Если же включить ключ :F, то сравнение поля
будет происходить независимо от того, изменильсь ли поле. Использова-
ние ключа :F позволяет контролировать достоверность ранее введенных
данных. Ключ :F игнорируется при обработки полей памяти.
:E=
Если выражение контроля достоверности :V= дало в результате
логическое значение "истина" (введены допустимые данные), то происхо-
дит нормальный выход из поля. Если же это выражение дало результат
"ложь" (неверные данные), то выход из поля не происходит, а на дисплей
в системном окне выводится сообщение "Invalid input" ("Неправильный
ввод") .
При задании ключа Ошибки :Е вместо системного сообщения будет вы-
дано ваше сообщение . Сообщение выдается только в случае уста-
новки SET NOTIFY в ON. Если команда BELL установлена в положение ON,
то также раздается звуковой сигнал.
Если выражение для контроля достоверности V:= дает число
ноль, то сообщение не выдается и выход из контролируемого поля также
не происходит. Это дает вам возможность выдавать собственные сообщения
подпрограмм контроля достоверности.
USE customer
CHANGE FIELDS cust_id:R, company, taxrate :V = taxrate > 0 :F ;
:E = 'Taxrate must be greater than 0'
:P=
Если в команде CHANGE вы используете список полей FIELDS, то тогда
для каждого поля в списке вы можете задать опцию Шаблонов :Р. Эта оп-
ция позволяет создавать шаблоны редактирования , которые выво-
дят и вводят данные для каждого поля в окне CHANGE.
Коды шаблонов редактирования приведены при описании команды @ ...
SAY/GET. Все коды FUNCTION и PICTURE, которые доступны в команде @ ...
SAY/GET, могут использоваться в опции Шаблонов команды CHANGE, за иск-
лючением кода "М".
В этом примере опция Шаблонов используется для разрешения ввода
в поле TAXRATE только числовых данных в заданном формате:
USE customer
CHANGE FIELDS taxrate :P='9.99'
:B=,
Опция :B позволяет определить набор граничных значений, в пределах
которых должны находиться данные в поле. Данная опция может использо-
ваться с числовыми, датовыми или символьными выражениями, но не может
быть включена в функции, определяемые пользователем. Тип данных гра-
ничных выражений и должен соответствовать типу данных
поля. Если вводимые данные не попадают в диапазон между и
, выдается системное сообщение с указанием того, в какие грани-
цы должны укладываться данные.
По умолчанию, граничные значения проверяются только при изменении
поля. Вы можете при этом также включить опцию обязательного контроля
достоверности :F.
:Н=
Обычно наименования полей в окне редактирования CHANGE размещаются
в заголовках столбцов (полей). Включением опции Заголовка :Н вы можете
заменить наименования полей по умолчанию на ваше собственное. Заголо-
вок поля задается выражением .
:W=
Вы можете запретить ввод в поле, в зависимости от значения логи-
ческого выражения . При включении опции :W, происходит оценка
, и если оно оценивается как ложь (.F.), то ввод в этот поле
запрещается. В поддерживаются функции, определяемые пользова-
телем. Для полей памяти опция :W игнорируется.
Если ввод во все поля запрещен, то поле в которое вы пытаетесь
ввести информацию остается текущим и помечается как только для чтения.
Этот случай возникает только тогда, когда все поля имеют опцию :W и
она оценивается как ложь.
(<контекст>)
С помощью вы можете задавать контекст выводимых в окно
CHANGE записей. В окне будет появляться только записи, попадающие в
заданный диапазон.
По умолчанию контекстом CHANGE являются все записи.
FOR
При использовании опции FOR , в окне CHANGE будут отобра-
жаться только те записи, для которых логическое выражение оце-
нивается как истина. Эта опция позволяет вам управлять отбором выводи-
мых записей, путем отбрасывания неудовлетворяющих заданному условию.
Технология Rushmore оптимизирует запрос CHANGE FOR, если
является оптимизируемым выражением. Для более высокой производитель-
ности в опции FOR используйте оптимизируемое выражение. Обсуждение
оптимизируемых выражений Rushmore проводится в главе "Оптимизация ва-
ших прикладных программ" в книге документации по FoxPro "Руководство
Разработчика" ("Developer's Guide").
WHILE
При включении опции WHILE , в окне CHANGE записи будут вы-
водится до тех пор, пока логическое выражение оценивается как
истина (.Т.).
FREEZE
Опция FREEZE включается в том случае, если вы хотите разрешить во
время работы команды CHANGE вносить изменения только в одном поле. Од-
нако на дисплей при этом выводятся все поля.
KEY [,]
Опция KEY ограничивает контекст записей, появляющихся в окне
CHANGE. Включением опции KEY вы можете задать значение ключа индекса
или диапазона значений ключей , для записей, об-
рабатываемых командой CHANGE. Обрабатываемая база данных должна быть
проиндексирована, и значение ключа индекса или значения ключей, вклю-
ченных в опцию FOR, должны иметь один и тот же тип данных с индексным
выражением в главном индексном файле или главном теге.
Например, база данных CUSTOMER содержит символьное поле с кодами
перемещений. Если база данных индексирована по полю кода перемещения,
то вы можете задать диапазон этих кодов в опции KEY. В этом случае в
окне CHANGE появятся все записи, имеющие кода перемещений, попадающие
в заданные границы:
USE customer
SET ORDER TO zip
CHANGE KEY '43000', '43999'
В этом примере в окно CHANGE выводятся только те записи базы дан-
ных, которые имеют код перемещения (zip), лежащий между 43000 и 43999.
LAST
При закрытии окна CHANGE все изменения конфигурации этого окна за-
поминаются в файле описания ресурсов FOXUSER. Список полей, размеры
каждого поля, расположение и размер окна CHANGE и т.д. - все это хра-
нится в файле FOXUSER. Дополнительная информация о файле ресурсов
FoxPro приводится при описании команды SET RESOURCE.
При выдаче команды CHANGE с опцией LAST окно CHANGE будет открыто
в той конфигурации, что была в последний раз сохранена в файле
FOXUSER, если RESOURCE имеет состояние SET ON. Это позволяет вам
восстановить последнюю конфигурацию окна CHANGE, созданного последним
применением команды CHANGE. Это полезно, когда команда CHANGE вызыва-
лась из Командного окна и имела длинный список опций.
Если последнее окно CHANGE было открыто с именем PREFERENCE, то
CHANGE LAST не восстановит предшествующее состояние.
Если выход из данной команды выполняется по Ctrl-Q, то изменения
конфигурации не запоминаются.
LEDID,REDIT
Информация в окне редактирования CHANGE может выводится в двух
различных режимах, Изменения (Change) и Редактирования (Browse). По
умолчанию применяется режим Изменения, в котором поля располагаются
вертикально. В режиме Редактирования поля на экране располагаются го-
ризонтально.
Окно редактирования CHANGE может быть так же разделено на левую и
правую части оконным разделителем при помощи мыши, выбором Resize
Partitions (Изменить размер частей) из всплывающего меню Browse или
включением опции PARTITION в саму команду CHANGE. Каждая часть
мажет выводится в своем режиме, назависимо от режима соседней.
Включение в команду CHANGE ключевых слов LEDIT или REDIT приведет
к выводу левой или правой части, соответственно, окна редактирования
CHANGE в режиме Редактирования. Для открытия обеих частей в режиме Ре-
дактирования задайте оба ключевых слова. Каждая часть может переклю-
чаться между режимами Изменения и Редактирования путем выбора пунктов
Browse (Редактирования) или Change (Изменения) во всплывающем меню
Browse.
USE customer
CHANGE PARTITION 30 LEDIT
LPARTITION
Окно CHANGE может быть разделено на левую и правую части путем
включения опции PARTITION (описывается ниже). По умолчанию, при откры-
тии окна курсор располагается на первом поле правой части. Если вы
включите ключевое слово LPARTITION, то при открытии окна CHANGE курсор
будет располагаться на первом поле левой части.
Курсор будет располагаться в правой части окна, если LPARTITION
включается без предложения PARTITION.
NOAPPEND
Опция NOAPPEND предотвращает добавление в файл новых записей путем
нажатия Ctrl+N или выбором Append Record (Добавить запись) из всплыва-
ющего меню Browse в окне редактирования.
Включение этой опции не запрещает добавление записей из подпрог-
рамм (подпрограммы опций VALID, WHEN или ON KEY LABEL) внутри окна ре-
дактированяи CHANGE.
NOCLEAR
Когда опция NOCLEAR включена и вы закрываете окно CHANGE, то его
образ и последнее состояние остаются на экране или текущем окне вывода
(если оно есть).
Этот образ только отображается и не является активным окном
CHANGE. Для удаления его с экрана или из окна используйте команду
CLEAR.
Если NOCLEAR вызывается с предложением WINDOW и ок-
но не активно, то образ окна CHANGE остается в окне
, если они является видимым.
NODELETE
Опция NODELETE не позволяет помечать при работе в окне CHANGE за-
писи файла как подлежащие удалению. Обычно записи можно пометить для
удаления нажатием Ctrl-T , выбором пункта Toggle Delete из всплывающе-
го меню Browse или нажатием кнопки "мыши" в крайней левой колонке за-
писи.
NOEDIT | NOMODIFY
Опция NOEDIT | NOMODIFY запрещает вносить любые изменения в базу
данных. Вы можете при помощи CHANGE просматривать базу данных или осу-
щесвлять в ней поиск, но не можете ее редактировать. Ключевые слова
NOEDIT и NOMODIFY идентичны.
При задании NOEDIT или NOMODIFY записи могут удаляться. Для запре-
щения удаления используйте NODELETE.
NOLINK
Окно редактирования CHANGE может быть разделено на левую и правую
части оконным разделителем при помощи мыши, выбором Resize Partitions
(Изменить размер частей) из всплывающего меню Browse или включением
опции PARTITION в саму команду CHANGE.
По умолчанию, обе части являются связанными - при прокрутке одной
части осуществляется автоматическая прокрутка другой части. Ключевое
слово NOLINK разрывает эту связь. NOLINK выводит вертикальные линейки
прокрутки для каждой части, и поэтому прокрутка в них может осущест-
влятся независимо друг от друга.
NOMENU
Опция NOMENU отменяет доступ к всплывающему меню Browse и его оп-
циям. Включение опции NOMENU удаляет элемент линейки меню Browse.
NOOPTIMIZE
Для заблокирования возможности использования Rushmore технологии
включите необязательную опцию NOOPTIMIZE. Более подробная информация о
Rushmore технологии приводится при описании команды SET OPTIMIZE в
этом руководстве и в главе "Оптимизация ваших прикладных программ" в
книге документации по FoxPro "Руководство Разработчика" ("Developer's
Guide").
NORMAL
Если окно пользователя является текущим окном вывода , то окно
CHANGE примет такие его параметры, как цвет, размер и опции управления
(GROW, FLOAT, ZOOM и т.д.). При заданной опции NORMAL окно CHANGE бу-
дет открыто нормальным образом - так, как если бы окон, выбранных или
открытых для вывода, не существовало. Окну CHANGE будут присвоены атт-
рибуты по умолчанию.
NOWAIT
Если команда CHANGE выдается из программы, происходит открытие ок-
на CHANGE, а выполнение программы приостанавливается до выхода из это-
го окна. Включение опции NOWAIT вызывает продолжение работы программы
после открытия окна. Программа не ждет, пока окно CHANGE будет закры-
то, и выполняется строка программы, непосредственно следующая за стро-
кой с командой CHANGE NOWAIT.
Данная опция существует только для использования в программах. При
выдаче этой команды во время работы в Командном окне опция NOWAIT ни-
какого действия не оказывает.
PARTITION
Окно CHANGE может быть разделено на правую и левую части с помощью
опции PARTITION. Символьное выражение задает номер столбца,
где будет расположен оконный разделитель. Например, если равно
20, то оконный разделитель будет расположен в 20 столбце окна редакти-
рования CHANGE. Окно редактирования CHANGE может быть так же разделено
на левую и правую части перемещением оконного разделителя при помощи
мыши или выбором Resize Partitions (Изменить размер частей) из всплы-
вающего меню Browse.
По умолчанию, обе части являются связанными - при прокрутке одной
части осуществляется автоматическая прокрутка другой части. Вы можете
разорвать эту связь и осуществлять прокрутку каждой части независимо.
Это осуществляется путем включения в команду CHANGE ключевого слова
NOLINK, или выбором пункта Unlink Partitions (Развязать Части) во
всплывающем меню Browse.
Информация в окне редактирования CHANGE может выводится в двух
различных режимах, Изменения (Change) и Редактирования (Browse). По
умолчанию применяется режим Изменения, в котором поля располагаются
вертикально. В режиме Редактирования поля на экране располагаются го-
ризонтально. Для разбиения окна CHANGE вы можете использовать
PARTITION.
PREFERENCE
Опция PREFERENCE позволяет сохранить аттрибуту и опции окна CHANGE
для последующего использования. В отличие от опции LAST, которая
восстанавливает окно CHANGE в том виде, в котором оно было во время
последнего сеанса работы с командой, опция PREFERENCE записывает атт-
рибуты окна CHANGE в файл FOXUSER под определенным именем. Данная оп-
ция позволяет восстановить желаемые аттрибуты в любой произвольный мо-
мент. Более подробная информация о файле ресурсов FoxPro приведена при
описании команды SET RESOURCE.
Выдача команды CHANGE с заданным именем PREFERENCE в пер-
вый раз создает данную PREFERENCE-запись. Дальнейшее использование ко-
манды CHANGE с опцией PREFERENCE ведет к восстановлению аттрибутов ок-
на CHANGE, установленных в первый раз. При закрытии такого окна запись
аттрибутов обновляется.
Допустим, вы удовлетворены всеми параметрами окна CHANGE и исполь-
зуете опцию PREFERENCE, тогда действуйте следующим образом: закройте
окно CHANGE; выполните команду SET RESOURCE OFF; откройте файл FOXUSER
как базу данных и пометте поле, содержащее информацию о привилегии,
как только для чтения. Для этого достаточно изменить значение логи-
ческого поля READONLY на истину (.Т.).
При выходе из окна CHANGE при помощи Ctrl+Q любые изменения его
конфигурации не запоминаются в файле ресурсов.
REST
Обычно CHANGE позиционирует указатель записи на начало редактируе-
мого файла. REST используется вместе с CHANGE FOR для предотвращения
возвращения указателя записи в начало файла базы данных.
SAVE
Эта опция доступна только при вызове CHANGE из программ. SAVE
всегда игнорируется при использовании команды CHANGE из Командного ок-
на, т.к. в интерактивном режиме предполагается по умолчанию CHANGE
SAVE.
Опция SAVE сохраняет на экране окно CHANGE и любые другие открытые
его окна памяти после выхода из команды CHANGE. Обычно при выходе из
данной команды такие окна удаляются с экрана. Вы можете вернутся в ок-
но CHANGE после работы в других открытых окнах. Для этого используется
клавиатура или нажатие клавиши "мыши" на требуемых окнах.
Для закрытия окна CHANGE, созданного с опцией SAVE, используйте
клавиши Ctrl+W, Ctrl+End, Ctrl+Q или Escape, или нажмите кнопку "мыши"
на рамке закрытия, или выбрать пункт меню Close (Закрыть) в меню Edit
(Редактирование), или закрыть базу данных.
TIMEOUT
CHANGE поддерживает необязательное предложение TIMEOUT. Его вклю-
чение позволяет вам задать промежуток времени, в течении которого окно
CHANGE будет ожидать ввода. Числовое выражение задает число
секунд, по истечении которых при отсутствии ввода, окно CHANGE автома-
тически закроется. TIMEOUT эффективна только внутри прикладных прог-
рамм - оно не оказывает влияние при вызове CHANGE из Командного окна.
TITLE
Вы можете задать заголовок, который появится на верхней границе
окна редактирования CHANGE. По умолчанию, на этом месте появляется на-
менование редактируемой базы данных. Если вы задаете CHANGE WINDOW
(<имя окна>) и имеет заголовок, то окно
CHANGE предполагает, что ее имя совпадает с именем окна. Вы можете пе-
реопределить имя базы данных или имя окна на ваше собственное. Для
этого, включите опцию TITLE со следующим за ней символьным выражением
, которое вы хотите вывести в качестве заголовка окна CHANGE.
VALID [:F] [ERROR ]
Опция VALID позволяет вам устанавливать условия перехода от строки
к строке (от записи к записи) в окне CHANGE. VALID выполняется только
при внесении изменений в запись и при переходе к другой записи.
Если VALID возвращает логическую ложю (.F.), то курсор остается в
текущем поле и системой выдается сообщение "Неправильный ввод"
("Invalid input"). Включением предложения ERROR вы можете за-
менить это сообщение на ваше собственное. Символьное выражение
выводится в системном окне.
Если VALID возвращает логическую истину (.Т.), то вам разрешается
переход к другой записи.
Если VALID возвращает 0, то курсор остается в текущем поле и сооб-
щения об ошибке не выдается.
Вы можете заставить выполнятся VALID до того, как вы переместитесь
к следующей записи. Для этого поместите :F или /F до ключевого слова
VALID. В этом случае VALID выполняется и для неизменной записи.
Вы можете заставить выполнятся VALID до того, как вы переместитесь
к следующей записи. Для этого поместите :F или /F после ключевого сло-
ва VALID. В этом случае VALID выполняется и для неизмененной записи.
WHEN
Предложение WHEN выполняется при перемещении к следующей записи.
Если WHEN возвращает логическую истину (.Т.), то вам разрешается про-
изводить в этой записи изменения. Если WHEN возвращает ложь или 0, то
запись к которой вы переместились становится только для чтения. WHEN
не выполняется для полей памяти.
WIDTH
Опция WIDTH служит для ограничения числа символов, выводимых на
дисплей, для всех полей в части Browse окна CHANGE. Окно редактирова-
ния CHANGE может быть так же разделено на левую и правую части оконным
разделителем при помощи мыши, выбором Resize Partitions (Изменить раз-
мер частей) из всплывающего меню Browse или включением опции PARTITION
в саму команду CHANGE. Каждая часть мажет выводится в своем режиме,
назависимо от режима соседней.
Включение в команду CHANGE ключевых слов LEDIT или REDIT приведет
к выводу левой или правой части, соответственно, окна редактирования
CHANGE в режиме Редактирования. Для открытия обеих частей в режиме Ре-
дактирования задайте оба ключевых слова. Каждая часть может переклю-
чаться между режимами Изменения и Редактирования путем выбора пунктов
Browse (Редактирования) или Change (Изменения) во всплывающем меню
Browse. Можно выполнять горизонтальный скроллинг поля при помощи кла-
виш-стрелок Вправо и Влево или с помощью горизонтальных указателей.
Опция WIDTH не изменяет размер полей в самой базе данных, а изменяет
лишь размер их отображения на экране. Если ширина была задана для от-
дельного поля в опции FIELD, то она заменит значение, указанное в
предложении WIDTH для этого поля.
WINDOW
Данная опция позволяет открыть окно CHANGE внутри другого окна,
заданного . Это окно должно быть предварительно опреде-
лено командой DEFINE WINDOW, но не обязательно должно быть активным
или видимым. Опция WINDOW активмрует его и поместит в него окно
CHANGE. Окно CHANGE займет все это окно и примет его характеристики.
Например, если то окно было определено в команде DEFINE WINDOW с опци-
ями FLOAT и GROW, то окно CHANGE также можно будет перемещать и менять
его размер.
IN [WINDOW]
Если опция IN WINDOW включена, то окно CHANGE будет
открыто внутри порождающего окна. Но из этого не следует, что оно при-
мет все его характеристики. Окно CHANGE, открытое внутри порождающего
окна, не может быть перемещено за его пределы. При перемещении порож-
дающего окна, окно CHANGE перемещается вместе с ним.
Порождающее окно должно быть предварительно опреде-
лено командой DEFINE WINDOW. для доступа к окну CHANGE
должно быть видимым.
IN SCREEN
Опция IN SCREEN размещает окно CHANGE на экране. Она позволяет вам
расширить окно CHANGE на весь экран, вместо размещения его внутри ок-
на. Окно CHANGE размещается на экране по умолчанию.
COLOR SCHEME
COLOR (<список цветовых пар>)
COLOR SCHEME и COLOR определяют цветовые аттрибуты окна CHANGE. По
умолчанию, окно CHANGE использует цвета, задаваемые в COLOR SCHEME 10
(Browse).
Заданием COLOR вы можете переопределять цветовые
характеристики различных элементов окна CHANGE. Список цветовых пар
представляет собой 10 разделенных запятыми пар цве-
тов. Каждая цветовая пара управляет различными элементами (смотри таб-
лицу ниже).
Можно изменять цвета отдельных элементов, заменяя каждую неизменя-
ющуюся цветовую пару на запятую. Например, для установки цвета текуще-
го поля (цветовая пара 2) в красный на черном и цвета выбранного
текста (цветовая пара 6) в синий на черном, вы должны включить следую-
щее предложение
COLOR , R/N,,,, B/N
В результате этого будут изменены только 2-я и 6-я пары.
Задание COLOR SCHEME позволяет устанавливать цвета всех элементов
в любые из 24 доступных цветовых схем. В следующей таблице приводится
список цветовых пар и управляемые ими атрибуты.
Номер Атрибут всплывающего меню
цветовой
пары
1 Другие записи
2 Текущее поле
3 Граница
4 Активный заголовок
5 Незанятый заголовок
6 Выбранный текст
7 Текущая запись
8 Тень
9 Не используется
10 Не используется
Второй цвет цветовой пары 1 используется как цвет фона сетки.
Второй цвет цветовой пары 3 используется как основной цвет сетки.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є CHR() є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает символ ASCII, соответствующей заданному числовому выражению
Синтаксис
CHR()
Тип возвращаемого значения
Символьный
Смотри также
ASC(), INKEY()
Описание
Функция CHR() оценивает выражение и возвращает один знак,
чей численный код ASCII такой же, как и значение выражения. Функция
CHR() также используется для посылки кодов управления печатающим уст-
ройством в печатающее устройство.
Параметр
Числовое выражение должно лежать в интервале от 0 до 255.
Для получения числового значения для символа ASCII используйте
функцию ASC().
Примеры
? CHR(65)
A
? CHR(97)
a
Следующая команда переводит принтер HP LaserJet Series II в режим
Landscape:
??? CHR(27)+'&l10'
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є CHRSAW() є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Проверяет буфер клавиатуры на наличие символа
Синтаксис
CHRSAW([])
Тип возвращаемого значения
Логический
Смотри также
ASC(), READKEY()
Описание
Эта функция проверяет буфер клавиатуры на предмет наличия символа
и возвращает значение "истинно" - (.Т.) - если в буфере клавиатуры
символ присутствует. Функция CHRSAW() не влияет на содержимое буфера.
Параметр
В том случае, если присутствует, функция ожидает се-
кунд нажатия клавиши. может иметь дробную часть. Если
опущено, функция немедленно возвращает значение.
Эта функция может использоваться для различных зависимых от време-
ни действий, подобных, например, останову прикладной задачи в том слу-
чае, если клавиша не нажата в течение указанного в секундах периода
времени.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є Пример Программы є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
В предлагаемом ниже примере система отображает окно, содержащее
поля ввода, и в течение 10 минут ожидает ввода с клавиатуры. Если ни
одна из клавиш не нажимается, функция CHRSAW() возвращает значение
"ложно", и система будет отключаться.
SET TALK OFF
STORE 0 to holdkey
STORE SPACE(40) TO mcustomer,maddress
STORE SPACE(24) to mcity
STORE SPACE(2) to mstate
STORE SPACE(10) to mzip
DEFINE WINDOW menter FROM 7,10 to 17,70 PANEL
ACTIVATE WINDOW menter
@ 1,3 SAY "Customer:" GET mcustomer
@ 3,3 SAY "Address:" GET maddress
@ 5,3 SAY "City:" GET mcity
@ 7,3 SAY "State:" GET mstate
@ 7,18 SAY "Zip:" GET mzip
@ 1,14 SAY ''
IF .NOT. CHRSAW(600)
DEACTIVATE WINDOW menter
CLEAR GETS
CLOSE ALL
QUIT
ELSE
READ
DEACTIVATE WINDOW menter
ENDIF
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є CHRTRAN() є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Перекодирует символы одного символьного выражения, используя два
других символьных выражения в качестве таблицы перевода.
Синтаксис
CHRTRAN(, , )
Параметры
Перекодируемое выражение
Первая таблица трансляции
Вторая таблица трансляции
Тип возвращаемого значения
Символьный
Смотри также
SYS(15)
Описание
Перекодирует символы одного символьного выражения, используя два
других символьных выражения в качестве таблицы перевода.
Параметры , ,
Эта функция переводит знаки , используя строки и
как таблицу перевода.
Все появления первого знака в заменяются первым знаком в
, второго знака в вторым знаком в и так далее.
В том случае, если имеет меньше знаков, чем , до-
полнительные знаки в переводятся в нулевые знаки.
Если имеет больше знаков, чем , дополнительные зна-
ки игнорируются.
Примеры
? CHRTRAN("abcdef", "ace", "xyz")
xbydzf
? CHRTRAN("abcd", "yz")
yzd
? CHRTRAN('abcdef', 'ace', 'xyzqrst')
xbydzf
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є CLEAR є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Стирает заданный объект
Синтаксис
CLEAR
CLEAR ALL
CLEAR FIELDS
CLEAR GETS
CLEAR MACROS
CLEAR MEMORY
CLEAR MENUS
CLEAR POPUPS
CLEAR PROGRAM
CLEAR PROMPT
CLEAR READ
CLEAR TYPEAHEAD
CLEAR WINDOWS
Замечания
Новое для FoxPro 2.0: CLEAR READ
Смотри также
Смотри этот пункт в описании каждой команды ниже
Описание
CLEAR
Команда CLEAR без аргументов стирает экран, либо текущее окно вы-
вода и освобождает все подвешенные операторы GET. CLEAR разрешается
использовать в форматных файлах.
Смотри также: @...CLEAR, CLEAR GETS
CLEAR ALL
CLEAR ALL высвобождает все переменные памяти и массивы, выбирает
первычную рабочую область (рабочую область 1) и закрывает все открытые
на текущий момент файлы базы данных и связанные с ними индексные, фор-
матные и memo-файлы. CLEAR ALL также освобождает все активные меню или
всплывающие меню. CLEAR ALL не освобождает системные переменные памяти
или окна.
Смотри также: CLEAR MEMORY, CLOSE, RELEASE ALL
CLEAR FIELDS
CLEAR FIELDS освобождает список FIELDS, созданный командой SET
FIELDS TO. При этом автоматически выполняется команда SET FIELDS OFF.
CLEAR FIELDS отличается от SET FIELDS TO тем, что она освобождает все
поля FIELDS во всех рабочих областях, а не только в текущей рабочей
области.
Смотри также: SET FIELDS
CLEAR GETS
CLEAR GETS освобождает все подвешенные операторы GET.
Смотри также: @ ... SAY/GET
CLEAR MACROS
CLEAR MACROS удаляет из памяти все клавиатурные макросы, включая
любые назначения функциональных клавиш. Макросы могут сохраняться в
файлах макросов или в memo поле с помощью команды SAVE MACROS и затем
восстанавливаться командой RESTORE MACROS. Этой же командой восстанав-
ливаются макросы по умолчанию.
Смотри также: PLAY MACRO, RESTORE MACROS, SAVE MACROS
CLEAR MEMORY
CLEAR MEMORY освобождает все общие и частные переменные памяти и
массивы. Системные переменные памяти при этом не освобождаются.
Смотри также: RELEASE ALL
CLEAR MENUS
CLEAR MENUS освобождает все меню из памяти, а также с экрана или
из окон.
Смотри также: ACTIVATE MENU, DEFINE MENU, CREATE MENU, HIDE MENU,
SHOW MENU
CLEAR POPUPS
CLEAR POPUPS освобождает все всплывающие меню из памяти и очищает
экран или окно.
Смотри также: ACTIVATE POPUP, CREATE MENU, DEFINE POPUP, HIDE
POPUP, SHOW POPUP
CLEAR PROGRAM
CLEAR PROGRAM очищает буфер скомпилированной программы. Эта коман-
да включает в себя поддержку возможностей отката, но они вам не пона-
добятся в FoxPro 2.0.
CLEAR PROMPT
CLEAR PROMPT освобождает подсказки, выводимые на дисплей командой
@...PROMPT без выдачи команды MENU TO.
Смотри также: @ ... PROMPT
CLEAR READ [ALL]
CLEAR READ завершает выполнение команды READ текущего уровня и пе-
редает управление на предшествующий уровень READ (если он есть). READ
может иметь 5 уровней вложения. Команда CLEAR READ завершает READ не
немедленно. Выполняются все команды, которые должны быть выполнены до
возвращения в READ.
FoxPro поддерживает вложенные команды READ. Вложенные READ могут
быть созданы вызовом из предложений VALID и WHEN функций , определяе-
мых пользователем, содержащим дополнительные GET и READ. Таким образом
можно вложить до 5 READ. CLEAR READ завершает выполнение команды READ
текущего уровня и передает управление на предшествующий уровень READ.
Включение ключевого слова ALL приведет к завершению всех READ на
всех уровнях.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є Пример Программы є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
SET TALK OFF
DEFINE WINDOW entry FROM 6,14 TO 14,65 ;
TITLE 'Input Window' FLOAT SHADOW SYSTEM COLOR SCHEME 8
ACTIVATE WINDOW entry
@ 2,2 SAY 'First Name:'
@ 4,2 SAY 'Last Name:'
@ 2,16 GET firstname SIZE 1,24 DEFAULT ''
@ 4,16 GET lastname SIZE 1,24 DEFAULT ''
@ 6,14 GET button FUNCTION '*HN \?\