LIST (описывает список)
LIST(rows,cols),FROM()[,COLOR()][,TRN][,HLP()]
[ESC()][,IMM][,SKIP][,MSG()][,USE()][,HIDE]
[,FILL()][,COLS()][,FIX()][,HSCROLL ]
VSCROLL
HVSCROLL
rows | Число строк (элементов) списка, выводимых на экран. |
cols | Число столбцов для вывода в этом списке. |
FROM | Метка QUEUE или элемента QUEUE для вывода Может быть типа GROUP. |
COLOR | Задает цвета. |
TRN | В графическом режиме в качестве цвета фона используется цвет перекрываемого изображения |
HLP | Идентификатор окна помощи, связанного с этим полем. |
ESC | Задает поле, на которое перейти при нажатии клавиш ESC или BACKTAB. |
IMM | Поле считается заполненным, как только указатель попадает на него. |
SKIP | Ввод данных в это поле невозможен. |
MSG | Текст, показываемый в строке сообщений экрана. |
USE | EQUATE-метка поля, которая позволяет операторам программы ссылаться на этот список. |
HIDE | Курсор-указатель будет виден только тогда, когда данное поле активно. |
FILL | Целочисленная константа или EQUATE-метка поля, задающая поле, которое принимает значение, выбранное из списка. |
COLS | Задает ширину столбца в списке. Содержит строковую константу или переменную, задающую число символов в каждом столбце, целочисленную переменную, в которую передается номер подсвеченного столбца, когда список завершен, и целочисленную константу, задающую расстояние между столбцами. |
FIX | Целочисленная константа, задающая число статичных строк в списке, что позволяет, при использовании атрибута COLS, помещать в список заголовки столбцов. |
HSCROLL | Линейка горизонтальной прокрутки, занимающая самую нижнюю строку списка. |
VSCROLL | Линейка вертикальной прокрутки, занимающая самый правый столбец списка. |
HVSCROLL | Поместить в список обе линейки прокрутки - горизонтальную и вертикальную. |
LIST объявляет список в SCREEN-структуре. LIST выводит на экран rows элементов/полей из QUEUE, имя которой задается атрибутом FROM. Поле QUEUE выводится по одной записи в строке, в области, задаваемой параметрами rows и cols. Элементы очереди выводятся в список как есть, так что некоторые поля придется форматировать во время построения QUEUE.
Если у LIST-а есть атрибут IMM и QUEUE изменяется в то время, когда LIST ждет ввода от пользователя, надо использовать оператор DISPLAY для обновления списка.
Полоса курсора позволяет оператору выбирать элемент из списка. FILL-поле обновляется по мере продвижения курсора по списку. Список завершается нажатием TAB для CUA экранов (и TAB или ENTER для не-CUA экранов) и процесс обработки переходит к следующему полю для ввода. Двойной щелчок мышки также завершает список, но не переводит обработку автоматически на следующее поле. Функция CHOICE возвращает номер записи в QUEUE (значение возвращаемое функцией POINTER(queue)) соответствующий элементу, выбранному по завершении списка. Второй параметр оператора SELECT может быть использован для помещения курсора на НЕ первый элемент списка.
Список с атрибутом IMM, прокручивается горизонтально на 255 символов. Без атрибута IMM, он прокручивается в пределах самой длин ной записи в QUEUE (до 255 символов).
Если задан атрибут COLS, полоса курсора подсвечивает один столбец (заданный атрибутом COLS) за раз, и стрелки влево/вправо позволяют переходить от столбца к столбцу в пределах элемента списка. Атрибут FIX можно использовать для создания заголовков столбцов, которые прокручиваются только горизонтально, вместе со всем списком, не прокручиваясь по вертикали (они зафиксированы в списке). Пользователь не может отметить или изменить заголовки.
Пример:
SelectPart PROCEDURE
ListOue QUEUE,PRE(Lst) !Очередь для номеров З/Ч
PartNo STRING(10) ! отформатирована для
. ! вывода на экран
Screen SCREEN(20,30),PRE(Scr)
ROW(3,45) ENTRY(@slO),USE(Trn:PartNo),SKIP
ROW(4,45) LIST(10,10),FROM(Lst:PartNo)|
,FILL(?Trn:PartNo),USE(?PartList)
.
CODE
SET(PartsFile) !Строим QUEUE для LISTбокса
LOOP UNTIL EOF(PartsFile)
NEXT(PartsFile)
IF ERRORCODE() THEN STOP(ERROR()).
Lst:PartNo = Par:PartNo
ADD(ListOue,Lst:PartNo)
IF ERRORCODE() THEN STOP(ERROR()).
.
OPEN(Screen) !Теперь откроем экран и...
ACCEPT ! выбор за пользователем!
См. также: QUEUE, SELECT