Новости



Visual FoxPro 9 позволяет создавать ещё более производительные приложения баз данных.
Двадцатиление FoxPro! Microsoft принимает поздравления.
Visual FoxPro Toolkit for .NET - более 225 функций VFP 7.0, для языков .NET (подробнее)

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

См. также

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

Синтаксис

@ nRow, nColumn
GET MemVarName | FieldName
FROM ArrayName [RANGE nStartElement [, nElements ]]
| POPUP MenuName
[FUNCTION cFormatCodes] | [PICTURE cFormatCodes]
[NAME ObjectName]
[FONT cFontName [, nFontSize]]
[STYLE cFontStyle]
[DEFAULT Expression]
[SIZE nHeight, nWidth]
[ENABLE | DISABLE]
[MESSAGE cMessageText]
[VALID lExpression1 | nExpression]
[WHEN lExpression2]
[COLOR SCHEME nSchemeNumber
| COLOR ColorPairList]

Параметры

@ nRow, nColumn

Задает местоположение списка. Аргументы nRow и nColumn представляют собой числовые выражения, которые определяют позицию левого верх его угла списка.

Строки нумеруются сверху вниз. Первая строка имеет номер 0 в основном окне Visual FoxPro или в пользовательском окне.

fox90000.gif В Visual FoxPro строка 0 fox90001.gif это строка, расположенная непосредственно под системной строкой меню Visual FoxPro.

fox90000.gif В FoxPro для Macintosh строка 0 fox90001.gif это строка, расположенная непосредственно под строкой заголовка FoxPro.

fox90000.gif В FoxPro для MS-DOS строка 0 fox90001.gif это строка, которую занимает системная строка меню FoxPro. Подробнее о том, как, манипулируя системной строкой меню FoxPro для MS-DOS, разместить список в строке 0, см. SET SYSMENU.

Столбцы нумеруются слева направо. Первый столбец имеет номер 0 в основном окне Visual FoxPro или пользовательском окне.

Когда список размещается в пользовательском окне, координаты его строки и стол ца берутся относительно данного пользовательского окна, а не основного окна Visual FoxPro.

fox90000.gif В Visual FoxPro и FoxPro для Macintosh позиция списка в основном окне Visual FoxPro или в пользовательском окне определяется шрифтом этого окна. Большинство шрифтов допускают множество вариантов с различными размерами, а некоторые из их имеют пропорциональные промежутки. Номер строки зависит от высоты текущего ш ифта, а номер столбца fox90001.gif от средней ширины буквы в текущем шрифте.

fox90000.gif В Visual FoxPro и FoxPro для Macintosh позицию списка можно задавать дробными значениями координат по строкам и столбцам.

fox90000.gif В FoxPro для MS-DOS десятичные дробные значения, используемые в качестве коор инат по строкам и столбцам, округляются до ближайшего целого числа.

GET MemVarName | FieldName

Задает переменную памяти или поле, где сохраняется число, представляющее сдела ный пользователем выбор. Значение MemVarName или FieldName должно быть числового или символьного типа. Если значение MemVarName или FieldName числовое, сохраняется позиция выбранного элемента списка. Если значение MemVarName или FieldName символьное, сохраняется название выбранного элемента.

Начальный выбор элемента

Когда список активизируется, значение MemVarName или FieldName определяет, какой именно элемент списка должен быть выбран вначале (и следует ли вообще что-либо выбирать). Например, если значение MemVarName или FieldName равно 4, это означает, что при активизации списка по команде READ был выбран четвертый элемент списка.

Если значение MemVarName или FieldName не соответствует ни одной из опций списка (то есть оно меньше 1 или больше о щего числа опций), то вначале никакие элементы не будут выбраны.

FROM ArrayName

Создает список на основе массива. Если массив одномерный, содержимое первого э емента массива становится первым элементом списка, содержимое второго элемента массива fox90001.gif вторым элементом списка и т.д.

Если массив двумерный, список создается из элементов первого столбца массива. Первый элемент первого столбца становится первым элементом списка, второй элеме т первого столбца fox90001.gif вторым элементом списка и т.д.

RANGE nStartElement [, nElements]

Задает диапазон элементов списка, которые заполняются из массива, начиная с э емента nStartElement. Например, если массив одномерный и значение nStartElement равно 3, третий элемент массива становится первым элементом списка, четвертый элемент массива fox90001.gif вторым элементом списка и т.д.

Номер позиции элемента в двумерном массиве вычисляется по строкам. Например, опустим, вы создали следующий массив размерностью 3х3:

a b c

d e f

g h i

Элементы a, b и c находятся в позициях с номерами 1, 2 и 3, элементы d, e и f fox90001.gif в позициях 4, 5 и 6 и т.д. Если используется двумерный массив, в список вк ючаются только элементы того столбца, которому принадлежит элемент массива nStartElement. Например, если номер nStartElement равен 2, элементами списка становятся элементы b, e и h. Если nStartElement равен 5, в список включается только содержимое элементов e и h.

Если задан начальный элемент nStartElement, нужно также указать число элементов в списке, используя аргумент nElements. Если опустить nElements, в список включается содержимое всех элементов массива, начиная с элемента nStartElement и кончая последним элементом столбца.

При выдаче команды SHOW GETS параметры предложения RANGE вычисляются заново. Если элемент nStartElement или число nElements изменились, список обновляется с учетом внесенных изменений.

Содержимое списка можно менять динамически. Вы можете вставлять и удалять э ементы списка, модифицируя массив. Манипулировать массивом помогают функции ACOPY( ), ADEL( ), ADIR( ), AELEMENT( ), AFIELDS( ), AINS( ), ALEN( ), ASCAN( ), ASORT( ) и ASUBSCRIPT( ).

POPUP MenuName

Указывает, что список можно построить исходя из меню, созданного по команде DEFINE POPUP. Каждый элемент меню используется для создания одного элемента списка.

Чтобы создать список на основе меню, сначала создайте само меню с помощью кома ды DEFINE POPUP. В предложении POPUP MenuName нужно указать имя меню, созданного по команде DEFINE POPUP.

Вы можете создать меню (а следовательно, и список), содержащее записи из таб ичного поля (предложение PROMPT FIELDS), файлы, имеющиеся на диске (PROMPT FILES) или имена полей таблицы (PROMPT STRUCTURE).

В следующем примере демонстрируется создание списка на основе меню. С помощью команды DEFINE POPUP создается меню, содержащее имена файлов таблиц, имеющихся а диске. Имена таблиц становятся опциями списка. Предложение MARGIN включено д я того, чтобы предусмотреть дополнительное место для символа маркировки. Элеме т SCROLL помещает полосу прокрутки с правой стороны списка.

CLEAR

SET TALK OFF

STORE 1 TO gnChoice

DEFINE POPUP lstScrollOpts FROM 0, 0 PROMPT FILES LIKE *.DBF ;

MARGIN SCROLL

@ 2,2 GET gnChoice POPUP lstScrollOpts SIZE 8, 20

READ && Activate the list box.

FUNCTION cFormatCodes | PICTURE cFormatCodes

Прекращает выполнение команды READ, когда пользователь выбирает элемент из списка. Нужно указать FUNCTION '&T' или PICTURE '@&T'.

Чтобы операция READ не прекращалась при выборе элемента списка, задайте FUNCTION '&N' или PICTURE '@&N'. Например:

... FUNCTION '&N'...

... PICTURE '@&N'...

Если предложение FUNCTION или PICTURE не задано, команда READ не будет прек ащаться при выборе элемента.

В FoxPro для Macintosh можно создать двумерный и трехмерный список, указав пос е кода спецификации & значение 2 или 3. Если задать 2, будет создан плоский, вумерный список, аналогичный тем, что используются в диалоговых окнах системы Macintosh. Если задать 3, будет создан трехмерный список, аналогичный используем м в диалоговых окнах FoxPro для Macintosh. Двумерный список создается по умо чанию, если коды спецификации 2 и 3 опущены.

Следующее предложение создает в FoxPro для Macintosh трехмерный список, при вы оре из которого команда READ не прекращается.

... FUNCTION '&N3'...

NAME ObjectName

Допустимо только в Visual FoxPro.

Создает ссылку на список как на объект, что позволяет манипулировать им, испо ьзуя объектно-ориентированные свойства элемента управления ListBox. Подробнее о манипулировании элементами управления FoxPro с помощью предложения NAME см. Элементы управления и объекты.

FONT cFontName [, nFontSize]

Допустимо только в Visual FoxPro и FoxPro для Macintosh.

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

FONT 'Courier', 16

Если предложение FONT опущено, а список помещается в основное окно Visual FoxPro, используется шрифт этого окна. Если предложение FONT опущено, а список помещается в пользовательское окно, используется шрифт этого пользовательского окна.

Если вы задали предложение FONT, опустив размер шрифта nFontSize, используется 10-пунктовый шрифт.

fox90000.gif В Visual FoxPro, если заданный шрифт отсутствует, его заменяет шрифт с похожими характеристиками.

fox90000.gif В FoxPro для Macintosh, если заданный шрифт отсутствует, используется шрифт Chicago.

fox90000.gif В FoxPro для MS-DOS предложение FONT игнорируется.

STYLE cFontStyle

Допустимо только в Visual FoxPro и FoxPro для Macintosh.

Задает стиль шрифта для элементов списка. Если опустить предложение STYLE, используется стиль Normal (нормальный).

fox90000.gif В Visual FoxPro, если заданный стиль шрифта отсутствует, его заменяет стиль с похожими характеристиками.

fox90000.gif В FoxPro для Macintosh, если заданный стиль шрифта отсутствует, используется стиль Normal.

fox90000.gif В 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 определяет тип создаваемой переменной памяти и ее перво ачальное значение. Это должно быть числовое или логическое выражение.

SIZE nHeight, nWidth

Задает высоту и ширину списка. Аргумент nHeight определяет высоту в строках, а nWidth fox90001.gif ширину в столбцах. Если предложение SIZE опущено, ширина списка по умолчанию удет определяться шириной самого длинного элемента списка. Число элементов, отображаемых в списке, по умолчанию определяется количеством элементов в меню или массиве.

Если в списке больше элементов, чем можно отобразить за один раз, Visual FoxPro помещает справа от элементов списка полосу прокрутки.

В Visual FoxPro и FoxPro для Macintosh размер списка определяется его шрифтом. Шрифт списка задается предложением FONT. Если это предложение опущено, в списке используется шрифт его родительского окна (основного окна Visual FoxPro или окна, определенного пользователем).

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

Предложение VALID с числовым выражением используется для задания элемента уп авления, который следует активизировать после выбора элемента из списка. Об э ементах управления см. Элементы управления и объекты.

Числовое выражение nExpression определяет одну из следующих трех ситуаций.

fox90000.gif Если nExpression = 0, список остается активным элементом управления.

fox90000.gif Если значение nExpression положительно, оно указывает количество элементов управления, на которое сле ует сдвинуться. Например, если выбран список и VALID возвращает 1, активизи уется следующий элемент управления. Если значение nExpression больше числа оставшихся элементов управления, команда READ прекращается (если только не выдана команда READ CYCLE, активизирующая элементы управления).

fox90000.gif Если значение nExpression отрицательно, оно задает количество элементов управления, на которое нужно ве нуться. Например, если вы находитесь в списке и VALID возвращает fox90002.gif1, активизируется предыдущий элемент управления. Если nExpression задает возврат далее первого элемента управления, команда READ прекращается (если только не выдана команда READ CYCLE, активизирующая элементы управления).

WHEN lExpression2

Разрешает или запрещает выбор списка в зависимости от логического значения вы ажения lExpression2. Если значение lExpression2 есть "истина" (.T.), список можно выбирать. Если значением lExpression2 оказывается "ложь" (.F.), список выбирать нельзя, а если он расположен между ругими элементами управления, он будет пропускаться.

COLOR SCHEME nSchemeNumber

Задает цвета списка. Если не задано предложение COLOR, цвета списка будут опре еляться цветовой схемой основного окна Visual FoxPro; если список предназначен для пользовательского окна, то его цвета определяются цветовой схемой этого ок а.

COLOR ColorPairList

Задает цвета для списка. В следующей таблице показано, какие элементы контроли уются теми или иными цветовыми парами в FoxPro для MS-DOS.

Номер цветовой пары
Цветовой атрибут списка
1
Недоступный элемент
2
Доступный элемент
3
Обрамление и полоса прокрутки (1)
5
Сообщение
6
Выбранный элемент списка
9
Доступный список
10
Недоступный список
(1 ) Элементы управления изображаются цветом фона. Полоса изображается основным цветом символов в приглушенных тонах.


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

ACTIVATE SCREEN

CLEAR

SET TALK OFF

STORE 1 TO gnChoice

DEFINE POPUP lstScrollOpts FROM 0,0 PROMPT FILES LIKE *.DBF ;

MARGIN SCROLL COLOR SCHEME 4

@ 2,2 GET gnChoice POPUP lstScrollOpts SIZE 8, 20

READ && Activate the list box

В следующем примере используется созданный выше массив, при этом определяется список, обладающий следующими цветовыми характеристиками.

fox90000.gif Выбранный элемент списка выделяется ярко-белым цветом на синем фоне (W+/B).

fox90000.gif В доступном списке опции изображаются желтым цветом на синем фоне (GR+/B).

fox90000.gif В недоступном списке опции изображаются белым цветом на синем фоне (W/B).

Если вы пропускаете какую-либо цветовую пару, нужно поставить соответствующую ей запятую.

Итак, команды должны быть такими:

CLEAR

SET TALK OFF

STORE 1 TO gnChoice

DEFINE POPUP lstScrollOpts FROM 0,0 PROMPT FILES LIKE *.DBF ;

MARGIN SCROLL COLOR ,GR+/B,,,,W+/B,,,,W/B

@ 2,2 GET gnChoice POPUP lstScrollOpts SIZE 8, 20

READ && Activate the list box

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

Комментарии

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

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

Элементы списка берутся из массива или из меню. Чтобы построить список на ос ове массива, задайте предложение FROM ArrayName. Чтобы построить список на основе меню, созданного с помощью команды DEFINE POPUP, задайте предложение POPUP MenuName.

Чтобы активизировать список, выдайте команду READ или READ CYCLE.



Новое на сайте

  • Обновлен портфель программиста

    Добавлены: Установка HTML Help (Создание справочной системы), Imagedit.zip - Графический редактор ( ico и bmp), Библиотека локализации HTML Help (Русский)
  • Новые примеры программ

    Установка библиотек, Игровая программа "Охота на лис", Установка библиотек "Охота на лис", plastic -"Платежки", Библиотеки (на FPD26), platan -"Платежки" (на Clipper 5.2)
  • Обновленна справка

    Подсказки, технология программирования и использование Visual FoxPro. Команды, функции, операторы, объекты, свойства, события и методы.