Команда @ ... GET - поля ввода значения

Создает поле ввода значения. Включена для совместимости с предыдущими версиями. Для приложений Visual FoxPro следует использовать элемент управления Spinner.

Синтаксис:

@ nRow, nColumn
GET MemVarName | FieldName 
SPINNER nChangeValue [, nMinValue [, nMaxValue]]
	[FUNCTION cFormatCodes]
	[PICTURE cFormatCodes]
	[NAME ObjectName]
	[FONT cFontName [, nFontSize]]
	[STYLE cFontStyle]
	[DEFAULT nExpression1]
	[SIZE nHeight, nWidth]
	[ENABLE | DISABLE]
	[MESSAGE cMessageText]
	[RANGE [nLowerBound] [, nUpperBound]]
	[VALID lExpression1 | nExpression2 [ERROR cErrorText]]
	[WHEN lExpression2]
	[COLOR SCHEME nSchemeNumber 
	| COLOR ColorPairList]

Параметры
@ nRow, nColumn
Задает позицию поля ввода значения.
Строки нумеруются сверху вниз. Первая строка имеет номер 0 в основном окне Visual FoxPro или в окне, определенном пользователем.
В Visual FoxPro строка 0 это строка, расположенная непосредственно под системной строкой меню Visual FoxPro.
В FoxPro для Macintosh строка 0 это строка, расположенная непосредственно под строкой заголовка FoxPro.
Столбцы нумеруются слева направо. Первый столбец имеет номер 0 в основном окне Visual FoxPro или в пользовательском окне.
Когда поле ввода значения размещается в пользовательском окне, координаты его строки и столбца берутся относительно данного пользовательского окна, а не основного окна Visual FoxPro.
Позиция поля ввода значения в основном окне Visual FoxPro или в пользовательском окне определяется шрифтом этого окна. Большинство шрифтов допускают множество вариантов с различными размерами, а некоторые из них имеют пропорциональные промежутки. Номер строки зависит от высоты текущего шрифта, а номер столбца от средней ширины буквы в текущем шрифте.
Позицию поля ввода значения в окне можно задавать дробными значениями координат по строкам и столбцам.
GET MemVarName | FieldName
Задает переменную памяти, элемент массива или поле, где сохраняется число, представляющее сделанный пользователем выбор. Это число представляет собой начальное значение, отображаемое в поле ввода значения до выполнения команды READ или READ CYCLE.
SPINNER nChangeValue [, nMinValue [, nMaxValue]]
Задает значения, отображаемые в поле ввода значения.
Значение, отображаемое в поле ввода, можно изменять (увеличивать или уменьшать) с приращением, определяемым величиной nChangeValue. Например, если значение nChangeValue равно 2 и вы нажимаете кнопку со стрелкой вверх или со стрелкой вниз, значение в текстовом поле увеличится или уменьшится на 2.
В следующем примере определяется поле ввода значения для переменной памяти gnChoice. Содержимое поля изменяется с приращением 1 между нижней границей -5 и верхней границей 24. Начальное значение, отображаемое внутри поля, равно 3.

@ 2,2 GET gnChoice SPINNER 1, -5, 24 DEFAULT 3

Аргумент nMinValue задает минимальную величину, которая может быть отображена в поле ввода значения, а аргумент nMaxValue максимальную величину. Впрочем, с клавиатуры можно ввести в поле значение, которое лежит вне диапазона, определяемого границами nMinValue и nMaxValue. С помощью предложений VALID и RANGE можно контролировать значения, вводимые в поле с клавиатуры. FUNCTION cFormatCodes | PICTURE cFormatCodes
Задает поле ввода значения и его название. Можно включить предложение FUNCTION, предложение PICTURE или оба эти предложения. Ни один из этих трех методов нельзя выделить в качестве предпочтительного. Предложения FUNCTION и PICTURE определяют, как значение из MemVarName или FieldName отображается и редактируется в текстовом поле.
В следующей таблице показано, как коды cFormatCodes предложения FUNCTION управляют отображением значений в поле ввода значения.

cFormatCodes	Назначение
B		Выравнивает влево значение в поле ввода.
I		Центрирует значение в поле ввода.
J		Выравнивает вправо значение в поле ввода.
K		Выделяет для редактирования все значение целиком при выборе поля ввода.
L		Отображает начальные нули перед значением.
Z		Отображает пробел вместо значения, когда оно равно 0.
^		Отображает значение в экспоненциальном представлении. 
$		Отображает значение в формате денежной единицы. Символ денежной 
		единицы ставится слева или справа от значения, в зависимости от
		установки SET CURRENCY.

Символьное выражение cFormatCodes предложения PICTURE определяет, какие значения можно вводить в текстовом поле, как эти значения изображаются и как выглядит само поле ввода значения. Выражение cFormatCodes предложения PICTURE воздействует на отдельные символы значений в поле ввода. Вы должны ввести достаточное число символов маски, в расчете на максимальное значение, которое может появиться в поле, с учетом знаков и специальных символов.
Коды спецификации 2 и 3 допустимы только в FoxPro для Macintosh.

cFormatCodes	Назначение
9		Позволяет вводить цифры и знаки (+ или - ).
#		Позволяет вводить цифры, пробелы и знаки (+ или -).
$		Отображает текущий символ денежной единицы (заданный установкой
		SET CURRENCY). 
*		Звездочки отображаются слева от значения. 
.		Точка обозначает позицию десятичной запятой.
,		Запятые могут быть включены для разделения групп цифр слева
		от десятичной запятой.
2		Создает плоское (двумерное) поле ввода значения, аналогичное
		используемым в диалоговых окнах Macintosh. Данный тип поля 
		ввода значения используется по умолчанию в FoxPro для Macintosh.
3		Создает трехмерное поле ввода значения, идентичное используемым
		в диалоговых окнах FoxPro для Macintosh.

NAME ObjectName
Допустимо только в Visual FoxPro.
Создает ссылку на поле ввода значения как на объект, что позволяет манипулировать им, используя объектно-ориентированные свойства элемента управления Spinner. Подробнее о манипулировании элементами управления FoxPro с помощью предложения NAME см. Элементы управления и объекты.
FONT cFontName [, nFontSize]
Допустимо только в Visual FoxPro и FoxPro для Macintosh.
Задает шрифт для названия поля ввода значения. Аргумент cFontName задает имя шрифта, а nFontSize размер шрифта в пунктах. Например, следующее предложение можно использовать для отображения текста в поле ввода шрифтом Courier, имеющим размер 16 пунктов:

@ 2, 2 GET gnChoice SPINNER 1, 1, 10 DEFAULT 3 FONT 'Courier', 16 

Если вы задали предложение FONT, опустив размер шрифта nFontSize, используется 10-пунктовый шрифт.
В Visual FoxPro, если заданный шрифт отсутствует, его заменяет шрифт с похожими характеристиками.
В FoxPro для Macintosh, если заданный шрифт отсутствует, используется шрифт Chicago.
В FoxPro для MS-DOS предложение FONT игнорируется.
Если предложение FONT опущено, а поле ввода значения помещается в основное окно Visual FoxPro, используется шрифт этого окна. Если предложение FONT опущено, а поле ввода значения помещается в пользовательское окно, используется шрифт этого пользовательского окна.
STYLE cFontStyle
Допустимо только в Visual FoxPro и FoxPro для Macintosh.
Задает стиль шрифта для названия поля ввода значения. Если опустить предложение STYLE, используется стиль Normal (нормальный).
В Visual FoxPro, если заданный вами стиль шрифта отсутствует, его заменяет стиль с похожими характеристиками.
В FoxPro для Macintosh, если заданный стиль шрифта отсутствует, используется стиль Normal.
В FoxPro для MS-DOS предложение STYLE игнорируется.
Стили шрифта, которые можно задавать в качестве cFontStyle, перечислены в следующей таблице.

Символ	Стиль шрифта
B	Bold (Полужирный)
C	Condense (Уплотненный; только в FoxPro для Macintosh)
E	Extend (Расширенный; только в FoxPro для Macintosh)
I	Italic (Курсив)
N	Normal (Нормальный)
O	Outline (Контурный)
Q	Opaque (Непрозрачный)
S	Shadow (Затененный)
-	Strikeout (Перечеркнутый; только в Visual FoxPro)
T	Transparent (Прозрачный)
U	Underline (Подчеркнутый)

Можно задать комбинацию стилей, указав сразу несколько символов. Например, следующее предложение задает полужирный курсив (Bold Italic):

@ 2, 2 GET gnChoice SPINNER 1, 1, 10 DEFAULT 3 STYLE 'BI'

DEFAULT nExpression1
Когда вы покидаете поле ввода значения, содержащееся в нем значение сохраняется в заданной переменной памяти, элементе массива или поле. Если задана несуществующая переменная, она будет автоматически создана и проинициализирована, при условии, что включено предложение DEFAULT. Однако если в этом предложении указать элемент массива, он не будет создан. Если заданная переменная памяти уже существует или если вы задали поле, предложение DEFAULT игнорируется.
Замечание Если предложение DEFAULT опущено и переменная памяти MemVarName не существует, Visual FoxPro сгенерирует сообщение об ошибке.
SIZE nHeight, nWidth
Задает высоту и ширину поля ввода значения. Аргумент nHeight задает высоту; она выражается в единицах, равных высоте текущего шрифта или шрифта, указанного при создании поля. Например, если значение nHeight равно 2, высота поля ввода будет равна удвоенной высоте текущего или заданного шрифта.
nWidth задает ширину поля ввода значения. Она выражается в единицах, равных средней ширине буквы в текущем шрифте или в шрифте, указанном при создании поля. Например, если nWidth равно 2, ширина поля ввода будет равна удвоенной ширине текущего или заданного шрифта.
На размер поля ввода значения влияет также его шрифт. Шрифт поля задается предложением FONT. Если это предложение опущено, в поле ввода значения используется шрифт его родительского окна (основного окна Visual FoxPro или окна, определенного пользователем).
ENABLE
Делает поле ввода значения доступным. По умолчанию оно становится доступным при выдаче команды READ. Предложение ENABLE можно включать в программу для напоминания о том, что полем ввода значения можно пользоваться.
DISABLE
Запрещает активизацию поля ввода значения при выполнении команды READ. Когда поле ввода значения не активно, оно изображается определенными для данного состояния цветами и пользователь не может его выбирать. Чтобы сделать недоступное поле ввода значения доступным, используйте команду SHOW GET ENABLE.
MESSAGE cMessageText
Создает сообщение, которое выдается при выборе поля ввода значения. Сообщение выводится в строке состояния. Если строка состояния была отключена с помощью команды SET STATUS BAR OFF, сообщение располагается в последней строке основного окна Visual FoxPro.
RANGE [nLowerBound] [, nUpperBound]
Задает диапазон допустимых значений для поля ввода значения. Если введенное в поле значение не принадлежит указанному диапазону, выдается сообщение, показывающее правильный диапазон. Чтобы отменить сообщение о диапазоне, используемое по умолчанию, создайте подпрограмму с помощью команды ON READERROR.
Нижняя граница диапазона задается аргументом nLowerBound, а верхняя аргументом nUpperBound. Один из этих аргументов, nLowerBound или nUpperBound, можно опустить, но не оба. Если какая-либо граница диапазона не задана, проверка ее нарушения не производится.
Диапазон не проверяется, если вы нажимаете клавишу Enter, не проверяя начальное значение в поле.
VALID lExpression1 | nExpression2 [ERROR cErrorText]
Санкционирует пользовательский ввод. Когда пользователь выбирает значение с помощью данного поля, вычисляется значение выражения VALID в момент попытки выхода из поля.
Замечание В отличие от проверки диапазона RANGE, проверка выражения VALID выполняется всегда при попытке выйти из поля ввода значения, если только вы не используете для этого клавишу Esc. Проверка диапазона выполняется только при изменении начального значения поля.
Как правило, lExpression1 и nExpression2 представляют собой пользовательские функции. С помощью подобных функций можно выбирать другие элементы управления, делать их доступными или недоступными, открывать окно просмотра, открывать другие формы для ввода данных или переходить к новой записи. В качестве пользовательской функции можно задать команду CLEAR READ, прекращающую операцию READ.
lExpression1
Если выражение lExpression1 имеет логическое значение "истина" (.T.), значение в поле ввода считается правильным и выход из поля разрешается.
Если lExpression1 имеет значение "ложь" (.F.), то значение, введенное в поле, считается неправильным и поле ввода остается активным элементом управления. В графической строке состояния появляется сообщение, предлагающее заново ввести данные, предварительно нажав клавишу пробел.
nExpression2
Задает элемент управления, который следует активизировать после выбора поля ввода значения. Об элементах управления см. в Элементы управления и объекты.
Если nExpression2 = 0, поле ввода значения остается активным элементом управления и выдача сообщений MESSAGE cMessageText и ERROR cErrorText подавляется. Можно написать специальную программу выдачи сообщений об ошибках, включив ее в состав пользовательской функции, вызываемой предложением VALID.
Если значение nExpression2 положительно, оно указывает количество элементов управления, на которое следует продвинуться. Например, если выбрано поле ввода значения и VALID возвращает 1, активизируется следующий элемент управления. Если значение nExpression2 больше числа оставшихся элементов управления, команда READ прекращается (если только не выполнена команда READ CYCLE, активизирующая элементы управления).
Если значение nExpression2 отрицательно, оно задает количество элементов управления, на которое нужно вернуться. Например, если выбрано поле ввода значения и VALID возвращает -1, активизируется предыдущий элемент управления. Если nExpression2 задает возврат далее первого элемента управления, команда READ прекращается (если только не выдана команда READ CYCLE, активизирующая элементы управления).
ERROR cErrorText
Задает пользовательское сообщение об ошибке, которое выдается, когда значением выражения в предложении VALID оказывается "ложь" (.F.). Текст cErrorText появляется вместо стандартного сообщения об ошибке.
WHEN lExpression2
Задает условие, в соответствии с которым поле ввода значения можно выбирать только в том случае, если значением выражения lExpression2 является "истина" (.T.). Если значением lExpression2 оказывается "ложь" (.F.), поле ввода значения выбирать нельзя, а если оно расположено между другими элементами управления, оно будет пропускаться.
COLOR SCHEME nSchemeNumber
Задает цвета поля ввода значения. Если не задано предложение COLOR, цвета поля будут определяться цветовой схемой основного окна Visual FoxPro; если поле ввода значения предназначено для пользовательского окна, то его цвета определяются цветовой схемой этого окна.
COLOR ColorPairList
Задает цвета поля ввода значения. Если не задано предложение COLOR, цвета поля будут определяться цветовой схемой основного окна Visual FoxPro; если поле ввода значения предназначено для пользовательского окна, то его цвета определяются цветовой схемой этого окна.
На цвет поля влияют только цветовые пары 2, 5, 6 и 10 цветовой схемы или списка цветовых пар.

Номер цветовой пары	Атрибут поля
2			Поле ввода
5			Сообщение
6			Поле выделено
10			Поле недоступно

Подробнее о цветовых схемах и цветовых парах см. Использование цветов.

Комментарии
В Visual FoxPro поле ввода значения создается с помощью конструктора форм или DEFINE CLASS. Подробнее о совместимости с элементами управления предыдущих версий FoxPro 2.x см. Элементы управления и объекты.
Подробнее о добавлении элементов управления к форме см. главу 9 "Создание форм" Руководства разработчика и Добавление объекта в контейнерный класс.
Допустима только в Visual FoxPro и FoxPro для Macintosh.
В FoxPro для MS-DOS синтаксис поля ввода значения предусматривает создание числового текстового поля. В него нужно ввести значение с клавиатуры. Величина приращения (nChangevalue), нижнее и верхнее граничные значения (nMinValue и nMaxValue), а также предложения FONT и STYLE игнорируются.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.