|
Часть 2
3. Команды и функции
--------------------
Эта глава содержит полное описание всех команд и функций FoxPro. В
сжатой форме аналогичная информация приводится в оперативной системе
помощи FoxPro. Мы настоятельно рекомендуем вам изучить возможности
оперативной помощи. Она обеспечивает очень удобный и быстрый способ
нахождения ответов на возникающие при работе с FoxPro вопросы.
Примеры Внимание !!!
Все примеры в этой части и в главе, посвященной системным перемен-
ным памяти, дублируются в оперативной системе помощи FoxPro. Поэтому,
вам не надо набирать эти примеры для запуска - примеры из помощи могут
копироваться и вставляться непосредственно в ваши программы. Смотри
первую часть этой книги (Язык программирования FoxPro) для получения
информации о создании и выполнении программ, и о способе копирования и
вставки примеров из оперативной помощи.
Файлы, используемые в этих примерах, находятся в директории
COMMFUNC, создаваемом при установке FoxPro. Для успешного запуска
программ примеров FoxPro должен иметь доступ к этим файлам. Для указа-
ния на их местонахождения может использоваться команда SET DEFAULT.
Например, допустим, что директорий COMMFUNC является поддиректори-
ем FOXPRO2 на диске С. Команда
SET DEFAULT TO C:\FOXPRO2\COMMFUNC
укажет FoxPro где искать нужные файлы. Более подробная информации о
поиске файлов в FoxPro приводится при описании команды SET DEFAULT в
этой части.
Примеры, приведенные в этой части, предназначены для иллюстрации
работы команд и функций FoxPro. Они обычно являются короткими и не со-
держат обработчики ошибок. Поэтому, они не всегда выполняются как тре-
буется. Например, в случае когда определенный файл или окно уже откры-
ты или не могут быть найдены, или при отсутствии места на диске, могут
выдаваться сообщения об ошибках.
При возникновении ошибки во время выполнения программы на экран
выводится сообщение. Обратите на него внимание. Полный список сообще-
ний об ошибках FoxPro с рекомендациями по их устранению приводится в
книге документации по FoxPro Руководство разработчика" (Developer's
Guide").
FoxPro версии 2.0
-----------------
FoxPro 2.0 характеризуется множеством новых и усовершенствованных
команд, функций и системных переменных памяти. В этой части имеется
описание каждой из них. Ниже приведен список новых и расширенных ко-
манд, функций и системных переменных памяти. Если возможности команды
или функции были расширены, то включается описание этих усовершенство-
ваний.
----------------------------------------------------------------------
Команда, функция Новая Расширена Описание усовершенствований
или системная
переменная памяти
----------------------------------------------------------------------
% - модульный +
оператор
/ | // +
? | ?? + предложение STYLE
@ ... SAY/GET + предложение SIZE, код К PICTURE
@ ... GET - Блок +
проверки
@ ... GET - Неви- +
димые кнопки
@ ... GET - Списки +
@ ... GET - Всплы- +
вающие меню
@ ... GET - +
Текстовые кнопки
@ ... GET - +
Селективные кнопки
@ ... GET - Области +
модификации текста
ACOPY() +
ACTIVATE MENU + предложение NOWAIT
ACTIVATE POPUP + предложения AT, BAR, NOWAIT и REST
ADEL() +
ADIR() +
AELEMENT() +
AFIELDS() +
AINS() +
ALEN() +
APPEND FROM + дополнительные типы файлов
APPEND FROM ARRAY + блокировка только заголовка базы
данных в FoxPro/LAN
ASCAN() +
ASUBSCRIPT() +
BROWSE + ключевые слова LEDIT, LPARTITION,
NOLINK, NOLGRID, NOOPTIMIZE,
NOREFRESH, NORGRID, REDIT и REST
предложения FOR, PARTITION, WHEN и
VALID, поддержка SET SKIP, ROW() и
COL()
BUILD APP +
BUILD EXE +
BUILD PROJECT +
CDX() +
CLEAR READ +
CNTBAR() +
CNTPAD() +
COPT INDEXES +
COPY STRUCTURE + + предложения CDX и PRODUCTION
COPY TAG +
COPY TO + предложения CDX и PRODUCTION,
ключевое слово NOOPTIMIZE, допол-
нительные типы файлов
CREATE COLOR SET +
CREATE MENU +
CREATE PROJECT +
CREATE QUERY +
CREATE REPORT + программное создание быстрого
отчета с предложениями ALIAS,
COLUMN, FIELDS, FORM, NOOVERWRITE,
и WIDTH
CREATE SCREEN +
CREATE TABLE - SQL +
_CUROBJ +
DEFINE BAR + предложения AFTER, BEFORE, COLOR,
KEY и MARK
DEFINE MENU + предложения AT LINE, BAR, IN WINDOW,
KEY, MARK и NOMARGIN
DEFINE PAD + предложения AFTER, BEFORE, KEY и
MARK
DEFINE POPUP + предложения FOOTER, IN WINDOW, KEY,
MARGIN, MARK, MOVER, MULTI, RELATIVE
SCROLL и TITLE; PROMPT FIELD прини-
мает общие выражения
DEFINE WINDOW + предложения FILL, FOOTER и MINIMIZE
DELETE TAG +
DIMENSION/DECLARE + можно изменять размерность массива
без потери данных
DISPLAY/ + выводит дополнительную информацию,
LIST STATUS поддержка драйверов принтеров
DO + предложение IN
EVALUATE() +
EXPORT +
EXTERNAL +
FULLPATH() + может быть возвращен относительный
маршрут между двумя файлами
GATHER + ключевое слово MEMO
_GENGRAPH +
_GENMENU +
_GENPD +
_GENSCRN +
_GENXTAB +
GETBAR() +
GETPAD() +
IMPORT +
INDEX + предложения ASCENDING, COMPACT,
DISCENDING и TAG; индексное выраже-
ние может содержать функции, опре-
деляемые пользователем
INSERT - SQL +
KEYBOARD + символьное выражение KEYBOARD
может содержать клавишные метки или
UDF
KEY() + поддержка составных индексов
LABEL + опция PREVIEW; ключевое слово
NOOPTIMIZE
LOCFILE() +
LOOKUP() +
MDX() +
MLINE() + новое предложение для смещения
строки памяти memo
_MLINE +
MODIFY LABEL + предложение NOENVIRONMENT; опция
NOWAIT
MODIFY MENU +
MODIFY PROJECT +
MODIFY QUERY +
MODIFY REPORT + предложение NOENVIRONMENT; опция
NOWAIT
MODIFY SCREEN +
MOVE POPUP +
MRKBAR() +
MRKPAD() +
NDX() + поддержка составных индексов
OBJNUM() +
ON BAR +
ON PAD + предложение ACTIVATE MENU
ON SELECTION BAR +
ON SELECTION MENU +
ON() +
ORDER() + поддержка составных индексов
PACK + опции MEMO и DBF; может прерывать-
ся нажатием клавиши Escape
PARAMETERS + можно передавать целиком массивы
_PDSETUP +
POP KEY +
POP MENU +
POP POPUP +
_PRETEXT +
PRMBAR() +
PRMPAD() +
PUSH KEY +
PUSH MENU +
PUSH POPUP +
RDLEVEL() +
READ + предложения ACTIVATE, COLOR, CYCLE,
DEACTIVATE, LOCK, MODAL, NOLOCK,
OBJECT, SHOW, VALID, WHEN и WITH
READKEY() + необязательный числовой аргумент,
для определения того, как закон-
чилась последняя команда READ
REINDEX + опция COMPACT
RELEASE BAR +
RELEASE PAD +
RELEASE MENUS + опция EXTENDED
RELEASE POPUPS + опция EXTENDED
REPORT + опции PREVIEW и NOCONSOLE; ключевое
слово NOOPTIMIZE
RETURN + отсутствие RETURN в процедуре или
UDF автоматически возвращает значе-
ние истина (.Т.)
SCATTER + ключевое слово MEMO
SCROLL + горизонтальная прокрутка
SELECT() + опции 0 и 1
SELECT - SQL +
SET ANSI +
SET HELPFILTER +
SET INDEX + предложения ADDITIVE, ASCENDING,
DESCENDING и ORDER
SET LIBRARY +
SET MARK OF +
SET MESSAGE + предложение WINDOW
SET OPTIMIZE +
SET ORDER + предложения ASCENDING, DESCENDING
IN и TAG
SET PDSETUP +
SET PRINTER + поддержка очереди и сервера сети
SET SKIP +
SET SKIP OF +
SET SYSMENU + предложения AUTOMATIC и DEFAULT,
управление Системным меню FoxPro
SET TALK + предложение WINDOW
SET TEXTMERGE +
SET TEXTMERGE +
DELIMITERS
SET TRBETWEEN +
SHOW GET +
SHOW GETS +
SHOW OBJECT +
SET WINDOW + ключевое слово REFRESH
SKPBAR() +
SKPPAD() +
SIZE POPUP +
SYS(2011) +
SYS(2012) +
SYS(2013) +
SYS(2014) +
SYS(2015) +
SYS(2016) +
SYS(2017) +
SYS(2018) +
SYS(2019) +
SYS(2020) +
SYS(2021) +
SYS(2022) +
SYS(2023) +
TAG() +
_TALLY +
_TEXT +
TEXT...ENDTEXT + возможности объединения текста
_THROTTLE +
TYPE + ключевые слова AUTO и WRAP; поддер-
жка драйвера принтера
UDFs + могут использоваться в предложениях
FOR и WHILE, индексных выражениях;
присутствие RETURN не является
обязательным
USE + предложения AGAIN, ASCENDING,
DESCENDING и ORDER
WAIT + опция NOWAIT для предложения WINDOW,
WAIT CLEAR
WBORDER() +
WCHILD() +
WLAST() +
WMAXIMIZE() +
WMINIMIZE() +
WPARENT() +
WREAD() +
ZOOM WINDOW +
----------------------------------------------------------------------
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є % є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Оператор деления по модулю. Возвращает остаток от деления двух
числовых выражений.
Синтаксис
%
Параметры
Делимое (число которое делится).
Делитель (число на которое делят)
Замечания
Новая для FoxPro 2.0
Смотри также
MOD()
Описание
Оператор деления по модулю % возвращает остаток при делении одного
числового выражения на другое числовое выражение. Этот оператор и оп-
ретор MOD() возвращают одинаковые значения.
Оператор % подобен арифметическим операторам + (сложение), - (вы-
читание), * (умножение) / (деление) и ^ (возведение в степень. При
комбинации этих операторов в одном арифметическом выражении % имеет
тот же приоритет, что и * и /. Смотри Руководство Команды и Функции
FoxPro для получения информации об этих оператарах и порядке их выпол-
нения.
Параметры
является делимым (числом которое делится). Число десятич-
ных знаков после запятой в определяет число десятичных знаков
результата.
является делителем (числом на которое делят выражение
). Возвращается положительное число, если положительно,
и отрицательное число, если отрицательно.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є Примеры є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
? 36 % 10
6
? (4*9) % (90/9)
6
? YEAR(DATE()) % 4
3
? 25.250 % 5.0
0.250
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є & є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Макроподстановка
Синтаксис
&[.]
Смотри также
EVALUATE()
Описание
Когда функции & предшествует имя переменной памяти символьного ти-
па, программа FoxPro инструктируется о необходимости выполнения макро-
подстановки - значение заменяет функцию & и имя переменной,
которое следует за ним. После этого команда выполняется точно также
как если бы она первоначально включала символы из переменной памяти.
Вы можете использовать макроподстановку в любой команде или функции,
которая допускает использование цепочки литералов.
При использовании функции макроподстановки вы можете предоставить
пользователю подсказку, касающуюся информации, а затем применить эту
информацию как часть команды, которая требует цепочки литералов.
Примеры
Включает имя переменной памяти , используемой для макро-
подстановке. Макроопределение не должно превышать максимальную длину
оператора, разрешенной в FoxPro, которая составляет 1024 символа.
[.]
Для сцепления дополнительных символов в макрорасширении
применяется дополнительный ограничитель "точка" (.). Строка символов,
заменяемая функцией &, сама может содержать функции &, и если
существует переменная памяти, имя которой сопровождается подобной
вложенной функцией &, содержимое такой переменной также заменяется в
команде.
Однако, если команда ожидает имя (имя файла,имя окна, меню и
т.д.), непосредственное обращение обеспечивает более быструю обработку
(для получения более подробной информации относительно непосредствен-
ного обращения к именам смотри Главу 1 данного руководства). Помимо
этого, использование макроподстановки в команде или файле, которые
принимают символьное выражение, результируются в более медленной обра-
ботке.
Несмотря на это, нижеследующие команды разрешены для
использования:
STORE "Customer" TO dbf_file
STORE "Cust_id" TO tagname
USE &dbf_file INDEX &tagname
это использование макроподстановки "расточительно" и должно
заменяться непосредственным обращением, например:
USE (dbf_file) TAG (tagname)
Следует отметить, что сама переменная не должна рекурсивно обра-
щаться к макроопределению. Ниже приведен пример генерации сообщения об
ошибке:
STORE "&x" TO x
? &x
Появляющиеся в управляющих структурах программы операторы макро-
подстановки (например, DO WHILE) оцениваются только в начале цикла и
повторно при последующих итерациях не оцениваются. Любые изменения
для оценки оператора макроподстановки, имеющие место в цикле,
не распознаются.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є $ є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Возвращает "истина", если одно символьное выражение содержится в
другом символьном выражении.
Синтаксис
$
Параметры
Искомая строка
Строка в которой осуществляется поиск
Возвращаемый тип
Логический
Смотри также
AT()
Описание
Это функция подцепочки, которая возвращает значение "истинно"
(.T.), если является подцепочкой (содержится в ней), и
"ложно" (.F.) в случае обратного положения.
Параметры
,
Осуществляется поиск символов в . Если со-
держит в себе хотя бы одно появление , то возвращается .Т..
Если не найдено в , то возвращается .F..
и могут быть переменными памяти символьного типа
или элементами массива, полями базы данных символьного типа, символь-
ными строковыми литералами или полем памяти произвольной длины.
Так как в FoxPro цепочки и поля памяти обрабатываются одинаково,
то с полями памяти может быть сделано все то же самое, что с цепочками
или символьными полями базы данных. Например, нижеследующее выражение
полностью разрешено (считая, что MEMO_FLD представляет собой поле па-
мяти базы данных):
LIST FOR 'FOX' $ UPPER(memo_fld)
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є Пример є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
STORE 'FOX' TO fastvar
? fastvar $ 'THE QUICK RED FOX JUMPED OVER THE LAZY DOG'
.T.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є = є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Оценка списка выражений
Синтаксис
=[,...,]
Смотри также
?, функции определяемые пользователем
Описание
Команда = просто выполняет оценку списка выражений ,
..., и подавляет возвращаемое значение. В частности,
данная команда может быть полезной, когда функция, будь то функция
FoxPro или функция, определяемая пользователем, выполняет требуемые
действия, но при этом нет необходимости присваивать возвращаемый функ-
цией результат переменной памяти или полю.
Например, для переключения между режимами вставки/затирания вы мо-
жете дать команду:
= INSMODE(.T.).
Функция INSMODE обычно возвращает значение "истина" (.T.) или
"ложь" (.F.). В данном примере функция выполняется, но возвращаемое ей
значение подавляется.
Отметим, что знак равенства = может быть также использован в ка-
честве оператора в логическом выражении операции сравнения. Он может
также служить для присвоения значений массивам и переменным памяти. В
двух последних случаях знак равенства не используется в качестве ко-
манды.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є \ | \\ є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Выводит строки текста.
Синтаксис
\ | \\
Замечания
Новая для FoxPro 2.0
Смотри также
_PRETEXT, SET TEXTMERGE, SET TEXTMERGE DELIMITERS,_TEXT, TEXT ... ENDTEXT
Описание
Команды \ и \\ обеспечивают в FoxPro возможности объединения
текста. Это , в свою очередь, позволит вам осуществлять вывод тексто-
вой информации в файл, с целью создания бланков писем и программ.
\ и \\ осуществляют вывод текстовой строки в текущее выходной файл
объединения текста и на экран. Этот файл задается вами оператором SET
TEXTMERGE. Если объединение текста не направлено в файл, то текстовая
строка выводится только на экран. Вы можете подавить вывод на экран
включением ключевого слова NOSHOW в операторе SET TEXTMERGE.
При использовании команды \ результирующая выводимая строка будет
заканчиваться символами возврата каретки и перевода строки. При
использовании команды \\ выводимая строка эти символы не содержит.
Пробелы, предшествующие командам \ и \\ не включаются в выводимую
строку, а пробелы после них - включаются.
В могут содержаться выражения. Выражение вычисляется и
его значение выводится, если оно заключено в ограничители слияния
текста (по умолчанию считаются << и >>) и TEXTMERGE установлен в ON.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є Пример Программы є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
CLOSE ALL
SET TEXTMERGE TO letter.txt
USE customer
SET TEXTMERGE ON
\<>, <>
\\<>, <>
\
\
\Dear <>
\
\Additional Text
\
\Thank you,
\Fox Software
CLOSE ALL
MODIFY FILE letter.txt NOWAIT
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ? | ?? є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Оценка выражений и вывод результатов на дисплей
Синтаксис
? | ?? [ [PICTURE ]
[FUNCTION ]
[AT ] [STYLE ]
[, ]] ...
Смотри также:
SET MEMOWIDTH, SET PRINTER, Системные переменные памяти
Описание
? и ?? производят оценку заданного им выражения (выражений) и вы-
водят результат на экран, принтер или сразу на оба устройства.
Если SET PRINT находится в состоянии ON, то выход обеих команд
направляется одновременно на экран и на принтер. Если же CONSOLE нахо-
дится в состоянии OFF, а SET PRINT в ON, то выход будет направлен
только на принтер.
Дополнительные опции
?
Один вопросительный знак посылает перед выводом результата выраже-
ния символы возврата каретки и перевода строки. Тем самым, если кодом
FUNCTION или системной переменной памяти _ALIGNMENT не будет задано
иное, то вывод результата появится на экране или на принтере в следую-
щей строке, начиная с крайней левой позиции. Если же никакого выраже-
ния задано не было, то печатается пустая строка. Запятая между выраже-
ниями (, ...) автоматически задает разделение их с по-
мощью пробелов.
??
В случае двух последовательно стоящих вопросительных знаков ре-
зультат выводится с текущей позиции экрана или принтера - пара управ-
ляющих символов, возврат каретки и перевод строки, не посылается.
PICTURE
Если имеется предложение PICTURE, то значение выражения выводится
в соответствии с форматом, задаваемым . может состоять
из функциональных кодов, кодов шаблонов или из комбинации тех и дру-
гих.
Функциональные коды влияют на формат выражений в целом, тогда как
действие кодов шаблонов распространяется исключительно на один отдель-
ный символ в выражении. Если в используются функциональные ко-
ды, то они должны располагаться перед стоящими там же кодами шаблонов
и начинаться с символа @. За символом @ может следовать любое число
функциональных кодов без пробелов между ними. За последним функцио-
нальным кодом в строке должен находиться один или несколько пробелов.
Пробел(ы) обозначает конец функциональных кодов и начало кодов шабло-
нов предложения PICTURE.
Вы можете использовать все коды для FUNCTION в @ ... SAY/GET.
Смотри список этих кодов в описании предложения FUNCTION в @ ...
SAY/GET.
FUNCTION
Предложение FUNCTION представляет собой альтернативное
средство включения функциональных кодов для вывода команды ?і??.
Использование предложения FUNCTION эквивалентно заданию функциональных
кодов в предложении PICTURE, за исключением того, что теперь нет необ-
ходимости включать символ @.
Вы можете использовать все коды для FUNCTION в @ ... SAY/GET.
Смотри список этих кодов в описании предложения FUNCTION в @ ...
SAY/GET.
С командами ? и ?? может быть использован специальный функциональ-
ный код V.V позволяет растягивать вывод в вертикальном направле-
нии, ограничивая число позиций по горизонтали. - это максимальное
количество столбцов, которые будут заняты при выводе результатов.
AT
Необязательное предложение AT может быть использовано для задания
номера столбца , в котором должен начинаться вывод. Данная опция
может применяться для выравнивания столбцов выводимых результатов,
например в случае вывода таблицы чисел.
STYLE
Необязательное предложение STYLE позволяет вам задавать стиль и
размер шрифта при выводе информации на принтер. Выражение в
предложении STYLE посылается трем процедурам: PDOBJST, PDOBJECT и
PDOBJEND в текущей программе драйвера принтера FoxPro. Эти процедуры
определяют порядок выдачи на печать от операторов ? и ??. Опция STYLE
игнорируется при выводе с помощью ? и ?? на экран или в окно. За более
подробной информацией о форматированном выводе на принтер с помощью
операторов ? и ?? мы отсылаем вас к Главе Драйверы принтера в Руко-
водстве Разработчика (Developer's Guide) документации по FoxPro.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є Примеры є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
? 15*(10+10)
300
? 'Welcome to ' PICTURE '@!
?? 'FOXPRO'
WELCOME TO FOXPRO
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є ??? є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Направление управляющих кодов непосредственно на принтер
Синтаксис
???
Смотри также
?/??, CHR(), Системные переменные памяти
Описание
Три вопросительных знака направляют содержимое прямо
на принтер, в обход драйвера принтера. Эта команда позволяет ис-
пользовать управляющие коды принтера, не поддерживаемые драйвером
принтера.
Управляющие коды принтера поэволяют выполнить сброс принтера, из-
менить тип и размер шрифта, включить или отменить режим печати полу-
жирным шрифтом и т.д. Эти коды могут состоять из любой комбинации
отображаемых и неотображаемых символов, специфичных для конкретно
используемого вами принтера. Вы можете направить управляющие коды на
принтер несколькими различными способами:
* Воспользоваться для посылки прямо на принтер ASCII-символа функ-
цией CHR().
* Воспользоваться для посылки кодов принтера или ASCII-символов
фигурными скобками {}.
* Воспользоваться комбинацией функции CHR() и фигурных скобок.
* Коды могут быть посланы на принтер до начала печати и после
окончания печати в системных переменных _PSCODE и _PECODE. Дополни-
тельную информацию см. также в главе "Системные переменные памяти"
настоящего руководства.
Управляющие коды для разных принтеров различны. Лучшим источником
информации об управляющих кодах принтера является поставляемое вместе
с самим принтером руководство.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є @ ... SAY/GET є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Выполнение ввода/вывода в заданной строке и столбце
Синтаксис
@
[SAY
[PICTURE ]
[FUNCTION ]
[COLOR SCHEME
|COLOR ]]
[GET
[PICTURE ]
[FUNCTION ]
[DEFAULT ]
[ENABLE | DISABLE]
[MESSAGE ]
[[OPEN]
WINDOW ]
[RANGE []
[, ]]
[SIZE , ]
[VALID |
[ERROR ]]
[WHEN ]
[COLOR SCHEME
|COLOR ]]
Замечания
Расширена в FoxPro 2.0: DISABLE, ENABLE, SIZE, код K в PICTURE. OPEN
WINDOW предназначена только для совместимости с ранними версиями;
вместо этого используется @ ... EDIT.
Смотри также
_CUROBJ, OBJNUM, READ, SET COLOR, SET CURRENCY, SET DEVICE, SET SCHEME,
SHOW GETS, SHOW OBJECT, VARREAD(), Функции, определяемые пользователем.
Описание
Данный вариант команды @ используется для экранного или оконного
форматированного вывода, для создания экранов ввода, либо для формати-
рования вывода на принтер.
Дополнительные опции
(<строка,столбец>)
и представляют собой численные выражения, определя-
ющие местоположение вывода. Для ввода/вывода на экран первая строка
имеет номер 0, а номер последней строки равен высоте экрана минус еди-
ница. Обычно последняя строка имеет номер 24, если только вы не рабо-
таете в режиме расширенного экрана дисплея. Нумерация строк идет свер-
ху-вниз. Для принтера максимальный номер строки ограничивается физи-
ческими размерами листа.
Для ввода/вывода на экран первый столбец имеет номер 0, а номер
последнего столбца равен ширине экрана дисплея минус единица. Обычно
последний столбец имеет номер 79, если только вы не работаете в режиме
расширенного экрана дисплея. Нумерация столбцов идет слева-направо.
Для принтера максимальный номер столбца ограничивается физическими
размерами листа.
Вывод от оператора @ .. SAY/GET будет направляться на экран, если
не активировано окно, определяемое пользователем. При выводе в окно,
координаты и являются относительными координатами дан-
ного окна, а не координатами самого физического экрана.
Опции оператора SAY
SAY
Если имеется предложение SAY, то оценивается и выводится
на дисплей, начиная с позиции (<строка,столбец>).
может представлять собой UDF (функцию, определяемую пользователем).
Если выло определено SET DEVICE TO PRINT, то вывод направляется на
принтер. Если выло определено SET DEVICE TO SCREEN, то вывод направля-
ется на экран. Предложение @...SAY может быть также использовано в
форматных файлах.
PICTURE |FUNCTION
При создании поля SAY вы можете включить опцию PICTURE, FUNCTION
или сразу обе. Эти опции содержат специальные коды, управляющие выво-
дом и редактированием выражения .
Коды FUNCTION могут включаться в предложение PICTURE. В этом слу-
чае предложение PICTURE должно начинаться с символа @. Кроме этого,
предложение PICTURE может содержать в себе коды FUNCTION, коды PICTURE
или их комбинации, но предложение FUNCTION может содержать только коды
FUNCTION.
Примеры
Следующий пример иллюстрирует использование оператора SAY с функ-
циональным кодом перевода в заглавные буквы в опции PICTURE. При этом
все символы переводятся в верхний регистр.
STORE 'Hello, world; TO string
CLEAR
@ 5,0 SAY string PICTURE '@!'
HELLO, WORLD
Следующий пример показывает форматирование числового значения с
помощью комбинации функциональных кодов. Коды $$ создают знак доллара,
а код С добавляет после числа знак CR (кредит).
CLEAR
@ 5,0 SAY 1.15 FUNCTION 'C$$'
$1.15CR
Коды FUNCTION
Функциональные коды FUNCTION.
Код Что делает
A Разрешен ввод только алфавитных символов.
B Выравнивание числовых данных при выводе по левому краю.
C После положительного числа выводится CR (кредит).
Может использоваться только с числовыми данными. Может
стоять только в предложении SAY.
D Использует текущий формат SET DATE (например, BRITISH,
GERMAN и т.д.) для редактирования данных типа даты.
E Редактирование данных, рассматривая их как Европейские
(BRITISH) даты.
I Выводимый текст центрируется относительно поля.
J Выводимый текст выравнивается по правому краю поля.
К Выбирает определенное поле для редактирование при указании
на него курсором.
L При числовом выводе на дисплее отображаются ведущие нули
(вместо пробелов). Может использоваться только с числовыми
данными.
M Задает несколько предопределенных значений на выбор.
представляет собой набор элементов данных, разде-
ленных запятыми. Поскольку эти элементы разделяются запятыми,
запятая не может являться частью элемента данных. Если к
моменту, когда выдается команда READ, переменная в GET
не содержит ни одного из элементов , в поле GET появляется
первый элемент .
Для скроллинга по достаточно нажать пробел или пер-
вую букву соответствующего элемента. Для выбора одного из
элементов и перехода к следующему элементу нажмите Еnter.
Данная функция может быть использована только с символьными
данными и только с командой GET.
R При использовании со строкой , которая содержит сим-
волы, отличные от кодов шаблона PICTURE, не совпадающие с
шаблоном символы отображаются на дисплее, но не помещаются
в . Может использоваться только с символьными данными.
S Ограничивает ширину отображения на дисплее символами,
где есть целочисленная константа. Задает горизонтальный
скроллинг поля в пределах заданных столбцов. Для про-
смотра скрытых частей поля можно воспользоваться клавишами
управления курсором "стрелка вправо", "стрелка влево",
Ctrl+F и Ctrl+A. Может использоваться только с символьными
данными.
T Отсекает ведущие и хвостовые пробелы в поле.
X После отрицательных чисел выводится символ DB (дебит).
Может использоваться только с числовыми данными. Может
находиться только в предложении SAY.
Z При выводе поля, если числовое значение равно нулю,
выводятся все пробелы. Может использоваться только с чис-
ловыми данными.
( При использовании этой функции отрицательные числа берутся
в круглые скобки. Может использоваться только с числовыми
данными.
! Могут вводиться любые символы; однако, буквы алфавита пре-
образуются в заглавные. Может использоваться только с сим-
вольными данными.
^ Выводит числовые данные в научной записи. Может использова-
ться только с числовыми данными.
$ Выводит данные в формате денежной записи. Символ денег по-
является в поле справа или слева от значения, в зависимости
от текущей установки SET CURRENCY. Может использоваться
только с числовыми данными. Если CURRENCY установлено как
SET LEFT, то функциональный код $ не может использоваться
с GET.
Коды шаблонов PICTURE
Выражение PICTURE может включать любые необходимые символы; одна-
ко, в редактировании и вводе данных активно участвуют только приведен-
ные ниже символы. Если в формат включить какие-либо другие символы,
они будут включены в отображение при выводе, а в случае операции ввода
появятся в поле в качестве комментария, и курсор будет перескакивать
через них при редактировании. Символы, которые могут выть использованы
в выражении шаблона, описаны ниже.
Код Что делает
A Допускает ввод только алфавитных символов.
L Допускает только логические данные.
N Допускает только буквы и цифры.
X Допускает любые символы.
Y Допускает только логические значения Y,y,N,n, с преобразо-
ванием e и n в Y и N, соответственно.
9 В случае символьных данных позволяет вводить только цифры.
В случае числовых данных позволяет вводить сифру и знак.
# Позволяет вводить цифры, пробелы и знак.
! Выполняет преобразование строчных букв в заглавные.
$ Выводит на дисплей текущий денежный символ (определяемый
при помощи SET CURRENCY). По умолчанию этот символ помещается
непосредственно до или после поля. Однако, денежный символ и
его позиция (SET CURRENCY), разделительный символ (SET SEPA-
RATOR) и символ десятичного знака (SET POINT) могут быть
переопределены. Данный символ шаблона может использоваться
в обоих полях, SAY и GET, однако в поле GET он допустим
только при SET CURRENCY равном LEFT.
* Звездочки выводятся перед числовыми значениями. Использу-
ются со знаком доллара "$" для защиты проверкой.
. Точка задает позицию десятичной точки.
, Запятая может использоваться для отделения цифр, стоящих
слева от десятичной точки.
COLOR SCHEME
COLOR (<список цветовых пар>)
По умолчанию цвет выводимой оператором SAY информации берется из
цветовой схемы текущего окна или экрана. Цветовая схема представляет
собой набор из 10 цветовых пар, которые описывают цветовые характе-
ристикм окна. Вы можете переопределить текущую цветовую схему путем
задания различных предопределенных заранее цветовых схем, или путем
задания списка цветовых пар.
Заданием списка цветовых пар в операторе SAY вы можете переопреде-
лять лишь некоторые характеристики цветовой схемы. Список цветовых пар
представляет собой 10 разделенных запятыми пар цветов.
Опции оператора GET
GET выводит поле на экран или в окно для редактирования. При
наличии обоих предложений, SAY и GET, после конца вывода SAY и перед
началом вывода GET автоматически вставляется пробел. Для инициирования
редактирования поля GET в сочетании с SAY должна использоваться коман-
да READ.
PICTURE
FUNCTION
Эти предложения имеют здесь то же назначение, что и в предложении
SAY, за исключением того, что они используются для редактирования дан-
ных, вводимых в ответ на GET. Смотри замечания по PICTURE и FUNCTION
выше для более подробной информации.
DEFAULT
Если GET задает переменную памяти и эта переменная не су-
ществует, то при включении опции DEFAULT она автоматически создается и
инициализируется. Если является элементом массива, то DEFAULT не
создает . DEFAULT игнорируется, если является полем базы
данных.
Важно !!!
Если опция DEFAULT не включена и не существует, то выдается
предупреждение об ошибке 'Переменная не найдена'('Variable
not found').
Если опция DEFAULT присутствует и существует, то DEFAULT иг-
норируется.
Выражение в опции DEFAULT задает тип и начальное значение
инициализируемой переменной памяти. должна иметь числовой или
символьный тип.
ENABLE|DISABLE
Включение опции DISABLE запрещает доступ и изменение к полю в GET.
Поле выводится цветами блокировки и оно не выбирается. По умолчанию
поля GET имеют статус ENABLE (доступные). Вы можете включать опцию
ENABLE для напоминания, что поле может выбираться и модифицироваться.
MESSAGE
Предложение MESSAGE позволяет при помещении курсора в соответству-
кющее поле GET выводить на дисплей заданное символьное выражение
. Сообщение выводится в последней строке экрана или окна и вре-
менно отменяет любое выражение SET MESSAGE.
[OPEN] WINDOW
Предложение WINDOW позволяет редактирование поля памяти типа memo
в окне, определяемом пользователем. Перед этим окно
должно быть определено с помощью DEFINE WINDOW. В этом случае на экра-
не появится слово Memo.
Для того, чтобы открыть окно редактирования memo поля, надо нажать
дважды кнопку "мыши" не слове Memo, или установить курсор на слове
Memo и нажать Ctrl+Home, Ctrl+PgUp или Ctrl+PgDn .
Для удаления окна нажмите кнопку "мыши" на рамке закрытия окна
(если возможно) или вне окна. Вы также можете выйти из окна нажатием
Ctrl+W, Ctrl+End, Ctrl+Q или Escape.
Если включить в предложение необязательное слово OPEN, то окно па-
мяти открывается по умолчанию, но для входа в него тем не менее требу-
ется нажатие Ctrl-Home, а для выхода - Ctrl-End.
RANGE [][,]
Опция RANGE может использоваться с символьными переменными, датами
и числовыми переменными для задания диапазона значений, в пределах ко-
торых должны находиться вводимые величины. При задании значения, выхо-
дящего за заданные границы, выдается сообщение и указываются допусти-
мые границы.
Значения и должны являться символьными, числовыми
выражениями или выражениями типа даты, в зависимости от того, является
ли переменной символьного, числового типа или датой.
Если вводимое вами значение не укладывается в заданный диапазон,
раздается предупреждающий звуковой сигнал и появляется сообщение,
несущее информацию о допустимых значениях диапазона.
Можно опустить либо верхнее, либо нижнее граничное значение, но не
оба одновременно. Если одно из значений опущено, то проверка его не
производится. Если нажать Enter, не изменив значения , то провер-
ка диапазона также не выполняется.
Для переопределения выдаваемого по умолчанию сообщения о границах
диапазона служит команда ON READERROR.
SIZE ,
Команда GET редактирует область высотой в одну строку. Длина поля
GET задается редактируемой переменной памяти или полем базы данных,
или опцией PICTURE, если она присутствует. Опция SIZE позволяет управ-
лять размером поля GET - высотой и длиной. При редактировании memo по-
ля вы можете задавать размер области редактирования.
Высота поля GET задается в строках параметром , ширина - в
столбцах параметром . Размер может быть больше или меньше раз-
мера редактируемой переменной .
Если вы задали размеры без опции PICTURE:
- если является полем базы данных и размер области редакти-
рования, заданного вами в опции SIZE, больше длины поля, то редактиро-
вание происходит в области, совпадающей с размером этого поля базы
данных.
- если является переменной памяти и размер области редакти-
рования, заданного вами в опции SIZE, больше длины этой переменной, то
редактирование происходит во всем GET поле.
- если является переменной памяти или полем базы данных и
размер области редактирования, заданного вами в опции SIZE, меньше
длины , то по полю GET осуществляется скроллинг.
Если вы задали размеры с опцией PICTURE:
- если PICTURE задает размер, меньший, чем поле GET, то опция
PICTURE имеет приоритет. Например, если опция PICTURE имеет вид "ААА"
(три алфавитных символа" и опция SIZE 1,10 (одна строка в высоту и
десять столбцов в ширину), то в поле GET вы сможете редактировать пер-
вые три символа переменной памяти или поля базы данных.
- если PICTURE задает меньший размер, чем размер поля GET, то в
поле GET осуществляется скроллинг.
VALID |
Предложение VALID позволяет сделать контроль достоверности вводи-
мых с экрана данных частью команды @...GET. Предложение VALID позволя-
ет существенно упростить контроль достоверности экранного ввода при
использовании его в сочетании с функциями, определяемыми пользовате-
лем. Если функция, определяемая пользователем (UDF), вызывается из
предложения VALID, то UDF возвращает данные логического или числового
типа. При попытке выхода из поля GET выражение VALID будет оцениваться
с использованием значения выражения.
Важно !!!
В отличие от контроля данных в предложении RANGE, контроль в пред-
ложении VALID выполняется всегда, независимо от того, каким способом
был произведен выход из поля, за исключением выхода при помощи клавиши
Escape. Предложение RANGE осуществляет контроль только при изменении
.
VALID c логическим выражением
Если истинно (.T.), ввод считается достоверным, и READ пе-
реходит к вводу следующего поля. Если ложно (.F.), то введен-
ное значение считается неверным, и FoxPro выдает сообщение и предупре-
дительный сигнал, сообщающие вам о необходимости повторить после нажа-
тия пробела ввод данных.
VALID c числовым выражением
Если вместо логического выражения в предложении VALID будет задано
числовое выражение, то выполняемые действия будут зависеть от значе-
ния, возвращаемого . В целом, предложение VALID, возвращающее
числовое значение, может быть использовано для обозначения того, какое
поле будет следующим полем GET, к которому обратится READ.
* Ноль указывает на то, что контроль достоверности обнаружил ошиб-
ку, и курсор остается в том же поле GET (так же, как при логическом
.F.). Как стандартное, так и определяемое при помощи ERROR
сообщения об ошибке в случае использования числового выражения подав-
ляются. Отдельная подпрограмма с сообщением об ошибке может быть на-
писана специально, как часть определяемой пользователем функции, вызы-
ваемой предложением VALID.
* Положительное значение указывает относительное число полей, на
которое команда READ должна продвинуться вперед, прежде чем начать
ввод следующего поля GET. Например, если вы находились на пятом поле
GET, а предложение VALID возвратило число 2 (два), то следующим полем
ввода станет седьмое поле GET. Если выходит за пределы послед-
него поля GET, то операция READ завершается.
* Отрицательное значение указывает относительное число полей, на
которое команда READ должна вернуться назад, прежде чем начать ввод
следующего поля GET. Например, если вы находитесь на пятом поле GET, а
предложение GET возвратило отрицательное число два (-2), то следующим
полем ввода станет третье поле GET. Если выходит за пределы
первого поля GET, то операция READ завершается.
ERROR
ERROR позволяет вам задавать собственное сообщение об
ошибке в случае оценки VALID как ложно (.F.). Выражение
появляется на месте стандартного сообщения об ошибке.
WHEN
Предложение WHEN разрешает или запрещает редактирование поля GET в
зависимости от результата оценки заданного условия . Прежде чем
курсор сможет попасть в данное поле для начала редактирования, оценка
должна дать логическое .T. Если задано предложение WHEN, а
оценка дает .F., ввод не разрешен, а доступ к полю невозможен,
и курсор в таком случае перемещается к следующему полю GET.
COLOR SCHEME
COLOR (<список цветовых пар>)
По умолчанию цвет выводимой оператором SAY информации берется из
цветовой схемы текущего окна или экрана. Цветовая схема представляет
собой набор из 10 цветовых пар, которые описывают цветовые характе-
ристикм окна. Вы можете переопределить текущую цветовую схему путем
задания различных предопределенных заранее цветовых схем, или путем
задания списка цветовых пар.
Заданием списка цветовых пар в операторе SAY вы можете переопреде-
лять лишь некоторые характеристики цветовой схемы. Список цветовых пар
представляет собой 10 разделенных запятыми пар цветов.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є Пример программы є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
SET TALK OFF
SET MESSAGE TO 24
CLEAR
PUBLIC mprompt
DEFINE POPUP popstate FROM 0,60 TO 15,65 PROMPT FIELD state
ON SELECTION POPUP popstate DO deactpop
SELECT 3
USE states ORDER state
SELECT 2
USE payments ORDER cust_id
SELECT 1
USE customer
SET RELATION TO cust_id INTO B
GO TOP
STORE .F. TO mexit
@ 0,0 TO 23,79 DOUBLE
DO WHILE NOT mexit
@ 2,13 SAY 'Company: ' GET company COLOR gr+/b, r/w
@ 4,13 SAY 'Contact: ' GET contact COLOR gr+/b, r/w
@ 6,13 SAY 'Address: ' GET address1 COLOR gr+/b, r/w
@ 8,13 SAY 'City: ' GET city COLOR gr+/b, r/w
@10,13 SAY 'State: ' GET state PICTURE '!!' ;
VALID v_state(state) COLOR gr+/b, r/w
@10,28 SAY 'Zip: ' GET zip COLOR gr+/b, r/w
@14,13 SAY 'Tax Rate: '
@14,23 GET taxrate PICTURE '9.99' RANGE 3,8 ;
MESSAGE 'Enter tax rate from 3.00 to 8.00'
@16,13 SAY 'Payment: '
@16,22 GET payments.amount PICTURE '$$$$,$$$.99' ;
WHEN NOT EOF(2) MESSAGE SPACE(50)
@18,13 SAY 'Date Paid: '
@18,24 GET payments.date PICTURE '@D' ;
WHEN NOT EOF(2) DEFAULT DATE()
@22,30 SAY 'Press to exit'
READ
SKIP
IF LASTKEY() = 27 OR EOF()
STORE .T. TO mexit
ENDIF
ENDDO
CLEAR
*** Функция UDF, проверяющая правильность введения аббревеатуры штата ***
FUNCTION v_state
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
@ 10,21 GET state
CLEAR GETS
RETURN .T.
PROCEDURE deactpop
STORE PROMPT() TO mprompt
DEACTIVATE POPUP
RETURN
Данный пример демонстрирует команду @...SAY/GET и доступные в ней
опции. Продемонстрировано использование опций COLOR, PICTURE, RFNGE,
VALID и WHEN.
В трех равочих областях открыто три базы данных. База данных STATE
иыпользуется как просмотровая таблица для поиска названий штатов и
проверки правильности их аббревиатур. Функция FUNCTION V_STATE, приво-
димая в конце примера, является функцией, определяемой пользователем,
проверяющей правильность аббревиатуры названия штата; если она невер-
на, то выдается всплывающее меню со всеми существующими аббревиатурами
названий штатов.
Между базами данных CUSTOMER и PAYMENT устанавливается отношение,
позволяющее выбирать информацию из обоих файлов.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є Органы управления є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Что они из себя представляют
В следующих семи параграфах обсуждаются органы управления FoxPro.
Органы управления представляют собой области экрана, используемые для
выбора, подтверждения или отмены действий. Они могут появляться в ок-
нах, диалоговых блоках или на основном экране. Блок проверки, селек-
тивная кнопка и всплывающие меню являются обычными примерами органов
управления.
FoxPro очень активно использует управляющий интерфейс. Для примера
достаточно взглянуть на диалоговые блоки Открыть Файл (Open File) или
Установить параметры печати (Printer Setup) и убедиться, насколько
разнообразные управляющие средства там используются. Дополнительная
информация о порядке использования органов управления приводиться в
книгах документации по FoxPro "Руководство по Интерфейсу" (Interface
Guide) и "Начало Работы" (Getting Started).
Краткое описание основных органов управления
Ниже приводится краткое описание различных органов управления и
порядка их использования:
Блоки Проверки
На экране блок проверки представляет собой пару квадратных скобок
со строкой текста справа от них. Например:
[X] All Files
Блок проверки используется для маркировки двух состояний - истина
(.Т.) и ложь (.F.) или да или нет.
Списки
На экране список представляет собой вертикальный список возмож-
ностей внутри некоторой рамки, часто с полосами прокрутки с правой
стороны. Списки обычно используются для показа списка директориев,
файлов или полей с возможностью их выбора.
Всплывающие меню
На экране всплывающее меню представляет собой прямоугольник, огра-
ниченный двойными линиями справа и внизу. При выборе всплывающего меню
разворачивается список возможных опций.
Всплывающие меню используются для показы списка опций, только одна
из которых может быть выбрана.
Текстовые кнопки
На экране текстовая кнопка представляет собой строку текста заклю-
чонную в угловые скобки. Например:
< OK >
Обычно текстовые кнопки используются для инициализации действий.
Селективные кнопки
Селективные кнопки представляют собой следующее:
(.) Apples (Яблоки)
( ) Apricots (Абрикосы)
( ) Lemons (Лимоны)
( ) Oranges (Апельсины)
Селективные кнопки напоминают кнопки выбора диапазонов автомобиль-
ного приемника - выбирая одну кнопку вы делаете ее текущей и тем самым
отпускаете нажатую до этого. Знак . (точка) указывает на выбранную в
настоящий момент кнопку.
Селективные кнопки обычно используются для показа нескольких оп-
ций, только одна из которых может быть выбрана.
Области модификации текста
Область модификации текста представляет собой прямоугольную об-
ласть экрана, в пределах которой вы можете модифицировать и вводить
текст. Вводимый текст хранится в переменной памяти или в поле базы
данных.
В этой области доступны все стандартные для FoxPro возможности ре-
дактирования: вырезание, копирование и вставка. В отличии от остальных
органов управления FoxPro (блоков проверки, селективных и текстовых
кнопок, ...), эта команда в своем синтаксисе использует слово EDIT,
вместо GET.
Области редактирования текста обычно используются для обновления и
модификации memo полей и длинных символьных полей.
Невидимые кнопки
Невидимые кнопки представляют собой прямоугольные области экрана
или окна которые могут выбираться. Для размещения поверх этих областей
текста могут использоваться команды @ ... SAY.
Невидимые кнопки могут использоваться для создания псевдо иконок
или инициализации действий при нажатии кнопок "мыши" в поле данных.
Как они работают
Большинство органов управления создаются командой @ ... GET (толь-
ко область редактирования текста создается командой @ ... EDIT). Опции
PICTURE и FUNCTION команды @ ... GET определяют тип органа управления.
Эти опции также содержат подсказки, связанные с большинством органов
управления.
Многие органы управления инициализируют выполнение некоторых
действий. Это действие задается опцией VALID.
Органы управления активизируются командой READ. В зависимости от
заданных опций, при нажатии кнопки или выборе пункта выполнение коман-
ды READ завершается или не завершается.
"Горячие" клавиши
Для большинства органов управления могут быть определены " горя-
чие" клавиши. "Горячие" клавиши обеспечивают быстрый способ нажатия
кнопок или выбора опций. "Горячая" клавиши соответствует подсвеченной
букве (обычно это первая буква в приглашении кнопки или пункте меню),
при нажатии которой заданное действие выполняется немедленно.
Заблокированные органы управления
Для обеспечения недоступности органа управления (или его части) вы
можете заблокировать его. Заблокированные управляющие средства, кнопки
и пункты меню появляются изображаются блокировочным цветом (обычно
блеклым) и не поддаются выбору.
Краткое описание синтаксиса
В следующей таблице приводятся различия в синтаксисе, опциях и
значениях по умолчанию различных управляющих средств. Более подробная
информация дается при описании соответствующих команд.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
і Синтаксическая таблица органов управления і
ГДДДДДДДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДВДДДДДДДДДДДДДґ
іУправляющее іКод і Дополнительные іПо умолчанию іСпециальные і
ісредство іPICTURE/і коды опций і ісимволы і
і іFUNCTIONі PICTURE/FUNCTION і і і
ГДДДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
іБлоки і *С і N - не завершать іНе завершать і\< -"Горячая"і
іпроверки і і T - завершать і і клавиша і
і і і і і\\ - Заблоки-і
і і і і і ровать і
ГДДДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
іНевидимые і *I і N - не завершать іНе завершать і\\ - Заблоки-і
ікнопки і і T - завершать іВертикальная і ровать і
і і і H - горизонтальнаяі і і
і і і V - вертикальная і і і
ГДДДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
іСписки і & і N - не завершать іЗавершать і Нет і
іпроверки і і T - завершать і і і
ГДДДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
іВсплывающие і ^ і N - не завершать іНе завершать і\< -"Горячая"і
іменю і і T - завершать і і клавиша і
і і і і і\\ - Заблоки-і
і і і і і ровать і
ГДДДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
іТекстовые і * і N - не завершать іЗавершать і\< -"Горячая"і
ікнопки і і T - завершать іВертикальная і клавиша і
і і і H - горизонтальнаяі і\\ - Заблоки-і
і і і V - вертикальная і і ровать і
і і і і і\! - по умол-і
і і і і і чанию і
і і і і і\? - Escape і
ГДДДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
іСелективные і *R і N - не завершать іНе завершать і\< -"Горячая"і
ікнопки і і T - завершать іВертикальная і клавиша і
і і і H - горизонтальнаяі і\\ - Заблоки-і
і і і V - вертикальная і і ровать і
ГДДДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДЕДДДДДДДДДДДДДґ
іОбласти і і I - центровка іВыравнивание і і
іредактирова-і Нет і J - выравнивание іпо левой і Нет і
іния текста і і по правой границе ігранице і і
АДДДДДДДДДДДДБДДДДДДДДБДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДБДДДДДДДДДДДДДЩ
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є @ ... GET - Блоки проверки є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Создание блока проверки
Синтаксис
@ GET
FUNCTION
| PICTURE
[DEFAULT ]
[SIZE , ]
[ENABLE | DISABLE]
[MESSAGE ]
[VALID ]
[WHEN ]
[COLOR SCHEME
| COLOR ]
Замечания
Новая для FoxPro 2.0
Смотри также
@ ... SAY/GET, Органы управления, _CUROBJ, OBJNUM(), READ, SHOW GETS,
Функции, определяемые пользователем.
Описание
Эта разновидность команды @ ... GET предназначена для создания
блока проверки. Блок проверки используется для переключения между дву-
мя состояниями - истина (.Т.) или ложь (.F.), да или нет и т.д.
На экране блок проверки представляет собой пару квадратных скобок
со строкой текста справа от них. Например:
[X] TAX Exempt
Текст приглашения задается опциями PICTURE или FUNCTION. Когда
блок проверки проверяется (условие истинно) между скобками устанавли-
вается знак Х. Одной командой @ ... GET создается только один блок
проверки. Для активации блоков используется команда READ.
Опции
(<строка,столбец>)
Расположение блока проверки на экране или в активном окне задается
парой . Координаты задаются численными выра-
жениями. Row может принимать значения от 0 до максимального числа
строк на экране или в активном окне. Column может принимать значения
от 0 до максимального числа столбцов на экране или в активном окне.
Строки номеруются сверху-вниз, а столбцы слева-направо.
GET
При задании проверки блока или наоборот, ваш выбор хранится в
. может быть переменной памяти, элементом массива или полем
базы данных. должна иметь числовой или логический тип.
При первом появлении блока проверки на экране или в окне, его про-
верка осуществляется, если содержит не нулевое числовое значение
или логическую истину .Т.. Блок не проверяется, если не ноль или
логическую ложь (.F.).
Команда READ активизирует блок проверки. Состояние блока проверки
после завершения работы команды READ определяется хранимым в
значением: 0 или .F. для проверяемого, 1 или .Т. для не проверяемого.
FUNCTION | PICTURE
При создании блока проверки вы обязательно должны включать опцию
FUNCTION, PICTURE или обе. FUNCTION или PICTURE содержат код специфи-
кации блока проверки (он указывает на тип определяемой кнопки) и текст
его приглашения. Код *C является кодом спецификации всех блоков про-
верки.
Символьное выражение в опции FUNCTION должно всегда начи-
наться с *C. Для создания приглашения после *C ставится пробел и его
текст. Например, это предложение создает блок проверки Tax Exempt:
.... FUNCTION '*C Tax Exempt' ...
Выражение в опции PICTURE имеет тот же синтаксис, что и
выражение в FUNCTION, за исключением того, что выражение в PICTURE
должно обязательно начинаться с АТ символа (@) со следующим за ним ко-
дом *C. Например, это предложение создает блок проверки Tax Exempt:
.... PICTURE '@*C Tax Exempt' ...
Вы также можете включать обе опции FUNCTION и PICTURE для создания
блока проверки. Если включаются обе опции, символьное выражение
в FUNCTION должно содержать *C для создания блока проверки.
Символьное выражение в PICTURE должно включать текст приглаше-
ния.
Следующие примеры демонстрируют различные способы создания блока
проверки. Блок проверки располагается на экране во второй строке и
втором столбце. Состояние блока (проверяемый или не проверяемый) хра-
нится в переменной памяти CHOICE. Этот блок проверки создается в каж-
дом примере:
[X] Tax Exempt
Только опция FUNCTION:
STORE 1 TO choice
@ 2,2 GET choice FUNCTION '*C Tax Exempt'
READ
STORE 1 TO choice
STORE '*C Tax Exempt' TO mprompt
@ 2,2 GET choice FUNCTION mprompt
READ
Только опция PICTURE:
STORE 1 TO choice
@ 2,2 GET choice PICTURE '@*C Tax Exempt'
READ
STORE 1 TO choice
@ 2,2 GET choice PICTURE '@*C' + ' Tax Exempt'
READ
Обе опции вместе:
STORE 1 TO choice
@ 4,2 GET choice FUNCTION '*C' PICTURE ' Tax Exempt'
READ
Опции N и T в FUNCTION и PICTURE
Непосредственно после кода С в предложениях FUNCTION и PICTURE мо-
нут присутствовать две опции, определяющие должна ли команда READ за-
вершаться после выбора блока проверки:
Опция Описание
N Не завершает выполнение READ после выбора блока проверки. Уста-
навливается по умолчанию.
Т Завершает выполнение READ после выбора блока проверки.
Блоки проверки со специальными возможностями
Вы можете присваивать специальные характеристики блоку проверки.
Принудительно вы можете назначать "горячие" клавиши или ставить блоки-
ровки путем включения специальных символов при определении приглаше-
ния.
"Горячие" клавиши
"Горячая" клавиша соответствует подсвеченной букве, при нажатии
которой немедленно осуществляется выбор (изменение состояния) блока
проверки. Для создания "горячей" клавиши поместите обратный слэш и
знак меньше (/<) перед требуемым символом приглашения.
Внимание !!!
"Горячая клавиша" не выбирает блок проверки, если текущее поле яв-
ляется областью редактирования текста или полем ввода. Вместо этого
символ "горячей" клавиши вводится в текущее поле.
Следующий пример создает блок проверки Tax Exemptс "горячей" кла-
вишей Е:
STORE 1 TO choice
@ 2,2 GET choice FUNCTION '*C' PICTURE ' Tax \
При задании проверки блока или наоборот, состояние блока (проверя-
емый или не проверяемый) хранится в переменной памяти, элементе масси-
ва или поле базы данных. Если вы задаете переменную памяти и она не
существует, то при включении предложения DEFAULT эта переменная памяти
автоматически создается и инициализируется. Если является эле-
ментом массива или полем, то DEFAULT не создает .
Внимание !!!
Если опция DEFAULT не включена и не существует, то выдается
предупреждение об ошибке 'Переменная не найдена'('Variable
not found').
Если опция DEFAULT присутствует и существует, то DEFAULT иг-
норируется.
Выражение в опции DEFAULT задает тип и начальное значение
инициализируемой переменной памяти. должна иметь числовой или
логический тип. Ниже приводятся примеры использования предложения
DEFAULT в блоке проверки:
@ 5,0 GET choice FUNCTION '*C Tax exempt' DEFAULT .T.
READ
STORE .T. TO button
@ 5,0 GET choice FUNCTION '*C Tax exempt' DEFAULT button
READ
SIZE ,
Числовое выражение задает высоту органа управления. Блок
проверки всегда имеет высоту в одну строку, поэтому значение
всегда игнорируется. Но выражение должно всегда присутствовать
при задании .
По умолчанию, ширина блока проверки определяется длиной приглаше-
ния. Числовое выражение изменяет ширину блока проверки (в
столбцах). Если ширина, задаваемая , меньше ширины приглашения,
то приглашение не усекается.
ENABLE|DISABLE
По умолчанию, блок диалога является доступным при выполнении ко-
манды READ. Вы можете захотеть задержать возможность выбора блока про-
верки до выполнения определенных условий. Включение опции DISABLE пре-
дотвращает активацию блока проверки при выполнении команды READ. Заб-
локированный блок проверки не может быть выбран и отображается в цвете
блокировки. Для получения доступа к заблокированным командам GET
используется команда SHOW GET ENABLED.
MESSAGE
Символьное выражение необязательного предложения MESSAGE
выдается при появлении блока проверки. По умолчанию, сообщение выда-
ется отцентрированным в последней строке "стола". Местоположение сооб-
щения может изменяться командой SET MЕSSAGE.
VALID
Вы можете включить необязательное предложение VALID. Выражение
проверяется только после осуществления выбора блока проверки
(проверяемый или не проверяемый). Это означает, что VALID не проверя-
ется при установке на блок, а только после того как вы реально выбрали
его состояние посредством "мыши", клавиш Enter или Escape.
Обычно является функцией, определяемой пользователем. Эти
функции позволяют делать очень многое, включая: выбор, обеспечение
доступности или блокировки других полей GET или объектов, инициализа-
цию секций Browse, вызов других экранов ввода данных, позиционирование
на новую запись. Для завершения выполнения команды READ в функции, оп-
ределяемые пользователем,может включаться команда CLEAR READ.
WHEN
В зависимости от логического значения выражения необяза-
тельное предложение WHEN разрешает или наоборот запрещает выбор блока
проверки. До выбора блока выражение должно быть оценено как
логическая истина (.Т.). Если оценивается как ложь (.F.), то
блок проверки становится невыбираемым и пропускается, если располага-
ется между другими полями GET или объектами.
COLOR SCHEME
COLOR (<список цветовых пар>)
По умолчанию цвет блока проверки берется из цветовой схемы текуще-
го окна или экрана. Цветовая схема представляет собой набор из 10 цве-
товых пар, которые описывают цветовые характеристикм окна. Вы можете
переопределить текущую цветовую схему путем задания различных предоп-
ределенных заранее цветовых схем, или путем задания списка цветовых
пар.
Этот пример показывает переопределение одной цветовой схемы на
другую, заранее предопределенную.
STORE 1 TO choice
@ 5,0 GET choice FUNCTION '*C Tax Exempt' COLOR SCHEME 4
READ
Заданием списка цветовых пар для блока проверки вы можете переоп-
ределять лишь некоторые характеристики цветовой схемы. Список цветовых
пар представляет собой 10 разделенных запятыми пар
цветов. Первая половина пары задает основной цвет (цвет приглашения).
Вторая половина задает цвет фона. В следующей таблице приводится
список цветовых пар с управляемыми ими аттрибутами.
Номер Атрибут блока проверки
цветовой
пары
1 Не используется блоком проверки
2 Не используется блоком проверки
3 Не используется блоком проверки
4 Не используется блоком проверки
5 Сообщение
6 Выбираемое приглашение блока проверки
7 "Горячие" клавиши
8 Не используется блоком проверки
9 Доступное приглашение блока проверки
10 Заблокированное приглашение блока проверки
Следующие примеры определяют блоки проверки Tax Exempt с "горячей"
клавишей Е и цветовыми характеристиками:
- Выбираемый приглашение блока выводится ярким белым цветом на си-
нем фоне (W+/B).
- Символы "горячей" клавиши являются красными на синем фоне (R/B).
- Доступный блок проверки выводится с желтым приглашением на синем
фоне (GR+/B).
- Заблокированный блок проверки выводится с серым приглашением на
синем фоне (W/B).
STORE 1 TO choice
@ 5,0 GET choice FUNCTION '*C Tax \ GET
FUNCTION
| PICTURE
[DEFAULT ]
[SIZE ,
[, ]]
[ENABLE | DISABLE]
[MESSAGE ]
[VALID ]
[WHEN ]
[COLOR SCHEME
| COLOR ]
Замечания
Новая для FoxPro 2.0
Смотри также
@ ... SAY/GET, Органы управления, _CUROBJ, OBJNUM(), READ, SHOW GETS,
Функции, определяемые пользователем.
Описание
Эта разновидность команды @ ... GET предназначена для создания не-
видимых кнопок. Невидимые кнопки представляют собой прямоугольные об-
ласти экрана или окна которые могут выбираться. Для размещения поверх
этих областей текста могут использоваться команды @ ... SAY. При выбо-
ре невидимой кнопки символы в ней высвечиваются ярким цветом. Кнопки
активизируются командой READ.
Опции
(<строка,столбец>)
Первая кнопка в наборе невидимых кнопок располагается на экране
или в активном окне по месту, определяемому парой . Коор-
динаты задаются численными выражениями. Row может прини-
мать значения от 0 до максимального числа строк на экране или в актив-
ном окне. Column может принимать значения от 0 до максимального числа
столбцов на экране или в активном окне. Строки номеруются сверху-вниз,
а столбцы слева-направо.
GET
При выборе невидимой кнопки номер, соответствующий вашему выбору
заносится в . Например, если вы создали четыре невидимые кнопки и
выбрали третью, то в |