|
Часть 3
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є @ ... GET - Текстовые кнопки є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Создание текстовой кнопки.
Синтаксис
@ GET
FUNCTION
| PICTURE
[DEFAULT ]
[SIZE ,
[, ]]
[ENABLE | DISABLE]
[MESSAGE ]
[VALID ]
[WHEN ]
[COLOR SCHEME |COLOR ]
Замечания
Новая для FoxPro 2.0
Смотри также
@ ... SAY/GET, Органы управления, _CUROBJ, OBJNUM(), READ, SHOW GETS,
Функции, определяемые пользователем.
Описание
На экране текстовая кнопка представляет собой строку текста заклю-
чонную в угловые скобки. Например:
< OK >
Строка текста, часто называемая приглашением, задается в предложе-
ниях FUNCTION или PICTURE. Обычно текстовые кнопки используются для
инициализации действий. Производимое действие задается опцией VALID.
Текстовая кнопка инициализируется командой READ.
Опции
(<строка,столбец>)
Расположение первой текстовой кнопки на экране или в активном окне
задается парой . Координаты задаются числен-
ными выражениями. Row может принимать значения от 0 до максимального
числа строк на экране или в активном окне. Column может принимать зна-
чения от 0 до максимального числа столбцов на экране или в активном
окне. Строки номеруются сверху-вниз, а столбцы слева-направо.
GET
При нажатии текстовой кнопки ваш выбор заносится в .
может быть переменной памяти, элементом массива или полем базы данных.
должна иметь числовой или символьный тип.
Если имеет числовой тип, то в заносится порядковый но-
мер нажатой вами текстовой кнопки. Например, если вы создали 4 тексто-
вые кнопки и нажали третью, то в будет 3. Если имеет сим-
вольный тип, то в заносится приглашение нажатой кнопки.
FUNCTION | PICTURE
При создании текстовых кнопок вы обязательно должны включать опцию
FUNCTION, PICTURE или обе. FUNCTION или PICTURE содержат код специфи-
кации текстовых кнопок (он указывает на тип определяемой кнопки) и
текст приглашения для каждой кнопки. Код * (звездочка) является кодом
спецификации текстовых кнопок.
Символьное выражение в опции FUNCTION должно всегда начи-
наться со *. Текст приглашения каждой текстовой кнопки задается в
списке, следующим через пробел за кодом звездочка. Приглашения отделя-
ются друг от друга точкой с запятой. Для каждого приглашения создается
одна кнопка. Например в этом предложении создаются текстовые кнопки OK
и Cancel:
... FUNCTION '* OK;Cancel' SIZE 1, 8 ...
Выражение в опции PICTURE имеет тот же синтаксис, что и
выражение в FUNCTION, за исключением того, что выражение в PICTURE
должно обязательно начинаться с АТ символа (@) со следующим за ним ко-
дом *. Например в этом предложении создаются текстовые кнопки OK и
Cancel:
... PICTURE '@* OK;Cancel' SIZE 1, 8 ...
Вы также можете включать обе опции FUNCTION и PICTURE для создания
текстовых кнопок. Если включаются обе опции, символьное выражение
в FUNCTION должно содержать * для создания текстовой кнопки, и
может включать через пробел от звездочки сами тексты приглашений кно-
пок. Символьное выражение в PICTURE может включать приглашения
для создания дополнительных текстовых кнопок.
Следующие примеры демонстрируют различные синтаксические конструк-
ции для создания текстовых кнопок. Создаются две текстовые кнопки - OK
и Cancel. Число, соответствующее нажатой кнопке, заносится в перемен-
ную памяти CHOICE. Первая кнопка (ОК) располагается на экране во вто-
рой строке и втором столбце. Каждый пример создает набор текстовых
кнопок подобный следующему:
< OK >
Только опция FUNCTION:
STORE 1 TO choice
@ 2,2 GET choice FUNCTION '* OK;Cancel' SIZE 1, 8
READ
STORE 1 TO choice
STORE '* OK;Cancel' TO mprompts
@ 2,2 GET choice FUNCTION mprompts SIZE 1, 8
READ
Только опция PICTURE:
STORE 1 TO choice
@ 2,2 GET choice PICTURE '@* OK;Cancel' SIZE 1, 8
READ
STORE 1 TO choice
@ 2,2 GET choice PICTURE '@*' + ' OK;Cancel' SIZE 1, 8
READ
Опции N, T, H и V в FUNCTION и PICTURE
Непосредственно после кода *I в предложениях FUNCTION и PICTURE мо-
нут присутствовать опции, определяющие поведение (опции N и Т) и внеш-
ний вид (опции H и V) текстовых кнопок. Эти опции приведены ниже:
Опция Описание
N Не завершает выполнение READ после выбора текстовой кнопки.
Т Завершает выполнение READ после выбора текстовой кнопки.
Устанавливается по умолчанию.
H Располагать текстовые кнопки по горизонтали.
V Располагать текстовых кнопки по вертикали.
Устанавливается по умолчанию.
Вы можете комбинировать опции Н и V с опциями N и Т, как NH, NV,
YH или TV. Например, это предложение определяет горизонтальный набор
кнопок, который не завершает работу команды READ после выбора:
... FUNCTION '*NН ...'
Текстовые кнопки со специальными возможностями
Вы можете присваивать специальные характеристики текстовым кноп-
кам. Принудительно вы можете назначать "горячие" клавиши, заблокиро-
вать некоторые кнопки, определить кнопку выбора по Escape и кнопку вы-
бора по умолчанию. Для этого вам необходимо лишь включить специальные
символы при определении приглашения. При записи приглашения в
все специальные символы из него удаляются.
"Горячие" клавиши
"Горячая" клавиша представляет собой подсвеченную букву, нажатие
которой вызывает немедленный выбор соответствующей кнопки. Для присво-
ения "горячей" клавиши перед требуемым символом в приглашении соот-
ветствующей кнопки установите обратный слеш и знак меньше (\<).
Внимание !!!
"Горячей" клавишей не выбирается требуемая кнопка, если текущим
полем является область модификации текста или поле GET. В этом случае
нажатие "горячей" клавиши вызовет ввод соответствующего ей символа в
текущее поле.
В следующем примере создаются кнопки OK и Cancel с горячими клави-
шами О и С соответственно:
STORE 1 TO choice
@ 4,2 GET choice FUNCTION '* \>. Для создания кнопки по умолчанию перед соответствующим приг-
лашением ставится обратный слеш и восклицательный знак (\!). На одну
команду READ может определяться не более одной текстовой кнопки по
умолчанию.
В этом примере кнопка ОК определяется текстовой кнопкой по умолча-
нию.
STORE 1 TO choice
@ 4,2 GET choice FUNCTION '* \!OK;Cancel'
READ
Кнопки Escape
Кнопка Escape выбирается автоматически при нажатии клавиши Escape.
Такой прием часто используется для обеспечения быстрого выхода из те-
кущей программы. Для создания кнопки Escape перед соответсвующим ей
приглашением ставится обратный слеш и знак вопроса (\?). На одну ко-
манду READ может определяться не более одной текстовой кнопки Escape.
В этом примере кнопка Cancel определяется текстовой кнопкой Escape.
STORE 1 TO choice
@ 4,2 GET choice FUNCTION '* OK;\?Cancel'
READ
Кнопки со смешанными характеристиками
Вы можете определять кнопки с более чем одной специальной характе-
ристикой. В следующем примере кнопка ОК является кнопкой по умолчанию
и имет "горячую" клавишу О. Кнопка Cancel является кнопкой Escape и
имеет "горячую" клавишу С.
STORE 1 TO choice
@ 4,2 GET choice FUNCTION '* \!\
При нажатии текстовой кнопки ваш выбор записывается в переменную
памяти, элемент массива или поле базы данных. Если вы задаете
как переменную памяти и она не существует, то при включении предложе-
ния DEFAULT эта переменная памяти автоматически создается и инициали-
зируется. Если является элементом массива или полем, то DEFAULT
не создает .
Внимание !!!
Если опция DEFAULT не включена и не существует, то выдается
предупреждение об ошибке 'Переменная не найдена'('Variable
not found').
Если опция DEFAULT присутствует и существует, то DEFAULT иг-
норируется.
Выражение в опции DEFAULT задает тип и начальное значение
инициализируемой переменной памяти. должна иметь числовой или
символьный тип. Ниже приводятся примеры допустимого использования
DEFAULT для создания тестовых кнопок:
@ 5,0 GET choice FUNCTION '* OK;Cancel' DEFAULT 'OK'
READ
@ 5,0 GET choice FUNCTION '* OK;Cancel' DEFAULT 2
READ
STORE 'OK' TO button
@ 5,0 GET choice FUNCTION '* OK;CANCEL' DEFAULT button
READ
SIZE ,[,]
Выражения задает высоту объекта. Текстовая кнопка всегда
имеет высоту в 1 строку, поэтому числовое выражение игнориру-
ется.
По умолчанию ширина каждой текстовой кнопки определяется длиной ее
приглашения. Изменяя числовое выражение вы можете изменять ши-
рину (в столбцах) текстовой кнопки. Если ширина, задаваемая ,
меньше ширины приглашения текстовой кнопки, то приглашения не усека-
ется.
По умолчанию отсутствует промежуток между вертикальными кнопками,
а горизонтальные кнопки располагаются через один столбец. Расстояние
между текстовыми кнопками может задаваться выражением . При
создании вертикальных кнопок, определяет число строк между ни-
ми. При создании горизонтальных кнопок, определяет число
столбцов между ними.
В следующем примере демонстрируются возможности опции SIZE:
CLEAR
@ 5,5 GET choice FUNCTION '* OK;Cancel' ;
DEFAULT 1 SIZE 1,10,0
@ 5,20 GET choice FUNCTION '* OK;Cancel' ;
DEFAULT 1 SIZE 1,10,2
READ
ENABLE|DISABLE
По умолчанию текстовые кнопки становится доступным при использова-
нии команды READ. Вы можете захотеть задержать возможность выбора из
этого набора до выполнения определенных условий. Включение опции
DISABLE предотвращает активацию набора текстовых кнопок при выполнении
команды READ.
Заблокированные текстовые кнопки не могут быть выбраны и отобража-
ются в цвете блокировки. Блокировка одной кнопки в наборе описывается
в параграфе "Блокировка кнопок" выше. Для получения доступа к заблоки-
рованным командам GET используется команда SHOW GET ENABLED.
MESSAGE
Символьное выражение выдается при указании на текстовую
кнопку. По умолчанию, сообщение выдается отцентрированным в последней
строке "стола". Местоположение сообщения может изменяться командой SET
MЕSSAGE.
VALID
Вы можете включить необязательное предложение VALID. Выражение
проверяется только после нажатия текстовой кнопки.Это значит,
что VALID не проверяется при перемещении по кнопкам, но при нажатии
клавиш Enter, Spase или кнопки "мыши" сразу осуществляется проверка.
Обычно является функцией, определяемой пользователем. Эти
функции позволяют делать очень многое, включая: выбор, обеспечение
доступности или блокировки других полей GET или объектов, инициализа-
цию секций Browse, вызов других экранов ввода данных, позиционирование
на новую запись. Для завершения выполнения команды READ в функции, оп-
ределяемые пользователем, может включаться команда CLEAR READ.
Пример
В приведенным примере демонстрируются возможности использования
функции, определяемой пользователем. По вертикали выводятся пять
текстовых кнопок. Так как опция Т включена, команда READ не заверша-
ется после выбора одной из кнопок. При выборе кнопки вызывается опре-
деляемая пользователем функция GOREC. Кнопки используются для переме-
щения указателя записи.
USE ?
IF EMPTY (DBF())
WAIT WINDOW 'No database open' NOWAIT
ENDIF
SET TALK OFF
DEFINE WINDOW one FROM 3,5 TO 18,20 FLOAT DOUBLE COLOR SCHEME 5
ACTIVATE WINDOW one
@ 1,2 GET choice FUNCTION '*NV Next;Prior;Top;Bottom;Quit';
SIZE 1,10,1 VALID GOREC() DEFAULT(1)
READ CYCLE
CLEAR WINDOW
PROCEDURE gorec
DO CASE
CASE choice = 1
SKIP
IF EOF()
SKIP -1
ENDIF
CASE choice = 2
SKIP -1
IF BOF()
SKIP
ENDIF
CASE choice = 3
GO TOP
CASE choice = 4
GO BOTTOM
CASE choice = 5
CLEAR READ
ENDCASE
@ 12,6 SAY ALLTRIM(STR(RECNO()))
RETURN
WHEN
В зависимости от логического значения выражения необяза-
тельное предложение WHEN разрешает или наоборот запрещает выбор
текстовых кнопок. До начала выбора текстовых кнопок выражение
должно быть оценено как логическая истина (.Т.). Если оценива-
ется как ложь (.F.), то ни одна из текстовых кнопок не может быть выб-
рана. часто является функцией, определяемой пользователем.
COLOR SCHEME
COLOR (<список цветовых пар>)
По умолчанию цвета текстовых кнопок берутся из цветовой схемы те-
кущего окна или экрана. Цветовая схема представляет собой набор из 10
цветовых пар, которые описывают цветовые характеристикм окна. Вы може-
те переопределить текущую цветовую схему путем задания различных пре-
допределенных заранее цветовых схем, или путем задания списка цветовых
пар.
В этом примере показано переопределение одной цветовой схемы на
другую, предопределенную заранее:
STORE 1 TO choice
@ 5,0 GET choice FUNCTION '* \ представляет собой 10 разделенных запятыми
пар цветов. Первая половина пары задает основной цвет (цвет приглаше-
ния). Вторая половина задает цвет фона. В следующей таблице приводится
список цветовых пар с управляемыми ими аттрибутами.
Номер Атрибут текстовой кнопки
цветовой
пары
1 Не используется текстовыми кнопками
2 Не используется текстовыми кнопками
3 Не используется текстовыми кнопками
4 Не используется текстовыми кнопками
5 Сообщение
6 Выбираемое приглашение кнопки
7 "Горячие" клавиши
8 Не используется текстовыми кнопками
9 Приглашение доступной кнопки
10 Приглашение заблокированной кнопки
В этом примере определяются текстовые кнопки ОК и Cancel с "горя-
чими" клавишами О и С, соответственно. Кнопки имеют следующие цветовые
характеристики:
- Выбираемая кнопка изображается ярким белым цветом на синем фоне
(W+/B).
- Символы "горячих" клавиш являются красными на синем фоне (R/B).
- Доступные кнопки выводятся желтым цветом на синем фоне (GR+/B).
- Заблокированные кнопки - белым цветом на синем фоне (W/B).
Пример:
STORE 1 TO choice
@ 5,0 GET choice FUNCTION '* \ GET
FUNCTION
| PICTURE
[DEFAULT ]
[SIZE ,
[, ]]
[ENABLE | DISABLE]
[MESSAGE ]
[VALID ]
[WHEN ]
[COLOR SCHEME
| COLOR ]
Замечания
Новая для FoxPro 2.0
Смотри также
@ ... SAY/GET, Органы управления, _CUROBJ, OBJNUM(), READ, SHOW GETS,
Функции, определяемые пользователем.
Описание
Эта разновидность команды @ ... GET используется для создания се-
лективных кнопок. Селективные кнопки напоминают кнопки выбора диапазо-
нов автомобильного приемника - выбирая одну кнопку вы делаете ее теку-
щей и тем самым отпускаете нажатую до этого. Знак . (точка) указывает
на выбранную в настоящий момент кнопку.
На экране селективные кнопки представляют собой следующее:
(.) Apples (Яблоки)
( ) Apricots (Абрикосы)
( ) Lemons (Лимоны)
( ) Oranges (Апельсины)
Строка текста справа от кнопки называется приглашением. Текст
приглашения задается предложениями FUNCTION или PICTURE. Селективная
кнопка инициализируется командой READ.
Опции
(<строка,столбец>)
Расположение первой селективной кнопки набора на экране или в ак-
тивном окне задается парой . Координаты зада-
ются численными выражениями. Row может принимать значения от 0 до
максимального числа строк на экране или в активном окне. Column может
принимать значения от 0 до максимального числа столбцов на экране или
в активном окне. Строки номеруются сверху-вниз, а столбцы слева-напра-
во.
GET
При нажатии селективной кнопки ваш выбор заносится в .
может быть переменной памяти, элементом массива или полем базы данных.
должна иметь числовой или символьный тип.
Если имеет числовой тип, то в заносится порядковый но-
мер нажатой вами селективной кнопки. Например, если вы создали 4 се-
лективные кнопки и нажали третью, то в будет 3. Если имеет
символьный тип, то в заносится приглашение нажатой кнопки.
FUNCTION | PICTURE
При создании селективных кнопок вы обязательно должны включать оп-
цию FUNCTION, PICTURE или обе. FUNCTION или PICTURE содержат код спе-
цификации селективных кнопок (он указывает на тип определяемой кнопки)
и текст приглашения для каждой кнопки. Код *R является кодом специфи-
кации селективных кнопок.
Символьное выражение в опции FUNCTION должно всегда начи-
наться со *R. Текст приглашения каждой селективной кнопки задается в
списке, следующим через пробел за кодом *R. Приглашения отделяются
друг от друга точкой с запятой. Для каждого приглашения создается одна
кнопка. Например в этом предложении создаются селективные кнопки
Apples, Apricots, Lemons и Oranges:
... FUNCTION '*R Apples;Apricots;Lemons;Oranges' ...
Выражение в опции PICTURE имеет тот же синтаксис, что и
выражение в FUNCTION, за исключением того, что выражение в PICTURE
должно обязательно начинаться с АТ символа (@) со следующим за ним ко-
дом *R. Например в этом предложении создаются селективные кнопки
Apples, Apricots, Lemons и Oranges:
... PICTURE '@*R Apples;Apricots;Lemons;Oranges' ...
Вы также можете включать обе опции FUNCTION и PICTURE для создания
селективных кнопок. Если включаются обе опции, символьное выражение
в FUNCTION должно содержать *R для создания селективной кноп-
ки, и может включать через пробел от звездочки сами тексты приглашений
кнопок. Символьное выражение в PICTURE может включать пригла-
шения для создания дополнительных селективных кнопок.
Примеры
Следующие примеры демонстрируют различные синтаксические конструк-
ции для создания селективных кнопок. Первая селективная кнопка распо-
лагается на экране в четвертой строке и втором столбце. Создаются че-
тыре селективные кнопки - Apples, Apricots, Lemons и Oranges. Номер
выбираемой кнопки заносится в переменную памяти. В каждом примере соз-
дается набор селективных кнопок подобный этому:
(.) Apples (Яблоки)
( ) Apricots (Абрикосы)
( ) Lemons (Лимоны)
( ) Oranges (Апельсины)
Только опция FUNCTION:
STORE 1 TO choice
@ 4,2 GET choice FUNCTION '*R Apples;Apricots;Lemons;Oranges'
READ
STORE 1 TO choice
STORE '*R Apples;Apricots;Lemons;Oranges' TO mfunc
@ 4,2 GET choice FUNCTION mfunc
READ
Только опция PICTURE
STORE 1 TO choice
@ 4,2 GET choice PICTURE '@*I ;;;;' SIZE 2,4,1
READ
STORE 1 TO choice
@ 4,2 GET choice PICTURE '@*I' + ' ;;;;' SIZE 2,4,1
READ
Опции FUNCTION и PICTURE вместе
STORE 1 TO choice
@ 4,2 GET choice FUNCTION '*R' ;
PICTURE ' Apples;Apricots;Lemons;Oranges'
READ
STORE 1 TO choice
@ 4,2 GET choice FUNCTION '*R Apples;Apricots' ;
PICTURE ';Lemons;Oranges'
READ
Опции N, T, H и V в FUNCTION и PICTURE
Непосредственно после кода *I в предложениях FUNCTION и PICTURE мо-
нут присутствовать опции, определяющие поведение (опции N и Т) и внеш-
ний вид (опции H и V) селективных кнопок. Эти опции приведены ниже:
Опция Описание
N Не завершает выполнение READ после выбора селективной кнопки.
Устанавливается по умолчанию.
Т Завершает выполнение READ после выбора селективной кнопки.
H Располагать селективные кнопки по горизонтали.
V Располагать селективные кнопки по вертикали.
Устанавливается по умолчанию.
Вы можете комбинировать опции Н и V с опциями N и Т, как NH, NV,
YH или TV. Например, это предложение определяет вертикальный набор
кнопок, который не завершает работу команды READ после выбора:
... FUNCTION '*RNV ...'
Селективные кнопки со специальными возможностями
Вы можете присваивать специальные характеристики селективным кноп-
кам. Принудительно вы можете назначать "горячие" клавиши или блокиро-
вать отдельные кнопки, путем включения специальных символов в текст
приглашения соответсвующей кнопки. При записи приглашения в все
специальные символы из него удаляются.
"Горячие" клавиши
"Горячая" клавиша представляет собой подсвеченную букву, нажатие
которой вызывает немедленный выбор соответствующей кнопки. Для присво-
ения "горячей" клавиши перед требуемым символом в приглашении соот-
ветствующей кнопки установите обратный слеш и знак меньше (\<).
Внимание !!!
"Горячей" клавишей не выбирается требуемая кнопка, если текущим
полем является область модификации текста или поле GET. В этом случае
нажатие "горячей" клавиши вызовет ввод соответствующего ей символа в
текущее поле.
В следующем примере определяются селективные кнопки Apples,
Apricots, Lemons и Oranges с "горячими" клавишами А для Apples и Р для
Apricots:
STORE 1 TO choice
@ 4,2 GET choice FUNCTION '*R' ;
PICTURE ' \
При нажатии селективной кнопки ваш выбор записывается в переменную
памяти, элемент массива или поле базы данных. Если вы задаете
как переменную памяти и она не существует, то при включении предложе-
ния DEFAULT эта переменная памяти автоматически создается и инициали-
зируется. Если является элементом массива или полем, то DEFAULT
не создает .
Внимание !!!
Если опция DEFAULT не включена и не существует, то выдается
предупреждение об ошибке 'Переменная не найдена'('Variable
not found').
Если опция DEFAULT присутствует и существует, то DEFAULT иг-
норируется.
Выражение в опции DEFAULT задает тип и начальное значение
инициализируемой переменной памяти. должна иметь числовой или
символьный тип. Ниже приводятся примеры допустимого использования
DEFAULT для создания селективных кнопок:
*** Пример 1
@ 5,0 GET choice FUNCTION '*R' +;
' Apples;Apricots;Lemons;Oranges' DEFAULT 'Apricots'
READ
*** Пример 2
@ 5,0 GET choice FUNCTION '*R Apples;Apricots;Lemons;Oranges';
DEFAULT 2
READ
*** Пример 3
STORE 'Apricots' TO button
@ 5,0 GET choice FUNCTION '*R \,[,]
Выражения задает высоту объекта. Селективная кнопка всегда
имеет высоту в 1 строку, поэтому числовое выражение игнориру-
ется. Но должна обязательно присутствовать, если вы хотите за-
дать и .
По умолчанию ширина каждой селективной кнопки определяется длиной
ее приглашения. Изменяя числовое выражение вы можете изменять
ширину (в столбцах) селективной кнопки. Если ширина, задаваемая
, меньше ширины приглашения селективной кнопки, то приглашения
не усекается.
По умолчанию отсутствует промежуток между вертикальными кнопками,
а горизонтальные кнопки располагаются через один столбец. Расстояние
между селективными кнопками может задаваться выражением . При
создании вертикальных кнопок, определяет число строк между ни-
ми. При создании горизонтальных кнопок, определяет число
столбцов между ними.
В следующем примере демонстрируются возможности опции SIZE:
CLEAR
@ 5,5 GET choice FUNCTION '*R'+ ;
' \
Символьное выражение выдается при указании на селективную
кнопку. По умолчанию, сообщение выдается отцентрированным в последней
строке "стола". Местоположение сообщения может изменяться командой SET
MЕSSAGE.
VALID
Вы можете включить необязательное предложение VALID. Выражение
проверяется только после нажатия селективной кнопки. Это зна-
чит, что VALID не проверяется при перемещении по кнопкам, но при нажа-
тии клавиш Enter, Spase или кнопки "мыши" сразу осуществляется провер-
ка.
Обычно является функцией, определяемой пользователем. Эти
функции позволяют делать очень многое, включая: выбор, обеспечение
доступности или блокировки других полей GET или объектов, инициализа-
цию секций Browse, вызов других экранов ввода данных, позиционирование
на новую запись. Для завершения выполнения команды READ в функции, оп-
ределяемые пользователем, может включаться команда CLEAR READ.
WHEN
В зависимости от логического значения выражения необяза-
тельное предложение WHEN разрешает или наоборот запрещает выбор селек-
тивных кнопок. До начала выбора селективных кнопок выражение
должно быть оценено как логическая истина (.Т.). Если оценива-
ется как ложь (.F.), то ни одна из селективных кнопок не может быть
выбрана. часто является функцией, определяемой пользователем.
COLOR SCHEME
COLOR (<список цветовых пар>)
По умолчанию цвета селективных кнопок берутся из цветовой схемы
текущего окна или экрана. Цветовая схема представляет собой набор из
10 цветовых пар, которые описывают цветовые характеристикм окна. Вы
можете переопределить текущую цветовую схему путем задания различных
предопределенных заранее цветовых схем, или путем задания списка цве-
товых пар.
В этом примере показано переопределение одной цветовой схемы на
другую, предопределенную заранее:
STORE 1 TO choice
@ 5,0 GET choice FUNCTION '*R Apples;Apricots;Lemons;Orange';
COLOR SCHEME 4
READ
Заданием списка цветовых пар для селективных кнопок вы можете пе-
реопределять лишь некоторые характеристики цветовой схемы. Список цве-
товых пар представляет собой 10 разделенных запятыми
пар цветов. Первая половина пары задает основной цвет (цвет приглаше-
ния и кнопки). Вторая половина задает цвет фона. В следующей таблице
приводится список цветовых пар с управляемыми ими аттрибутами.
Номер Атрибут селективной кнопки
цветовой
пары
1 Не используется селективными кнопками
2 Не используется селективными кнопками
3 Не используется селективными кнопками
4 Не используется селективными кнопками
5 Сообщение
6 Выбираемое приглашение кнопки
7 "Горячие" клавиши
8 Не используется селективными кнопками
9 Приглашение доступной кнопки
10 Приглашение заблокированной кнопки
В следующем примере определяются селективные кнопки Apples,
Apricots, Lemons и Oranges с "горячими" клавишами А для Apples и Р для
Apricots. Кроме того, они имеют следующие цветовые характеристики:
- Выбираемая кнопка изображается ярким белым цветом на синем фоне
(W+/B).
- Символы "горячих" клавиш являются красными на синем фоне (R/B).
- Доступные кнопки выводятся желтым цветом на синем фоне (GR+/B).
- Заблокированные кнопки - белым цветом на синем фоне (W/B).
Пример:
STORE 1 TO choice
@ 5,0 GET choice FUNCTION '*R \ EDIT
[FUNCTION ]
[DEFAULT ]
SIZE ,
[, ]
[ENABLE | DISABLE]
[MESSAGE ]
[VALID
[ERROR ]]
[WHEN ]
[NOMODIFY]
[SCROLL]
[TAB]
[COLOR SCHEME |COLOR ]
Замечания
Новая для FoxPro 2.0
Смотри также
@ ... SAY/GET, Органы управления, _CUROBJ, OBJNUM(), READ, SHOW GETS,
Функции, определяемые пользователем.
Описание
Эта команда создает прямоугольную область модификации текста для
редактирования . может быть переменной памяти, элементом
массива переменных памяти, полем базы данных или memо полем.
должна иметь символьный тип. В этой области доступны все стандартные
для FoxPro возможности редактирования: вырезание, копирование и встав-
ка. Текст в области модификации может прогручиваться по вертикали. По
горизонтали осуществляется автоматический переход на новую строку. В
отличии от остальных органов управления FoxPro (блоков проверки, се-
лективных и текстовых кнопок, ...), эта команда в своем синтаксисе
использует слово EDIT, вместо GET.
При активации области модификации текста командой READ, содержимое
отображается в этой области для редактирования. При выходе из
области модификации текста, его содержимое снова возвращается в .
По умолчанию, для сохранения изменений достаточно нажать клавиши
Tab или Ctrl+Tab. Выходя таким образом вы сохраняете все сделанные из-
менения и перемещаетесь к следующему полю GET или следующему объекту.
Если клавиша Tab уже определена, то вместо нее используется Ctrl+Tab.
Более подробная информация о ключевом слове TAB приводиться ниже в
этой главе.
Для выхода из области модификации текста без сохранения изменений
используется клавиша Escape. Заметим, однако, что если вы редактируете
memo поле и задана опция VALID, нажатие этой клавиши может сохранить
или не сохранить изменения, в зависимости от значения, возвращаемого
VALID. Более подробная информация о VALID приведена далее в этой
части.
Опции
(<строка,столбец>)
Правый левый угол области модификации текста располагается на эк-
ране или в активном окне по адресу, задаваемому парой .
Координаты задаются численными выражениями. Row может
принимать значения от 0 до максимального числа строк на экране или в
активном окне. Column может принимать значения от 0 до максимального
числа столбцов на экране или в активном окне. Строки номеруются свер-
ху-вниз, а столбцы слева-направо.
EDIT
При редактировании области текста сам текст читается и сохраняется
в . может быть переменной памяти, элементом массива пеере-
менных памяти или полем базы данных. должна иметь символьный
тип.
FUNCTION
В предложение FUNCTION может включаться одна из следующий опций
выравнивания текста в области редактирования. Любые другие символы в
FUNCTION будут игнорироваться. Эти опции следующие:
I - центрирование текста в области модификации.
J - выравнивание текста по правому краю. По умолчанию текст в об-
ласти модификации выравнивается по левому краю.
При включении обеих опций, опция J имеет приоритет.
В этом примере создается область модификации в которой текст вы-
равнивается по правому краю:
STORE 'This will be edited' TO text
@ 4,2 EDIT text FUNCTION 'J' SIZE 5,50
READ
DEFAULT
При редактировании области текста сам текст читается и сохраняется
в в переменной памяти, элементе массива, поле базы данных или memo по-
ле. Если вы задаете как переменную памяти и она не существует,
то при включении предложения DEFAULT эта переменная памяти автомати-
чески создается и инициализируется. Если является элементом
массива или полем, то DEFAULT не создает .
Внимание !!!
Если опция DEFAULT не включена и не существует, то выдается
предупреждение об ошибке 'Переменная не найдена'('Variable
not found').
Если опция DEFAULT присутствует и существует, то DEFAULT иг-
норируется.
Выражение в опции DEFAULT задает тип и начальное значение
инициализируемой переменной памяти. должна иметь символьный или
memo тип. Ниже приводятся примеры допустимого использования DEFAULT
для создания областей модификации:
@ 5,0 EDIT text DEFAULT 'This will be edited' SIZE 5,50
READ
@ 5,0 EDIT text DEFAULT SPACE(20) SIZE 5,50
READ
SIZE ,[,]
Опция SIZE обязательно должна присутствовать; она задает высоту и
ширину области модификации текста. Высота области модификации в стро-
ках задается в , ширина в столбцах - в . Если
равно 1, то создается специальная одностроковая область. В нем вы мо-
жете осуществлять горизонтальную прокрутку. Нажатием клавиши Enter вы
переходите к следующему полю GET или следующему объекту.
Необязательное числовое выражение задает число символов,
которые можно редактировать, начиная с первого символа в . Если
опущено, то вся переменная может редактироваться.
ENABLE|DISABLE
По умолчанию области модификации текста становятся доступными при
использовании команды READ. Вы можете захотеть задержать возможность
выбора области модификации текста до выполнения определенных условий.
Включение опции DISABLE размещает область модификации текста на экране
или в окне, но предотвращает ее активацию командой READ. Заблокирован-
ная область модификации текста не может быть выбрана и отображается в
цвете блокировки. Включение опции ENABLE активизирует область модифи-
кации текста так, что она может быть выбрана. Для получения доступа к
заблокированным командам GET используется команда SHOW GET ENABLED.
MESSAGE
Символьное выражение выдается выборе области модификации
текста. По умолчанию, сообщение выдается отцентрированным в последней
строке "стола". Местоположение сообщения может изменяться командой SET
MЕSSAGE.
VALID
Вы можете включить необязательное предложение VALID. Выражение
проверяется только после сохранения ваших изменений и выхода
из области модификации посредством нажатия клавиши Tab (если она
доступна), Ctrl+Tab или Shift+Tab.
Обычно является функцией, определяемой пользователем. Эти
функции позволяют делать очень многое, включая: выбор, обеспечение
доступности или блокировки других полей GET или объектов, инициализа-
цию секций Browse, вызов других экранов ввода данных, позиционирование
на новую запись. Для завершения выполнения команды READ в функции, оп-
ределяемые пользователем, может включаться команда CLEAR READ.
Если вы нажали Tab, Ctrl+Tab или Shift+Tab для сохранения измене-
ний в memo поле и выхода из области модификации текста, и кроме того,
проверка VALID дает .Т., то ваши изменения сохраняются. Если вы нажали
Tab, Ctrl+Tab или Shift+Tab для сохранения изменений в memo поле и вы-
хода из области модификации текста, и кроме того, проверка VALID дает
.F., то выдается сообщение, запрашивающее правильный ввод. Если вы за-
тем для выхода из области модификации текста нажимаете Escape, то все
ваши изменения сохраняются. Однако, редактируя переменную памяти, эле-
мент массива или поле базы данных символьного типа и нажимая Escape
при оценке VALID как .F. ваши изменения не сохраняются.
ERROR
Когда VALID оценивается как ложь (.F.) по умолчанию выдается сооб-
щение "Invalid Input" ("Неправильный ввод"). Включая предложение ERROR
вы можете изменить это сообщение на задаваемое вами. Символьное выра-
жение выводится в рамке в верхнем правом углу экрана.
WHEN
В зависимости от логического значения выражения необяза-
тельное предложение WHEN разрешает или наоборот запрещает редактирова-
ние в данной области. До начала редактирования выражение долж-
но быть оценено как логическая истина (.Т.). Если оценивается
как ложь (.F.), то текст не редактируется, сама область является заб-
локированной и пропускается с переходом на другие поля GET или другие
объекты. Чаще всего является функцией, определяемой пользова-
телем.
NOMODIFY
Включая необязательную опцию NOMODIFY вы показываете область моди-
фикации текста, но не разрешаете ее редактирование. Вы можете переме-
щаться по тексту, копировать текст из области, но вам запрещены любые
его изменения.
SCROLL
Если переменная слишком велика, чтобы уместится в области
модификации текста, вы можете осуществлять ее прокрутку. Для этого
используются клавиши управления курсором, PgUp, PgDown, Home или End и
их комбинации с клавишей Ctrl. Для перемещения по тексту можно пользо-
ваться и "мышью".
Если опция SCROLL присутствует, то справа от области модификации
текста выводятся полосы прокрутки. Полосы прокрутки позволяют осущест-
влять более быстрое перемещение по тексту с помощью "мыши" и визуально
указывают на ваше местоположение в области редактирования. Полосы
прокрутки появляются только в случае, если текст является слишком
большим, чтобы полностью поместится в области модификации текста.
TAB
По умолчанию, при нахождении в области модификации текста нажатие
клавиши Tab не вставляет в текст символа табуляции. Нажатие Tab (или
Ctrl+Тab) сохраняет все ваши изменения, деактивирует область модифика-
ции текста и переходит к следующему полю GET или следующему объекту.
Однако, если вы включаете ключевое слово TAB, то нажатие этой кла-
виши вставляет символ табуляции по месту расположения курсора. Для
сохранения все ваших изменений, деактивции области модификации текста
и перехода к следующему полю GET или следующему объекту, в этом слу-
чае, вы должны нажать комбинацию клавиш Ctrl+Tab.
COLOR SCHEME
COLOR (<список цветовых пар>)
По умолчанию цвета области модификации текста берутся из цветовой
схемы текущего окна или экрана. Цветовая схема представляет собой на-
бор из 10 цветовых пар, которые описывают цветовые характеристикм ок-
на. Вы можете переопределить текущую цветовую схему путем задания раз-
личных предопределенных заранее цветовых схем, или путем задания
списка цветовых пар.
Этот пример показывает переопределение одной цветовой схемы на
другую, заранее предопределенную.
STORE 'To be edited' TO text
@ 5,0 EDIT text COLOR SCHEME 4 SIZE 5,50
READ
Заданием списка цветовых для области модификации текста вы можете
переопределять лишь некоторые характеристики цветовой схемы. Список
цветовых пар представляет собой 10 разделенных запя-
тыми пар цветов. Первая половина пары задает основной цвет . Вторая
половина задает цвет фона. В следующей таблице приводится список цве-
товых пар с управляемыми ими аттрибутами.
Номер Атрибут области модификации текста
цветовой
пары
1 Не используется областью модификации текста
2 Доступная область модификации текста
3 Полоса прокрутки ''
4 Не используется областью модификации текста
5 Сообщение
6 Выбираемая область модификации текста
7 Не используется областью модификации текста
8 Не используется областью модификации текста
9 Не используется областью модификации текста
10 Заблокированная область модификации текста
'' - Управляющие средства изображаются цветом фона. Полоса изобра-
жается бледным основным цветом.
В этом примере определяется область модификации текста и задаются
следующие цветовые характеристики списка:
- Когда текст выбран, то он изображается ярким белым цветом на си-
нем фоне (W+/B).
- Доступная область модификации текста выводится с текстом желтого
цвета на синем фоне (GR+/B).
- Заблокированная область модификации текста выводится с текстом
белого цветом на синем фоне (W/B).
Пример:
STORE 'To be edited' TO text
@ 5,0 EDIT text SIZE 5,50 COLOR ,GR+/B,,,,W+/B,,,,W/B
READ
При пропуске цветовой пары на ее месте вы должна ставить запятую.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є @ ... BOX є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Рисование прямоугольника
Синтаксис
@ , BOX []
Смотри также
@ ... TO
Описание
Данная форма команды @ предназначается для рисования прямоуголь-
ника на экране или в окне.
Параметры
,,,
- это координаты верхнего левого угла прямоугольни-
ка, а - координаты его правого нижнего угла. При одина-
ковых значениях и рисуется горизонтальная линия, а при
одинаковых значениях и - вертикальная линия.
BOX
Включив опцию , можно задать символы, которыми будет изобра-
жен прямоугольник. может содержать до девяти различных символов
- по одному для каждого угла, по одному для каждой сторону и один сим-
вол для заполнения им прямоугольника. Эти символы выводятся, начиная с
верхнего левого угла, и далее по часовой стрелке. Если девятый символ
задан, он будет использован для заполнения внутренней области прямоу-
гольника. Если задан лишь один символ, то он будет использован для
рисования всего контура границы прямоугольника. Если же
отсутствует, то прямоугольник будет нарисован одинарной линией.
Примеры:
@ 10,20,14,60 BOX
@ 10,20,14,60 BOX REPLICATE(CHR(177),9)
В первом примере прямоугольник будет нарисован одинарной линией.
Во втором примере прямоугольник будет состоять из множества сплошных
прямоугольничков. REPLICATE() возвращает девяти сплошных прямоуголь-
ничков. Команда @ ... BOX использует их в качестве символов отрисовки
каждого угла и сторон, и для заполнения внутреннего пространства пря-
моугольника.
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є @ ... CLEAR є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Очистка области экрана или окна
Синтаксис
@ [CLEAR | CLEAR TO ]
Смотри также
CLEAR
Описание
Данная форма команды @ выполняет очистку области экрана или актив-
ного окна.
Опции
Координаты верхнего левого угла очищаемого экрана или активного
для вывода окна.
[CLEAR | CLEAR TO ]
Если опцию CLEAR или CLEAR TO опустить, то произойдет очистка
строки row1, начиная со столбца column1.
При задании опции CLEAR будет выполнена очистка прямоугольной об-
ласти экрана, верхний левый угол которой определен координатой
, а правый нижний является правым нижним углом экрана
или окна.
При использовании опции CLEAR TO очищается прямоугольная область
экрана, как было описано выше, за исключением того, что правый нижний
угол прямоугольника будет определен второй парой координат
.
Примеры
В первом примере экран или окно очищаются со строки 15 и вниз до
конца.
@ 15,0 CLEAR
Во втором примере выполняется очистка некоторой прямоугольной об-
ласти. Ее верхний левый угол определяется экранными координитами
(10,0),а нижний правый - (22,79).
@ 10,0 TO 22,79 CLEAR
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є @ ... FILL є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Изменение цвета в заданной области экрана.
Синтаксис
@ FILL TO
[COLOR SCHEME | COLOR ]
Смотри также
SET COLOR
Описание
Данная форма команды @ изменяет цвета существующего текста в пря-
моугольной области экрана или окна. Данная команда позволяет устанав-
ливать цветовые аттрибуты фона и переднего плана только для уже су-
ществующего текста. Любой текст, выводимый в указанную область после
выдачи команды @...FILL, будет изображаться цветами по умолчанию. До-
полнительную информацию об определении цветов см. в описании команды
SET COLOR.
Опции
FILL TO
Верхний левый угол этой области определяется первой парой коорди-
нит , а нижний правый угол - второй парой координат
.
[COLOR SCHEME | COLOR ]
Если предложение COLOR или COLOR SCHEME опущено, то происходит
очистка заданной прямоугольной области экрана, как в случае команды
@...CLEAR.
Пример
В следующем примере реализованы несколько команд @ ... FILL, кото-
рые изменяют на экране цвета слова FoxPro. Программа определяет теку-
щий видеорежим и последовательно изменяет цвет каждой буквы в слове
FoxPro. Предполагается использование цветовой схемы по умолчанию. Эта
программа наиболее наглядно работает на цветном мониторе.
IF SET('TALK') = 'ON' && TALK должно быть выключено
SET TALK OFF
savetalk = 'ON'
ELSE
savetalk = 'OFF'
ENDIF
*** Определяем видеорежим и устанавливаем координаты экрана ***
row = INT((SROWS() - 14) / 2)
column = INT((SCOLS() - 80) / 2)
SET TALK &savetalk && Восстанавливаем первоначальную установку
*** Очищаем экран и выводим на него FoxPro ***
CLEAR
=SYS(2017)
*** Изменяем цвет буквы F в FoxPro ***
@ row, column+1 FILL TO row+3, column+16 COLOR GR+/B
@ row+4, column+1 FILL TO row+10, column+8 COLOR GR+/B
*** Изменяем цвет первой буквы о в FoxPro ***
@ row+4, column+10 FILL TO row+10, column+22 COLOR R+/B
*** Изменяем цвет буквы х в FoxPro ***
@ row+4, column+23 FILL TO row+10, column+35 COLOR R/B
*** Изменяем цвет буквы Р в FoxPro ***
@ row, column+36 FILL TO row+10, column+50 COLOR BG/B
*** Изменяем цвет буквы r в FoxPro ***
@ row+4, column+51 FILL TO row+10, column+63 COLOR G/B
*** Изменяем цвет второй буквы о в FoxPro ***
@ row+4, column+64 FILL TO row+10, column+79 COLOR B+/B
*** Изменяем цвет сообщения Copyright ***
@ row+11, column FILL TO row+15, column+79 COLOR W/B
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є @ ... MENU є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Создание всплывающего меню.
Синтаксис
@ MENU ,
[, ] [TITLE ] [SHADOW]
Замечания
Включена для обеспечения совместимости с более ранними версиями - в
FoxPro 2.0 для создания меню и всплывающих меню используется Menu
Builder (Построитель Меню).
Смотри также
CREATE POPUP, DEFINE POPUP, MENU, MENU TO, READ MENU
Описание
Данная форма команды @ позволяет создавать всплывающее меню в лю-
бом желаемом месте экрана или активного окна.
Всплывающее меню представляет собой ограниченный прямоугольник,
содержащий список опций, из которых нужно сделать выбор. Многие всплы-
вающие меню могут также содержать заданный вами заголовок, который бу-
дет появляться в верхней части окна меню. Всплывающие меню активиру-
ются командой READ MENU. Одновременно активным может являться только
одно всплывающее меню.
DEFINE POPUP и ACTIVATE POPUP являются другой парой команд, позво-
ляющих создавать и активизировать всплывающие меню. Они работают неза-
висимо от команд @ ... MENU и READ MENU.
Опции
Пара арифметических выражений, идентифицирующая местоположение
верхнего левого угла меню при его размещении на экране или в активном
окне.
Одномерный массив, содержащий опции, появляющиеся во всплывающем
меню. Элементы меню должны быть символьного типа, а длина каждого от-
дельного элемента меню не должна превышать 76 символов.
Общее число пунктов, доступное во всплывающем меню. Если
имеет 10 элементов, а значение равно 5, то во всплывающем меню
будут доступны первые 5 элементов массива .
Данный необязательный аргумент представляет собой количество пунк-
тов меню, выводимых на экран. Если больше , то во
всплывающем меню выводятся пунктов. Также, если число выводи-
мых на экран пунктов меньше общего количества определенных для данного
меню , то по необходимости можно выполнять скроллинг окна меню с по-
мощью клавиш навигации или "мыши".
TITLE
Необязательный аргумент, представляющий собой заголовок, который
будет выдаваться в верхней части окна меню.
SHADOW
Всплывающее меню, определенное с опцией SHADOW, при выводе на эк-
ран будет иметь за собой затененную область, напоминающую настоящую
тень. Текст или другие объекты, закрываемые тенью, остаются видимыми.
По умолчанию, всплывающие меню не имеют тени.
Пример программы:
SET TALK OFF
CLEAR
DIMENSION choices(3)
STORE `Цыпленок' TO choices(1)
STORE `Мясо' TO choices(2)
STORE `Рыба' TO choices(3)
STORE 0 TO mchoice
@ 5,0 MENU choices,3 TITLE `Обеденное меню'
READ MENU TO mchoice
DO CASE
CASE mchoice=1
@ 10,0 SAY `На обед вы получите цыпленка'
CASE mchoice=2
@ 10,0 SAY `На обед вы получите мясо'
CASE mchoice=3
@ 10,0 SAY `На обед вы получите рыбу'
ENDCASE
ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є @ ... PROMPT є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
Назначение
Создание меню типа световой линейки (строки меню).
Синтаксис
@ PROMPT
[MESSAGE ]
Замечания
Включена для обеспечения совместимости с более ранними версиями - в
FoxPro 2.0 для создания меню и всплывающих меню используется Menu
Builder (Построитель Меню).
Смотри также
CREATE MENU, MENU TO, SET CONFIRM, SET MESSAGE
Описание
Данный вариант команды @ используется при создании и организации
меню типа световой линейки (линейки меню). Последовательность команд
@... PROMPT определяет пункты линейки меню и назначает их позиции на
экране или в активном окне.
После определения всех опций PROMPT для вызова световой линейки
меню выдается команда MENU TO.
После того, как выбор сделан, в переменную памяти, заданную в ко-
манде MENU TO , возвращается число, соответствующее вашему вы-
бору. Это число определяется последовательностью, в которой были опре-
делены пункты PROMPT. Например, если было определено пять пунктов меню
PROMPT и вы выбрали третий из них, то команда MENU ТО |