Команда @ ... GET - поля текста

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

Синтаксис

@ nRow, nColumn
GET MemVarName | FieldName
	[FUNCTION cFormatCodes]
	[PICTURE cFormatCodes]
	[NAME ObjectName]
	[FONT cFontName [, nFontSize]]
	[STYLE cFontStyle]
	[DEFAULT Expression]
	[ENABLE | DISABLE]
	[MESSAGE cMessageText]
	[[OPEN] WINDOW WindowName]
	[RANGE [LowerBound] [, UpperBound]]
	[SIZE nHeight, nWidth]
	[VALID lExpression1 | nExpression [ERROR cErrorText]]
	[WHEN lExpression2]
	[COLOR SCHEME nSchemeNumber 
	| COLOR ColorPairList]

Параметры
@ nRow, nColumn
Задает позицию текстового поля.
Строки нумеруются сверху вниз. Первая строка имеет номер 0 в основном окне Visual FoxPro или в окне, определенном пользователем.
В Visual FoxPro строка 0 это строка, расположенная непосредственно под системной строкой меню Visual FoxPro.
В FoxPro для Macintosh строка 0 это строка, расположенная непосредственно под строкой заголовка FoxPro.
В FoxPro для MS-DOS строка 0 это строка, которую занимает системная строка меню FoxPro. О том, как, манипулируя системной строкой меню, размещать в FoxPro для MS-DOS текстовые поля в строке 0, см. SET SYSMENU.
GET MemVarName | FieldName
Задает переменную памяти, элемент массива или поле, для которых команда @... GET создает текстовое поле.
Совет Редактировать memo-поля лучше с помощью команды @... EDIT, а не @... GET. Команда @... EDIT создает окно редактирования текста с полосой прокрутки, и при выдаче команды @... EDIT отображается содержимое memo-поля.
FUNCTION cFormatCodes | PICTURE cFormatCodes
Задает функциональный код или код шаблона, который определяет, в каком виде содержимое текстового поля будет отображаться на дисплее или на печати. Для создания маски редактирования можно включить предложение FUNCTION, предложение PICTURE или оба эти предложения. Они содержат специальные коды, которые управляют отображением и редактированием переменной памяти, элемента массива или поля.
Коды FUNCTION могут быть включены в предложение PICTURE. В этом случае предложение PICTURE должно начинаться с символа @. Кроме него предложение PICTURE может содержать коды FUNCTION, коды PICTURE или те и другие. Поскольку предложение FUNCTION влияет на все выражение, оно может содержать только коды FUNCTION.

Код FUNCTION	Назначение
A		Разрешает использовать только буквенные символы
		(без пробелов и знаков препинания).
B		Выравнивает данные влево в текстовом поле.
D		Задает использование текущего формата даты согласно
		установке SET DATE.
E		Редактирует даты как даты типа BRITISH. 
I		Центрирует текст в текстовом поле.
J		Выравнивает данные вправо в текстовом поле.
K		Выделяет все текстовое поле целиком, когда в него переходит курсор.
L		Отображает в текстовом поле начальные нули (вместо пробелов).
		Используется только для числовых данных.
MList		Создает список предварительно подготовленных элементов на выбор.
		List представляет собой совокупность элементов, перечисленных через
		запятую. Внутри любого отдельного элемента списка нельзя использовать
		запятые. Если переменная памяти MemVarName или поле FieldName первоначально
		при выдаче команды READ не содержали какого-либо элемента из этого 
		списка, то отображается первый элемент списка. Чтобы пролистать список,
		нажимайте клавишу Spacebar или введите первую букву элемента. Чтобы 
		выбрать один из элементов списка и перейти к следующему элементу 
		управления, нажмите клавишу Enter. Используется только для символьных 
		данных.
R		Отображает в текстовом поле символы маски формата. Символы этой маски 
		не сохраняются в текстовом поле при выходе из него. Используется только
		для символьных или числовых данных.
Sn		Ограничивает размер текстового поля n символами. Вы можете прокручивать
		содержимое области с помощью клавиш управления курсором. Используется
		только для символьных данных.
T		Отбрасывает начальные и конечные пробелы в переменной памяти MemVarName
		или поле FieldName.
Z		Отображает переменную памяти MemVarName или поле FieldName в виде
		пробелов, если их числовое значение равно 0. Используется только для
		числовых данных.
!		Переводит строчные буквы в верхний регистр. Используется только для
		символьных данных. 
^		Отображает числовые данные в экспоненциальном представлении.
		Используется только для числовых данных.
$		Отображает перед числовыми данными символ денежной единицы.
		Используется только для числовых данных.

Столбцы нумеруются слева направо. Первый столбец имеет номер 0 в основном окне Visual FoxPro или пользовательском окне.
Когда текстовое поле помещается в пользовательское окно, его координаты по строкам и столбцам берутся относительно этого пользовательского окна, а не основного окна Visual FoxPro.
В Visual FoxPro и FoxPro для Macintosh позиция в основном окне Visual FoxPro или в пользовательском окне определяется шрифтом этого окна. Большинство шрифтов допускают множество вариантов с различными размерами, а некоторые из них имеют пропорциональные промежутки. Номер строки зависит от высоты текущего шрифта, а номер столбца от средней ширины буквы в текущем шрифте.
В Visual FoxPro и FoxPro для Macintosh позицию текстового поля в окне можно задавать дробными значениями координат по строкам и столбцам.
В FoxPro для MS-DOS десятичные дробные значения, используемые в качестве координат по строкам и столбцам, округляются до ближайшего целого числа.
Выражение предложения PICTURE может включать любые символы, но только перечисленные ниже символы определяют, как отображается и редактируется текстовое поле.

Код PICTURE	Назначение
A		Разрешает ввод только алфавитных символов.
L		Разрешает ввод только логических данных.
N		Разрешает ввод только букв и цифр.
X		Разрешает ввод любых символов.
Y		Разрешает в качестве эквивалентов логических значений "истина" (.T.)
		и "ложь" (.F.) вводить соответственно Y, y, N и n.
9		Разрешает вводить в символьных данных любые цифры. Разрешает вводить
		в числовых данных цифры и знаки.
#		Разрешает ввод цифр, пробелов и знаков.
!		Преобразует строчные буквы в прописные.
$		Отображает текущий символ денежной единицы, заданный установкой
		SET CURRENCY. По умолчанию этот символ ставится непосредственно перед
		числовым значением или после него. Однако символ денежной единицы и его
		позицию (заданные установкой SET CURRENCY), а также символ-разделитель
		(заданный установкой SET SEPARATOR) и символ десятичного разделителя
		(заданный установкой SET POINT) можно изменить. Используется только
		с числовыми данными.
*		Отображает звездочки впереди числового значения. Используйте вместе
		со знаком доллара ($) для защиты чеков.
.		Точка задает позицию десятичного разделителя.
,		Запятая используется для разделения групп цифр слева от десятичного разделителя.

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

CLOSE DATABASES
USE customer
DO CASE
	CASE _WINDOWS OR _MAC
		@ 2, 2 GET contact FONT 'Courier',12
	OTHERWISE
		@ 2, 2 GET contact
ENDCASE
READ

Если предложение FONT опущено и текстовое поле размещается в основном окне Visual FoxPro, используется шрифт основного окна Visual FoxPro. Если предложение FONT опущено и текстовое поле размещается в пользовательском окне, используется шрифт этого пользовательского окна.
Если вы задали предложение FONT, опустив размер шрифта cFontSize, используется размер 10 пунктов.
Если в Visual FoxPro заданный шрифт отсутствует, его заменяет шрифт с похожими характеристиками.
Если в FoxPro для Macintosh заданный шрифт отсутствует, используется шрифт Chicago.
В FoxPro для MS-DOS предложение 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 (Подчеркнутый)

Если вы задали T и хотите создать прозрачное текстовое поле, данная область будет игнорировать цвет фона.
Можно указать сразу несколько символов, задав комбинацию стилей. Например, следующая небольшая программа создает текстовое поле; в нем отображается содержимое поля CONTACT полужирным курсивом (Bold Italic).

CLOSE DATABASES
CLEAR
USE customer
DO CASE
	CASE _WINDOWS OR _MAC
		@ 2, 2 GET contact STYLE 'BI'
	OTHERWISE
		@ 2, 2 GET contact
ENDCASE
READ

DEFAULT Expression1
Если вы задали для текстового поля несуществующую переменную памяти, она будет автоматически создана и проинициализирована при условии, что включено предложение DEFAULT. Однако если в предложении DEFAULT задать элемент массива, он не будет создаваться. Если переменная памяти уже существует или если вы задаете поле, предложение DEFAULT игнорируется.
Замечание Если предложение DEFAULT опущено и переменная памяти MemVarName не существует, Visual FoxPro сгенерирует сообщение об ошибке.
Выражение Expression1 определяет тип создаваемой переменной памяти и ее начальное значение.
ENABLE
Делает текстовое поле доступным. По умолчанию текстовые поля становятся доступными при выдаче команды READ. Вы можете включить предложение ENABLE в программу для напоминания о том, что текстовым полем можно пользоваться.
DISABLE
Запрещает пользователю доступ к текстовому полю при выдаче команды READ. Недоступное текстовое поле изображается определенными для данного состояния цветами и не может быть выбрано.
Замечание Если в пользовательском окне все текстовые поля недоступны, окно не может оставаться на переднем плане. Если все текстовые поля в текущей команде READ определены как недоступные, выполнение команды READ прекращается.
MESSAGE cMessageText
Создает сообщение, которое выдается при выборе текстового поля.
В Visual FoxPro и FoxPro для Macintosh сообщение выводится в графической строке состояния. Если графическая строка состояния была отключена с помощью команды SET STATUS BAR OFF, сообщение располагается в последней строке основного окна Visual FoxPro.
В FoxPro для MS-DOS сообщение размещается в центре последней строки основного окна FoxPro и временно отменяет действие установки SET MESSAGE.
[OPEN] WINDOW WindowName
Предложение OPEN WINDOW включено для совместимости с предыдущими версиями. Используйте вместо него команду @... EDIT.
Позволяет редактировать memo-поле в пользовательском окне. Это пользовательское окно предварительно нужно создать с помощью команды DEFINE WINDOW. При выдаче команды @... GET WINDOW отображается слово Memo.
Если задано предложение OPEN, то при выдаче команды READ или READ CYCLE автоматически открывается окно редактирования memo-поля.
Совет Memo-поля лучше редактировать с помощью команды @... EDIT, а не @... GET. Команда @... EDIT создает текстовое поле с полосой прокрутки, и при выдаче команды @... EDIT отображается содержимое memo-поля.
RANGE [LowerBound] [, UpperBound]
Задает диапазон допустимых значений, которые пользователь может вводить в текстовом поле. Если в текстовое поле введено значение, не принадлежащее заданному диапазону, выдается сообщение, указывающее правильный диапазон. Чтобы отменить выдачу такого сообщения, используйте команду ON READERROR.
LowerBound задает нижнюю границу диапазона, а UpperBound верхнюю границу. В качестве LowerBound и UpperBound следует использовать выражения типов Date, DateTime, Character, Numeric, Float, Double или Currency, которые соответствуют типу данных в переменной памяти, элементе массива или поле. Можно опустить аргумент LowerBound или UpperBound, но не оба. Если какая-либо граница не указана, для введенных данных проверяется соблюдение только другой, заданной границы.
Замечание Если вы нажали клавишу Enter, не изменив содержимого переменной памяти, элемента массива или поля, принадлежность диапазону не проверяется.
SIZE nHeight, nWidth
Задает высоту и ширину текстового поля. По умолчанию текстовое поле имеет высоту в одну строку. Размер области определяется длиной переменной памяти, элемента массива или поля либо предложением PICTURE.
nHeight задает высоту текстового поля в строках, а nWidth его ширину в столбцах.
В Visual FoxPro и FoxPro для Macintosh размер текстового поля определяется шрифтом текстового поля, который задан в предложении FONT. Если предложение FONT опущено, в текстовом поле используется шрифт его родительского окна (основного окна Visual FoxPro или пользовательского окна).
VALID lExpression1 | nExpression [ERROR cErrorText]
Проверяет достоверность пользовательского ввода. Когда пользователь пытается выйти из текстового поля, вычисляется выражение предложения VALID.
Предложение VALID значительно упрощает процедуру проверки достоверности данных, если в нем задана пользовательская функция. Пользовательская функция, вызываемая в предложении VALID команды @... GET, должна возвращать логическое или числовое значение.
Замечание В отличие от предложения RANGE, предложение VALID всегда выполняется при выходе из текстового поля, если только вы не нажали клавишу Esc. Предложение RANGE выполняется только при внесении изменения в переменную памяти, элемент массива или поле.
lExpression1
Если вычисление выражения lExpression1 дает значение "истина" (.T.), данные в текстовом поле считаются корректными и происходит выход из текстового поля.
Если lExpression1 имеет значение "ложь" (.F.), данные в текстовом поле считаются некорректными и выдается сообщение, предлагающее пользователю заново ввести данные, нажав перед этим клавишу пробел.
Если программа проверки достоверности, активизируемая пользовательской функцией, замещает содержимое поля и затем возвращает значение "ложь", то содержимое поля замещается, но когда пользователь возвратится из пользовательской функции в текстовое поле, восстановится предыдущее значение поля.
nExpression
Определяет, какой элемент управления активизируется после того, как пользователь выходит из текстового поля. Сведения об элементах управления см. в Элементы управления и объекты. Числовое выражение nExpression определяет одну из следующих трех ситуаций.
Если значение nExpression равно 0, курсор остается в текстовом поле. Сообщения об ошибках MESSAGE cMessageText и ERROR cErrorText не выдаются. В состав пользовательской функции, вызываемой предложением VALID, можно включить специально составленную программу выдачи сообщений об ошибках.
Если программа проверки достоверности, активизируемая пользовательской функцией, замещает содержимое поля и возвращает 0, содержимое поля замещается, но когда вы вернетесь в текстовое поле, восстановится предыдущее значение поля.
Если значение nExpression положительно, оно задает количество элементов управления, на которое следует сдвинуться. Например, если курсор устанавливается в текстовом поле и VALID возвращает 1, активизируется следующий элемент управления. Если значение nExpression больше числа оставшихся элементов управления, команда READ прекращается (если только не выдана команда READ CYCLE, активизирующая элементы управления).
Если значение nExpression отрицательно, оно задает количество элементов управления, на которое нужно вернуться. Например, если курсор устанавливается в текстовом поле и VALID возвращает -1, активизируется предыдущий элемент управления. Если nExpression задает возврат далее первого элемента управления, команда READ прекращается (если только не выдана команда READ CYCLE, активизирующая элементы управления).
ERROR cErrorText
Задает текст сообщения об ошибке, которое должно выдаваться, когда выражение VALID имеет значение "ложь" (.F.). Visual FoxPro выдает сообщение cErrorText вместо используемого по умолчанию сообщения об ошибке.
WHEN lExpression2
Разрешает или запрещает доступ к текстовому полю, исходя из значения выражения lExpression2: оно должно быть "истиной" (.T.), чтобы текстовое поле было доступно. Если предложение WHEN задано и выражение lExpression2 имеет значение "ложь" (.F.), доступ к текстовому полю невозможен и активизируется следующий элемент управления.
COLOR SCHEME nSchemeNumber
Задает цвета для текстового поля. Если предложение COLOR SCHEME опущено, цвет текстового поля определяется цветовой схемой основного окна Visual FoxPro. Если текстовое поле предназначено для пользовательского окна, его цвет определяется цветовой схемой этого окна.

COLOR ColorPairList
Задает цвета для текстового поля. Цвет определяется только первой цветовой парой в списке цветовых пар.
Цвета текстового поля определяются только цветовыми парами 2, 5, 6 и 10 цветовой схемы или списка цветовых пар.

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

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

Комментарии
В Visual FoxPro текстовые поля следует создавать с помощью конструктора форм или DEFINE CLASS. Подробнее о совместимости с элементами управления предыдущих версий FoxPro 2.x см. Элементы управления и объекты.
Подробнее о добавлении элементов управления к форме см. главу 9 "Создание форм" Руководства разработчика и Добавление объекта в контейнерный класс.
Команда @... GET используется для создания текстового поля, отображающего содержимое переменной памяти, элемента массива или поля. Для активизации текстовых полей используйте команду READ или READ CYCLE.
Можно объединить @... SAY и @... GET в одну команду. Если заданы оба предложения SAY и GET, укажите один набор координат nRow, nColumn, обозначающий позицию начала вывода @... SAY. Между выводом команды @... SAY и текстовым полем автоматически вставляется пробел.


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