Документация по Clarion

         

ALIAS (установить альтернативный код клавиши)


ALIAS([код,новый-код])

код Числовой код или EQUATE-метка кода клавиши.
новый-код Числовой код или EQUATE-метка кода клавиши. Можно использовать неприсвоенные ранее коды.

ALIAS изменяет генерируемый при нажатии клавиши код. НОВЫЙ-КОД не находится в таблице кодов клавиш. Коды от 700 до 999 не присвоены, и могут быть использованы как НОВЫЕ-КОДЫ. Практический эффект от этого возможность запретить реагировать на КОД, если ваша программа не проверяет НОВЫЙ-КОД. Если оба параметра опущены, то ALIAS отменяет все переназначения клавиш.
Пример:
ALIAS(F3Key,F1Key) !Help теперь по F3
ALIAS(F1Key,F3Key) ! а нажатие F1 рассматрива-
! ется как нажатие F3
ALIAS(256,999) !Обзовем по-другому клавишу
! ESC
ALIAS !Отменим все переназначения
См. также: Equate-коды клавиш



ASK (получить один символ)


ASK
ASK читает код клавиши из буфера клавиатуры. Выполнение программы приостанавливается во время ожидания нажатия на клавишу. Если в буфере уже есть необработанные нажатия клавиш, ASK читает код без ожидания.
Пример:


SHOW(25,1,'Жми кнопочку, и продолжим') !Показать сообщение и
ASK !ждать нажатия клавиши
LOOP WHILE KEYBOARD() !Опустошаем буфер клавиатуры
ASK ! не обрабатывая нажатия клавиш
.
См. также:



BACKCOLOR (возвращает цвет фона)


BACKCOLOR(строка,столбец)

строка Числовое значение или выражение, которое задает строку на экране.
столбец Числовое значение или выражение, которое задает столбец на экране.

BACKCOLOR возвращает цвет фона для указанного знакоместа. Возвращаемое значение лежит в диапазоне от 0 до 15 включительно, что соответствует шестнадцати цветам переднего плана. Если параметры выходят за допустимые пределы, то возвращается ноль.
В байте видеоатрибута фоновый цвет хранится в старшем ниббле (4 бита). То есть, если значение, полученное от BackColor использовано для порождения кода цветового стиля, то сначала его надо умножить на шестнадцать, и затем прибавить к нему значение цвета для переднего плана.
Возвращаемый тип данных: BYTE
Пример:
SETCOLOR(BACKCOLOR(1,1)+(FORECOLOR(1,1)*16)!Поменять цвета
!местами
SaveBack = BACKCOLOR(1,1) !Сохранить цвет фона
См. также: , , ,



COLOR (возвращает код цветового стиля)


COLOR(строка,столбец)
Функция COLOR возвращает активный для знакоместа с координатами (СТРОКА,СТОЛБЕЦ) код цветового стиля (комбинацию цветов фона и переднего плана).
Возвращаемый тип данных: BYTE
Пример:
SaveColor = COLOR(1,1) !Сохранить раскраску
См. также: , , ,



ENTRY (принять ввод с клавиатуры)


ENTRY(строка,столбец,шаблон)

строка Числовое значение или выражение, которое задает строку, на которой производится ввод.
столбец Числовое значение или выражение, которое задает столбец, на котором производится ввод
шаблон Шаблон формата или метка строки, описанной с шаблоном формата. Параметр ШАБЛОН определяет длину поля вормат ввода с клавиатуры в переменную. Переменная показывается и редактируется в режиме реверсного отображения (цвета фона и текста меняются местами).

ENTRY читает нажатия клавиш с клавиатуры. Программа ждет, пока редактирование поля не завершится клавишей завершения поля (обычно ENTER) или клавишей взведенной (через ALERT). ENTRY устанавливает реверсные цвета для СТРОКИ и СТОЛБЦА и включает курсор на время редактирования поля.
Возвращаемый тип данных: STRING
Пример:
Address = ENTRY(10,12,@S20) !Ввести адрес
City = ENTRY(11,12,@S12) !Ввести город
См. также: ALERT



FORECOLOR (возвращает цвет переднего плана)


FORECOLOR(строка,столбец)
FORECOLOR возвращает цвет текста для знакоместа с координатами (СТРОКА,СТОЛБЕЦ). Возвращаемое значение лежит в диапазоне от 0 до 15 включительно. Если параметры выходят за допустимые пределы, то возвращается ноль.
В байте видеоатрибута цвет переднего плана хранится в младшем ниббле, то есть, для получения кода цветового стиля надо результат от FORECOLOR прибавить к результату от BACKCOLOR умноженному на шестнадцать.
Возвращаемый тип данных: BYTE
Пример:
SETCOLOR(BACKCOLOR(1,1)+(FORECOLOR(1,1)*16))!Поменять цвета
!местами
SaveFore = FORECOLOR(1,1) !Сохранить цвет текста
См. также: , , ,



ДОСТУП К ЭКРАНУ И КЛАВИАТУРЕ



Видеопроцедуры

(очистить прямоугольник на экране)
(видеоатрибуты)
(закрасить прямоугольник на экране)
(прокрутить прямоугольную область экрана)
(разрешить мигание)
(установить видеоатрибуты)
(включить курсор)
(установить графический режим)
(позиционировать курсор мышки)
(запретить мигание)
(установить размер экрана в текстовом режиме)
(показать на экране)
(вывести строку на экран)

Видеофункции
(возвращает цвет фона)
(возвращает код цветового стиля)
(возвращает цвет текста)
(возвращает текущий видеорежим)
(считать символ(ы) с экрана)
(возвращает код цветового стиля)
(X-координата мышки)
(Y-координата мышки)

Процедуры клавиатуры

(установить альтернативный код клавиши)
(получить один символ)
(поместить символ в буфер клавиатуры)
(задать код клавиши)

Функции клавиатуры

(возвращает введенное с клавиатуры)
(возвращает ожидающее нажатие на клавишу)
(возвращает код клавиши завершения поля)



Документация по Clarion


GRAPHIC(n)

n Целочисленная константа, переменная или выражение.

Функция GRAPHIC возвращает байт, содержащий текущий внутренний видеорежим. В зависимости от режима, возвращается следующее:
Dec. Hex. Режим
--- ---- ----
90 5Ah Текстовый
121 79h EGA
89 59h VGA
87 57h SVGA
GRAPHIC(0) возвращает тип адаптера (EGA, VGA, SVGA) если текущий экран открыт не в графическом режиме. GRAPHIC(1) возвращает одно из приведенных выше значений для графических режимов или 5Ah для текстового.
GRAPHIC(1) проверяет, не находится ли экран в графическом режиме и, если так, то какой адаптер используется. GRAPHIC(0) обычно используется для определения типа адаптера дисплея перед открытием экрана в графическом режиме.
Возвращаемый тип данных: Byte
Пример:
EGA EQUATE(121)
VGA EQUATE(89)
SVGA EQUATE(87)
GraphScreen SCREEN(25,80),GRAPHIC
.
CODE
X# = GRAPHIC(0)
IF X# = EGA OR X# = VGA OR X# = SVGA
OPEN(GraphScreen)
CASE GRAPHIC(1)
OF EGA
OROF VGA
SHOWIMAGE(1,1,25,80,'EGALOGO.PCX',1)
OF SVGA
SHOWIMAGE(1,1,25,80,'SVGALOGO.PCX',1)
. .
См. также:



KEYBOARD (возвращает ожидающее нажатие на клавишу)


KEYBOARD()
Функция KEYBOARD возвращает первый код из хранящихся в буфере клавиатуры нажатий на клавиши. Используется для определения, есть ли нажатия, которые надо обрабатывать операторами ASK или ACCEPT.
Возвращаемый тип данных: LONG
Пример:
LOOP UNTIL KEYBOARD() !Ждем любую клавишу
ASK
IF KEYCODE() = EscKey THEN BREAK. !Если ESC,то прервать цикл
.
См. также: , ACCEPT, Equate-коды клавиш



KEYCODE (возвращает код клавиши завершения поля)


KEYCODE()
Функция KEYCODE возвращает код клавиши, которой завершилось редактирование поля. Эта функция работает только для результатов функции ENTRY и операторов ASK, SETKEYCODE или ACCEPT.
Возвращаемый тип данных: LONG
Пример:
LOOP !Loop on the display
ASK ! wait for a keystroke
CASE KEYCODE() !Process the keystroke
OF UpKey ! up arrow
SCROLL(,,,,1) ! scroll up one row
DO GetRecordUp ! and get a record
OF DownKey ! down arrow
SCROLL(,,,,-1) ! scroll down one row
DO GetRecordDn ! and get a record
OF EscKey ! esc key
BREAK ! break the loop
. . !End case, end loop
См. также: , ACCEPT, Equate-метки кодов
клавиш





Коды цветовых стилей (видео атрибуты)


Каждое знакоместо в видеопамяти состоит из двух байт; один данные (символ) и второй - видеоатрибуты. Байт видеоатрибутов содержит трехбитный цвет фона, бит мигания/яркости и четырехбитный цвет переднего плана (текста). Эти биты скомпонованы в одно байтный код цветового стиля с возможными значениями 0..255, который задает комбинацию цветов фона/текста. Бит мигания может служить битом яркости фона при помощи процедуры SetNoBlink. При запрещенном мигании, для фона можно использовать те же 16 цветов, что и для текста. Если же мигание разрешено, то для фона можно использовать только 8 цветов, а остальные 8 будут приводить к миганию текста. Код цветового стиля получается сложением значений фона и текста. В нижеследующей таблице приведены значения, используемые для создания кодов цветовых стилей.
Монохром
Передний план Фон
Dec Hex Цвет Dec Hex Цвет
--- --- ---- --- --- ----
0 0h Черный 0 0h Черный
1 1h Белый Подчеркн. 16 10h Черный
2 2h Белый 32 20h Черный
3 3h Белый 48 30h Черный
4 4h Белый 64 40h Черный
5 5h Белый 80 50h Черный
6 6h Белый 96 60h Черный
7 7h Белый 112 70h Белый
8 8h Серый
9 9h Ярко-Белый Подчеркн. Добавь 128 (80h) к цвету
10 0Ah Ярко-Белый фона, чтобы получить ми-
11 0Bh Ярко-Белый гающий текст.
12 0Ch Ярко-Белый
13 0Dh Ярко-Белый
14 0Eh Ярко-Белый
15 0Fh Ярко-Белый
Цветной
Передний план
Dec Hex Цвет
--- --- ------
0 Oh Черный
1 lh голубой
2 2h зеленый
3 3h Салатный
4 4h красный
5 5h фиолетовый
6 6h коричневый
7 7h Белый
8 8h Серый
9 9h Светло-голубой
10 OAh Светло-зеленый
11 OBh Светло-Салатный
12 OCli Светло-красный
13 ODh Светло-фиолетовый
14 OEh Желтый
15 OFh Ярко-Белый
Фон
Dec Hex Цвет (без мигания) Цвет (с миганием)
---- --- ---------------- ------------------
0 0h Черный Черный
16 10h голубой голубой
32 20h зеленый зеленый
48 30h Салатный Салатный
64 40h красный красный
80 50h фиолетовый фиолетовый
96 60h коричневый коричневый
112 70h Белый Белый
128 80h Серый Черный
144 90h Светло-голубой голубой
160 0A0h Светло-зеленый зеленый
176 0B0h Светло-Салатный Салатный
192 0C0h Светло-красный красный
208 0D0h Светло-фиолетовый фиолетовый
224 0E0h Желтый коричневый
240 0F0h Ярко-Белый Белый



LOOK (считать символ(ы) с экрана)


LOOK(строка,столбец,шаблон)

строка Числовое значение или выражение, которое задает Y-соординату для чтения. По умолчанию - последняя строка, которой было обращение.
столбец Числовое значение или выражение, которое задает X-координату первого символа, который надо прочитать. По умолчанию - последний столбец, к которому было обращение.
шаблон Шаблон формата или метка строки, описанной с шаблоном формата. Шаблон используется для деформатирования прочитанного с экрана значения в переменную. Длина шаблона определяет количество столбцов, которые будут прочитаны с экрана.

Функция LOOK считывает ASCII-коды символов с экрана, начиная со знакоместа, с координатами (СТРОКА,СТОЛБЕЦ). Если какие-то параметры опущены, то чтобы это отметить, требуются запятые. LOOK работает одинаково как в текстовых, так и в графических режимах. (SPA - интересно, а для русских букв в графике работает?)
Возвращаемый тип данных: STRING
Пример:
PageNumber = LOOK(1,75,@N2) !Получить номер страницы
Cus:AccountNumber = LOOK(,,@NO5) !Считать из последней выве
! денной позиции и помес-
! тить в номер лиц. счета
LastName = LOOK(5,20,@S20) !Считать имя




MAKECOLOR (возвращает код цветового стиля)


MAKECOLOR(текст,фон)

текст Целая константа, переменная или выражение в диапазоне 0..15, представляющая собой цвет переднего плана (или текста).
фон Целая константа, переменная или выражение в диапазоне 0..15, представляющая собой цвет заднего плана (или фона).

MAKECOLOR возвращает код цветового стиля для заданной комбинации цветов текста/фона.
Возвращаемый тип данных: BYTE
Пример:
MAKECOLOR(7,0) returns 7 White on Black
MAKECOLOR(7,1) returns 23 White on Blue
ColorStyle = MAKECOLOR(7,1) !Set ColorStyle variable to 23
SETCOLOR(ColorStyle) ! and use it to set the color
См. также: , , , ,



MOUSECOL (X-координата мышки)


MOUSECOL()
MOUSECOL возвращает баутовое значение, соответствующее номеру
столбца, в котором находится курсор мышки на виртуальном экране.
Возвращаемый тип данных: BYTE
Пример:
SaveMouseCol = MOUSECOL() !Save mouse column position



MOUSEROW (Y-координата мышки)


MOUSEROW()
MOUSEROW возвращает баутовое значение, соответствующее номеру строки, в которой находится курсор мышки на виртуальном экране.
Возвращаемый тип данных: BYTE
Пример:
SaveMouseRow = MOUSEROW() !Save mouse row position



PRESS (поместить код в буфер)


PRESS( код )
строка

код Числовая константа или EQUATE-метка кода клавиши.
string Строковая константа, переменная или выражение.

PRESS имитирует нажатия на клавиши во внутреннем буфере клавиатуры Клариона (а не буфере DOS). PRESS(КОД) помещает в буфер одно нажатие. PRESS(СТРОКА) помещает в буфер строку целиком. Строка заполняет буфер (статическую очередь), размер которого ограничен лишь доступной основной памятью. На каждое нажатие в строке отводится 32 байта, т.е теоретический максимум равен примерно 2500 символов в большинстве "нормальных" приложений.
Пример:
IF Action = 'Add'!On the way into a memo field on an add record
Cus:MemoField = FORMAT(TODAY(),@Dl) &' '& FORMAT(CLOCK(),@T4)
!Preload first line of memo with date and time
PRESS(EnterKey)! and position user on second line
.



SCROLL (прокрутить прямоугольную область экрана)


SCROLL[строка][,столбец][,строк][,столбцов][,счетчик]

строка Числовое значение или выражение, которое задает начальную (верхнюю) строку. По умолчанию - 1.
столбец Числовое значение или выражение, которое задает начальный (левый) столбец прямоугольника. По умолчанию 1.
строк Числовое значение или выражение, которое задает число строк в прямоугольнике. По умолчанию - вся высота экрана (структуры SCREEN)
столбцов Числовое значение или выражение, которое задает число столбцов. По умолчанию вся ширина экрана (структуры SCREEN).
счетчик Позитивное или негативное значение или выражение, которое задает на сколько строк прокрутить. Если СЧЕТЧИК положителен, то прокрутка вверх, если отрицательный, то вниз. По умолчанию СЧЕТЧИК=+1.

SCROLL перемещает символы в прямоугольной области экрана вверх или вниз. По мере сдвига символов, СЧЕТЧИК строк удаляется сверху (снизу) прямоугольника, и СЧЕТЧИК пустых строк создается внизу (вверху). Параметры СТРОКА и СТОЛБЕЦ задают координаты верхнего левого угла прямоугольника относительно верхнего левого угла физического экрана; они НЕ ссылаются на верхний левый угол структуры SCREEN.
SCROLL НЕ изменяет активные видеоатрибуты в прямоугольнике. Ранее активные атрибуты оператора PAINT в SCREEN-структуре или оператора SETCOLOR могут повлиять на цвета в прямоугольнике. Хотя символы сдвигаются, цвета раскраска прямоугольника НЕ меняется.
Пример:
SCROLL(4,10,16,60,-1) !Прокрутка данных вниз
LOOP 5 TIMES !Повторять 5 раз
SCROLL ! прокрутить весь экран
. !Конец цикла
См. также: ,



SETBLINK (разрешить мигание)


SETBLINK
SETBLINK разрешает мигание. Если оно разрешено, то для фона можно использовать только 8 цветов. Это нормальный режим работы, до тех пор, пока мигание не запрещено процедурой SETNOBLINK.
Пример:
SETNOBLINK !Выключить мигание
SHOW(1,15,CENTER('Ты ошибся, друже!',30))
SETCOLOR(0EBh) ! цвет - светло салатный на желтом
PAINT(1,15,1,30) ! закрасим область сообщения
BEEP(0,200) !Ждем 2 секунды
SETBLINK ! и делаем мигающий св.салатн. на кори
! чневом
См. также: , ,



SETCOLOR (установить видеоатрибуты)


SETCOLOR(цвет)

цвет Числовое значение или выражение, которое задает код цветового стиля. Допустимые значения ЦВЕТа - 0..255.

SETCOLOR меняет байт выидеоатрибута для каждого символа, записываемого в видеопамять после него. ЦВЕТ точный код цветового стиля (это НЕ ссылка на внутренний массив, используемый в структуре SCREEN параметром COLOR).
Если SETCOLOR использован без параметров, то символы, выводимые на экран после такого SETCOLOR НЕ будут изменять цвет знакомест, куда они выводятся.
Пример:
SETCOLOR(0) !Черный на черном
SETCOLOR(47h) !Белый на красном
SETCOLOR !Оставить атрибуты без изм.
См. также:



SETCURSOR (включить курсор)


SETCURSOR([строка,столбец])

строка Числовое значение или выражение, задающее строку на экране.
столбец Числовое значение или выражение, задающее столбец на экране.

SETCURSOR показывает курсор в позиции заданной СТОЛБЦОМ и СТРОКОЙ. Используется для позиционированного вывода на устройство "CON". SETCURSOR указывает первую строку и столбец для вывода оператором TYPE, или оператором PRINT, у которого устройством для вывода отчета является "CON." Если параметры не заданы, то SETCURSOR гасит курсор.
Пример:
SETCURSOR(2,5) !Turn on the cursor at row 2 column 5
SETCURSOR !Turn off the cursor
См. также:



SETGRAPHIC (установить графический режим)


SETGRAPHIC(режим)

режим Целая константа или EQUATE, задающая графический видеорежим (EGA, VGA, SVGA).

SETGRAPHIC задает графический режим для SCREEN-структур с атрибутом GRAPHIC. Графический режим определяется автоматически и не требует изменения, как правило. SETGRAPHIC перекрывает режим автоопределения режима для следующего открываемого SCREEN. Разрешенные для РЕЖИМа значения:
Dec Hex Режим
--- --- --------
90 5Ah Текстовый
121 79h EGA
89 59h VGA
87 57h SVGA
Если экран уже открыт как графический, SETGRAPHIC(90) не повлияет на него. Если же экран ЕЩЕ не в графическом режиме, SETGRAPHIC(90) принудительно вызовет вывод следующих экранов в текстовом режиме, даже если у них установлен атрибут GRAPHIC.
Пример:
GraphScreen SCREEN(25,80),GRAPHIC
!описание структуры экрана
.
CODE
SETGRAPHIC(90) !Следующий экран принудительно в текст
OPEN(GraphScreen) !GraphScreen открыть в текстовом режиме
См. также:



SETKEYCODE (вернуть код клавиши)


SETKEYCODE(код)

код Целая константа или EQUATE-метка кода клавиши.

SETKEYCODE заставляет функцию KEYCODE вернуть заданный КОД. КОД НЕ помещается в буфер клавиатуры.
Пример:
SETKEYCODE(999) !Заставляем KEYCODE вернуть 999
См. также: , , Equate-коды клавиш



SETMOUSE (позиционирование курсора мышки)


SETMOUSE([строка][,столбец])

строка Целая константа, переменная или выражение, задающее строку, в которую поместить курсор мышки. По умолчанию ноль.
столбец Целая константа, переменная или выражение, задающее столбец, куда поместить курсор мышки. По умолчанию ноль.

SETMOUSE размещает курсор мышки на экране. Если СТРОКА и СТОЛБЕЦ опущены, то SETMOUSE выключает курсор мышки. Если программа собирается использовать мышь, то по крайней мере, один SETMOUSE требуется (вероятно где-то ближе к началу программы).
В графическом режиме курсор мышки представляет стрелку, а в текстовом - прямоугольный блок (знакоместо), до тех пор, пока не использованы операторы LOADSYMBOLS или USESYMBOLS.
Пример:
SETMOUSE() !Выключить мышку
SETMOUSE(1,1) !Включить в верхнем левом углу
См. также: LOADSYMBOLS, USESYMBOLS



SETNOBLINK (запретить мигание)


SETNOBLINK
SETNOBLINK запрещает мигание на экране. Обычно, фон можно раскрасить в 8 цветов. При запрещенном мигании, бит отвечающий за мигание может быть использован как бит яркости фона. Это позволяет использовать для фона те же 16 цветов, что и для текста.
Монохромные или CGA мониторы НЕ поддерживают запрещение мигания. Таким образом, для SETNOBLINK нужен, как минимум, EGA.
Пример:
SETNOBLINK !Выключить мигание
SETCOLOR(OEh) ! установить черный на желтом
PAINT ! и закрасить экран
См. также: ,



SETTEXT (установить размер экрана в текстовом режиме)


SETTEXT(строк,столбцов)

строк Целая константа, переменная или выражение, задающее число строк на физическом экране в текстовом режиме.
столбцов Целая константа, переменная или выражение, задающее число столбцов на физическом экране в текстовом режиме.

SETTEXT позволяет точно задать, скажем, режим 43 или 50 строк. Без применения SetText, текстовый режим остается таким же, каким он был при запуске программы.
SETTEXT использует метод наилучшего размещения для параметров СТРОК и СТОЛБЦОВ. Видеоадаптер может поддерживать различные текстовые режимы, так что, в принципе, SETTEXT(200,200) может достичь максимально возможного разрешения в текстовом режиме.
Пример:
R# = ROWS() !Сохраняем текущие параметры экрана
C# = COLS() !R# - строки и C# - столбцы
GraphicScreenProc !Вызываем проц. с графическ.экраном
SETTEXT(R#,C#) !Возвращаемся к предыдущ. значениям
См. также: ROWS,



SHOW (показать на экране)


SHOW([строка][,столбец],выражение[,формат])

строка Числовое значение или выражение, которое задает строку на экране, в которую будет выведено ВЫРАЖЕНИЕ. По умолчанию - последняя строка, в которой происходил вывод.
столбец Числовое значение или выражение, которое задает столбец, в который будет выведено ВЫРАЖЕНИЕ. По умолчанию - последний столбец, в который производился вывод.
выражение Метка переменной, константы, числовое или строковое выражение.
формат Шаблон формата или метка строки (STRING) описанной с форматом вывода (picture).

SHOW выводит переменные или выражения прямо на экран. Если выражение слишком длинно, чтобы разместиться в строке, оно усекается. Чтобы показать, что какие-то параметры пропущены, требуются запятые. То, что выводит SHOW, затирает то, что было ранее на экране.
Пример:
SHOW(1,1,TODAY(),@D3) !Показать дату
SHOW(,,CLOCK(),@T3) !Показать время в том мес-
!те, куда был последний
!вывод
SHOW(1,80 - SIZE(Msg),Msg) !Выровнять сообщение впра-
!во
SHOW(25,1,'Жми кнопочку, и продолжим')!Вывод подсказки



TYPE (вывести строку на экран)


TYPE(строка)

строка Строковая константа,
переменная или выражение.

TYPE выводит строку на стандартное устройство вывода (STDOUT). Пока не определено иначе, в качестве STDOUT DOS использует устройство CON. Строка появится на экране начиная с текущего положения курсора. Можно использовать SETCURSOR, чтобы разместить курсор в нужном месте.
Устройство "CON" распознает символы CR, LF, TAB и BS. Перевод строки (LF) переводит курсор на строку ниже текущей. LF на последней строке экрана приводит к прокрутке всего экрана вверх на одну строку.
Пример:
TYPE(Cus:Notes) !Вывести поле примечаний
SETCURSOR(1,25) !Идем в самый низ экрана
TYPE(@LF5) ! и прокрутим вверх 5 строк
См. также: , Элементы
Управления Принтером



ALRT (установить клавишу(и) завершения поля)


ALRT(первый-код-клавиши[,последний-код-клавиши])

первый-код-клавиши Числовой код клавиши или EQUATE-метка кода клавиши. Он может быть началом диапазона кодов клавиш.
последний-код-клавиши Последний код клавиши или EQUATE-метка в диапазоне кодов клавиш.

Атрибут ALRT задает клавиши завершения поля для отдельного поля на экране. Он используется с полями типа ENTRY, TEXT, OPTION, PAUSE или POINT. Если поле завершается ALRT-клавишей, то его USE-переменная НЕ обновляется автоматически.
Атрибут ALRT разрешен и для оператора SCREEN. Клавиши, взведенные таким образом, активны для любого поля на экране.
Пример:
Screen SCREEN(6,40).PRE(Scr),ALRT(F10Key)
!F10 взведена для всех полей
ROW(2,5) ENTRY(@S20),USE(Name),ALRT(F5Key)
!F5 взведена только для этого
!поля
ROW(4,5) TEXT(2,30),USE(Memo),ALRT(F7Key,F9Key)
!F7 - F9 взведены только для
!этого поля
.
CODE
OPEN(Screen) !Открываем экран для обработки
LOOP ! и обрабатываем все поля
ACCEPT !Ждем завершения поля
IF KEYCODE() = F10Key !Проверяем ALERT-клавишу экрана
RETURN
.
CASE FIELD()
OF ?Name !На ENTRY-поле
IF KEYCODE() = F5Key !Проверяем его ALERT-клавишу
UPDATE ! обновляем USE-переменную
DO SomeRoutine ! и что-то делаем
.
OF ?Comments !На TEXT-поле
CASE KEYCODE() !Проверяем его ALERT-клавиши
OF F7Key !и обрабатываем каждую по-своему
UPDATE
DO SevenRoutine
OF F8Key
UPDATE
DO EightRoutine
OF F9Key
UPDATE
DO NineRoutine
. . . !Конец case, case и loop



AT (задает координаты экрана)


AT(строка,столбец)

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

AT задает конкретное место для окна, так что оно не сможет "плавать". Обычно, это используется для экранов, меньших по размеру, чем виртуальный.
SCREEN без атрибута AT пытается "плавать" так, чтобы не закрыть собой последние столбец и строку, к которым обращался предыдущий экран. Положение по умолчанию - под последней строкой, к которой было обращение и на последнем столбце, к которому было обращение. Если при этом край окна выходит за физический экран, то окно пытается разместиться над последней строкой, к которой было обращение. Если и это не получается, то SCREEN центрирует себя на виртуальном экране. Первый столбец окна помещается на последний столбец, к которому было обращение. Если при этом край окна выходит за пределы физического экрана, то окно сдвигается влево до тех пор, пока не будет виден самый правый край окна.
Щелчок-и-перемещение мышки на верхней строке "плавающего" экрана, меньшего чем виртуальный, позволяет переместить окно в любое место виртуального экрана.
Пример:
Screen1 SCREEN(15,50),AT(27,15)!Fix window at row 27, column 15
!(declarations) ! declare fields etc.
. !End of screen structure



BUTTON (поле-кнопка)


BUTTON(текст),USE()[,COLOR()][,TRN][,MSG()][,ESC()]
[,HLP()][,SHADOW][,REQ][,IMM]

текст Строковая константа или переменная, содержащая надпись на кнопке.
USE Equate-метка поля, которая позволяет оператора программы обращаться к этому полю.
COLOR Задает цвета.
TRN В графическом режиме указывает на то, что при выводе кнопки, использовать только цвет переднего плана, оставляя фон неизменным.
MSG Сообщение, которое будет показано в строке сообщений экрана.
ESC Поле, на которое перейти при нажатии ESC или BACKTAB.
HLP Идентификатор окна подсказки, связанного с этим полем.
KEY КОД_КЛАВИШИ для "горячей клавиши", вызывающей немедленное нажатие BUTTON.
SHADOW Автоматически разместить тени вокруг кнопки.
REQ Заставляет BUTTON проверять все поля на данном экране с атрибутом REQ на предмет наличия в них данных, отличных от нуля или пробелов.
IMM BUTTON автоматически завершается при нажатии левой кнопки мыши и связанная с ней процедура вызывается непрерывно до отпускания кнопки мыши.

BUTTON описывает поле-кнопку в SCREEN-структуре. Текстовая строка может содержать амперсанд (&),который означает, что следующий за ним символ - "горячая" клавиша для этого поля. Нажатие ALT и выделенного амперсандом символа взывает немедленное "нажатие" этой кнопки.
Атрибут KEY также может назначить горячую клавишу для поля BUTTON. Это может быть любой кларионовский код клавиши или однобайтная строковая константа. Если атрибут KEY присутствует, то задаваемый им код клавиши всегда будет возвращаться функцией KEYCODE() при завершении поля-кнопки, независимо от того, какая клавиша на самом деле использовалась для этого.
Клавиша TAB, и в CUA и в не-CUA экранах, НЕ завершает поле-кнопку. Клавиша же ENTER завершает поле кнопку в обоих режимах экрана.
Текстовая строка может содержать также вертикальную черту (|), которая означает конец строки текста. Таким образом, можно создавать многострочные кнопки. Общая ширина прямоугольника-кнопки определяется наибольшим числом символов до вертикальной черты.
BUTTON с атрибутом REQ - кнопка, которая "требует проверки полей". На CUA экранах, атрибут REQ для полей ENTRY или TEXT не проверяется, пока не будет нажата кнопка с атрибутом REQ.
BUTTON без атрибута IMM, завершается при отпускании левой кнопки мыши. BUTTON с атрибутом IMM завершается при нажатии левой кнопки мыши. Это позволяет исполнять назначенный этой кнопке исполняемый код до тех пор, пока не будет отпущена кнопка мыши.
Пример:
BUTTON(' Ѓ ButtonTextЃ Ѓ'),USE(?Pushbutton)
!трехстрочная кнопка



CAP (Первые буквы слов делать заглавными)


CAP
Атрибут CAP задает автоматическую капитализацию для полей типа ENTRY и TEXT. Не важно, в каком регистре слова вводятся - каждый символ, следующий за пробелом, и первый символ первого слова будет переведен в верхний регистр, а остальные символы - в нижний.
Пример:
Screen SCREEN(6,40),PRE(Scr)
ROW(2,5) ENTRY(@S20).USE(Name),CAP
ROW(4,5) TEXT(2,30),USE(Comments),CAP
.
См. также: ,



CENTER (центрирование на физическом экране)


CENTER
Атрибут CENTER указывает на то, что окно SCREEN-структуры всегда будет открываться в центре экрана. Его стоит использовать, когда заранее неизвестно, в каком режиме будет работать программа - 25 43 или 50 строк, и важно расположить окно в центре. С помощью мышки можно перетащить центрированный экран, размеры которого меньше чем у виртуального, в любое место на виртуальном экране.
Пример:
Screenl SCREEN(15,50),CENTER !Always pop up in center
!(declarations) ! declare fields etc.
. !End of screen structure



CHECK (поле отметки (чекбокс)


CHECK(text),USE()[,COLOR()][,TRN][,MSG()][,HLP()]
[,ESC()]

text Строковая константа или переменная, содержащая текст для вывода на экран.
USE Целочисленная переменная или EQUATE-метка.
COLOR Цвета для данного поля.
TRN В графическом режиме цвет фона - прозрачный, и через него просвечивает фон предыдущего изображения.
MSG Текст, который будет выведен в строку сообщений экрана.
HLP Задает экран подсказки, связанный с этим полем.
ESC Указывает поле, на которое надо перейти при нажатии ESC или BACKTAB.

CHECK это поле с двумя состояниями - вкл/выкл. Чекбокс помещает пробел левее строки, заданной как параметр оператора CHECK. Когда это поле "включено", связанная с ним USE-переменная устанавливается в единицу и значок "отметка" (v) появляется в рамочке (до тех пор, пока иное не задано командами LOADSYMBOLS или USESYMBOLS). Если "выключен", то рамка очищается и USE-переменная устанавливается в ноль (ложь). Состояние чекбокса можно изменять клавишей пробела.
Текстовая строка может содержать амперсанд, который действует так же как и в текстовой строке для BUTTON - задает "горячую клавишу" для данного поля.
CHECK может быть отдельно, или может быть сгруппирован с другими операторами CHECK в структуру OPTION. Состояние полей переключается пробелом.
Пример:
ROW(12,23) CHECK('Employed?'),USE(Employed) !Одиночный чекбокс
ROW(5,6) OPTION !Начало структуры OPTION
ROW(6,9) CHECK('Deduct &Medical')! 'Alt-M' для медиков
ROW(7,9) CHECK('Deduct &Dental') ! 'Alt-D' для стоматологов
ROW(8,9) CHECK('Deduct &AD&&D') ! 'Alt-A' для любителей РПГ
. !Конец структуры OPTION
См. также: LOADSYMBOLS, USESYMBOLS



Что такое Screen


В языке Кларион есть два типа экранных структур - собственно экраны - SCREEN, и PULLDOWN-структуры. PULLDOWN-структуры являются SAA/CUA-совместимыми выпадающими меню. SCREEN-структуры используются для всех остальных типов экранов. SCREEN-структура может быть SAA/CUA-совместимой, а может и не быть. В обоих случаях для PULLDOWN и SCREEN-структур имеется полная поддержка мышки после выполнения команды SETMOUSE.
Применение SAA/CUA-совместимости заметно влияет на интерфейс программы с пользователем. При наличии SAA/CUA-совместимости, вы можете делать свои программы "видом и ощущением" подобными программам с графическим интерфейсом пользователя (GUI). То есть, ваша программа будет интуитивно понятна тем, кто имел хоть какое то дело с GUI. Более того, ваши программы могут быть целиком графическими, используя атрибут GRAPHIC для SCREEN-структур. Хотя, если у вас есть собственный стиль "вида и ощущения", то вы можете отказаться от стандарта SAA/CUA.
Главное отличие между SAA/CUA и не-CUA пользовательскими интерфейсами в действии клавиш ENTER и ESC при выборе и завершении поля. В не-CUA экранах, ENTER (или TAB) завершает ввод в поле и переводит оператора к следующему полю для ввода. Клавиша ESC (или BACKTAB) возвращает на предыдущие поля без завершения поля. В SAA/CUA-экранах, только TAB завершает поле и переходит к следующему. BACKTAB завершает поле и переходит к предыдущему. ENTER и Esc не перемещают по полям в CUA-экранах.
Это - руководство по языку, следовательно, все атрибуты и операторы структур SCREEN и PULLDOWN и их синтаксис будут рассмотрены подробно. Как правило, SCREEN-ы и PULLDOWN-ы Кларион "рисуются" с помощью соответствующих иснтрументальных средств в Редакторе Текста и Генераторе Приложений, причем, для вас формируется корректный кларионовский синтаксис. Стало быть, ручное кодирование структур SCREEN или PULLDOWN не является необходимым.



COL (задает столбец)


COL(столбец)

столбец Целочисленная константа, задающая столбец, с которого будет выводиться строка или поле.

COL разделяет описания в пределах структуры SCREEN установкой столбца для следующего поля или строки в той же СТРОКЕ экрана, что и для непосредственно предыдущего поля.
Пример:
Fname ROW(2,2) STRING(@S12) !Вывод Fname в стр. 2 столб. 2
Init COL(16) STRING(@S1) !Вывод Init в стр. 2 столб. 16
Lname COL(18) STRING(@S12) !а Lname в стр. 2 столбце 18



COLOR (задать цвета показа)


COLOR(normal[,selected][,dim][,hot-normal][,hot-select])

normal Цвет для обычного вывода.
selected Цвет поля, когда оно выбрано.
dim Цвет поля, когда оно запрещено оператором DISABLE.
hot-normal Цвет "горячей" клавиши при обычном выводе.
hot-select Цвет "горячей" клавиши, когда поле активно.

Атрибут COLOR идентифицирует цвета, используемые в SCREEN-структуре, в любом поле SCREEN-структуры или в PULLDOWN-структуре. Каждый тип поля может использовать все или некоторые параметры, связанные с атрибутом COLOR. Ниже описаны параметры для каждого типа поля. (SPA. - вероятно рекомендуемые, а не обязательные)
Оператор normal selected dim hot-normal hot-select
----------- ------ -------- --- ---------- ----------
BUTTON x x x x x
CHECK x x x x x
ENTRY x x x
LIST x x x
OPTION x x x
OPTION STRING x x x x x
PAINT x
PAUSE x
POINT x
PROMPT x x x x x
RADIO x x x x x
SCREEN x
STRING x
TEXT x x x
PULLDOWN x x x x x
MENU x x x x x
Параметры атрибута COLOR, это числа, в диапазоне 0..255, которые задают номера элементов внутреннего массива Кодов Цветовых Стилей. Это 256-байтный массив, который хранит выбранные на данный момент Коды Цветовых Стилей. Каждый элемент инициализирован значением, равным его номеру (элемент 0 := 0, элемент 1 :=1 итд), до тех пор, пока иное не задано операторами SETSTYLES или GETSTYLES. Текущий цвет вывода есть Код Цветового Стиля, хранящийся в элементе массива.
Пример:
Screen SCREEN,COLOR(1) !Базовый цвет экрана
ROW(4,2) PROMPT('&State:'),COLOR(5,6,7,8,9)
ROW(4,10) ENTRY(@S2),USE(State),COLOR(5,6,7)
.
См. также: SETSTYLES, GETSTYLES, STYLES,



COLS (задает столбцы в LIST-структуре)


COLS(string,variable[,spaces])

string Строковая константа или переменная, содержащая ASCII-значения, задающие число символов для подсветки в каждом столбце. Каждый символ этой строки задает ширину одного столбца в LIST. Общее число символов в строке зависит от числа столбцов в LIST-структуре.
variable Имя целочисленной переменной, которая получает номер текущего подсвеченного столбца, когда LIST завершается оператором ACCEPT.
spaces Целочисленная константа, задающая число пробелов между столбцами на экране.

Атрибут COLS задает вывод элементов очереди в листбоксе подобно электронной таблице. Курсор подсвечивает только один столбец за раз. Строка, описывает число символов в каждом столбце, которые должен подсвечивать курсор. Параметр SPACES задает количество пробелов, автоматически вставляемых между выводимыми столбцами.
Когда ACCEPT завершает LISTбокс, VARIABLE получает номер подсвеченного столбца. Если VARIABLE уже содержит какое-то значение при активизации листбокса, то сращу же активизируется столбец, номер которого хранится в VARIABLE.
Если вместе с атрибутом COLS, к листбоксу применяется еще и атрибут FIX, то появляется возможность ввести заголовки столбцов в листбоксе. Эти заголовки не будут прокручиваться, и не могут быть выбраны.
Пример:
ListOue QUEUE,PRE(Lst) !Очередь номеров деталей
PartNoA STRING(10) ! отформатированная для
PartNoB STRING(10) ! вывода в две колонки
.
Screen SCREEN(20,30),PRE(Scr)
ROW(3,45) ENTRY(@s10),USE(Trn:PartNo),SKIP
ROW(4,45) LIST(10,20),FROM(Lst:PartNo), |
USE(?PartList),COLS('',Column#,1)
.
CODE !Строим очередь для листбокса
SET(PartsFile)
LOOP
NEXT(PartsFile)
Lst:PartNoA = Par:PartNo
IF EOF(PartsFile) THEN BREAK.
NEXT(PartsFile)
Lst:PartNoB = Par:PartNo
IF EOF(PartsFile) THEN BREAK.
ADD(ListQue)
IF ERRORCODE() THEN STOP(ERROR()).
CLEAR(ListQue)
.
ADD(ListQue)
IF ERRORCODE() THEN STOP(ERROR()).
OPEN(Screen) !Затем откроем экран
ACCEPT ! и позволим сделать выбор
GET(ListQue,CHOICE()) !Получаем выбранный элемент
EXECUTE Column#
Trn:PartNo = Lst:PartNoA !Выбрано из первого столца?
Trn:PartNo = Lst:PartNOB !А может быть из второго?
.
См. также: ,



CUA (объявляет пользовательский интерфейс типа SAA/CUA)


CUA
Атрибут CUA в операторе SCREEN задает SAA/CUA-подобный интерфейс. SAA/CUA-подобие включает множество возможностей, большинство из которых, включены в экраны Кларион с или без атрибута CUA. Атрибут CUA имеет свои специфичные методы перемещения по полям и обработки клавиш завершения.
SAA/CUA-подобные экраны используют TAB и BACKTAB для перемещения по полям экрана. TAB завершает редактирование поля и переходит к следующему. BACKTAB завершает редактирование текущего поля и переходит к ПРЕДЫДУЩЕМУ. НЕ-SAA/CUA экраны используют ENTER и ESC (а также TAB и BACKTAB) для перемещения между полями экрана. ENTER (и TAB) завершают редактирование поля и переходит к следующему полю для обработки. ESC (и BACKTAB) обрывают обработку текущего поля и выбирают для редактирования предыдущее поле, НЕ завершая редактирования текущего.
Пример:
Screen1 SCREEN(15,50),AT(27,15).CUA
!SAA/CUA navigation and completion
!(declarations) ! declare fields etc.
. !End of screen structure



ENTRY (Поле для ввода)


ENTRY([picture]),USE()[,COLOR()][,TRN][,HLP()]
[,ESC()][,IMM][,LFT][,INS][,CAP][,ALRT()]
OVR UPR
[,MSG()][,SKIP][,HIDE][,REQ]

picture Шаблон, по которому будут форматироваться вводимые в USE-переменную символы. Если шаблон не задан, то поле рассматривается как "пустое", которое оператор ACCEPT заполняет автоматически.
USE Переменная, которая получает вводимое значение. Для "пустых" полей, это обычно EQUATE-метка.
COLOR Задает цвета.
TRN В графическом режиме цвет фона - прозрачный, и через него просвечивает фон предыдущего изображения.
MSG Текст, который будет выведен в строку сообщений экрана.
HLP Задает экран подсказки, связанный с этим полем.
ESC Указывает поле, на которое надо перейти при нажатии ESC или BACKTAB.
IMM Поле немедленно завершается, когда оно полностью заполнено.
LFT Вводимые данные выравниваются влево.
INS/OVR Режим ввода - вставка или замена.
UPR/CAP ВСЕ БУКВЫ ДЕЛАТЬ ЗАГЛАВНЫМИ или только Первую Букву Каждого Введенного Слова.
ALRT Задает активные alert-клавиши для данного поля.
SKIP Это поле не может принимать какие-либо данные.
HIDE Вводимые символы не видны на экране.
REQ Это поле не может быть пустым или нулевым.

Поле ENTRY позволяет оператору вводить и редактировать содержимое USE-переменной. Шаблон поля ENTRY может быть не такой длины, как его USE-переменная. Например, an ENTRY(@S30) может использоваться для изменения STRING(85), и USE-переменная будет прокручиваться влево или вправо в рамках, заданных шаблоном. То есть, когда поле ENTRY активно, можно использовать стрелки влево/вправо для перемещения в любое место USE-переменной.
Если используется как "пустое" поле (без щаблона), то оператор ACCEPT немедленно завершает это поле. Таким образом, "пустые" поля позволяют программе получать управление в каких-то точках обработки SCREEN-структуре (обычно используется для обработки НЕ-CUA экранов).
Поле ENTRY с атрибутом HIDE показывает на экране звездочки (*) при вводе данных. Обычно это используется для ввода паролей, чтобы нельзя было подглядеть из-за плеча вводимые данные.
Если есть атрибут SKIP, то поле не может быть выбрано для ввода данных. Тем не менее, USE-переменая может быть показана оператором DISPLAY, что позволяет создавать поля "только для глаз".
Пример:
ROW(6,14) ENTRY(@S24),USE(Name),CAP,LFT,HLP('Name')
ROW(8,16) ENTRY(@S2),USE(state),UPR.IMM,HLP('StateLst')
ROW(12.20) ENTRY(@N4.1),USE(Percent),INS,REQ,ESC(?Amount)
ROW(10,8) ENTRY(@P###-##-####P),USE(SocSecNbr),OVR,REQ.IMM
ROW(1,1) ENTRY,USE(?FirstField)



Equate-метки меню


В PULLDOWN-структурах, компилятор назначает каждому полю MENU и ITEM свой номер. Эти номера полей - отрицательные, начинаются с минус единицы (-1) и назначаются полям по мере их появления в описании PULLDOWN-структуры.
Equate-метки меню для PULLDOWN то же самое, что Equate-метки полей для SCREEN. Они всегда начинаются со знака вопроса (?). Поля MENU и ITEM в PULLDOWN-структурах могут иметь USE-переменные, которые могут быть только Equate-метками меню, что предоставляет способ обращения к этим полям из программы.



Equate-метки полей


В SCREEN-структурах, каждое поле с USE-переменной получает от компилятора свой номер. Эти номера полей начинаются с единицы и присваиваются полям по мере их появления в описании SCREEN-струк туры. Этот порядок определяет последовательность выбора полей оператором ACCEPT (хотя, его можно изменить оператором SELECT). Порядок появления полей в описании экрана НЕ зависит от атрибутов ROW и COL, которые задают месторасположение поля на экране. Таким образом, нет нужды в какой-либо корреляции между положением поля на экране и номером поля, присвоенным компилятором.
Есть несколько операторов, которые используют эти номера полей как параметры: SELECT, DISPLAY, UPDATE, ERASE, DISABLE, ENABLE, и некоторые другие. Было бы довольно сложно задавать каждый раз номера полей для использования в этих операторах. Поэтому, Кларион имеет механизм решения этой проблемы: Equate-метки полей.
Equate-метки полей всегда начинаются со знака вопроса (?), за которым идет имя USE-переменной поля. Ведущий знак вопроса означает для компилятора Equate-метку поля. Они очень похожи на нормальные директивы компилятора EQUATE. Компилятор подставляет номер поля для конкретной Equate-метки во время компиляции. Это делает ненужным знать или вычислять заранее номера полей.
Поля LIST, POINT, BUTTON и PAUSE в SCREEN-структурах могут иметь USE-переменные, которые могут быть только Equate-метками, что предлагает способ обращения к этим полям из программы.



ESC (куда перейти при нажатии ESC)


ESC(field)

field Целое число, EQUATE-метка поля или же выражение, задающее выбираемое поле.

Атрибут ESC для полей типа ENTRY, TEXT, OPTION, PAUSE и POINT устанавливает поле, которое надо выбрать при нажатии Esc (НЕ-CUA экраны) или BACKTAB (CUA экраны). Обычно, нажатие ESC или BACKTAB приводит к выбору предыдущего поля в той последовательности, в которой поля выбирались. Атрибут ESC перекрывает нормальную последовательность.
Пример:
Screen SCREEN,COLOR(1)
ROW(3,10) ENTRY(@S15),USE(Name) !Поле 1
ROW(4,10) ENTRY(@S20),USE(Address)
ROW(5,10) ENTRY(@S12),USE(City)
ROW(5,24) ENTRY(@S2),USE(State).ESC(?Name)
!по ESC - на поле 1
ROW(5,28) ENTRY(@NO5),USE(Zip),ESC(1) !по ESC - на поле 1
ROW(6,10) ENTRY(@P(###)###-####P),USE(Phone),ESC(?-5)
. !по ESC - на поле 1
См. также: , , ,



EVERY (установить промежуток для REPEAT)


EVERY(строк,столбцов)

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

EVERY задает числа СТРОК и СТОЛБЦОВ, разделяющих отдельные элементы в REPEAT-структуре. Например, EVERY(2,20) размещает элементы-повторения в каждой второй строе, через 20 столбцов. Если параметр пропущен, подразумевается единица. Если в описании структуры REPEAT вообще пропущен атрибут EVERY, то подразумевается EVERY(1,1).
Пример:
Screen SCREEN,PRE(Scr)
REPEAT(12,3),EVERY(1,20),INDEX(Ndx)!12x3,20 cols apart
ROW(2,5) ENTRY(@N-7.2),USE(Amt)!36 elements on screen
.



EXPAND (задает размножаемую строку)


EXPEND(строка)

строка Целочисленная константа в диапазоне 1..25, включительно.

Атрибут EXPAND в SCREEN-структуре задает строку (для режима 25 строк), которая будет повторена несколько раз в режимах 43 или 50 строк. Это позволяет использовать экраны, разработанные для режима 25 строк в режиме 43/50 строк. Указанная строка повторяется столько раз, сколько надо, чтобы заполнить экран. Обычно, выбранная строка используется для раздвижки REPEAT-структуры или LISTбокса на добавочные 18 или 25 строк.
Пример:
Screen1 SCREEN(25,80),EXPAND(10)
!В режиме 43/50 повторяем 10ю строку
REPEAT(12),INDEX(Ndx),MAX(MaxRows)
!Repeat-структура в строках 3..15
ROW(3,5) POINT(1,16),USE(?Point)
Month COL(5) STRING(3)
COL(12) ENTRY(@N_7.2),USE(Amt),INS
. . !End of screen structure
См. также:



FILL (переменная, получающая значение из листбокса)


FILL(field)

field EQUATE-метка поля, идентифицирующая экранное поле, которое будет принимать значение.

Атрибут FILL задает поле экрана, в которое будет передано значение, которое выбрано из листбокса.
Пример:
PartOue QUEUE,PRE(Que)
RecPtr LONG
PartNo STRING(10)
.
Screen SCREEN.PRE(Scr)
ROW(2,5) ENTRY(@N_7.2),USE(Fil:PartNo),SKIP
ROW(3,5) LIST(10,10),FROM(Que:PartNo),FILL(?Fil:PartNo)
. !Fil:PartNo получает выбранное значение
См. также:



FIX (заголовки листбокса)


FIX(number)

number Целочисленная константа, которая задает число фиксированных строк.

Атрибут LIST-структуры FIX, задает число элементов очереди, которые содержат "статичную" информацию. Эти элементы выводятся в верхней части листбокса. Они не подлежат прокрутке, и не могут быть выбраны. Эти элементы используются для вывода заголовков в листбоксе, позволяя задать заголовок для каждого столбца, если LIST описан с атрибутом COLS.
Пример:
ListOue QUEUE,PRE(Lst) !Очередь номеров запчастей
PartNoA STRING(10) ! отформатированная для вывода
PartNoB STRING(10) ! на экран в две колонки
.
Screen SCREEN(20,30),PRE(Scr)
ROW(3,45) ENTRY(@s10),USE(Trn:PartNo).SKIP
ROW(4,45) LIST(10,20),FROM(Lst:PartNo), Ѓ
USE(?PartList),COLS('',Column#,1),FIX(2)
.
CODE
Lst:PartNoA = 'Part A' !Создаем заголовки столбцов
Lst:PartNoB = 'Part B'
ADD(ListQue) ! и добавляем их к очереди
IF ERRORCODE() THEN STOP(ERROR()).
ListOue = ALL('-') !Создаем разделители столбцов
ADD(ListOue) ! и добавляем их в очередь
IF ERRORCODE() THEN STOP(ERROR()).
SET(PartsFile) !Строим очередь для листбокса
LOOP
NEXT(PartsFile)
Lst:PartNoA = Par:PartNo
IF EOF(PartsFile) THEN BREAK.
NEXT(PartsFile)
Lst:PartNoB = Par:PartNo
IF EOF(PartsFile) THEN BREAK.
ADD(ListOue)
IF ERRORCODE() THEN STOP(ERROR()).
CLEAR(ListQue)
.
ADD(ListQue)
IF ERRORCODE() THEN STOP(ERROR()).
OPEN(Screen) !Открываем экран
ACCEPT ! и доверяем выбор пользователю
GET(ListOue,CHOICE()) !Берем выбранный элемент очереди
EXECUTE Column#
Trn:PartNo = Lst:PartNoA !Выбрано из первого столбца?
Trn:PartNo = Lst:PartNoB !Выбрано из второго столбца?
.
См. также: ,



FROM (очередь для просмотра через LIST)


FROM(field)

field Метка очереди (QUEUE) или поля очереди. Может быть типа GROUP.

Атрибут LIST-структуры FROM, задает поле, которое надо вывести
в листбоксе.
Пример:
PartOue QUEUE,PRE(Que)
RecPtr LONG
PartNo STRING(10) !Это поле выводим на экран
.
Screen SCREEN,PRE(Scr)
ROW(2,5) ENTRY(@N_7.2),USE(Fil:PartNo),SKIP
ROW(3,5) LIST(10,10),FROM(Oue:PartNo),FILL(?Fil:PartNo)
!Показываем список из Que:PartNo
.
См. также:



SCREEN-СТРУКТУРЫ











(описывает screen-структуру)
(задает координаты экрана)
(центрирование на физическом экране)
(объявляет пользовательский интерфейс типа SAA/CUA)
(задает размножаемую строку)
(задает графический режим)
(автоматическая тень под окном)
(методы открытия экрана)



(строка)
(столбец)



(поле-кнопка)
(поле отметки (чекбокс)
(поле для ввода)
(поле-рисунок)
(список (листбокс)
(меню опций)
(закраска участка экрана)
(поле ожидания нажатия на клавишу)
(указатель структуры REPEAT)
(поле подсказки для следующего поля)
(поле-радиокнопка)
(структура-повторение)
(экранная переменная)
(область для ввода текста)



(установить клавишу завершения поля)
(первые буквы слов делать заглавными)
(задать цвета показа)
(задает столбцы в LIST-структуре)
(куда перейти при нажатии ESC)
(установить промежуток для REPEAT)
(переменная, получающая значение из листбокса)
(очередь для просмотра через LIST)
(заголовки листбокса)
(скрыть содержимое поля)
(идентификатор окна помощи для данного поля)
(линейки прокрутки для LIST)
(немедленное исполнение)
(индексная переменная для REPEAT)
(ввод - в режиме вставки)
(выравнивание влево)
(переменная-счетчик столбцов в REPEAT)
(вывод сообщения на экран)
(файл с графикой для показа)
(ввод - в режиме замены)
(поле не может быть нулевым или пустым)
(использовать ранее установленную палитру)
(пропустить это поле)
(прозрачное изображение)
(ввод преобразовывать в верхний регистр)
(связать с полем переменную или метку)



(структура "выпадающее меню")
(виды рамок для меню)
(позиция, в которой открывается PULLDOWN)



(элемент выпадающего меню)
(подменю в выпадающем меню)



(клавиша быстрого выбора)
(позиция для MENU)
(элемент-переключатель)



Документация по Clarion


GRAPHIC
Атрибут GRAPHIC указывает на то, что экран надо открывать в графическом режиме. Этот атрибут требуется для любого экрана, содержащего IMAGE-поля.
Войдя в графический режим, программа остается в нем, пока не закроется экран, вызвавший переход в этот режим. Любые экраны, открываемые после экрана с GRAPHIC, будут открываться в графическом режиме независимо от наличия у них этого атрибута. Переход к графическому режиму прозрачен для оператора; все экранные поля, все функции редактирования такие же, как и в текстовом режиме. Любой текст с предыдущих текстовых экранов, автоматически будет преобразован в графику. Функция BLINK не работает в графическом режиме. То есть, любой мигающий текст, в графике будет выведен на ярком фоне.
Из-за ограничений по памяти, 25х80 - максимальный размер графического экрана. Если вы работаете в режиме 43/50, то, при открытии графического экрана, экран автоматически переводится в режим 25 строк. В графическом режиме НЕДОСТУПНЫ виртуальные экраны. Если при работе в графическом режиме попытаться открыть виртуальный экран, то программа аварийно остановится.
Пример:
Screenl SCREEN(15,50),GRAPHIC!Screen puts video in graphics mode
! (declarations) ! declare fields etc.
. !End of screen structure



HIDE (скрыть содержимое поля)


HIDE
ENTRY-поле с атрибутом HIDE не показывает данные на экране. По мере ввода символов в поле, они (только на экране) заменяются звездочками. Обычно это используется для полей для ввода паролей
Атрибут HIDE можно использовать с листбоксами. В этом случае, по давляется полоса подсветки (курсор) когда листбокс не активен.



HLP (идентификатор окна помощи для данного поля)


HLP(window)

window Строковая константа или переменная (до 20
символов), которая задает идентификатор окна
подсказки из HELP-файла программы.

Атрибут HLP для полей типа ENTRY, TEXT, CHECK, LIST, BUTTON, OPTION, PAUSE или POINT задает окно подсказки для этого поля. Атрибут HLP в описании SCREEN, действует для всех полей экрана, у которых этот атрибут не задан.
Активное (выбранное) окно подсказки вызывается по клавише F1 во время ожидания ввода операторами ASK или ACCEPT, либо выполнением оператора HELP без параметров. HELP-файл должен быть открыт перед вызовом окна.
См. также: , , , , , , ,
, , HELP



HSCROLL, VSCROLL, HVSCROLL (линейки прокрутки для LIST)


HSCROLL
VSCROLL
HVSCROLL
Параметры HSCROLL, VSCROLL и HVSCROLL помещают в листбокс линейки прокрутки. HSCROLL - горизонтальную вниз листбокса, VSCROLL вертикальную справа, а HVSCROLL - обе. Линейки прокрутки занимают одну строку или один столбец из LIST(строк,столбцов).
Вертикальные линейки прокрутки позволяют прокручивать список мышью вверх и вниз, а горизонтальные - панорамировать его мышью влево/вправо.



IMAGE (поле-рисунок)


IMAGE(row,columns),[NAME()][,USE()][,IMM][,REUSE]
[,SKIP][,MSG()][,ESC()][,HLP()][,KEY()]

rows Строк в IMAGE-поле, максимум - 25.
columns Столбцов в IMAGE-поле, максимум - 80.
NAME Строковая переменная или константа, содержащая имя PCX или GIF файла для показа. Если USE содержит метку MEMO-поля, то атрибут NAME не используется.
USE EQUATE-метка поля, или метка переменной, которая содержит PCX или GIF рисунок для показа, обычно это MEMO_поле с атрибутом BINARY.
IMM Немедленно показать рисунок, позволяя любым строковым литералам перекрывать его.
REUSE В 256-цветном SVGA режиме, рисунок будет выводиться в палитре цветов, заданной другим .PCX или .GIF, показанным ранее, или в палит ре видеокарты по умолчанию, по принципу "наилучшего соответствия".
SKIP Это поле не может быть выбрано пользователем.
MSG Текст, который будет выведен в строку сообщений экрана.
HLP Задает экран подсказки, связанный с этим полем.
ESC Указывает поле, на которое надо перейти при нажатии ESC или BACKTAB.
KEY "Горячая" клавиша, немедленно завершающая IMAGE-поле.

IMAGE описывает область для вывода графики для SCREEN-структуры с атрибутом GRAPHIC. Параметры rows и columns определяют размер выводимого на экран рисунка. PCX или GIF рисунки автоматически масштабируются при необходимости.
IMAGE-поле без атрибута SKIP действует как поле BUTTON. Оно может иметь EQUATE-метку поля, как и его USE-переменная, что позволяет ссылаться на нее операторами программы. Пользователь может: переместиться на это поле клавишей TAB и нажать ENTER, щелкнуть на нем мышкой, или нажать заданную атрибутом KEY горячую клавишу - ACCEPT завершит это поле. Если атрибут KEY указан, то задаваемый им код клавиши будет возвращаться функцией KEYCODE() при завершении IMAGE-поля, независимо от клавиши, действительно завершившей его. Если IMAGE-поле выбрано пользователем, то в его верхнем левом углу появляется мигающий ромбик (ASCII 4). Цвет ромбика - это цвет переднего плана для текущего Цветового Стиля, который имел символ в текстовом режиме в этой позиции.

IMAGE-поля поддерживаются в графических режимах EGA, VGA и SVGA; CGA Color и Hercules graphics не поддерживаются. Поддерживаются все 16-цветные режимы. 256-цветные PCX или GIF рисунки автоматически выводятся в 16-цветном режиме на 16-цветном "железе". 256цветные SVGA режимы поддерживаются при определенном минимуме аппаратных средств:
Карта/Чипсет Разрешение Требует Памяти
------------ ---------- --------------
TSENG Chip Set 640 x 350 512K
Video7/Headland 640 x 400 256K
Ahead Systems 640 x 400 256K
Paradise 640 x 400 256K
VESA 640 x 400 256K
Trident/Everex 640 x 400 256K
Zymos 640 x 400 256K
Genoa 640 x 400 256K
Пример:
Screen SCREEN(20,30),PRE(Scr),GRAPHIC
ROW(3,5) IMAGE(14,25),NAME('picture.pcx'),SKIP
!Показать рисунок
ROW(3,35) IMAGE(14,25),NAME('picture.gif'),IMM
!IMAGE как BUTTON
ROW(3,37) STRING('Picture Select Button')
!Строка накладывается на рисунок
.
См. также: , SHOWIMAGE

IMM (немедленное исполнение)


IMM
Поля ENTRY или TEXT с атрибутом IMM считаются завершенными, как только они полностью забиты данными, без нажатия ENTER или TAB. Структура OPTION с атрибутом IMM, завершается, как только нажат первый непустой символ, содержащийся в элементах меню, или нажата "Горячая" клавиша, задаваемая амперсандом в строке. Поля типа LIST или POINT с атрибутом IMM, считаются завершенными при каждом перемещении курсора по списку или REPEAT-структуре. При этом программа получает управление при каждом нажатии клавиш ВВЕРХ или ВНИЗ.
IMAGE-поля с атрибутом IMM, выводятся немедленно, позволяя любым строковым литералам, идущим за ними в описании SCREEN-структуры, перекрывать область рисунка. BUTTON с атрибутом IMM, завершается при нажатии ЛЕВОЙ кнопки мыши. Таким образом, можно непрерывно выполнять связанный с кнопкой код до тех пор, пока кнопка мыши не будет отпущена.
См. также: , , , , , ,



INDEX (индексная переменная для REPEAT)


INDEX(varible)

variable Метка численной переменной.

Атрибут INDEX называет переменную, которая как и индекс массива, задает активный в данный момент элемент REPEAT-структуры. Значение 1 активизирует первый элемент, а значение равное произведению параметров структуры REPEAT (down и across) активизирует последний элемент.
Если индексная переменная выходит за допустимые для НЕЕ пределы, то она сбрасывается в единицу. REPEAT INDEX проходит по строкам и по столбцам - сначала сверху вниз, а потом слева направо.
См. также:

INS (ввод - в режиме вставки)


INS
Атрибут INS можно использовать с полями типа ENTRY и TEXT для включения ввода в режиме вставки. Символа, введенные в режиме вставки, сдвигают введенные перед ними символы вправо. Цифры толкают другие цифры влево от десятичной точки. Для выключения режима вставки можно воспользоваться клавишей INS.
См. также: ,



ITEM (элемент выпадающего меню)


ITEM(текст)[,KEY()][,USE()][,TOGGLE]

текст Строковая константа, задающая выводимую на экран строку, связанную с ITEM.
KEY Задает код клавиши или одиночный символ, который немедленно выполняет этот элемент.
USE EQUATE-метка меню.
TOGGLE Этот элемент типа ВКЛ/ВЫКЛ.

ITEM описывает выбор из меню в структуре PULLDOWN. Текстовая строка может содержать амперсанд, который означает, что следующий за ним символ - "горячая" клавиша для этого поля. Нажатие такой клавиши БЕЗ ALT подсвечивает и исполняет данный элемент. Если в ТЕКСТе нет амперсанда, то в роли такой "горячей" клавиши выступает первый непустой символ ТЕКСТа.
Атрибут KEY назначает отдельную "горячую" клавишу для поля. Это может быть любой допустимый код клавиши, он также вызовет немедленное выполнение элемента, независимо от того,показано PULLDOWN на экране или нет. Если атрибут KEY задан для ITEM, то заданный им код клавиши будет всегда возвращаться функцией KEYCODE(), независимо от того, какая клавиша завершила этот элемент.
Полоска курсора подсвечивает отдельные ITEM-ы :) в структуре MENU. Каждый ITEM может быть связан с PROCEDURE, или неким кодом, который надо выполнить при выборе этого элемента.
Пример:
Pul]Down PULLDOWN
MENU
ITEM('&GL'),USE(?GL),KEY(AltG) !Hot key - Alt-G
ITEM('A&R'),USE(?AR),KEY(AltR) !Hot key - Alt-R
ITEM('A&P'),USE(?AP),KEY(A]tP) !Hot key - Alt-P
. .



KEY (клавиша быстрого выбора)


KEY( character )
keycode

character Задает символ для выбора данного пункта меню или SCREEN BUTTON. Этот параметр не чувствителен к регистру букв.
keycode Кларионовский код клавиши или EQUATE-метка кода клавиши.

Атрибут KEY для элементов структуры PULLDOWN MENU, ITEM, SCREEN IMAGE или SCREEN BUTTON задает "горячую" клавишу для выбора и выполнения данного поля. Такая "горячая" клавиша отличается от той, которая задается амперсандом тем, как она связана с полями MENU, ITEM или BUTTON. "Амперсандовые" "горячие" клавиши используются для ПЕРЕХОДА на поля типа MENU или ITEM. "Горячие" клавиши атрибута KEY используются дл НЕМЕДЛЕННОГО выполнения связанного с полем кода.
Если у какого-то поля есть атрибут KEY, то по завершении этого поля, функция KEYCODE() ВСЕГДА вернет код клавиши, заданный этим атрибутом, независимо от того, какая клавиша использовалась на самом деле.
Пример:
PuIlDown PULLDOWN
MENU('Options'),USE(?Options)
ITEM('43/50 Line Mode'),USE(?OptLine)
ITEM('Colors'),USE(?OptColor)
.
MENU('Quit'),USE(?Quit),KEY(CtrIX) !Ctrl-X - ВЫХОД
.
Screen SCREEN(5,15),CENTER
ROW(2,3) STRING('OK to continue?)
ROW(4,5) BUTTON(' OK '),KEY(EnterKey) !Enter - OK
COL(10) BUTTON(' Cancel '),KEY(EscKey) !Esc - отмена
.
См. также: , , , ,



LFT (выравнивание влево)


LFT
Этот атрибут используется с ENTRY-полями для выравнивания строковых данных влево. При обновлении USE-переменной, из строки удаляются ведущие пробелы.
Использование этого атрибута с TEXT-полями, позволяет перенос строк при редактировании.
См. также: ,



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

LOCAL (позиция, в которой открывается PULLDOWN)


LOCAL
Атрибут LOCAL указывает, что PULLDOWN-структура открывается на первой строке физического экрана. Если он пропущен, то PULLDOWN открывается на первой строке последнего открытого экрана, если это был виртуальный экран.
Первые строки физического и виртуального экранов различаются только тем, что первая строка физического экрана всегда остается на своем месте, в то время, как первая строка виртуального экрана может быть прокручена за пределы экрана физического. В этом случае, она возвращается на место при обращении к PULLDOWN если PULLDOWN-меню описано БЕЗ атрибута LOCAL.
Пример:
PuIlDown PULLDOWN,LOCAL !Открывать на первой строке ТЕКУЩЕГО
!экрана
См. также:



MAX (переменная-счетчик столбцов в REPEAT)


MAX(varible)

variable Метка численной переменной.

Атрибут MAX называет переменную, которая получает, во время работы программы, число столбцов экрана, занятых REPEAT-структурой. MAX, совместно с атрибутом EXPAND, позволяет использовать экраны с REPEAT-структурами, разработанные для режима 25 строк, в режимах 43/50 итд. строк. MAX-переменная позволяет вам во время исполнения определить, сколько элементов содержит REPEAT-структура. То есть появляется возможность писать некий обобщенный код для заполнения REPEAT-массива.
Пример:
Rows BYTE !Столбцов в REPEAT
Ndx BYTE !Индекс повторения
Amt DECIMAL(7,2),DIM(100) !Массив выплат
Screen SCREEN(25,80),PRE(Scr),COLOR(7),EXPAND(4)
REPEAT(12),INDEX(Ndx),MAX(Rows) !Переменная Rows
!получаю число строк
ROW(3,5) POINT(1,16),USE(?Point)
Amnt ROW(3,12) STRING(@N_7.2)
. .
CODE
OPEN(Screen)
LOOP Ndx = 1 TO Rows !Заполняем экран вы-
Scr:Amnt = Amt[Ndxl ! платами
.
См. также: ,



MENU (подменю в выпадающем меню)


MENU(текст)[,KEY()][,USE()][,COLOR()][,RIGHT()]
[ITEM()]
[MENU()]
multiple other ITEM and/or MENU statements
.

текст Строковая константа, задающая выводимую на экран строку, связанную с MENU.
KEY Задает код клавиши или одиночный символ, который немедленно выполняет этот элемент.
USE EQUATE-метка меню.
COLOR Цвета экрана для выборов в этом подменю.
RIGHT Указывает, что MENU появится на правом краю полосы меню на первой строке экрана.

MENU описывает выпадающее подменю в структуре PULLDOWN. Когда MENU выбрано, операторы MENU и/или ITEM в структуре MENU выводятся в отдельном окошке (дропбоксе). MENU не обязано содержать в себе другие операторы MENU или ITEM. Текстовая строка может содержать амперсанд, который означает, что следующий за ним символ - "горячая" клавиша для этого поля. Если MENU находится на полосе PULLDOWN, нажатие Alt вместе "горячей" клавишей подсвечивает и выполняет MENU. Если меню находится в другом MENU, то его выполнит нажатие "горячей" клавиши без ALT. Если в ТЕКСТе нет амперсанда, то в качестве "горячей" клавиши выступает первый непустой символ ТЕКСТа. Атрибут KEY назначает для этого подменю добавочную "горячую" клавишу. Это может быть любой допустимый код клавиши, он также вызовет немедленное выполнение элемента, независимо от того, показано PULLDOWN на экране или нет. Если атрибут KEY задан для MENU, то заданный им код клавиши будет всегда возвращаться функцией KEYCODE(), независимо от того, какая клавиша завершила этот элемент.
Дропбокс для MENU появляется прямо под ТЕКСТом в полосе PULLDOWN. Если выбрать клавишами ENTER или СТРЕЛКА ВЛЕВО вложенные в это подменю другие подменю, то они будут появляться справа от текущего подменю. СТРЕЛКА ВЛЕВО возвращает в предыдущий дропбокс.
Пример:
PuIlDown PULLDOWN !Полоса PULLDOWN
MENU('File'),USE(?File)!Выпадающее подменю
ITEM('Open'),USE(?FileOpen)
! этот элемент находится в подменю
ITEM('Close'),USE(?Fi]eClose)
MENU('Tools'),USE(?Fi]eTools) !Еще одно подменю
ITEM('Rebuild Keys'),USE(?FileTooIsRebuild)
. . !Конец обоих меню
MENU('Quit'),USE(?Quit)
!Этот элемент выполняется из полосы PULLDOWN
. .



MSG (вывод сообщения на экран)


MSG(text)

text Строковая константа или переменная, содержащая строку для вывода.

Этот атрибут можно использовать с полями типа ENTRY,CHECK,RADIO, STRING, TEXT, LIST, BUTTON и OPTION STRING. MSG выводит текстовую строку в Область Сообщений Экрана, задаваемую SETMSG. Если эта область не была задана SETMSG, то по умолчанию ей становится нижняя строка экран, начиная с 1 столбца и длиной 80 символов.
См. также: SETMSG



NAME (файл с графикой для показа)


NAME(filename)

filename Строковая константа или переменная, содержащая спецификацию (путь+имя) .PCX или .GIF файла.

Атрибут NAME поля IMAGE, задает имя файла с PCX или GIF рисунком
который надо показать.
Пример:
Screen SCREEN(20,30),PRE(Scr),GRAPHIC
ROW(3,5) IMAGE(14,20),NAME('picture.pcx')
.
См. также:



OPTION (описывает меню опций)


OPTION[,COLOR()][,TRN]
CHECK()
.
OPTION[USE()][,COLOR()][,TRN][,HLP()][,ESC()]
RADIO()
.
OPTION([picture])[USE()][,COLOR()][,TRN][,HLP()]
[,ESC()][,ALRT()][,IMM][,REQ][,SKIP][,PRE()]
[метка] STRING()
.

picture Шаблон формата используется для форматирования символов для вывода или присвоения USE-переменной. Этот параметр разрешен для STRING OPTION структур.
USE Переменная или EQUATE-метка поля. Этот параметр разрешен для RADIO или STRING OPTION структур.
COLOR Задает цвета экрана для данного поля. Этот параметр разрешен для структур CHECK, RADIO, и STRING OPTION.
TRN В графическом режиме в качестве цвета фона используется цвет фона перекрываемого изображения. Этот параметр разрешен для структур CHECK, RADIO, и STRING OPTION.
HLP Идентификатор окна помощи, связанного с этим полем. Этот параметр разрешен для структур RADIO или STRING OPTION.
ESC Поле, на которое перейти при нажатии ESC или BACKTAB. Этот параметр разрешен для структур RADIO или STRING OPTION.
ALRT Задает активные ALERT-клавиши для данного поля. Этот параметр разрешен для структур STRING OPTION.
IMM Поле считается завершенным, как только оно заполнено. Этот параметр разрешен для структур STRING OPTION.
REO Поле не может быть оставлено пустым или нулевым. Этот параметр разрешен для структур STRING OPTION.
SKIP Это поле не может использоваться для ввода данных. Этот параметр разрешен для структур STRING OPTION.
PRE Задает префикс структуры. Этот параметр разрешен для структур STRING OPTION.

Структура OPTION формирует на экране структуру меню. В структуре OPTION разрешены три типа полей: CHECK (чекбоксы), RADIOкнопки и STRING (строки). Поля разных типов не могут использоваться в одой и той же структуре OPTION. Нажатием горячей клавиши, заданной амперсандом в предшествующем операторе PROMPT, можно выбрать для ввода целиком структуру OPTION.
OPTION, содержащий операторы CHECK, группирует несколько чекбоксов вместе. Группа может иметь один общий цвет (атрибут COLOR оператора OPTION).

Стрелки вверх/вниз перемещают курсор-указатель с одного чекбокса на другой и при необходимости - с самого нижнего на самый верхний. Каждый чекбокс может быть переключен индивидуально (пробелом) не влияя на остальные чекбоксы в структуре OPTION. Каждый чекбокс может иметь собственную горячую клавишу, задаваемую амперсандом в его строке параметров. USE-переменные не разрешены для OPTION-ов, и функция CHOICE не влияет на этот тип OPTION-ов.
OPTION, содержащий RADIOкнопки позволяет выбрать только одну из списка, приведенного в структуре OPTION. Когда кнопка выбрана, любая другая выбранная ранее кнопка отключается (гаснет). USEпеременная получает значение строки от выбранной RADIOкнопки, а функция CHOICE возвращает относительную позицию кнопки в структуре OPTION.
OPTION, содержащий операторы STRING, работает как меню в структуре SCREEN. Каждая строка может быть подсвечена курсором и выбрана нажатием ENTER на обычном экране, или нажатием TAB на CUAэкране. USE-переменная обновляется значением строки, а функция CHOICE возвращает относительную позицию выбранной строки в структуре OPTION. Можно использовать необязательный шаблон формата. Он выводит значение текущей строки в верхний левый угол структуры OPTION, и обновляет его при перемещении курсора.
Пример:
ROW(5,6) OPTION !Начало структуры CHECK OPTION
ROW(6,9) CHECK('Deduct &Medical')!'Alt-M' для медиков
ROW(7,9) CHECK('Deduct &Dental') !'Alt-D' для стоматологов
ROW(8,9) CHECK('Deduct &AD&&D') !'Alt-A' для любителей RPG
. !Конец структуры OPTION
ROW(10,6) OPTION,USE(TaxSelection) !Начало структуры RADIO OPTION
ROW(11.9) RADIO('Pre-Tax'),MSG('Это было до сбора налогов')
ROW(12,9) RADIO('Post-Tax'),MSG('Это стало после сбора налогов')
.
ROW(15,6) OPTION !Begin item option structure
ROW(16,9) STRING('Process &Medical')
!'Alt-M' for medical procedure
ROW(17,9) STRING('Process &Dental')
!'Alt-D' for dental procedure
ROW(18,9) STRING('Process &AD&&D')!'Alt-A' for AD&D procedure
. !End option structure
См. также: , , ,

OVR (ввод - в режиме замены)


OVR
Этот атрибут используется с полями ENTRY и TEXT. Он переключает клавиатуру в режим замены. Во время ввода можно отменить его действие, нажав клавишу INS.
См. также: ,



PAINT (закраска части экрана)


PAINT(строк,столбцов),COLOR()[,TRN]

columns Сколько столбцов закрашивать. Целочисленная константа.
rows Сколько строк закрашивать. Целочисленная константа.
COLOR Цвет закраски.
TRN Прозрачная закраска.

При открытии SCREEN-структуры, все ее видеоатрибуты определяются ее атрибутом COLOR. PAINT изменяет байты видеоатрибутов в заданной прямоугольной области экрана.
Пример:
ROW(4,25) PAINT(13,32),COLOR(23)
!Закрасить голубым 13 строк по 32 столбца
ROW(6,58) PAINT(6,22),TRN
!Закрасить прозрачно 6 строк по 22 столбца



PAUSE (поле ожидания нажатия на клавишу)


PAUSE(строка)[,USE()][,COLOR()][,TRN][,HLP()][,ESC()]
[,ALRT()][,MSG()]

string Строковая константа или переменная, содержащая сообщение, выводимое во время ожидания.
USE EQUATE-метка поля, позволяющая операторам программы ссылаться на него.
COLOR Цвета данного поля.
TRN В графическом режиме, для изображения поля использовать только цвет переднего плана, оставляя фон "как есть".
HLP Идентификатор окна помощи, связанного с данным полем.
ESC Поле, на которое перейти при нажатии ESC или BACKTAB.
ALRT Задает ALERT-клавиши, активные для данного поля.
MSG Текст, выводимый в строке сообщений экрана.

Когда PAUSE-поле выбрано, на экран выводится строка string. Любая клавиша кроме ESC или BACKTAB завершает PAUSE-поле. Завершение PAUSE-поля убирает строку string с экрана.
PAUSE НЕ передает значение в USE-переменную. Тем не менее, вы можете ИСПОЛЬЗОВАТЬ (английская игра слов - USE=ИСПОЛЬЗОВАТЬ) EQUATE-метку, что позволяет вам определять это поле функцией FIELD для своих целей. PAUSE-поля обычно используются на НЕ-CUA экранах, для вывода сообщений типа "бьем/не бьем", требующих подтверждения от оператора.
Пример:
:
PAUSE('F10 - Облом, любая другая клавиша - продолжаем')|
,USE(?Complete)
:
CODE
CASE FIELD()
OF ?Complete
IF KEYCODE() = F10Key THEN RETURN.
.
См. также: FIELD



POINT (указатель структуры REPEAT)


POINT(строк,столбцов)[,USE()][,COLOR()][,TRN]
[,ALRT()][,HLP()][,ESC()][,REQ()][,MSG()][,IMM]

строк Высота указателя в строках.
столбцов Ширина указателя в символах.
USE EQUATE-метка поля, позволяющая ссылаться на него.
COLOR Цвета для данного поля.
TRN В графическом режиме, для изображения поля использовать только цвет переднего плана, оставляя фон "как есть".
HLP Идентификатор окна помощи, связанного с данным полем.
ESC Поле, на которое перейти при нажатии ESC или BACKTAB.
ALRT Задает ALERT-клавиши, активные для данного поля.
MSG Текст, выводимый в строке сообщений экрана.
REQ Указывает, что элемент должен быть выбран.
IMM Поле считается завершенным, как только оно подсвечено курсором.

POINT-поле создает полоску подсветки (курсор) позволяющую опера тору выбрать элемент из REPEAT-структуры. С другой стороны, оно устанавливает значение REPEAT INDEX. POINT-указатель формируется изменением цветов в покрываемой им области. Размер курсора определяется параметрами СТРОК и СТОЛБЦОВ. Пропущенный параметр считается равным единице. Верхний левый угол указателя находится в позиции, задаваемой его параметрами ROW и COL, и изменяется в пределах области, заданной параметрами DOWN и ACROSS (вниз и поперек) REPEAT-структуры, и параметром EVERY. Стрелки, клавиши Home и End позволяют оператору перемещаться в пределах структуры REPEAT. POINT НЕ подсвечивает полностью пустой элемент.
Следующие клавиши завершают POINT-поле, и устанавливают переменную REPEAT INDEX в относительную позицию в REPEAT. Они могут использоваться для передаче управления программе из REPEAT:
Tab (CUA) Enter (non-CUA) Ins Del
Backspace Pgup PgDn CtrlPgUp
CtrlpgDn Up (с самого верха) Down (с самого низа)
Любой алфавитно-цифровой символ.
POINT-поле завершается, если СТРЕЛКА ВВЕРХ (или BACKTAB для CUAрежима) нажата в самой первой позиции REPEAT-структуры, или СТРЕЛКА ВНИЗ нажата в самой последней позиции. Тем не менее, поле типа POINT с атрибутом REQ будет "свертываться" в последнюю/ первую позиции соответственно, без завершения.
Любой алфавитно-цифровой символ также завершит POINT-поле. Это позволяет программисту создавать "локаторные" поля. "Локаторное" поле динамически репозиционирует курсор не первую запись, содержащую введенные пользователем символы. Код для "локаторных" полей осуществляет "поиск с увеличением" для нахождения первой записи, содержащей данные, начинающиеся с этих символов.
Пример:
REPEAT(12),INDEX(Ndx)
ROW(3,5) POINT(1,16),USE(?Point)
Month COL(5) STRING(3)
. !Конец структуры REPEAT
См. также:





PROMPT (строка подсказки для следующего поля)


PROMPT(text)[,COLOR()][,TRN]

text Строковая константа или переменная, содержащая текст подсказки.
COLOR Задает цвета экрана для PROMPT
TRN Указывает, что в графическом режиме поле выводится только цветом переднего плана, оставляя фон как есть.

PROMPT задает текст, выводимый в связи со следующим за ним полем типа ENTRY, TEXT, LIST или OPTION. Текстовая строка PROMPT-а может содержать амперсанд (&), который означает, что следующий за амперсандом символ - "горячая" клавиша для вызова связанного поля. Одновременное нажатие Alt и "горячей клавиши" немедленно выбирает связанное поле типа ENTRY, TEXT, LIST или OPTION.
Пример:
ROW(6,14) PROMPT('Как Вас зовут: ')
ROW(6,30) ENTRY(@S20),USE(Name)



PULLDOWN (структура "выпадающее меню")


метка PULDOWN[,COLOR()][,KEY()][,SINGLE()][,SHADOW][,LOCAL]
DOUBLE()
FULL()
HALF()
[MENU()
[INTEM()]
[MENU()
[INTEM()]
.]
.]
.

COLOR Задает цвета вывода.
KEY "Горячая" клавиша для PULLDOWN-структуры.
SINGLE,DOUBLE,FULL,HALF Тип рамки для выпадающих меню.
SHADOW Если есть, то нужны тени под выпадающими меню
LOCAL Указывает, как открывать PULLDOWN - на первой строке физического или виртуального экрана (оставляя экран в том же самом положении)
MENU Подменю с отдельным выпадающим окошком.
ITEM Элемент меню.

PULLDOWN описывает SAA/CUA-подобную структуры выпадающего меню. PULLDOWN-структуры задают несколько возможностей выбора из меню, которые можно активизировать при исполнении оператора ACCEPT.
Все MENU и ITEM в структуре PULLDOWN нумеруются отрицательными числами в порядке, в котором они появляются в этой структуре, начиная с минус единицы (-1). Когда выбор сделан, функция FIELD возвращает номер выбранного элемента (ITEM).
В PULLDOWN-структурах есть два вида "горячих" клавиш. Первый тип служит для перемещения по элементам меню, его "горячие" клавиши задаются вставкой амперсанда прямо перед нужным символом в строке для MENU или ITEM, при этом, при работе такой символ выделен. Если же в строке нет амперсанда, то подсвечивается первый НЕпустой символ строки. Такие "горячие" клавиши используются вместе с клавишей ALT для вызова полосы выпадающего меню, если оно не видно на экране в данный момент (разумеется, меню уже должно быть открыто оператором OPEN) и/или выбора конкретного подменю (MENU) или элемента меню (ITEM).
Второй тип горячих клавиш, это клавиши, задаваемые атрибутом KEY для элементов MENU или ITEM. Они могут быть любыми разрешенными кодами клавиш (в т.ч. и EQUATE) и вызывают немедленное выполнение связанного с ними MENU или ITEM. Если атрибут KEY был задан для MENU или ITEM, то заданный им код клавиши будет всегда возвращаться функцией KEYCODE() при завершении MENU или ITEM, независимо от того, какой клавишей был завершен этот элемент.
Пример:
PullDown PULLDOWN !Полоса выпадающего меню
MENU('File'),USE(?File)!Описываем подменю
ITEM('Open'),USE(?FileOpen)
! элементы подменю
ITEM('Close'),USE(?FileClose)
ITEM('Save'),USE(?FileSave)
.
MENU('Options'),USE(?Options)
ITEM('43/50 Line Mode'),USE(?OptLine)
ITEM('Colors'),USE(?OptColor)
.
MENU('Quit'),USE(?Quit),KEY(CtrlQ).
!Этот элемент выполняется без подменю, прямо из полосы PULLDOWN
.



RADIO (поле радио-кнопка)


RADIO(text)[,COLOR()][,TRN][,MSG()]

text Строковая константа или переменная, содержащая выводимую на экран строку.
COLOR Задает цвета экрана для этого поля.
TRN Указывает, что в графическом режиме поле выводится только цветом переднего плана, оставляя фон как есть.
MSG Текст, выводимый в строке сообщений экрана.

RADIO-кнопки - это элементы меню в структурах OPTION. Если иное не задано через LOADSYMBOLS или USESYMBOLS, text выводится в скобках. Если кнопка выбрана, то она представляет собой символ бубей (ASCII 4 = ). Только одна кнопка из структуры OPTION может быть выбрана в один момент времени.
Пример:
ROW(10,6) OPTION,USE(TaxSelection)!Начало структуры радиокнопки
ROW(11,9) RADIO('Pre-Tax'),MSG('Было до сбора налогов')
ROW(12,9) RADIO('Post-Tax'),MSG('Стало после сбора налогов')
. !конец структуры
См. также: LOADSYMBOLS, USESYMBOLS



REPEAT (структура-посторение)


REPEAT(down,across)[,EVERY()][,INDEX()][,PRE()][,MAX()]
[POINT()]
fields to repeat
.

down Целочисленная константа, задающая число повторений сверху вниз. Если пропущено, подразумевается 1.
across Целочисленная константа, задающая число повторений слева направо. Если пропущено, подразумевается 1.
EVERY Число строк и столбцов между повторяющимися полями. По умолчанию - EVERY(1,1).
INDEX Индексная переменная для REPEAT-структуры.
PRE Префикс для меток в составе REPEAT-структуры.
MAX Переменная, получающая количество строк в REPEAT-структуре во время исполнения.
POINT Курсор-указатель, подсвечивающий отдельные элементы REPEAT-структуры.

REPEAT-структура может рассматриваться как "массив на экране". Каждое повторение структуры соответствует одному элементу массива. Общее число элементов - это произведение параметров down и across. Чаще всего в REPEAT-структуре используются поля типа STRING, для вывода прокручиваемой таблицы.
Кроме этого, в REPEAT-структуру можно помещать и ENTRY-поля. USE переменные ENTRY-полей, помещенных в REPEAT-структуру, должны иметь атрибут DIM, с размером большим или равным произведению параметров down и across. Каждая USE-переменная в REPEAT-структуре имеет свой атрибут DIM, она не может быть частью группы, имеющей атрибут DIM.
Номера повторяющимся полям назначаются в том порядке, в котором они появляются в SCREEN-структуре (так же, как и неповторяющимся полям). Не имеет значение, на каком элементе-повторении вы находитесь, поскольку номер поля будет один и тот же. Это означает, что EQUATE-метка REPEAT-структуры ссылается целиком на всю структуру, а не на отдельные ее элементы. Номер текущего элемента-повторения можно получить из переменной INDEX.
Повторяющиеся поля выводятся в позициях, определяемых их параметрами row и column, атрибутом EVERY и значением индексной перемен ной (REPEAT INDEX). При открытии экрана, выводится каждый элемент-повторение инициализированного поля. Первый элемент-повторение в REPEAT-структуре, выводится с позиции, задаваемой координатами самой структуры REPEAT.
Атрибут EVERY задает позиции последующих повторений, опираясь на число строк и столбцов, разделяющих отдельные элементы.
Когда поле-повторение получает данные, значение индексной переменной определяет, какой элемент массива USE-переменной получает введенное значение. Оператор ACCEPT автоматически увеличивает индексную переменную, по мере заполнения очередного элемента в REPEAT-структуре, если INDEX превысит максимальное значение, то для ввода выбирается следующее поле для экрана. Нажатие клавиши Esc (на НЕ-SAA/CUA экранах) или BACKTAB (для SAA/CUA экранов), уменьшает INDEX, заставляя выбрать предыдущий элемент-повторение. Если был выбран первый элемент, то ESC, BACKTAB, или СТРЕЛ КА ВВЕРХ выбирает для ввода следующее поле на экране.
Пример:
Следующая REPEAT-структура позволяет оператору обновлять массив
помесячных затрат:
LoadMonthArray PROCEDURE
Ndx BYTE !Индексная переменная
Amt DECIMAL(7,2),DIM(12) !Массив помесячных
!затрат
Month STRING('JanFebMarAprMayJunJulAugSepOctNovDec')
Mnth STRING(3),DIM(12),OVER(Month) !Этот массив наложен
!поверх массива Month
Screen SCREEN(16,22),AT(5,30),PRE(Scr),COLOR(7)
ROW(2,5) STRING('Помесячные затраты')
ROW(16,7) STRING('F10 - выход')
REPEAT(12),INDEX(Ndx)
ROW(3,5) POINT(1,16),USE(?Point),ESC(?-l),REQ
Month COL(5) STRING(3)
COL(12) ENTRY(@N_7.2),USE(Amt),INS
.. !Конец структур REPEAT и SCREEN
CODE
OPEN(Screen)
LOOP Ndx = 1 TO 12 !Заполняем месяцы
Scr:Month = Mnth[Ndx] ! на экране
.
LOOP
ALERT(2058) !Взводим клавишу F10
ACCEPT
IF KEYCODE() = 2058 !Если нажата F10
RETURN ! то выходим
. .
См. также:

REQ (поле не может быть нулевым или пустым)


REQ
Атрибут REQ означает, что поля ENTRY, TEXT, OPTION, или POINT требуют ввода в них. ТРЕБУЮЩИЕ строку поля ENTRY или TEXT не могут быть заполнены пробелами, а ТРЕБУЮЩЕЕ поле ENTRY не может быть нулем.
ТРЕБУЮЩИЕ поля типа OPTION или POINT, заставляют курсор "вернуть ся на верх или в низ структуры (что зависит от направления движения курсора). Требующие поля типа OPTION и POINT заставляют делать выбор, чтобы завершить это поле.
Поля типа BUTTON с атрибутом REQ, автоматически проверяют все остальные поля с этим же атрибутом на текущем экране, чтобы убедиться, что те поля не нулевые и не пустые. Это происходит и на не-CUA и на CUA экранах. Это позволяет пользователю перемещаться между полями с помощью мышки, оставаясь уверенным, что все ТРЕБУ ЮЩИЕ поля содержат правильные данные по завершении экрана.
На не-CUA экранах, попытка завершить ТРЕБУЮЩЕЕ поле с нулем или пробелом, вызывает звуковой сигнал и мигание этого поля. Исправить положение можно нажатием ESC или вводом корректного значения. На CUA экранах, поля с атрибутом REQ не проверяют своих данных пока не нажата "кнопка" с атрибутом REQ.
См. также: , , , , ,



REUSE (использовать ранее установленную палитру)


REUSE
Атрибут REUSE для IMAGE-полей указывает, что PCX или GIF-образ будет выведен на экран в палитре, установленной другим рисунком, который уже на экране. Если на экране нет других рисунков, то ис пользуется стандартная палитра вышего адаптера. Если же этот атрибут вовсе не задан, то используется собственная палитра рисунка, а выведенные ранее образы перекрашиваются.
Это атрибут нужен только для SVGA режима в 256 цветов. В 16-цвет ных VGA и EGA режимах используется только стандартная палитра выидеоадаптера.
Пример:
Screen SCREEN(20,30),PRE(Scr),GRAPHIC
ROW(3,5) IMAGE(14,20),NAME('picture.pcx'),REUSE
.
См. также: IMAGE



RIGHT (позиция для MENU)


RIGHT
Атрибут RIGHT указывает, что элемент меню должен появиться на самом правом краю полосы PULLDOWN. Этот атрибут игнорируется для элементов меню, появляющихся в дропбоксах.
Пример:
PuIlDown PULLDOWN
MENU('Options')
ITEM('43/50 Line Mode')
ITEM('Colors')
.
MENU('Quit'),RIGHT !Поместить на самом краю
.
См. также:



ROW (задает строку)


ROW(строка[,столбец])

строка Целая константа, означающая строку, в которой поле буде выведено на экран.
столбец Целая константа, означающая столбец, начиная с которого, поле или строка будет выведено на экран. Если пропущен, то подразумевается столбец из последнего оператора ROW или COL.

ROW управляет размещением полей и строк на экране. СТРОКА и СТОЛБЕЦ должны быть в пределах высоты и ширины экрана соответственно.
Пример:
ROW(4,12) PAINT(12,34),COLOR(7,4)
ROW(9) ENTRY(@Sl2),USE(Status)



SCREEN (описывает screen-структуру)


метка SCREEN([rows][,columns])[,AT()][,ALRT()][,CENTER]
[,COLOR()][,TRN][,EXPAND()][,GRAPHIC][,HLP()]
[,PRE()][,SHADOW][, ZOOM ][,CUA]
FADE
WIPE
FALL
[ROW()]
[COL()]
[BUTTON()]
[CHECK()]
[ENTERY()]
[IMAGE()]
[LIST()]
[OPTION
[CHECK()]
[RADIO()]
[метка] [STRING()]
.]
[PAINT()]
[PAUSE()]
[PROMT()]
[REPEAT()
[POINT()]
[multiple other fields]
.]
[метка] [STRING()]
[TEXT()]
.

метка Допустима в Кларион метка. Она требуется для оператора SCREEN и не обязательна для экранных STRING-полей.
rows Целочисленная константа, задающая число строк на экране. Под экраном, в данном случае, понимается окно, используемое SCREEN-структурой. Максимум - 255, но произведение ROWS и COLUMNS не может превышать 32767. Если этот параметр опущен, то изображение, затертое экраном не сохраняется.
columns Целочисленная константа, задающая число колонок на экране. Максимум - 255, но произведение ROWS и COLUMNS не может превышать 32767. Если этот параметр опущен, то изображение, затертое экраном не сохраняется.
AT Задает X и Y координаты для экрана, положение которого, фиксированно.
ALRT Задает клавиши завершения поля, активные на всем экране.
CENTER Указывает, что открываемое окно должно быть отцентрировано относительно физического экрана.
COLOR Задает основной цвет экрана.
TRN Указывает на то, что предыдущий экран может прозрачно "просвечивать" сквозь текущий.
EXPAND Задает строку экрана, которая дублируется если экран, разработанный для режима 25 строк, открывается в режиме 43/50 строк.
GRAPHIC Переводит дисплей в графический режим.
HLP Задает окно помощи, связанное с экраном.
PRE Задает префикс метки для STRING-переменных.
SHADOW Указывает, что вокруг окна экрана автоматически размещается тень.
ZOOM, FADE, WIPE, FALL WIPE, FALL CUA Управляет методом появления экрана на дисплее. Задает SAA/CUA-подобный пользовательский интерфейс.
ROW Задает номер строки для описания в SCREEN-структуре.
COL Задает столбец в последней заданной строке для описания элемента SCREEN-структуры.
BUTTON Описывает поле-кнопку.
CHECK Описывает поле, позволяющее пользователю выбирать одно из двух возможных состояний.
ENTRY Описывает поле для ввода данных.
IMAGE Описывает область графического экрана, в которой может быть показан файл типа GIF/PCX.
LIST Описывает прямоугольник на экране для просмотра списка элементов.
OPTION Описывает меню-подобную структуру, содержащую несколько полей типа CHECK, RADIO или STRING. Все поля в структуре OPTION, должны быть одного типа.
RADIO Описывает выборы в меню для OPTION-структур. Только одна радиокнопка из нескольких, может быть активна в отдельный момент.
STRING Объявляет экранную переменную или символьную константу для показа на экране.
PAINT Устанавливает байты видеоатрибутов или цвета в прямоугольной области экрана.
PAUSE Замораживает курсор и показывает приглашение нажать клавишу завершения поля.
PROMPT Задает строку, которая ассоциируется с полем типа ENTRY, TEXT, LIST или OPTION.
REPEAT Описывает циклический набор полей.
POINT Описывает указатель (яркую полоску) в структуре REPEAT, используемую для выбора единичного элемента REPEAT.
TEXT Описывает мнгострочное поле для редактирования текста подобно редактору.
<
SCREEN- структура объявляет экран. Внутри структуры могут быть описания и атрибуты, которые описывает вывод символов, цвета и
поля для пользовательского ввода. Когда экран активен, его строковые (STRING) поля с метками могут обрабатываться как любые другие поля данных с метками. Другой экран может быть открыт БЕЗ закрывания предыдущих, хотя активным может быть только один. Последний открытый экран и является активным.
SCREEN с параметрами ROWS и COLUMNS (размер не важен) описывает окно, которое автоматически сохраняет перекрываемое им видеоизображение. При закрытии экрана, сохраненное изображение восстанавливается. Если же параметры ROWS и COLUMNS опущены, то экран не сохраняет перекрытое изображение.
Экран может быть описан с размерами, большими чем у физического экрана (область, которую можно одновременно видеть на мониторе). Такой экран называется виртуальным. Размер видимой части виртуального экрана задается оператором SETAREA. При необходимости, можно использовать SETAREA для изменения размеров виртуальной рабочей области.
Виртуальный экран автоматически позиционируется так, чтобы его активное в данный момент поле было видно на физическом экране. Во время исполнения программы, когда активное поле находится за пределами физического экрана, рабочая область виртуального экрана сдвигается так, чтобы его верхний (или нижний, левый, правый) край находился двумя строками выше (ниже, левее, правее) выбранного поля.
SCREEN-структуры предлагают автоматическое позиционирование от поля-к-полю. Нажатие клавиши завершения завершает текущее активное поле и переводит курсор не следующее поле, подлежащее редактированию. Порядок выбора полей задается размещением описаний полей в описании экрана. Таким образом, порядок выбора полей НЕ зависит от атрибутов полей COL и ROW, задающих расположение на экране.
Все экранные структуры содержат полную поддержку мышки. Если перед запуском программы загружен драйвер мышки, достаточно выполнить команду SETMOUSE, и программа сможет работать с ней.


Оператор может перемещать физический экран по виртуальному с помощью мышки. Помещение курсора мышки на край экрана вызывает сдвиг или прокрутку физического экрана в пределах экрана виртуального.
Если оператор вручную переместил виртуальный экран так, что активное поле не видно на физическом экране, то автоматический выбор поля перенесет физический экран к выделенному полю, как только оператор нажмет какую-нибудь клавишу.
Если у экрана есть атрибут GRAPHIC, то монитор переключается в графический режим при открытии такого экрана. Максимальный размер графического экрана - 25x80. Из-за ограничений по памяти, в графическом режиме НЕ разрешены виртуальные экраны. Открываемые в последствии экраны без атрибута GRAPHIC не изменят режим дисплея; он останется графическим до тех пор, пока не будет закрыт первоначальный экран с атрибутом GRAPHIC. Если какой-нибудь из последующих экранов больше, чем 25 x 80, программа аварийно завершит работу.
Атрибут GRAPHIC требуется только для экранов с IMAGE-полями. Все остальные экраны работают одинаково как в текстовом, так и графическом режимах. Текстовый, конечно, намного быстрее чем графический, потому, что требуется перемещать гораздо меньше данных.
Некоторые поля позволяют описать "горячие" клавиши, которые задаются амперсандом. Символ, стоящий за амперсандом и есть "горячая клавиша" поля. Для перехода к такому полю, надо нажать ALT и "горячую" клавишу.
Пример:
Screen SCREEN(75,160),PRE(Scr) !A virtual screen
!(declarations) ! fields, strings, etc
. !End screen structure
См. также: SETAREA,

SHADOW (автоматическая тень под окном)


SHADOW
Атрибут SHADOW вызывает автоматическое размещение "теней" у нижнего и правого краев окна или поля-кнопки, для имитации трехмерного эффекта. Тени - прозрачны, т.е. лежащий под ними текст виден как бы в дымке. SHADOW обычно используется в SCREEN-структурах, размер которых меньше физического экрана.
В PULLDOWN-меню, SHADOW выделяет тенью только "выпадающие" подменю.
Пример:
Screen1 SCREEN(15,50),SHADOW !Automatic shadowing around screen
!(declarations) ! declare fields etc.
. !End of screen structure
См. также: ,



SINGLE, DOUBLE, FULL, HALF (виды рамок для меню)


SINGLE(color)
DOUBLE(color)
FULL(color)
HALF(color)

color Код цветового стиля для символов рамки.

Эти атрибуты задают, какой тип символов рамок будет использоваться для всех подменю в PULLDOWN-структуре. Для отдельного PULLDOWN-меню может быть задан только один из этих типов рамки.
SINGLE одинарные линии
DOUBLE двойные линии
FULL блоки полной высоты
HALF блоки полной высоты слева и справа, блоки половин-
ной высоты снизу и сверху.
Пример:
PullDown PULLDOWN,SINGLE(5) !Рамка из одинарных линий
.
См. также:



SKIP (пропустить это поле)


SKIP
Атрибут SKIP используется с полями ENTRY, TEXT, STRING OPTION и LIST. Поле с атрибутом SKIP не может редактироваться человеком или активизироваться оператором SELECT. SKIP создает экранные поля "только для просмотра". Его USE-переменная выводится на экран оператором DISPLAY.
Пример:
Screen SCREEN(20,60),PRE(Scr)
ROW(6,14) ENTRY(@S24),USE(Name),SKIP!Только для показа
ROW(15,10) TEXT(3,50),USE(Rec:Notes),SKIP
!и текст тоже
ROW(19,5) PAUSE('Press any key to continue')
. !Весь экран - только для просмотра
См. также: , , ,



STRING (экранная переменная - строка)


длина
[метка] STRING (значен.)[,COLOR][,TRN][,MSG()]
формат

метка Имя, которое позволяет обращаться к полю.
длина Числовая константа, задающая длину строки. В этом случае, строка изначально пуста.
значение Строковая константа или переменная, содержащая начальное значение строки. ДЛИНА строки становится равной длине ЗНАЧЕНИЯ.
формат Используется для форматирования ЗНАЧЕНИЯ строки. ДЛИНА, в таком случае, будет такой, чтобы вместить отформатированную строку. ЗНАЧЕНИЕ в этом случае - пусто.
COLOR Задает цвета экрана для этого поля.
TRN Указывает, что в графическом режиме поле выводится только цветом переднего плана, оставляя фон как есть. Таким образом, можно наложить строку на графический рисунок.
MSG Текст, выводимый на строке сообщений экрана, которая задается функцией SETMSG.

STRING выводится на экран в относительной позиции (ROW,COL) от верхнего левого угла экрана. STRING это единственный тип переменных, который можно описать в SCREEN-структурах.
К экранной строке с меткой, можно обратиться как и к любой другой переменной, пока открыт содержащий ее экран. Она занимает видеопамять и требует, также, обычной памяти и специальной обработки для выполнения любых математических операций. Скажем, для увеличения значения СТРОКИ, ее надо преобразовать в число, увеличить, преобразовать число обратно в строку и вновь записать получившуюся строку в видеопамять. Гораздо эффективней будет использовать числовые переменные для вычислений, и уже их значения присваивать экранным строкам.
Пример:
Screen SCREEN(3,30),PRE(Scr),CENTER
ROW(1,1) STRING('') ! Рисуем
ROW(2,1) STRING('') ! рамочку
ROW(3,1) STRING('') !
Msg ROW(2,5) STRING(20) !Поле для сооб-
!щений
.



TEXT (область для ввода текста)


TEXT(строк,столбцов),USE()[,COLOR()][,TRN][,HLP()]
[ESC()][,LFT][,REQ][,ЃINSЃ][,ЃCAPЃ][,ALRT()]
ЃOVRЃ ЃUPRЃ
[,MSG()][,SKIP]

строк Целочисленная константа, задающая число строк в TEXT-поле.
столбец Целочисленная константа, задающая число столбцов в TEXT-поле.
USE Задает переменную, которая принимает введенное в TEXT-поле значение.
COLOR Задает цвета экрана для этого поля.
TRN Указывает, что в графическом режиме поле выводится только цветом переднего плана, оставляя фон как есть.
HLP Задает идентификатор окна помощи, связанного с этим полем.
ESC Поле, на которое перейти при нажатии клавиш ESC или BACKTAB.
LFT Разрешает перенос слов во вводимых данных.
REQ Поле не может быть пустым или нулевым.
INS/OVR Режим ввода - ВСТавка/ЗАМена.
UPR/CAP В каком режиме происходит ввод - ВСЕ БУКВЫ ЗАГЛАВНЫЕ или Первая Буква Каждого Слова.
ALRT ALERT-клавиши, активные для данного поля.
MSG Текст, выводимый в строке сообщений экрана.
SKIP Это поле нельзя выбрать для ввода данных.

TEXT-поле, это многорядное строковое поле с переносом слов, и вертикальной прокруткой, в SCREEN-структуре. Как и ENTRY-поле, TEXT-поле может отличаться по длин от своей USE-переменной. Длина TEXT-поля, это произведение параметров СТРОК и СТОЛБЦОВ. Если USE-переменая длиннее, чем TEXT-поле, то она делится на сегменты, длиной по СТОЛБЦОВ символов. Эти сегменты можно прокручивать вертикально в TEXT-поле так, что СТРОК сегментов USE-переменной одновременно видны в TEXT-поле в любой момент времени. Если же USE-переменная короче, чем TEXT-поле, то можно ввести не больше символов, чем длина USE-переменной.
Когда TEXT-поле выбрано, курсор помещается в первый столбец первой строки. Клавиша ENTER переводит курсор в первый столбец следующей строки. Таким образом, ENTER эквивалента нажатию клавиш СТРЕЛКА ВНИЗ и HOME. Нажав ENTER на последней строке TEXT-поля, можно вызвать прокрутку поля вверх на одну строку, до тех пор, пока еще есть доступные для прокрутки сегменты USE-переменной. Нажатие ENTER или СТРЕЛКИ ВНИЗ на последнем сегменте, вызывает завершение поля и обновление USE-переменной.

Атрибут ALRT или оператор ALERT можно использовать для назначения клавиши, которая завершает поле, не дожидаясь заполнения всех строк. ALERT-клавиши не обновляют USE-переменную, поэтому надо использовать оператор UPDATE.
Стрелки ВВЕРХ и ВНИЗ, клавиши PgUp, PgDn, Ctrl-PgUp и Ctrl-PgDn позволяют прокручивать USE-переменную в TEXT-поле. Стрелки ВВЕРХ и ВНИЗ прокручивают за раз на один сегмент вверх или вниз с первой или последней строки TEXT-поля. PgUp и PgDn прокручивают сразу СТРОК сегментов. Ctrl-PgUp и Ctrl-PgDn переходят к первому или последнему сегменту USE-переменной. Нажатие ВВЕРХ из первого сегмента, приводит к выбору предыдущего поля, нажатие ВНИЗ из последнего сегмента, вызывает обновление USE-переменной и выбор следующего поля.
Перенос слов разрешается атрибутом LFT. Перенос слов забивает хвост каждого сегмента пробелами так, чтобы слово попало целиком в следующий сегмент, если иначе оно попадает сразу в два сегмента. Таким образом, USE-переменные TEXT-полей становятся "чувствительными к ширине." Если чувствительная к ширине переменная использована в TEXT-поле переменной ширины, между словами появятся ненужные пробелы, и слова могут разбивать строки.
Пример:
ROW(18,15) TEXT(4,60),USE(Act:Comments),HLP('Comments')
ROW(20,10) TEXT(3,50),USE(Rec:Notes),LFT,ESC(?Rec:Phone)
ROW(10,15) TEXT(10,60)USE(Emp:History),LFT

TOGGLE (элемент-переключатель типа ВКЛ/ВЫКЛ)


TOGGLE(varible)

variable Метка целочисленной переменной.

Атрибут TOGGLE для элемента ITEM структуры PULLDOWN, указывает на то, что ITEM - переключатель. Когда ITEM включен, VARIABLE=1 и после ТЕКСТА связанного с ITEM появится значок (v). Когда же ITEM выключен, VARIABLE станет равной нулю, а значок (v) исчезнет.
ITEM можно включить/выключить нажатием на нем клавиши ENTER, или присвоением нуля или единице переменной VARIABLE из исполняемого кода.
Пример:
LineMode BYTE(1) !Переключатель заранее включен
PuIlDown PULLDOWN
MENU('Options')
ITEM('43/50 Line Mode'),TOGGLE(LineMode) !Переключатель
ITEM('Colors')
. .
См. также:





TRN (прозрачное изображение)


TRN
Атрибут TRN разрешен только для операторов PAINT или SCREEN в текстовом режиме. Это позволяет закрытому экраном изображению проглядывать через текущий экран, делая этот экран или закрашенный прямоугольник прозрачными. (С.П.А. - Ну и фразочка!)
В графическом режиме, любое экранное поле с атрибутом TRN выводится только цветом переднего плана, оставляя фон как есть. Таким образом, можно делать надписи НА рисунках, сквозь которые будет виден рисунок.
См. также:



UPR (ввод преобразовывать в верхний регистр)


UPR
Атрибут UPR используется с полями ENTRY и TEXT для преобразования всех введенных БУКВ в заглавные.
См. также: ,



USE (связать с полем переменную или метку)


USE( variable )
label

variable Метка переменной, принимающей введенные данные.
метка EQUATE-метка поля или меню.

USE с параметром-переменной поддерживает поля ENTRY, TEXT,CHECK, и RADIO (или STRING) OPTION переменной, которая обновляется при вводе данных. Когда поле завершено (завершен ввод данных в поле) эта переменная получает введенное значение.
Для IMAGE-полей, USE(variable) задает переменную, которая содержит PCX или GIF-образ для вывода. Обычно, такая переменная - это MEMO-поле с атрибутом BINARY.
USE(label) предлагает способ обращения к полю операторами программы.Параметр label может быть использован для полей RADIO или STRING OPTION, CHECK, TEXT и ENTRY. Метка должна использоваться для полей POINT, PAUSE и BUTTON в SCREEN-структурах, и для полей MENU и ITEM в структурах PULLDOWN.
Пример:
ROW(l,l) ENTRY.USE(?FirstField)
ROW(6,14) ENTRY(@S24),USE(Name)
ROW(8,16) TEXT(2,20),USE(comments)
ROW(10,8) CHECK('Check String'),USE(CheckVar)
ROW(12,20) PAUSE('Press any key to continue'),USE(?Pause)
См. также: , , , , , , ,



ZOOM, FADE, WIPE, FALL (методы открытия экрана)


ZOOM
FADE
WIPE
FALL
Эти атрибуты позволяют открыть экран с использованием некоторых эффектов. Только один метод может быть применен к одному экрану. Эти атрибуты не действуют в графическом режиме.
ZOOM окно "вырастает" на экране
FADE окно "проявляется" на экране посимвольно
WIPE окно "втирается" в экран
FALL окно "выпадает" на экран
Пример:
Screen1 SCREEN(12,12),ZOOM
Screen2 SCREEN(25,80),FADE
Screen3 SCREEN(50,180),WIPE
Screen4 SCREEN(10,30),FALL