Команда @ ... EDIT - поля редактирования

Создает поле редактирования для редактирования переменных памяти символьного типа, элементов массивов либо memo-полей. Включена для совместимости с предыдущими версиями. Для приложений Visual FoxPro следует использовать элемент управления EditBox.

Синтаксис

@ nRow, nColumn
EDIT MemVarName | FieldName 
SIZE nHeight, nWidth [, nCharacters]
	[NAME ObjectName]
	[FUNCTION cFormatCodes]
	[FONT cFontName [, nFontSize]]
	[STYLE cFontStyle]
	[DEFAULT cExpression]
	[ENABLE | DISABLE]
	[MESSAGE cMessageText]
	[VALID lExpression1 | nExpression [ERROR cErrorText]]
	[WHEN lExpression2]
	[NOMODIFY]
	[SCROLL]
	[TAB]
	[COLOR SCHEME nSchemeNumber
	| COLOR ColorPairList]

Параметры
@ nRow, nColumn
Задает позицию поля редактирования. Числовые выражения 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.
Столбцы нумеруются слева направо. Первый столбец имеет номер 0 в основном окне Visual FoxPro или пользовательском окне.
Если поле редактирования предназначается для пользовательского окна, его координаты по строкам и столбцам берутся относительно этого пользовательского окна, а не основного окна Visual FoxPro.
В Visual FoxPro и FoxPro для Macintosh позиция в основном окне Visual FoxPro или в пользовательском окне определяется шрифтом этого окна. Большинство шрифтов допускают множество вариантов с различными размерами, а некоторые из них имеют пропорциональные промежутки. Номер строки зависит от высоты текущего шрифта, а номер столбца от средней ширины буквы в текущем шрифте.
В Visual FoxPro и FoxPro для Macintosh позицию поля редактирования в окне можно задавать дробными значениями координат по строкам и столбцам.
В FoxPro для MS-DOS десятичные дробные значения, используемые в качестве координат по строкам и столбцам, округляются до ближайшего целого числа.
EDIT MemVarName | FieldName
Задает переменную памяти, элемент массива, поле или memo-поле символьного типа, в котором следует сохранять результаты редактирования. Когда поле редактирования активизируется по команде READ или READ CYCLE, содержимое MemVarName или FieldName отображается в поле редактирования и может обрабатываться. При выходе из поля редактирования все изменения могут быть сохранены в данной переменной памяти, элементе массива, поле или memo-поле.
SIZE nHeight, nWidth [, nCharacters]
Задает размер поля редактирования. nHeight задает его высоту в строках, а nWidth ширину в столбцах.
Если значение nHeight равно 1, создается специальное поле редактирования из одной строки. Такую область можно прокручивать по горизонтали. Нажав клавишу Enter, вы перейдете к следующему элементу управления.
Необязательное числовое выражение nCharacters задает в переменной памяти, элементе массива или поле количество символов, которые можно редактировать, начиная с первого символа. Если аргумент nCharacters опущен, редактировать можно все символы переменной памяти, элемента массива или поля.
В Visual FoxPro и FoxPro для Macintosh размер поля редактирования определяется шрифтом поля редактирования, заданным в предложении FONT. Если предложение FONT опущено, в поле редактирования используется шрифт его родительского окна (основного окна Visual FoxPro или пользовательского окна).
NAME ObjectName
Допустимо только в Visual FoxPro.
Создает для поля редактирования объектную ссылку, позволяющую манипулировать полем редактирования с помощью объектно-ориентированных свойств, доступных для элемента управления поле редактирования. Подробнее о манипулировании элементами управления FoxPro с помощью предложения NAME см. Элементы управления и объекты. Подробнее о свойствах элемента управления поле редактирования, которые можно задать для поля редактирования, созданного с помощью предложения NAME, см. элемент управления EditBox.
FUNCTION cFormatCodes
Задает тип выравнивания текста в поле редактирования и внешний вид поля редактирования. Опции I и J данного предложения определяют, как выравнивается текст, а опции 2 и 3 задают внешний вид поля редактирования. Опции 2 и 3 допустимы только в FoxPro для Macintosh. Любые другие символы, включенные в предложение FUNCTION, игнорируются.

Опция		Назначение
I		Центрирует текст в поле редактирования.
J		Выравнивает текст вправо. По умолчанию текст в поле редактирования выравнивается влево.
2		Создает плоское (двумерное) поле редактирования. Такой вид поля редактирования 
		используется по умолчанию в FoxPro для Macintosh.
3		Создает трехмерное поле редактирования, идентичное полям редактирования FoxPro для Macintosh.

В приведенном ниже примере создается поле редактирования, в котором текст выравнивается вправо:

STORE 'This will be edited' TO gcText
@ 2,2 EDIT gcText FUNCTION 'J' SIZE 5, 50
READ

В следующем примере создается трехмерное поле редактирования для FoxPro для Macintosh:

STORE 'This will be edited' TO gcText
@ 2,2 EDIT gcText FUNCTION '3' SIZE 5, 50
READ

FONT cFontName [, nFontSize]
Допустимо только в Visual FoxPro и FoxPro для Macintosh.

Задает шрифт для текста, отображаемого в поле редактирования. cFontName задает имя шрифта, а nFontSize его размер в пунктах. Например, следующее предложение определяет отображение текста в поле редактирования с использованием 16-пунктового шрифта Courier:

FONT 'Courier', 16 

Если предложение 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 (Подчеркнутый)

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

STYLE 'BI'

DEFAULT cExpression
Определяет начальное значение переменной памяти. Когда вы редактируете текст в поле редактирования, он считывается из переменной памяти, элемента массива или поля, заданных аргументом MemVarName или FieldName, а затем записывается обратно. Если вы задали несуществующую переменную памяти, она будет автоматически создана и проинициализирована при условии, что включено предложение DEFAULT. Однако если в предложении DEFAULT задать элемент массива, он не будет создаваться. Если переменная памяти уже существует или если вы задаете символьное поле или memo-поле, предложение DEFAULT игнорируется.
Замечание Если предложение DEFAULT опущено и переменная памяти MemVarName не существует, Visual FoxPro сгенерирует сообщение об ошибке.
Ниже приведены примеры использования предложения DEFAULT в полях редактирования:

@ 2,2 EDIT gcText DEFAULT 'This will be edited' SIZE 5, 50
READ
@ 2,2 EDIT gcText DEFAULT SPACE(20) SIZE 5, 50
READ

ENABLE
Делает поле редактирования доступным. По умолчанию поле редактирования становится доступным при выдаче команды READ. Вы можете включить предложение ENABLE в программу для напоминания о том, что полем редактирования можно пользоваться.
DISABLE
Запрещает активизацию поля редактирования при выдаче команды READ. Когда поле редактирования не активно, оно изображается определенными для данного состояния цветами и не может быть выбрано. Чтобы сделать недоступное поле редактирования доступным, используйте команду SHOW GET ENABLE.
MESSAGE cMessageText
Создает сообщение, которое выдается при выборе поля редактирования.
В Visual FoxPro и FoxPro для Macintosh сообщение выводится в строке состояния. Если строка состояния была отключена с помощью команды SET STATUS BAR OFF, сообщение располагается в последней строке основного окна Visual FoxPro.
В FoxPro для MS-DOS сообщение по умолчанию размещается в центре последней строки основного окна FoxPro. Местоположение сообщения можно изменить с помощью команды SET MESSAGE.
VALID lExpression1 | nExpression
Проверяет достоверность пользовательского ввода. Когда пользователь, модифицировав текст, пытается выйти из поля редактирования, вычисляется выражение предложения VALID.
Обычно в качестве lExpression1 или nExpression задается пользовательская функция. Такая функция позволяет выбирать другие элементы управления, делать их доступными и недоступными, открывать окно просмотра или еще одну форму для ввода данных, переходить к новой записи. В состав пользовательской функции может быть включена команда CLEAR READ, прекращающая выполнение команды READ.

lExpression1
Если выражение lExpression1 имеет значение "истина" (.T.), изменения сохраняются, когда пользователь выходит из поля редактирования, нажимая клавиши TAB, CTRL+TAB или SHIFT+TAB. Если пользователь нажимает клавишу ESC, изменения аннулируются.
Если пользователь нажимает Tab, Ctrl+Tab или Shift+Tab, чтобы сохранить изменения в memo-поле, а выражение lExpression1 имеет значение "ложь" (.F.), появляется сообщение, предлагающее пользователю ввести правильные данные. Если пользователь после этого нажмет клавишу Esc, чтобы выйти из поля редактирования, изменения будут сохранены.
Если выражение lExpression1 имеет значение "ложь" и пользователь редактирует переменную памяти, элемент массива или поле, то при нажатии клавиши Esc произойдет выход из поля редактирования и изменения будут аннулированы.

nExpression
Задает элемент управления, активизируемый после выхода из поля редактирования.
Выражение nExpression определяет одну из трех следующих ситуаций.
Если nExpression = 0, поле редактирования остается активным элементом управления и вывод сообщений MESSAGE cMessageText и ERROR cErrorText подавляется. В состав пользовательской функции, вызываемой предложением VALID, можно включить специально составленную программу выдачи сообщений об ошибках.
Если значение nExpression положительно, оно задает количество элементов управления, на которое следует сдвинуться. Например, если поле редактирования выбрано и VALID возвращает 1, активизируется следующий элемент управления. Если значение nExpression больше числа оставшихся элементов управления, команда READ прекращается (если только не выдана команда READ CYCLE, активизирующая элементы управления).
Если значение nExpression отрицательно, оно задает количество элементов управления, на которое нужно вернуться. Например, если поле редактирования выбрано и VALID возвращает -1, активизируется предыдущий элемент управления. Если nExpression задает возврат далее первого элемента управления, команда READ прекращается (если только не выдана команда READ CYCLE, активизирующая элементы управления).
ERROR cErrorText
Позволяет задавать текст сообщения об ошибке, отличный от используемого по умолчанию. Когда выражение lExpression1 предложения VALID имеет значение "ложь" (.F.), по умолчанию выдается сообщение "Invalid Input" [Неправильный ввод].
WHEN lExpression2
Задает условие, согласно которому выражение lExpression2 должно иметь значение "истина" (.T.), чтобы поле редактирования можно было выбрать. Если выражение lExpression2 имеет значение "ложь" (.F.), данную область выбрать нельзя; и если она вставлена между другими элементами управления, то будет пропущена.
NOMODIFY
Отображает поле редактирования, но не разрешает его редактировать. Вы можете прокручивать эту область и копировать из нее текст, но не сможете изменить текст.
SCROLL
Помещает справа от поля редактирования полосу прокручивания. Она отображается на экране только в том случае, если текст слишком длинный и не помещается в поле редактирования.
TAB
Определяет, что при нажатии клавиши Tab в тексте в текущей позиции курсора вставляется табулятор. Если предложение TAB опущено, при нажатии клавиши TAB табулятор не вставляется. Нажимая клавиши TAB или CTRL+TAB, пользователь сохраняет внесенные изменения, выходит из поля редактирования и переносит фокус в следующий элемент управления.
COLOR SCHEME nSchemeNumber
Задает цвета поля редактирования. По умолчанию цвета полей редактирования формируются на основе цветовой схемы 2 (пользовательские меню). Если вы не задали предложение COLOR, цвета поля редактирования определяются цветовой схемой основного окна Visual FoxPro. Если поле редактирования предназначается для пользовательского окна, цвета поля редактирования определяет цветовая схема этого окна.
COLOR ColorPairList
Задает цвет поля редактирования.

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

Элементы управления изображаются в цвете фона. Полоса изображается в основном цвете символов с тусклым оттенком.

Ниже приведен пример, определяющий в FoxPro для MS-DOS поле редактирования со следующими цветовыми характеристиками.
Выделенный текст изображается ярко-белыми символами на синем фоне (W+/B).
Доступная область использует желтый текст на синем фоне (GR+/B).
Недоступная область использует белый текст на синем фоне (W/B).
Если вы пропускаете какую-либо цветовую пару, нужно поставить запятую вместо опущенной цветовой пары.

Итак, команды имеют следующий вид:

STORE 'To be edited' TO gcText
@ 2,2 EDIT gcText SIZE 5, 50 COLOR ,GR+/B,,,,W+/B,,,,W/B
READ 

В следующем примере показано, как можно заменить цветовую схему основного окна Visual FoxPro на другую, заранее определенную цветовую схему:

ACTIVATE SCREEN
STORE 'To be edited' TO gcText
@ 2,2 EDIT gcText COLOR SCHEME 4 SIZE 5, 50
READ

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

Комментарии:
В Visual FoxPro поле редактирования следует создавать с помощью конструктора форм или DEFINE CLASS. Подробнее о совместимости элементов управления предыдущих версий FoxPro 2.x см. Элементы управления и объекты.

Подробнее о добавлении элементов управления в форму см. главу 9 "Создание форм" Руководства разработчика и Добавление объекта в контейнерный класс.

Замечание: В синтаксисе данного элемента управления использовано ключевое слово EDIT, в отличие от других элементов управления Visual FoxPro, таких как флажки (CheckBox), командные кнопки (CommandButton) и переключатели (OptionButton), в которых используется GET.

Чтобы сохранить внесенные изменения и перейти к следующему элементу управления, нажмите клавишу Tab или Ctrl+Tab. Чтобы сохранить изменения и перейти к предыдущему элементу управления, нажмите Shift+Tab. Чтобы аннулировать внесенные изменения и перейти к следующему элементу управления, нажмите клавишу Esc. Если вы редактируете memo-поле, когда задано предложение VALID, изменения могут оказаться несохраненными это зависит от значения, возвращаемого предложением VALID. Подробнее об этом см. описание предложения VALID выше в данном разделе.

В поле редактирования можно пользоваться всеми стандартными возможностями редактирования Visual FoxPro, например вырезать текст, копировать его и вставлять. Текст в поле редактирования прокручивается по вертикали, а слова переносятся по горизонтали.


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