Команда @ ... GET - командные кнопки.

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

Синтаксис

@ nRow, nColumn
GET MemVarName | FieldName 
FUNCTION cFormatCodes | PICTURE cFormatCodes
	[NAME ObjectName]
	[FONT cFontName [, nFontSize]]
	[STYLE cFontStyle]
	[DEFAULT Expression]
	[SIZE nHeight, nWidth [, nSpacing]]
	[ENABLE | DISABLE]
	[MESSAGE cMessageText]
	[VALID lExpression1 | nExpression]
	[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.
Столбцы нумеруются слева направо. Первый столбец имеет номер 0 в основном окне Visual FoxPro или в пользовательском окне.
Когда командные кнопки помещаются в пользовательское окно, координаты их строк и столбцов берутся относительно данного пользовательского окна, а не основного окна Visual FoxPro.
В Visual FoxPro и FoxPro для Macintosh позиция кнопки в основном окне Visual FoxPro или в пользовательском окне определяется шрифтом этого окна. Большинство шрифтов допускают множество вариантов с различными размерами, а некоторые из них имеют пропорциональные промежутки. Номер строки зависит от высоты текущего шрифта, а номер столбца от средней ширины буквы в текущем шрифте.
В Visual FoxPro и FoxPro для Macintosh позицию первой кнопки в группе командных кнопок можно задавать дробными значениями координат по строкам и столбцам.
В FoxPro для MS-DOS десятичные дробные значения, используемые в качестве координат по строкам и столбцам, округляются до ближайшего целого числа.
GET MemVarName | FieldName
Задает переменную памяти, элемент массива или поле, в котором следует сохранять число, представляющее сделанный пользователем выбор. Значение MemVarName или FieldName должно быть числового или символьного типа.
Если значение MemVarName или FieldName числового типа, то в заданную им переменную памяти, элемент массива или поле записывается номер нажатой командной кнопки. Например, если вы создали четыре командные кнопки и пользователь нажимает третью из них, сохраняется число 3. Если значение MemVarName или FieldName символьного типа, то в заданную им переменную памяти, элемент массива или поле записывается название нажатой командной кнопки.
FUNCTION cFormatCodes | PICTURE cFormatCodes
Задает кнопку, а также название или рисунок для нее. Необходимо включить предложение FUNCTION, предложение PICTURE или оба эти предложения. Ни один из трех этих методов нельзя выделить в качестве предпочтительного. Предложения FUNCTION и PICTURE содержат код спецификации командной кнопки звездочку (*) и текст названий командных кнопок. Обратная косая черта (\) в названии командной кнопки не допускается.
Символьное выражение cFormatCodes предложения FUNCTION должно начинаться со звездочки (*). Чтобы создать названия командных кнопок, после звездочки через пробел задайте список названий, разделяя их точками с запятой. Для каждого названия создается одна кнопка. Например, следующее предложение FUNCTION создает командные кнопки с названиями OK и Cancel:

... FUNCTION '* OK;Cancel' SIZE 1, 8... 

В символьном выражении cFormatCodes предложения PICTURE используется тот же синтаксис, что и в предложении FUNCTION, только в предложении PICTURE символьное выражение должно начинаться символом @, за которым следует звездочка (*). Например, следующее предложение PICTURE создает командные кнопки с названиями OK и Cancel:

.. PICTURE '@* OK;Cancel' SIZE 1, 8... 

Можно задать и оба предложения, FUNCTION и PICTURE. В этом случае символьное выражение cFormatCodes предложения FUNCTION должно содержать *, что указывает на создание командных кнопок; после звездочки ставится пробел и затем идут названия командных кнопок. Символьное выражение cFormatCodes предложения PICTURE также может содержать названия, указывающие на создание дополнительных командных кнопок.
В следующем примере иллюстрируются разнообразные формы синтаксиса, используемые при создании командных кнопок. Создаются две командные кнопки: OK and Cancel. Первая кнопка (OK) размещается во второй строке и втором столбце. Число, соответствующее нажатой кнопке, сохраняется в переменной памяти gnChoice.
Только предложение FUNCTION:

STORE 1 TO gnChoice
@ 2,2 GET gnChoice FUNCTION '* OK;Cancel' SIZE 1, 8
READ

STORE 1 TO gnChoice
STORE '* OK;Cancel' TO gcPrompts
@ 2,2 GET gnChoice FUNCTION gcPrompts SIZE 1, 8
READ

Только предложение PICTURE:

STORE 1 TO gnChoice
@ 2,2 GET gnChoice PICTURE '@* OK;Cancel' SIZE 1, 8
READ

STORE 1 TO gnChoice
@ 2,2 GET gnChoice PICTURE '@*' + ' OK;Cancel' SIZE 1, 8
READ

Предложения FUNCTION и PICTURE:

STORE 1 TO gnChoice
@ 2,2 GET gnChoice FUNCTION '*' ;
	PICTURE ' OK;Cancel' SIZE 1, 8
READ

Кнопки с названиями в виде рисунков
В Visual FoxPro и FoxPro для Macintosh название командной кнопки может также являться именем файла рисунка.
В Visual FoxPro файлом рисунка может быть растровый файл с расширением имени .BMP.
В FoxPro для Macintosh можно использовать как файл рисунка типа PICT, так и растровый файл .BMP.
Когда в командной кнопке для названия используется файл рисунка, эта кнопка ведет себя как командная кнопка с текстовым названием. На кнопке вместо названия появляется рисунок из файла. При нажатии кнопки с рисунком, как и при нажатии командной кнопки соответствующее значение сохраняется в переменной памяти MemVarName или в поле FieldName.
Чтобы использовать для командной кнопки файл рисунка, включите букву B в код спецификации командной кнопки. В предложениях FUNCTION и PICTURE кодами спецификации, создающими командную кнопку, являются соответственно * и @*. Чтобы создать командную кнопку с рисунком, укажите код *B или @*B, а затем через пробел имя файла рисунка. Если файл рисунка находится в каталоге, отличном от принимаемого по умолчанию, укажите вместе с именем файла путь к нему.
Замечание Рисунки, размещаемые на командной кнопке, не обрезаются, не уменьшаются и не увеличиваются. Чтобы вписать рисунок в кнопку, можно подрегулировать размер кнопки, используя предложение SIZE.
Если расширение имени файла рисунка опущено, FoxPro для Macintosh сначала будет искать файл с заданным именем и расширением .BMP. Если такой файл не найден, FoxPro для Macintosh ищет файл с заданным вами именем и расширением .PCT. Если и такой файл найти не удастся, FoxPro для Macintosh ищет файл рисунка с заданным именем без расширения.
Маски рисунка и командные кнопки
В Visual FoxPro и FoxPro для Macintosh командная кнопка с рисунком имеет три состояния: вверху, внизу и недоступна. Visual FoxPro автоматически контролирует внешний вид командной кнопки с рисунком в каждом из этих трех состояний, но вы можете с помощью маски рисунка отменить внешний вид, используемый по умолчанию, и задать свой.
Маска рисунка определяет, какие области командной кнопки с рисунком должны быть прозрачными. По умолчанию прозрачными являются белые области. Если задана маска рисунка, то прозрачными будут белые области маски рисунка, а не файла рисунка.
Маска рисунка представляет собой файл монохромного рисунка. В Visual FoxPro маской рисунка является растровый файл с расширением имени .MSK. В FoxPro для Macintosh маской может служить как растровый файл с расширением .MSK, так и файл типа PICT с расширением .PCM. Маска рисунка должна иметь то же базовое имя, что и файл рисунка, и соответствующее расширение. Visual FoxPro автоматически ищет маску для данного файла рисунка в том же каталоге, где находится файл рисунка.
В большинстве случаев без маски можно обойтись. Если вам не нужно, чтобы какие-то фрагменты рисунка были белыми или если в файле рисунка задан белый фон, то командная кнопка с рисунком будет иметь требуемый вид во всех трех состояниях верхнем, нижнем и недоступном.
Если командная кнопка с рисунком сопровождается маской и находится в верхнем или нижнем состоянии, то все белые области рисунка окажутся прозрачными, и сквозь них будет виден цвет кнопки. Однако для определенных областей можно сохранить белый цвет.
Предположим, на рисунке изображена собака на белом фоне; пусть у нее белые глаза, а поверхность кнопки красного цвета. Вы хотите, чтобы фон кнопки остался красным, но при этом чтобы глаза у собаки были не красными, а белыми. Создайте маску рисунка, имеющую тот же размер, что и файл рисунка, но выполненную только в двух цветах черном и белом. Оставьте фон маски белым, а собаку сделайте целиком черной, включая глаза. Когда кнопка будет отображена, фон окажется красным и сольется с кнопкой, но глаза будут белыми.
Когда командная кнопка с рисунком недоступна, все белые области файла рисунка становятся прозрачными и сквозь них просвечивает цвет поверхности кнопки. Все области другого (не белого) цвета окажутся темно-серыми. Если у кнопки есть маска, все белые области маски будут прозрачными (сквозь них виден цвет кнопки), а все черные области приобретут темно-серую окраску.
Опции N, T, H, V, 2 и 3 предложений PICTURE и FUNCTION
Вместе с кодом спецификации * можно указывать и другие опции, которые модицифируют поведение (опции N и T) и внешний вид (H, V, 2 и 3) командных кнопок.
Коды спецификации 2 и 3 доступны только в FoxPro для Macintosh.

Опция	Описание
N	Не прекращает операцию READ при нажатии командной кнопки.
T	Прекращает READ в момент нажатия командной кнопки. Данное 
	поведение принимается по умолчанию.
H	Позиционирует командные кнопки в горизонтальной строке.
V	Позиционирует командные кнопки в вертикальном столбце. Данная 
	ориентация используется по умолчанию.
2	Создает плоские (двумерные) черно-белые командные кнопки.
3	Создает трехмерные командные кнопки. Данный тип командной кнопки 
	используется по умолчанию в FoxPro для Macintosh.

Опции T и N можно комбинировать с опциями H, V и 2 или 3. Например, следующее предложение создает горизонтальную строку кнопок, при нажатии которых операция READ не прекращается:

... FUNCTION '*NH... '

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

... FUNCTION '*NH2... '

Командные кнопки с особыми возможностями
Кнопке можно назначить клавишу доступа, ее можно сделать недоступной, и, кроме того, можно создать кнопку по умолчанию или кнопку выхода. Чтобы задать для командной кнопки такие особые возможности, при определении ее названия нужно указать специальные символы. Когда название сохраняется в переменной памяти MemVarName или в поле FieldName, эти специальные символы отбрасываются.
Клавиши доступа
Для каждой кнопки можно создать клавишу доступа, поставив в названии командной кнопки перед нужным символом обратную косую черту со знаком "меньше" (\<). В следующем примере создаются кнопки OK и Cancel с клавишами доступа O и C:

STORE 1 TO gnChoice
@ 2,8 GET gnChoice FUNCTION '*  \>OK;\>Cancel'
READ

Подробнее о клавишах доступа см. главу 12 "Конструирование меню" Руководства разработчика.
Недоступные командные кнопки
Командную кнопку можно сделать недоступной, чтобы ее нельзя было выделить или нажать. Недоступные командные кнопки изображаются в цветах, определенных для этого состояния. Чтобы сделать какую-либо командную кнопку недоступной, поставьте перед ее названием две обратные косые черты (\\). Чтобы сделать недоступной группу командных кнопок, укажите ключевое слово DISABLE.
В следующем примере делается недоступной командная кнопка OK:

STORE 1 TO gnChoice
@ 2,2 GET gnChoice FUNCTION '* \\OK;Cancel'
READ

Командные кнопки по умолчанию
Командная кнопка по умолчанию обычно используется для того, чтобы выйти из формы ввода данных или из диалога, сохранив при этом все изменения, внесенные в форме или в диалоге. Чтобы создать командную кнопку по умолчанию, поставьте перед ее названием обратную косую черту с восклицательным знаком (\!).
В следующем примере в качестве командной кнопки по умолчанию задается кнопка OK:

STORE 1 TO gnChoice
@ 2,2 GET gnChoice FUNCTION '*  \!OK;Cancel'
READ

В FoxPro для MS-DOS командная кнопка по умолчанию заключается в угловые скобки, чтобы ее можно было отличить от других командных кнопок. Командная кнопка по умолчанию автоматически выбирается при нажатии клавиш Ctrl+Enter или Ctrl+W. Для каждой команды READ можно задать только одну командную кнопку по умолчанию.
В Visual FoxPro командная кнопка по умолчанию окружается жирной рамкой. Чтобы выбрать ее, нужно нажать клавиши Enter,Ctrl+Enter или Ctrl+W. Установка KEYCOMP определяет поведение командных кнопок по умолчанию Visual FoxPro следующим образом.
Если задано SET KEYCOMP TO DOS, командная кнопка по умолчанию ведет себя так же, как и командная кнопка по умолчанию в FoxPro для MS-DOS.
Если задано SET KEYCOMP TO WINDOWS, командная кнопка по умолчанию изменяется при переходе от кнопки к кнопке. Командная кнопка, заданная с кодом \!, является кнопкой по умолчанию, когда активен элемент управления, отличный от кнопки. Если активна командная кнопка, она становится кнопкой по умолчанию.
В FoxPro для Macintosh командная кнопка по умолчанию также окружается жирной рамкой. Установка KEYCOMP определяет поведение командных кнопок по умолчанию FoxPro для Macintosh следующим образом.
Если задано SET KEYCOMP TO DOS, командная кнопка по умолчанию всегда остается одной и той же и выбирается нажатием клавиш Ctrl+Enter.
Если задано SET KEYCOMP TO WINDOWS, кнопка по умолчанию в диалоговом окне окружается жирной рамкой и всегда остается одной и той же. Она выбирается нажатием клавиш Enter или Ctrl+Enter. Однако если нажать Enter, когда текущим элементом управления является область редактирования текста, произойдет перемещение курсора к следующей строке в области. В областях редактирования текста кнопка по умолчанию выбирается нажатием клавиш Ctrl+Enter.
Если задано SET KEYCOMP TO MAC, кнопка по умолчанию в диалоговом окне окружается жирной рамкой и всегда остается одной и той же. Она выбирается нажатием клавиши Enter. Однако если нажать Enter, когда текущим элементом управления является область редактирования текста, произойдет перемещение курсора к следующей строке в области. В областях редактирования текста кнопка по умолчанию выбирается нажатием клавиш Ctrl+Enter.
Командные кнопки выхода
Командная кнопка выхода автоматически выбирается при нажатии клавиши Esc. Обычно такая кнопка используется для выхода из формы ввода данных, диалогового окна или программы, когда нужно отменить все изменения, внесенные в форму, диалоговое окно или программу. Для каждой команды READ можно задать только одну командную кнопку выхода.
Если командная кнопка выхода не задана, то при работе в области редактирования команды @... GET нажатие клавиши Esc завершает редактирование и восстанавливает первоначальное содержимое области редактирования. Если для области редактирования задана процедура VALID, эта процедура не выполняется. При наличии командной кнопки выхода нажатием клавиши Esc сохраняется текущее содержимое области редактирования команды @... GET и выполняется процедура VALID.
Чтобы создать командную кнопку выхода, поставьте перед названием кнопки обратную косую черту с вопросительным знаком (\?).
В следующем примере командная кнопка Cancel определяется в качестве кнопки выхода:

STORE 1 TO gnChoice
@ 2,2 GET gnChoice FUNCTION '* OK;\?Cancel'
READ

Командные кнопки с комбинированными характеристиками
Можно создать командную кнопку, обладающую несколькими особыми возможностями. В следующем примере кнопка OK определяется как кнопка по умолчанию, ей назначается клавиша доступа O. Кнопка Cancel является кнопкой выхода, ей назначается клавиша доступа C. Код спецификации клавиши доступа ставится непосредственно перед нужным символом.

STORE 1 TO gnChoice
@ 2, 2 GET gnChoice FUNCTION '*  \!\<OK;\?\>Cancel'
READ

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

FONT 'Courier', 16 

Если предложение FONT опущено, а командные кнопки помещаются в основное окно Visual FoxPro, используется шрифт этого окна. Если предложение FONT опущено, а командные кнопки помещаются в пользовательское окно, используется шрифт этого пользовательского окна.
Если вы указали предложение FONT, опустив аргумент nFontSize, используется 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 Expression
Когда вы нажимаете командную кнопку, этот выбор сохраняется в заданной переменной памяти, элементе массива или поле. Если задана несуществующая переменная памяти, она будет автоматически создана и проинициализирована, при условии, что включено предложение DEFAULT. Однако если в этом предложении указать элемент массива, он не будет создан. Если заданная переменная памяти уже существует или если вы задали поле, предложение DEFAULT игнорируется.
Замечание Если предложение DEFAULT опущено и переменная памяти, заданная аргументом MemVarName, не существует, Visual FoxPro сгенерирует сообщение об ошибке.
Выражение Expression предложения DEFAULT определяет тип создаваемой переменной памяти и ее начальное значение. Это выражение должно быть числового или логического типа. Далее приведены примеры предложений DEFAULT для командных кнопок:

@ 2,2 GET gnChoice FUNCTION '* OK;Cancel' DEFAULT 'OK'
READ

@ 2,2 GET gnChoice FUNCTION '* OK;Cancel' DEFAULT 2
READ

STORE 'OK' TO gcButton
@ 2,2 GET gnChoice FUNCTION '* OK;CANCEL' DEFAULT gcButton
READ

SIZE nHeight, nWidth [, nSpacing]
Задает размер кнопки и интервал между кнопками. Аргумент nHeight определяет высоту командной кнопки в строках.
В FoxPro для MS-DOS командная кнопка всегда имеет высоту в одну кнопку, поэтому числовое выражение nHeight игнорируется.
По умолчанию ширина каждой отдельной кнопки определяется длиной ее названия. Аргумент nWidth задает ширину кнопки в столбцах. Командная кнопка не может иметь размеры меньшие, чем ее название.
По умолчанию между вертикальными кнопками строки не вставляются, а между горизонтальными кнопками вставляется один столбец. Промежуток между командными кнопками определяется аргументом nSpacing. Если вы создаете вертикальные командные кнопки, nSpacing задает число строк между ними. Если вы создаете горизонтальные кнопки, nSpacing задает число столбцов между кнопками.
В Visual FoxPro и FoxPro для Macintosh на размер командной кнопки влияет и ее шрифт. Шрифт командной кнопки задается с помощью предложения FONT. Если это предложение опущено, в командных кнопках используется шрифт родительского окна (основного окна Visual FoxPro или пользовательского окна).
В следующем примере показано, как предложение SIZE управляет интервалами между кнопками:

CLEAR
@ 2,2 GET gnChoice FUNCTION '* OK;Cancel' ;
	DEFAULT 1 SIZE 2, 10, 1
@ 2,16 GET gnChoice FUNCTION '* OK;Cancel' ;
	DEFAULT 1 SIZE 2, 10, 2
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
Когда в предложение VALID возвращается логическое значение, это значение игнорируется, а командные кнопки остаются текущим элементом управления. Впрочем, можно задать пользовательскую функцию, возвращающую в предложение VALID логическое значение и при этом активизирующую другой элемент управления.

nExpression
Задает элемент управления, который следует активизировать после нажатия кнопки. Подробнее об элементах управления см. Элементы управления и объекты.
Выражение nExpression определяет одну из следующих трех ситуаций.
Если nExpression = 0, нажатая командная кнопка остается активной кнопкой.
Если значение nExpression положительно, оно указывает количество элементов управления, на которое следует продвинуться. Например, если выбрана последняя кнопка в группе командных кнопок и VALID возвращает 1, активизируется следующий элемент управления. Если значение nExpression больше числа оставшихся элементов управления, команда READ прекращается (если только не выдана команда READ CYCLE, активизирующая элементы управления).
Если значение nExpression отрицательно, оно задает количество элементов управления, на которое нужно вернуться. Например, если выбрана первая кнопка в группе командных кнопок и VALID возвращает -1, активизируется предыдущий элемент управления. Если nExpression задает возврат далее первого элемента управления, команда READ прекращается (если только не выдана команда READ CYCLE, активизирующая элементы управления).
Следующий пример показывает, что можно сделать с помощью пользовательской функции. Пять кнопок отображаются вертикально в ряд. Нажатие той или иной кнопки используется при позиционировании указателя записи. Задан функциональный код N, чтобы операция READ не прекращалась при нажатии кнопки. Когда вы нажимаете кнопку, выполняется пользовательская функция gorec.

CLOSE DATABASES
USE customer
SET TALK OFF
DEFINE WINDOW wOne FROM 3,5 TO 20,20 FLOAT DOUBLE COLOR SCHEME 5
ACTIVATE WINDOW wOne
@ 1,2 GET gnChoice FUNCTION '*NV Next;Prior;Top;Bottom;Quit';
	SIZE 2, 10, 1 VALID GOREC( ) DEFAULT 1
READ CYCLE
CLEAR WINDOW
PROCEDURE gorec
DO CASE
	CASE gnChoice = 1
		SKIP
		IF EOF( )
			SKIP -1
		ENDIF
	CASE gnChoice = 2
		SKIP -1
		IF BOF( )
 			SKIP
		ENDIF
	CASE gnChoice = 3
		GO TOP
	CASE gnChoice = 4
		GO BOTTOM
	CASE gnChoice = 5
		CLEAR READ
ENDCASE
@ 12,6 SAY ALLTRIM(STR(RECNO( )))
RETURN

WHEN lExpression2
Задает условие, в соответствии с которым командные кнопки можно нажимать только в том случае, если значением выражения lExpression2 является "истина" (.T.). Если значением lExpression2 оказывается "ложь" (.F.), командные кнопки нажимать нельзя, а если они расположены между другими элементами управления, они будут пропускаться.
COLOR SCHEME nSchemeNumber
Задает цвета командных кнопок. Если не задано предложение COLOR, цвета командных кнопок будут определяться цветовой схемой основного окна Visual FoxPro; если командные кнопки предназначаются для пользовательского окна, то их цвета определяются цветовой схемой этого окна.
COLOR ColorPairList
Задает цвета для командных кнопок. В Visual FoxPro и FoxPro для Macintosh предложение COLOR не влияет на цвета командных кнопок; оно определяет только цвет сообщения (если сообщение не выдается в строку состояния).
В следующей таблице перечислены цветовые пары и контролируемые ими компоненты.

Номер цветовой пары	Атрибут кнопки 
5			Сообщение
6			Название нажатой кнопки (поддерживается только в FoxPro для MS-DOS).
7			Клавиши доступа (поддерживается только в FoxPro для MS-DOS).
9			Название доступной кнопки (поддерживается только в FoxPro для MS-DOS).
10			Название недоступной кнопки (поддерживается только в FoxPro для MS-DOS).

В следующем примере создаются командные кнопки OK и Cancel с клавишами доступа O и C. Кроме этого, кнопки имеют следующие цветовые характеристики в FoxPro для MS-DOS.
Нажатая кнопка выделяется ярко-белым названием на синем фоне (W+/B).
Символы клавиши доступа изображаются красным цветом на синем фоне (R/B).
Доступные кнопки выделяются желтыми названиями на синем фоне (GR+/B).
Недоступные кнопки выделяются белыми названиями на синем фоне (W/B).
Если вы опускаете какую-либо цветовую пару, нужно поставить соответствующую ей запятую. Итак, команды имеют следующий вид:

STORE 1 TO gnChoice
@ 2,2 GET gnChoice FUNCTION '* \<OK;\<CANCEL;\\DISABLED';
	COLOR ,,,,,W+/B,R/B,,GR+/B,W/B
READ

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

Комментарии
В Visual FoxPro командные кнопки и группы командных кнопок создаются с помощью конструктора форм или DEFINE CLASS. Подробнее о совместимости элементов управления предыдущих версий FoxPro 2.x см. Элементы управления и объекты.
Подробнее о добавлении элементов управления к форме см. главу 9 "Создание форм" Руководства разработчика и Добавление объекта в контейнерный класс.
Обычно командная кнопка используется для выдачи команды, запускающей выполнение определенного действия. Запускаемая операция задается в предложении VALID. Командная кнопка активизируется путем выдачи команды READ или READ CYCLE.
В Visual FoxPro и FoxPro для Macintosh для командной кнопки можно задать название или рисунок. См. описание предложений FUNCTION и PICTURE в разделе "Параметры".
В FoxPro для MS-DOS командная кнопка изображается в виде строки текста, заключенной в угловые скобки. Например, кнопка Cancel выглядит как <Cancel>.


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