ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 13


		  ГЛАВА 8 - Screen-структуры

Экраны Кларион.............................................. 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-переменная
устанавливается в  единицу и  значок "отметка"  (ы) появляется в
рамочке (до тех пор,  пока иное не задано  командами 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



Яндекс цитирования