Экраны Кларион.............................................. 8-1
Что такое Screen....................................... 8-1
Equate-метки полей..................................... 8-1
Equate-метки меню...................................... 8-2
Screen-структуры............................................ 8-3
SCREEN (описывает screen-структуру).................... 8-3
AT (задает координаты экрана).......................... 8-7
CENTER (центрирование на физическом экране)............ 8-7
CUA (объявляет пользовательский интерфейс типа SAA/CUA) 8-8
EXPAND (задает размножаемую строку).................... 8-8
GRAPHIC (задает графический режим)..................... 8-9
SHADOW (автоматическая тень под окном)................. 8-9
ZOOM, FADE, WIPE, FALL (методы открытия экрана)........ 8-10
Позиционирование экранных полей............................. 8-11
ROW (строка)........................................... 8-11
COL (столбец).......................................... 8-11
Поля структуры SCREEN....................................... 8-12
BUTTON (поле-кнопка)................................... 8-12
CHECK (поле отметки (чекбокс).......................... 8-14
ENTRY (поле для ввода)................................. 8-15
IMAGE (поле-рисунок)................................... 8-17
LIST (список (листбокс)................................ 8-19
OPTION (меню опций).................................... 8-21
PAINT (закраска участка экрана)........................ 8-23
PAUSE (поле ожидания нажатия на клавишу)............... 8-24
POINT (указатель структуры REPEAT)..................... 8-25
PROMPT (поле подсказки для следующего поля)............ 8-27
RADIO (поле-радиокнопка)............................... 8-28
REPEAT (структура-повторение).......................... 8-29
STRING (экранная переменная)........................... 8-31
TEXT (область для ввода текста)........................ 8-32
Атрибуты полей.............................................. 8-34
ALRT (установить клавишу завершения поля).............. 8-34
CAP (первые буквы слов делать заглавными).............. 8-35
COLOR (задать цвета показа)............................ 8-36
COLS (задает столбцы в LIST-структуре)................. 8-37
ESC (куда перейти при нажатии ESC)..................... 8-39
EVERY (установить промежуток для REPEAT)............... 8-39
FILL (переменная, получающая значение из листбокса).... 8-40
FROM (очередь для просмотра через LIST)................ 8-40
FIX (заголовки листбокса).............................. 8-41
HIDE (скрыть содержимое поля).......................... 8-42
HLP (идентификатор окна помощи для данного поля)...... 8-42
HSCROLL, VSCROLL, HVSCROLL (линейки прокрутки для LIST) 8-42
IMM (немедленое исполнение)............................ 8-43
INDEX (индексная переменная для REPEAT)................ 8-43
INS (ввод - в режиме вставки).......................... 8-43
LFT (выравнивание влево)............................... 8-44
MAX (переменная-счетчик столбцов в REPEAT)............. 8-44
MSG (вывод сообщения на экран)......................... 8-45
NAME (файл с графикой для показа)...................... 8-45
OVR (ввод - в режиме замены)........................... 8-45
REQ (поле не может быть нулевым или пустым)............ 8-46
REUSE (использовать ранее установленную палитру)....... 8-46
SKIP (пропустить это поле)............................. 8-47
TRN (прозрачное изображение)........................... 8-47
UPR (ввод преобразовывать в верхний регистр)........... 8-47
USE (связать с полем переменную или метку)............. 8-48
Структуры выпадающих меню (Pull-Down)....................... 8-49
PULLDOWN (структура "выпадающее меню")................. 8-49
SINGLE, DOUBLE, FULL, HALF (виды рамок для меню)....... 8-51
LOCAL (позиция, в которой открывается PULLDOWN)........ 8-51
Поля в PULLDOWN............................................. 8-52
ITEM (элемент выпадающего меню)........................ 8-52
MENU (подменю в выпадающем меню)....................... 8-53
Атрибуты полей в PULLDOWN................................... 8-54
KEY (клавиша быстрого выбора).......................... 8-54
RIGHT (позиция для MENU)............................... 8-55
TOGGLE (элемент-переключатель)......................... 8-55
ЭКРАНЫ КЛАРИОН
----------------------------------------------------------------
Что такое 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 не является необходимым.
----------------------------------------------------------------
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-метками, что
предлагает способ обращения к этим полям из программы.
----------------------------------------------------------------
Equate-метки меню
================================================================
В PULLDOWN-структурах, компилятор назначает каждому полю MENU и
ITEM свой номер. Эти номера полей - отрицательные, начинаются с
минус единицы (-1) и назначаются полям по мере их появления в
описании PULLDOWN-структуры.
Equate-метки меню для PULLDOWN то же самое, что Equate-метки по-
лей для SCREEN. Они всегда ничинаются со знака вопроса (?). Поля
MENU и ITEM в PULLDOWN-структурах могут иметь USE-переменные,
которые могут быть только Equate-метками меню, что предоставляет
способ обращения к этим полям из программы.
SCREEN-СТРУКТУРЫ
----------------------------------------------------------------
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 лее.
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, SETMOUSE
----------------------------------------------------------------
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
----------------------------------------------------------------
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
----------------------------------------------------------------
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
----------------------------------------------------------------
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
См. также: SETTEXT
----------------------------------------------------------------
GRAPHIC (задает графический режим)
================================================================
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
----------------------------------------------------------------
SHADOW (автоматическая тень под окном)
================================================================
SHADOW
----------------------------------------------------------------
Атрибут SHADOW вызывает автоматическое размещение "теней" у ниж-
него и правого краев окна или поля-кнопки, для имитации трехмер-
ного эффекта. Тени - прозрачны, т.е. лежащий под ними текст ви-
ден как бы в дымке. SHADOW обычно используется в SCREEN-струк-
турах, размер которых меньше физического экрана.
В PULLDOWN-меню, SHADOW выделяет тенью только "выпадающие" под-
меню.
Пример:
Screen1 SCREEN(15,50),SHADOW !Automatic shadowing around screen
!(declarations) ! declare fields etc.
. !End of screen structure
См. также: PULLDOWN, BUTTON
----------------------------------------------------------------
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
ПОЗИЦИОНИРОВАНИЕ ЭКРАННЫХ ПОЛЕЙ
----------------------------------------------------------------
ROW (задает строку)
================================================================
ROW(строка[,столбец])
----------------------------------------------------------------
строка Целая константа, означающая строку, в кото-
рой поле буде выведено на экран.
столбец Целая константа, означающая столбец, начиная
с которго, поле или строка будет выведено на
экран. Если пропущен, то подразумевается
столбец из последнего оператора ROW или COL.
ROW управляет размещением полей и строк на экране. СТРОКА и СТОЛ
БЕЦ должны быть в пределах высоты и ширины экрана соответсвенно.
Пример:
ROW(4,12) PAINT(12,34),COLOR(7,4)
ROW(9) ENTRY(@Sl2),USE(Status)
----------------------------------------------------------------
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
ПОЛЯ СТРУКТУРЫ SCREEN
----------------------------------------------------------------
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)
!трехстрочная кнопка
----------------------------------------------------------------
CHECK (поле отметки (чекбокс)
================================================================
CHECK(text),USE()[,COLOR()][,TRN][,MSG()][,HLP()]
[,ESC()]
----------------------------------------------------------------
text Строковая константа или переменная, содержа-
щая текст для вывода на экран.
USE Целочисленная переменная или EQUATE-метка.
COLOR Цвета для данного поля.
TRN В графическом режиме цвет фона - прозрачный,
и через него просвечивает фон предыдущего
изображения.
MSG Текст, который будет выведен в строку сооб-
щений экрана.
HLP Задает экран подсказки, связанный с этим по-
лем.
ESC Указвает поле, на которое надо перейти при
нажатии ESC или BACKTAB.
CHECK это поле с двумя состояниями - вкл/выкл. Чекбокс помещает-
ся на 1 пробел левее строки, заданной как параметр оператора
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
----------------------------------------------------------------
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)
----------------------------------------------------------------
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')
!Строка накладывается на рисунок
.
См. также: BUTTON, SHOWIMAGE
----------------------------------------------------------------
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
----------------------------------------------------------------
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-
переменная получает значение строки от выбраннойt 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
См. также: CHECK, RADIO, STRING, PROMPT
----------------------------------------------------------------
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
См. также: 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)
----------------------------------------------------------------
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 ! то выходим
. .
См. также: POINT
----------------------------------------------------------------
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('<201,205{22},187>') ! Рисуем
ROW(2,1) STRING('<186,32{22},186>') ! рамочку
ROW(3,1) STRING('<200,2O5{22},188>') !
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
АТРИБУТЫ ПОЛЕЙ
----------------------------------------------------------------
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
----------------------------------------------------------------
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
.
См. также: ENTRY, TEXT
----------------------------------------------------------------
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('<10,10>',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 !А может быть из второго?
.
См. также: LIST, FIX
----------------------------------------------------------------
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
См. также: ENTRY, TEXT, MENU, PAUSE, POINT
----------------------------------------------------------------
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
.
----------------------------------------------------------------
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 получает выбранное значение
См. также: LIST
----------------------------------------------------------------
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
.
См. также: LIST
----------------------------------------------------------------
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('<10,10>',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 !Выбрано из второго столбца?
.
См. также: LIST, COLS
----------------------------------------------------------------
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-файл должен быть открыт
перед вызовом окна.
См. также: ENTRY, TEXT, CHECK, LIST, BUTTON, OPTION, PAUSE,
POINT, SCREEN, HELP
----------------------------------------------------------------
HSCROLL, VSCROLL, HVSCROLL (линейки прокрутки для LIST)
================================================================
HSCROLL
VSCROLL
HVSCROLL
----------------------------------------------------------------
Параметры HSCROLL, VSCROLL и HVSCROLL помещают в листбокс линей-
ки прокрутки. HSCROLL - горизонтальную вниз листбокса, VSCROLL -
вертикальную справа, а HVSCROLL - обе. Линейки прокрутки занима-
ют одну строку или один столбец из LIST(строк,столбцов).
Вертикальные линейки прокрутки позволяют прокручивать список
мышью вверх и вниз, а горизонтальные - панорамировать его мышью
влево/вправо.
----------------------------------------------------------------
IMM (немедленое исполнение)
================================================================
IMM
----------------------------------------------------------------
Поля ENTRY или TEXT с атрибутом IMM считаются завершенными, как
только они полностью забиты данными, без нажатия ENTER или TAB.
Структура OPTION с атрибутом IMM, завершается, как только нажат
первый непустой символ, содержащийся в элементах меню, или нажа-
та "Горячая" клавиша, задаваемая амперсандом в строке. Поля типа
LIST или POINT с атрибутом IMM, считаются завершенными при каж-
дом перемещении курсора по списку или REPEAT-структуре. При этом
программа получает управление при каждом нажатии клавиш ВВЕРХ
или ВНИЗ.
IMAGE-поля с атрибутом IMM, выводятся немедленно, позволяя любым
строковым литералам, идущим за ними в описании SCREEN-структуры,
перекрывать область рисунка. BUTTON с атрибутом IMM, завершается
при нажатии ЛЕВОЙ кнопки мыши. Таким образом, можно непрерывно
выполнять связанный с кнопкой код до тех пор, пока кнопка мыши
не будет отпущена.
См. также: ENTRY, TEXT, OPTION, LIST, POINT, BUTTON, IMAGE
----------------------------------------------------------------
INDEX (индексная переменная для REPEAT)
================================================================
INDEX(varible)
----------------------------------------------------------------
variable Метка численной переменной.
Атрибут INDEX называет переменную, которая как и индекс массива,
задает активный в данный момент элемент REPEAT-структуры. Значе-
ние 1 активизирует первый элемент, а значение равное произведе-
нию параметров структуры REPEAT (down и across) активизирует по-
следний элемент.
Если индексная переменная выходит за допустимые для НЕЕ пределы,
то она сбрасывается в единицу. REPEAT INDEX проходит по строкам
и по столбцам - сначала сверху вниз, а потом слева направо.
См. также: REPEAT
----------------------------------------------------------------
INS (ввод - в режиме вставки)
================================================================
INS
----------------------------------------------------------------
Атрибут INS можно использовать с полями типа ENTRY и TEXT для
включения ввода в режиме вставки. Символя, введенные в режиме
вставки, сдвигают введенные перед ними символы вправо. Цифры -
толкают другие цифры влево от десятичной точки. Для выключения
режима вставки можно воспользоваться клавишей INS.
См. также: ENTRY, TEXT
----------------------------------------------------------------
LFT (выравнивание влево)
================================================================
LFT
----------------------------------------------------------------
Этот атрибут используется с ENTRY-полями для выравнивания стро-
ковых данных влево. При обновлении USE-переменной, из строки
удаляются ведущие пробелы.
ИСпользование этого атрибута с TEXT-полями, позволяет перенос
строк при редактировании.
См. также: ENTRY, TEXT
----------------------------------------------------------------
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 ! платами
.
См. также: EXPAND, REPEAT
----------------------------------------------------------------
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')
.
См. также: IMAGE
----------------------------------------------------------------
OVR (ввод - в режиме замены)
================================================================
OVR
----------------------------------------------------------------
Этот атрибут используется с полями ENTRY и TEXT. Он переключает
клавиатуру в режим замены. Во время ввода можно отменить его дей
ствие, нажав клавишу INS.
См. также: ENTRY, TEXT
----------------------------------------------------------------
REQ (поле не может быть нулевым или пустым)
================================================================
REQ
----------------------------------------------------------------
Атрибут REQ означает, что поля ENTRY, TEXT, OPTION, или POINT
требуют ввода в них. ТРЕБУЮЩИЕ строку поля ENTRY или TEXT не мо-
гут быть заполнены пробелами, а ТРЕБУЮЩЕЕ поле ENTRY не может
быть нулем.
ТРЕБУЮЩИЕ поля типа OPTION или POINT, заставляют курсор "вернуть
ся на верх или в низ структуры (что зависит от направления дви-
жения курсора). Требующие поля типа OPTION и POINT заставляют
делать выбор, чтобы завершить это поле.
Поля типа BUTTON с атрибутом REQ, автоматически проверяют все
остальные поля с этим же атрибутом на текущем экране, чтобы убе-
диться, что те поля не нулевые и не пустые. Это происходит и на
не-CUA и на CUA экранах. Это позволяет пользователю перемещаться
между полями с помощью мышки, оставаясь уверенным, что все ТРЕБУ
ЮЩИЕ поля содержат правильные данные по завершении экрана.
На не-CUA экранах, попытка завершить ТРЕБУЮЩЕЕ поле с нулем или
пробелом, вызывает звуковой сигнал и мигание этого поля. Испра-
вить положение можно нажатием ESC или вводом корректного значе-
ния. На CUA экранах, поля с атрибутом REQ не проверяют своих
данных пока не нажата "кнопка" с атрибутом REQ.
См. также: BUTTON, ENTRY, TEXT, OPTION, REPEAT REUSE
----------------------------------------------------------------
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
----------------------------------------------------------------
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')
. !Весь экран - только для просмотра
См. также: ENTRY, TEXT, OPTION, LIST
----------------------------------------------------------------
TRN (прозрачное изображение)
================================================================
TRN
----------------------------------------------------------------
Атрибут TRN разрешен только для операторов PAINT или SCREEN в
текстовом режиме. Это позволяет закрытому экраном изображению
проглядывать через текущий экран, делая этот экран или закрашен-
ный прямоугольник прозрачными. (С.П.А. - Ну и фразочка!)
В графическом режиме, любое экранное поле с атрибутом TRN выво-
дится только цветом переднего плана, оставляя фон как есть. Та-
ким образом можно делать надписи НА рисунках, сквозь которые бу-
дет виден рисунок.
См. также: PAINT
----------------------------------------------------------------
UPR (ввод преобразовывать в верхний регистр)
================================================================
UPR
----------------------------------------------------------------
Атрибут UPR используется с полями ENTRY и TEXT для преобразова-
ния всех введенных БУКВ в заглавные.
См. также: 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)
См. также:ENTRY, TEXT, CHECK, OPTION, PAUSE, POINT, BUTTON,
EQUATE-метки полей
СТРУКТУРЫ PULLDOWN (выпадающие меню)
----------------------------------------------------------------
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
.
----------------------------------------------------------------
SINGLE, DOUBLE, FULL, HALF (виды рамок для меню)
================================================================
SINGLE(color)
DOUBLE(color)
FULL(color)
HALF(color)
----------------------------------------------------------------
color Код цветового стиля для символов рамки.
Эти атрибуты задают, какой тип символов рамок будет использо-
ваться для всех подменю в PULLDOWN-структуре. Для отдельного
PULLDOWN-меню может быть задан только один из этих типов рамки.
SINGLE одинарные линии
DOUBLE двойные линии
FULL блоки полной высоты
HALF блоки полной высоты слева и справа, блоки половин-
ной высоты снизу и сверху.
Пример:
PullDown PULLDOWN,SINGLE(5) !Рамка из одинарных линий
.
См. также: Коды Цветовых Стилей
----------------------------------------------------------------
LOCAL (позиция, в которой открывается PULLDOWN)
================================================================
LOCAL
----------------------------------------------------------------
Атрибут LOCAL указывает, что PULLDOWN-структура открывается на
первой строке физического экрана. Если он пропущен, то PULLDOWN
открывается на первой строке последнего открытого экрана, если
это был виртуальный экран.
Первые строки физического и виртуального экранов различаются
только тем, что первая строка физического экрана всегда остается
на своем месте, в то время, как первая строка виртуального экра-
на может быть прокручена за пределы экрана физического. В этом
случае, она возвращается на место при обращении к PULLDOWN если
PULLDOWN-меню описано БЕЗ атрибута LOCAL.
Пример:
PuIlDown PULLDOWN,LOCAL !Открывать на первой строке ТЕКУЩЕГО
!экрана
См. также: PULLDOWN
Поля в PULLDOWN
----------------------------------------------------------------
ITEM (элемент выпадающего меню)
================================================================
ITEM(текст)[,KEY()][,USE()][,TOGGLE]
----------------------------------------------------------------
текст Строковая константа, задающая выводимую на
экран строку, связанную с ITEM.
KEY Задает код клавиши или одиночный символ, ко-
торый немедленно выполняет этот элемент.
USE EQUATE-метка меню.
TOGGLE Этот элемент типа ВКЛ/ВЫКЛ.
ITEM описывает выбор из меню в структуре PULLDOWN. Текстовая
строка может содержать амперсанд, который означает, что следую-
щий за ним символ - "горячая" клавиша для этого поля. Нажатие
такой клавиши БЕЗ ALT подсвечивает и исполняет данный элемент.
Если в ТЕКСТе нет амперсанда, то в роли такой "горячей" клавиши
выступает первый непустой символ ТЕКСТа.
Атрибут KEY назначает отдельную "горячую" клавишу для поля. Это
может быть любой допустимый код клавиши, он также вызовет немед-
ленное выполнение элемента, независимо от того,показано PULLDOWN
на экране или нет. Если атрибут KEY задан для ITEM, то заданный
им код клавиши будет всегда возвращаться функцией KEYCODE(), не-
зависимо от того, какая клавиша завершила этот элемент.
Полоска курсора подсвечивает отдельные ITEM-ы :) в структуре ME-
NU. Каждый 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
. .
----------------------------------------------------------------
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 появляется прямо под ТЕКСТом в полосе PULL-
DOWN. Если выбрать клаишами 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
. .
Атрибуты полей в PULLDOWN
----------------------------------------------------------------
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 - отмена
.
См. также: PULLDOWN, MENU, ITEM, IMAGE, BUTTON
----------------------------------------------------------------
RIGHT (позиция для MENU)
================================================================
RIGHT
----------------------------------------------------------------
Атрибут RIGHT указывает, что элемент меню должен появиться на
самом правом краю полосы PULLDOWN. Этот атрибут игнорируется для
элементов меню, появляющихся в дропбоксах.
Пример:
PuIlDown PULLDOWN
MENU('Options')
ITEM('43/50 Line Mode')
ITEM('Colors')
.
MENU('Quit'),RIGHT !Поместить на самом краю
.
См. также: MENU
----------------------------------------------------------------
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')
. .
См. также: ITEM
Знаете ли Вы, что абстрактный класс - это класс, содержащий хотя бы один виртуальный метод. Абстрактные классы не бывают изолированными, т.е. всегда абстрактный класс должен быть наследуемым. Поскольку у чисто виртуального метода нет тела, то создать объект абстрактного класса невозможно. Абстрактным классом можно назвать класс, специально определенный для обеспечения наследования характеристик порожденными классами.