TERMINAL/IO

Name

TERMINAL/IO -- 

Function

nPosition           ACHOICE(<nTop>, <nLeft>, <nBottom>, <nRight>, <acMenuItems>, [<alSelectableItems> | <lSelectableItems>], [<cUserFunction>], [<nInitialItem>], [<nWindowRow>])
nChoice             ALERT( <cMessage>, [<aOptions>] )
nCol                COL()
NIL                 COLORSELECT(<nColorIndex>)
NIL                 DEVOUT(<exp>, [<cColorString>])
NIL                 DEVOUTPICT(<exp>, <cPicture>, [<cColorString>])
NIL                 DEVPOS(<nRow>, <nCol>)
NIL                 DISPBEGIN()
NIL                 DISPBOX(<nTop>, <nLeft>, <nBottom>, <nRight>, [<cnBoxString>], [<cColorString>])
nDispCount          DISPCOUNT()
NIL                 DISPEND()
NIL                 DISPOUT(<exp>, [<cColorString>])
objGet              GETACTIVE([<oGet>])
NIL                 GETAPPLYKEY(<oGet>, <nKey>, <GetList>, <oMenu>, <nMsgRow>, <nMsgLeft>, <nMsgRight>, <cMsgColor>)
NIL                 GETDOSETKEY(<bKeyBlock>, <oGet>)
lSuccess            GETPOSTVALIDATE(<oGet>)
lSuccess            GETPREVALIDATE(<oGet>)
NIL                 GETREADER(<oGet>, <GetList>, <oMenu>, <nMsgRow>, <nMsgLeft>, <nMsgRight>, <cMsgColor>)
lBoolean            ISCOLOR() | ISCOLOUR()
lReady              ISPRINTER()
nColumn             MAXCOL()
nRow                MAXROW()
MenuID              MENUMODAL(<oTopBar>, <nSelection>, <nMsgRow>, <nMsgLeft>, <nMsgRight>, <cMsgColor>)
NIL                 NOSNOW(<lToggle>)
NIL                 OUTERR(<exp list>)
NIL                 OUTSTD(<exp list>)
nColumn             PCOL()
nRow                PROW()
NIL                 QOUT([<exp list>]) --> NIL QQOUT([<exp list>])
lCurrentState       READEXIT([<lToggle>])
bCurrentFormat      READFORMAT([<bFormat>])
lCurrentMode        READINSERT([<lToggle>])
nReadkeyCode        READKEY()
lCurrentSetting     READKILL([<lKillRead>])
<lUpdated>          READMODAL(<aGetList>, [<nGet>], [<oMenu>], [<nMsgRow>, <nMsgLeft>, <nMsgRight>, <cMsgColor>])
lCurrentSetting     READUPDATED([<lChanged>])
cVarName            READVAR()
NIL                 RESTSCREEN([<nTop>], [<nLeft>], [<nBottom>], [<nRight>], <cScreen>)
nRow                ROW()
cScreen             SAVESCREEN([<nTop>], [<nLeft>], [<nBottom>], [<nRight>])
NIL                 SCROLL([<nTop>], [<nLeft>],[<nBottom>], [<nRight>], [<nVert>] [<nHoriz>])
lCurrentSetting     SETBLINK([<lToggle>])
lCurrentSetting     SETCANCEL([<lToggle>])
cColorString        SETCOLOR([<cColorString>])
nCurrentSetting     SETCURSOR([<nCursorShape>])
bCurrentAction      SETKEY(<nInkeyCode>, [<bAction>])
lSuccess            SETMODE(<nRows>, <nCols>)
<nRow>              SETPOS(<nRow>, <nCol>)
NIL                 SETPRC(<nRow>, <nCol>)
NIL                 TONE(<nFrequency>, <nDuration>)
lChange             UPDATED()

Description

Function COL()

 COL() --> номер колонки

COL() - экранная функция, которая возвращает текущий номер колонки позиции курсора на экране. Значение, возвращаемое COL(), изменяется, как только изменяется позиция курсора. Все команды работы с экраном могут изменять позицию курсора. В дополнение к сказанному, команды CLEAR, CLEAR SCREEN или CLS автоматически устанавливают значение COL() в 0.

Функцию COL() можно использовать для установки новой позиции курсора относительно его текущей позиции. COL() чаще всего используется в сочетании с функцией ROW() и всех модификациях команды @. Можно использовать функции COL() и ROW() для создания процедур или функций формирования экранных изображений, не связанных конкретным их размещением на экране. Таким процедурам или функциям обычно в качестве параметров передаются координаты левого верхнего угла изображения.

Если в качестве устройства выдачи информации установлен принтер, все команды @...SAY изменяют значение функций PCOL() и PROW(), а функции COL() и ROW() своих значений не меняют. Если необходимо получить координаты при выдаче информации на принтер, пользуйтесь функциями PCOL() и PROW().

Function COLORSELECT()

 COLORSELECT(<nColorIndex>) --> NIL

COLORSELECT() activates the specified color pair from the current list of color attributes (established by SETCOLOR()). Manifest constants for <nColorIndex> are defined in Color.ch.

 Color.ch constants
 ------------------------------------------------------------------------
 Constant          Value
 ------------------------------------------------------------------------
 CLR_STANDARD      0
 CLR_ENHANCED      1
 CLR_BORDER        2
 CLR_BACKGROUND    3
 CLR_UNSELECTED    4
 ------------------------------------------------------------------------
 

COLORSELECT() does not alter the current SET Color setting.

This table describes the scope of the xClipper color settings affected by SETCOLOR():

 Color settings
 ------------------------------------------------------------------------
 Setting        Scope
 ------------------------------------------------------------------------
 Standard       All screen output commands and functions
 Enhanced       GETs and selection highlights
 Border         Screen border (not supported on EGA and VGA monitors)
 Background     Not supported
 Unselected     Unselected GETs
 ------------------------------------------------------------------------
 

Function DEVOUT()

 DEVOUT(<выражение>,[<цвета>]) -->NIL

DEVOUT() - полноэкранная функция вывода, которая выводит значение выражения на текущее устройство, в текущую позицию курсора или печатающей головки. Вызов функции DEVOUT() в сочетании с DEVPOS() используется в STD.CH для реализации команды @...SAY.

Function DEVOUTPICT()

 DEVOUTPICT(<exp>, <cPicture>, [<cColorString>]) --> NIL

DEVOUTPICT() is a full-screen display function that writes the value of a single expression to the current device at the current cursor or printhead position. DEVOUTPICT() is used in combination with DEVPOS() in Std.ch to implement the @...SAY command used with a PICTURE clause.

Function DEVPOS()

 DEVPOS(<номер строки>,<номер колонки>]) -->NIL

DEVPOS() - функция среды, управляющая перемещением курсора или печатающей головки принтера - текущего установленного устройства. Если устройство - экран, то DEVPOS() действует так же, как функция SETPOS(), то есть перемещает курсор в заданное положение и изменяет ROW() и COL() в соответствии с новой позицией курсора.

Если текущее устройство устройство - принтер, то функция DEVPOS() перемещает головку принтера. Это достигается посредством посылки на принтер необходимого числа символов перевод строки и/или перевод страницы. Если текущее значение левой границы, установленное командой SET MARGIN, больше нуля, то оно добавляется к <номер колонки>. После того, как печатающая головка принтера займет позицию, заданную <номер строки> и <номер колонки>, функции PROW() и PCOL() изменят свое возвращающее значение. Если или <номер строки>, или <номер колонки> меньше, чем текущие значения PROW() и PCOL(), печатающая головка принтера перемещается согласно следующим правилам:

Если <номер строки> меньше, чем PROW(), на принтер автоматически посылается команда перевода страницы (код CHR(12)) и необходимое количество символов перевод строки (CHR(10)) для перемещения печатающей головки принтера в положение <номер строки> на следующей странице.

Если <номер колонки>, включая текущее значение, установленное командой SET MARGIN меньше, чем PCOL(), то на принтер посылается команда перевод каретки (CHR(13) и необходимое число символов пробела для перемещения печатающей головки в положение <номер колонки>.

Для того, чтобы обойти эти правила, можно перед использованием DEVPOS() с помощью функции SETPRC() присвоить PROW() и PCOL() новые значения. Более подробную информацию смотрите в SETPRC().

Если команда SET PRINTER перенаправляет вывод с принтера в файл, DEVPOS() изменяет состояние файла, а не принтера.

Function DISPBEGIN()

 DISPBEGIN() --> NIL

DISPBEGIN() - экранная функция, сообщающая системе вывода xClipper, что прикладная программа собирается выполнить ряд действий на экране.

DISPBEGIN(), используемая в сочетании с DISPEND(), позволяет системе вывода на экран буферизировать экранные изменения данных. Вывод на экран, который осуществляется после DISPBEGIN(), но перед DISPEND(), может накапливаться во внутренних буферах. При исполнении функции DISPEND() любые отложенные изменения выполняются на экране. Это удобно в программах, где сложные экранные изображения медленны и нежелательно изображение хода действий. Вызов функций DISPBEGIN() и DISPEND() необязателен. В них нет необходимости при нормальном выводе.

Function DISPBOX()

 DISPBOX( <верхняя строка>, <левая колонка>,
 <нижняя строка>, <правая колонка>, [<строка рамки>],
 [<строка цвета>] ) --> NIL

DISPBOX - экранная функция, рисует рамку в заданных координатах экрана и в заданных цветах. Если <строка рамки> определена, DISPBOX() рисует рамку на экране, используя граничные и заполняющие символы. DISPBOX() рисует рамку, используя граничные символы из выражения <строка рамки>, если она задана, начиная с верхнего левого угла по направлению часовой стрелки, и заполняет пространство внутри рамки девятым символом. Если девятый символ не задан, пространство экрана внутри рамки не заполняется, а существующие текст и цвет внутри рамки не изменяются.

После выполнения функции DISPBOX() курсор занимает положение в верхнем углу рамки с координатами <верхняя строка> + 1 и <левая колонка> + 1. Значения функций ROW() и COL() отражают новую позицию курсора.

Различные конфигурации границ рамки определены в файле описаний Box.ch, помещаемом в директорию \include.

<верхняя строка>

, <левая колонка>, <нижняя строка>, <правая колонка> определяют координаты рамки. Граничные значения номеров колонок - от 0 до MAXCOL(), граничные значения номеров строк - от 0 до MAXROW(). Если выражения <нижняя строка> и <правая колонка> больше, чем значения MAXROW() и MAXCOL() соответственно, то нижний правый угол будет размещен за видимой частью экрана.

<строка рамки>

- числовое или символьное выражение, которое определяет символы изображения рамки. Если задано как числовое выражение, то при значении 1 рисуется одинарная рамка, а при значении 2 - двойная рамка. Все остальные числовые значения рисуют одинарную рамку. Если <строка рамки> - символьное выражение, то она задает символы, которые используются для рисования рамки. Это строка из восьми символов изображения границ рамки и одного символа - заполнителя. Если <строка рамки> определяется как один символ, то этот символ используется для рисования всей рамки. Если <строка рамки> не задана, рисуется одинарная рамка.

<строка цвета>

- определяет цвета изображаемой рамки. Если <строка цвета> не задана, то рамка рисуется в стандартном цвете текущей цветовой спецификации, заданной функцией SETCOLOR().

Returns :

DISPBOX() всегда возвращает NIL.

See also : SCROLL()

Function DISPCOUNT()

 DISPCOUNT() --> nDispCount

You can use DISPCOUNT() to determine the current display context. xClipper uses display contexts to buffer and to supervise screen output operations.

Each call to DISPBEGIN() defines a new display context. Output to the display context is suppressed until a matching DISPEND() statement executes.

Since you may nest DISPBEGIN() calls, use DISPCOUNT() to determine whether there are pending screen refresh requests.

Function DISPEND()

 DISPEND() --> NIL

DISPEND() - экранная функция, которая сообщает подсистеме вывода xClipper, что прикладная программа закончила выполнение ряда буферизируемых действий с экраном.

DISPEND(), используемая в сочетании с DISPBEGIN(), позволяет подсистеме вывода буферизировать экранные изменения данных. Это может быть важно для программ, где сложные экранные изображения медленны и нежелательно изображение хода действий.

Более подробную информацию смотрите в DISPBEGIN().

Function DISPOUT()

 DISPOUT(<выражение>, [<строка цвета>]) --> NIL

DISPOUT() - функция простого вывода, выводящая значение вычисляемого выражения на экран в текущую позицию курсора. Эта функция не зависит от режима, установленного командой SET DEVICE - вывод всегда производится на экран.

Function GETACTIVE()

 GETACTIVE() --> Get объект

GETACTIVE() - функция среды, предоставляет доступ к активному Get-объекту в процессе выполнения READ. Текущим активным Get-объектом является тот, который имеет фокус ввода во время вызова функции GETACTIVE().

Function GETAPPLYKEY()

 GETAPPLYKEY(<oGet>, <nKey>, <GetList>, <oMenu>,
 <nMsgRow>, <nMsgLeft>, <nMsgRight>, <cMsgColor>)
 --> NIL

GETAPPLYKEY() is a Get system function that applies an INKEY() value to a Get object. Keys are applied in the default way. That is, cursor movement keys change the cursor position within the GET, data keys are entered into the GET, etc.

If the key supplied to GETAPPLYKEY() is a SET KEY, GETAPPLYKEY() will execute the set key and return; the key is not applied to the Get object.

Function GETDOSETKEY()

 GETDOSETKEY(<bKeyBlock>, <oGet>) --> NIL

GETDOSETKEY() is a function that executes a SET KEY code block, preserving the context of the passed Get object.

Note that the procedure name and line number passed to the SET KEY block are based on the most recent call to READMODAL().

Function GETPOSTVALIDATE()

 GETPOSTVALIDATE(<oGet>) --> lSuccess

GETPOSTVALIDATE() is a Get system function that validates a Get object after editing, including evaluating Get:postBlock (the VALID clause) if present.

The return value indicates whether the GET has been postvalidated successfully. If a CLEAR GETS is issued during postvalidation, Get:exitState is set to GE_ESCAPE and GETPOSTVALIDATE() returns true (.T.).

Function GETPREVALIDATE()

 GETPREVALIDATE(<oGet>) --> lSuccess

GETPREVALIDATE() is a function that validates the Get object for editing, including evaluating Get:preBlock (the WHEN clause) if it is present. The logical return value indicates whether the GET has been prevalidated successfully.

Get:exitState is also set to reflect the outcome of the prevalidation:

 Get:exitState Values
 ------------------------------------------------------------------------
 Getexit.ch   Meaning
 ------------------------------------------------------------------------
 GE_NOEXIT    Indicates prevalidation success, okay to edit
 GE_WHEN      Indicates prevalidation failure
 GE_ESCAPE    Indicates that a CLEAR GETS was issued
 ------------------------------------------------------------------------
 

Note that in the default system, a Get:exitState of GE_ESCAPE cancels the current GET and terminates READMODAL().

Function GETREADER()

 GETREADER(<oGet>, <GetList>, <oMenu>, <nMsgRow>,
 <nMsgLeft>, <nMsgRight>, <cMsgColor>) --> NIL

GETREADER() is a GET function that implements the standard READ behavior for GETs. By default, READMODAL() uses the GETREADER() function to read Get objects. GETREADER() in turn uses other functions in Getsys.prg to do the work of reading the Get object.

Function ISCOLOR()

 ISCOLOR() | ISCOLOUR() --> логическое значение

ISCOLOR() - это функция работы с экраном, которая позволяет Вам принять решение относительно типа экрана, чтобы установить атрибуты (цветной или монохромный). Отметим, что некоторые монохромные адаптеры с графическими возможностями возвращают значение "истина" (.Т.).

Function ISPRINTER()

 ISPRINTER() --> признак готовности.

ISPRINTER() является функцией работы с принтером и определяет, готов ли параллельный порт LPT1 начать вывод на печать. ISPRINTER() является аппаратурно-зависимой функцией, и поэтому работает только на системах с IBM - совместимым BIOS.

ISPRINTER() используется для определения состояния готовности принтера перед началом вывода на печать. Однако если во время вывода на печать происходит ошибка, то генерируется ошибка времени выполнения.

Function MAXCOL()

 MAXCOL() --> номер колонки

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

Function MAXROW()

 MAXROW() --> номер строки

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

Function MENUMODAL()

 MENUMODAL(<oTopBar>, <nSelection>, <nMsgRow>,
 <nMsgLeft>, <nMsgRight>, <cMsgColor>) --> MenuID

MENUMODAL() is a user-interface function that implements the pull-down menu system in xClipper. It is part of the open architecture Get system of xClipper. MENUMODAL() is similar to the READ command in that it waits for the user to perform an action. However, the MENUMODAL() function will only respond to menu actions.

To implement a menu object at the same time as other objects, use the READMODAL() function which has one of its arguments as TopBarMenu object.

When the user chooses a menu item, control is passed to the code block associated with that particular menu item. Code blocks are defined using the MenuItem class.

The menu items can be selected by using either the keyboard or the mouse. To select a menu item with the mouse, simply select its TopBarMenu item with the mouse and then choose the appropriate PopUp menu item.

Note: The MENUMODAL() function will take one menu event from the user and then terminate. To avoid this, the following can be used, and the same will allow the program to continuously accept menu events:

DO WHILE (MENUMODAL(themenu,...) <> ExitMenu) ENDDO

The following table lists the active keys that can be used during MENUMODAL():

 MENUMODAL() Navigation Keys
 ------------------------------------------------------------------------
 Key                 Action
 ------------------------------------------------------------------------
 Left arrow, Ctrl+S  Move to the next TopBarMenu item to the left.  If
 there are no more items to the left, the rightmost
 TopBarMenu item will be selected.
 Right arrow, Ctrl+D Move to the next TopBarMenu item to the right.  If
 there are no more items to the right, the leftmost
 TopBarMenu will be selected.
 Up arrow, Ctrl+E    Move to the previous PopUp menu item.  If there are
 no more items above the current item, the menu item
 on the bottom will be selected.
 Down arrow, Ctrl+X  Move to the next PopUp menu item.  If there are no
 more items below the current item, the menu item on
 the top will be selected.
 ------------------------------------------------------------------------
 

Function NOSNOW()

 NOSNOW(<признак>) --> NIL

NOSNOW() используется для подавления "снега" на мониторах типа CGA. Обычно пользователю следует предоставлять средство подавления "снега" в разделе конфигурационной настройки программы. Для этой цели можно использовать вызов функции NOSNOW().

Function PCOL()

 PCOL() --> номер колонки

PCOL() - функция управления печатающим устройством, которая сообщает номер столбца расположения головки печатающего устройства после последней позиции печати. PCOL() эффективна только после установок SET DEVICE TO PRINTER или SET PRINTER ON. Функция PCOL() работает аналогично функции COL(), только с принтером, а не с экраном.

Функция PCOL() изменяет свое значение в следующих случаях:

В начале программы PCOL() устанавливается на ноль.

Команда EJECT устанавливает PCOL() на ноль.

После операции печати значение PCOL() соответствует номеру колонки последней отпечатанной позиции плюс один.

Функция SETPRC() присваивает PCOL() заданное значение.

PCOL() используется в сочетании с PROW() для печати данных относительно последнего напечатанного значения на той же строке. Это значительно облегчает процесс выравнивания колонок при печати отчетов в виде таблиц. Значение печатается в следующей колонке, номер которой определяется как (PCOL() - <смещение>). Заметим, что PCOL() эффективна только для выравнивания колонок при печати данных фиксированной длины. Для того, чтобы гарантировать фиксированную ширину колонок, формируйте вывод, используя функцию TRANSFORM(), команду @...SAY...PICTURE или любую из PAD функций.

Function PROW()

 PROW() --> номер строки

PROW() - это функция принтера, которая сообщает номер строки, где находится печатающая головка после последней операции печати.

Функция PROW() может обновлять свои значения только при выполненных установках SET DEVICE TO PRINTER или SET PRINTER ON. PROW() аналогична функции ROW(), за исключением того, что она относится к принтеру, а не к экрану. Значения PROW() могут быть изменены в следующих случаях:

В начале программы значение PROW() - ноль

EJECT сбрасывает PROW() в ноль

Операция печати устанавливает PROW() на позицию последней отпечатанной строки

SETPRC() устанавливает PROW() на заданную позицию строки

PROW() используется в сочетании с функцией PCOL() для выбора новой строки для печати относительно последней отпечатанной строки. Если печатающая головка устанавливается на новую строку с помощью управляющего кода перевод строки (CHR(10)) или прогон страницы (CHR(12)), то значение функции PROW() не обновляется и, таким образом, не возвращает ожидаемого значения.

Чтобы предотвратить это противоречие, PROW() устанавливается на правильное значение с помощью SETPRC() после посылки на принтер какого-либо из этих символов.

Function READEXIT()

 READEXIT([<переключатель>]) --> логическое значение установки

READEXIT() - это функция среды, которая сообщает текущее назначение клавиш <стрелка вверх> и <стрелка вниз> как клавиш, которые пользователь может нажать, чтобы выйти из команды READ, обрабатывающей первый или последний GET-объекты в списке GetList. Обычно в состав клавиш выхода из команды READ при обработке последней команды GET входят только клавиши <PgUp>, <PgDn>, <Esc> или <Enter>.

Function READFORMAT()

 READFORMAT([<bFormat>]) --> bCurrentFormat

READFORMAT() is a Get system function that accesses the current format file in its internal code block representation. It lets you manipulate the format file code block from outside of the Get system's source code.

To set a format file, use SET FORMAT (see the SET FORMAT entry ) or READFORMAT().

READFORMAT() is intended primarily for creating new READ layers. The code block that READFORMAT() returns, when evaluated, executes the code that is in the format file from which it was created.

Function READINSERT()

 READINSERT([<переключатель>]) --> текущий режим вставки

READINSERT() - функция среды, которая возвращает текущее состояние режима вставки для команды READ и функции MEMOEDIT() и по желанию включает или выключает режим вставки в зависимости от значения аргумента <переключатель>. Когда READINSERT() возвращает значение "ложь"(.F.) и пользователь вводит данные в буфер GET-объекта во время выполнения READ или MEMOEDIT(), то символы перезаписываются. Когда READINSERT() возвращает "истину" (.T.), вводимые символы вставляются, раздвигая текст. Режим вставки - это установка, принадлежащая системе, а не какому-либо особому объекту.

READINSERT() может быть выполнена до или во время выполнения команды READ или функции MEMOEDIT(). При использовании в сочетании с READ, READINSERT() может быть вызвана внутри предложений WHEN или VALID оператора @...GET или внутри процедуры, определенной в команде SET KEY. При использовании в сочетании с MEMOEDIT() она может быть вызвана с помощью функции пользователя так же, как и с помощью процедуры, установленной командой SET KEY.

Function READKEY()

 READKEY() --> код клавиши

READKEY() - функция работы с клавиатурой, которая эмулирует функцию READKEY() в dBASE III PLUS. Ее цель - определить, какую клавишу нажал пользователь для завершения команды READ. Если возвращаемое значение функции UPDATED() - "истина" (.T.), то READKEY() возвращает код + 256.

Клавиши <стрелка вверх> и <стрелка вниз> могут быть использованы для выхода из команды READ только в том случае, если функция READEXIT() имеет значение "истина"(.Т.). Ее значение по умолчанию - "ложь"(.F.). Для наиболее полного использования функции READKEY() в начале программы необходимо выполнить функцию READEXIT(.T.).

Функция READKEY() оставлена для обеспечения совместимости со старыми версиями xClipper, и ее использование не рекомендуется. Для определения последней клавиши, полученной из буфера клавиатуры, лучше использовать функцию LASTKEY(). Если нажатая клавиша - клавиша выхода из команды READ, то LASTKEY() вернет INKEY-код для этой клавиши. Чтобы определить, был ли во время выполнения READ изменен какой-либо буфер GET-объекта, более предпочтительна функция UPDATED().

Function READKILL()

 READKILL([<lKillRead>]) --> lCurrentSetting

READKILL() is a Get system function that lets you control whether or not to terminate the current READ.

Unless directly manipulated, READKILL() returns true (.T.) after you issue a CLEAR GETS (see the CLEAR GETS entry ) for the current READ; otherwise, it returns false (.F.).

By accessing the function directly, however, you can control the READKILL() flag with its function argument and use it to create new READ layers.

Function READMODAL()

 READMODAL(<массив GET-объектов>) --> NIL

READMODAL() - функция интерфейса пользователя, которая реализует режим полноэкранного редактирования для команды GET и поставляется как часть открытой архитектуры GET-системы xClipper. READMODAL() похожа на команду READ, но принимает массив GetList как аргумент и не инициализирует его повторно в момент завершения. Поэтому Вы можете создавать множественные списки GET-объектов и активизировать их в любое время выполнения программы, пока массив активации видим.

Для сохранения совместимости с предыдущими версиями xClipper, GET- система в xClipper реализуется с помощью общего массива, называемого GetList. Каждый раз при выполнении команды GET, GET-объект создается и добавляется к текущему видимому массиву GetList. Стандартная команда READ преобразуется в вызов READMODAL(), используя массив GetList в качестве своего аргумента. Если предложение SAVE не задано, то после завершения функции READMODAL() переменной GetList присваивается пустой массив.

За дальнейшей информацией о GET-системе обратитесь к разделу "GET-система" в главе "Основные концепции".

За справочной информацией по GET-объектам обратитесь в раздел "GET-класс" главы "Стандартные классы".

За дальнейшей информацией по составу используемых по умолчанию клавиш функцией READMODAL() обратитесь к ссылке на команду READ в главе "Стандартные команды".

Function READUPDATED()

 READUPDATED([<lChanged>]) --> lCurrentSetting

READUPDATED() is a Get system function intended primarily for creating new READ Layers. It is identical in functionality to UPDATED() (see the UPDATED() entry ), except that it allows the UPDATED() flag to be set.

READUPDATED() enables you to manipulate the UPDATED() flag from outside of the Get system's source code.

Function READVAR()

 READVAR() --> имя переменной

READVAR() - функция среды, прежде всего используемая для организации контекстно-зависимых подсказок (help) связанных с GET-объектами и меню c выделенной строкой.

READVAR() действует только во время реализации команд READ и MENU TO. При использовании каких-либо других команд или функций, переводящих программу в режим ожидания, таких как ACCEPT, INPUT, WAIT, ACHOICE(), DBEDIT() или MEMOEDIT(), она возвращает нулевую строку (""). Она может быть включена либо в процедуру, заданную в команде SET KEY, либо в функцию пользователя, вызываемую из предложений WHEN или VALID GET-объекта.

Function RESTSCREEN()

 RESTSCREEN( <верхняя строка>, <левая колонка>,
 <нижняя строка>, <правая колонка>, <образ экрана>) --> NIL

RESTSCREEN() - функция работы с экраном, которая "перерисовывает" сохраненную с помощью функции SAVESCREEN() область экрана. Восстановленная область может быть размещена как на старом, так и на новом месте экрана.

Если вы задаете новое местоположение экрана, новая область экрана должна иметь тот же размер, иначе вы получите неопределенный результат. Для использования RESTSCREEN() с целью восстановления областей экрана, сохраненных с помощью SAVESCREEN(), задайте координаты области 0, 0, MAXROW(), MAXCOL().

Предупреждение: Команды SAVE SCREEN и RESTORE SCREEN и функции SAVESCREEN() и RESTSCREEN() поддерживаются только при использовании стандартного заданного по умолчанию экранного драйвера (IBM-PC карта памяти). Использование других экранных драйверов не гарантирует поддержку работы этих функций.

Function ROW()

 ROW() --> номер строки

ROW() - это функция работы с экраном, которая возвращает текущий номер строки экрана, на которой находится курсор. Значения функции ROW() обновляются консольными и полноэкранными командами и функциями. Команда @...SAY обновляет значения ROW(), только тогда, когда связана с выводом информации на экран.

ROW() используется в сочетании с функцией COL() и всеми вариациями команды @... для позиционирования курсора на новой строке, относительно текущей строки. Вы можете использовать функции ROW() и COL() для создания позиционно - независимых процедур или функций пользователя, которым передаются в качестве параметров "верхняя левая строка" и "колонка".

Функция ROW() аналогична функциям PROW() и PCOL(), которые отслеживают текущую позицию печатающей головки вместо позиции курсора на экране.

Function SAVESCREEN()

 SAVESCREEN(<верхняя строка>,<левая колонка>,<нижняя строка>,
 <правая колонка>) --> образ экрана

SAVESCREEN() - это функция работы с экраном, используемая для сохранения области экрана в переменной любого класса памяти, включая поле. Позднее вы можете "перерисовать" изображение сохраненного экрана в том же самом или в другом месте экрана с помощью RESTSCREEN().

Обычно области экрана сохраняются и восстанавливаются, когда используется программа с "всплывающим" (pop-up) меню или для перемещения объекта экрана.

Предупреждение: Команды SAVE SCREEN и RESTORE SCREEN и функции SAVESCREEN() и RESTSCREEN() поддерживаются только при использовании стандартного заданного по умолчанию экранного драйвера ( IBM-PC карта памяти ). Использование других экранных драйверов не гарантирует поддержку работы этих функций.

Function SCROLL()

 SCROLL([<верхняя строка>], [<левая колонка>], [<нижняя строка>],
 [<правая колонка>], [<кол-во строк>]) --> NIL

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

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

Function SETBLINK()

 SETBLINK([<признак>]) --> признак текущей установки

SETBLINK() - функция среды окружения, переключающая атрибут мерцания/интенсивности фонового цвета и возвращающая его текущее состояние. Когда функция включает режим, символы могут мерцать при наличии символа звездочки (*) в строке цветовой спецификации, устанавливаемой функцией SETCOLOR(). В противном случае, символ звездочка (*) вызывает интенсивное свечение фона. Мерцание и интенсивное свечение фона невозможны в одно и то же время.

Примечание: Эту функцию можно использовать только на IBM-PC совместимых компьютерах, с адаптерами экрана типа CGA, EGA или VGA.

Function SETCANCEL()

 SETCANCEL([<переключатель>]) --> текущий режим

SETCANCEL() является функцией работы с клавиатурой, которая переключает состояние ключа завершения программы Alt-C и сообщает, возможно ли в данный момент завершение программы при помощи нажатия клавиш Alt-C.

SETCANCEL() используется в тех случаях, когда вы хотите подавить возможность завершения программы этим методом. Необходимо помнить, что Alt-C переназначается с помощью команды SET KEY, установка SET KEY имеет приоритет даже в том случае, если SETCANCEL() возвращает значение "истина" (.T.).

Предупреждение: Когда SETCANCEL() устанавливает значение "ложь" (.F.), пользователь не может завершить программу, пока не будет обеспечен альтернативный механизм выхода.

Function SETCOLOR()

 SETCOLOR([<цвета>]) --> текущие цвета

SETCOLOR() является функцией работы с экраном, используемой для сохранения текущего цветового режима и необязательной установки новых цветов для последующего окрашивания экрана. Цветовая строка составляется из нескольких цветовых атрибутов, при этом каждый цвет соответствует разным областям экрана. Как сказано выше, каждый атрибут составляется из цвета переднего плана и цвета фона. Цвет переднего плана определяет цвет символов, выводимых на экран. Цвет фона определяет цвет, на котором отображаются символы. Пробелы и неотображаемые символы выводятся в цвете фона.

В xClipper имеется несколько цветовых атрибутов, которые определяют отображение цвета:

Стандартный. Этот атрибут используется всеми консольными, экранными и интерфейсными командами и функциями при выводе информации на экран. Сюда входят такие команды, как @...PROMPT, @...SAY, ? и такие функции, как ACHOICE(), DBEDIT() и MEMOEDIT().

Выделенный. Этот атрибут используется для выделенных изображений. В этой группе - команды GET (если значение установки INTENSITY равно ON), также MENU TO, DBEDIT() и ACHOICE().

Окаймление. Окаймление - это область вокруг экрана, на которую нельзя осуществлять вывод.

Фоновый. Не поддерживается.

Невыделенный. Этот атрибут обеспечивает необходимый эффект ввода информации путем выделения на дисплее текущего текста, выводимого командой GET, в цвете ENCHANCED, в то время как информация других команд GET изображается в невыбранном цвете.

В дополнение к цветовым атрибутам цвета символов имеют атрибуты повышенной яркости и/или мигания. При монохромном дисплее повышенная яркость просто увеличивает яркость выводимого текста. При цветном дисплее повышенная яркость изменяет оттенок заданного цвета, превращая его в другой цвет. Например, "N" определяет черный цвет при выводе текста переднего плана, а "N+" - серый цвет. Повышенная яркость обозначается символом "+". Атрибут мерцания- это вспыхивание и погасание текста переднего плана через короткие интервалы. Мерцание обозначается символом "*". Символ атрибута может быть в любом месте строки установки атрибутов, но он всегда используется с цветом символа, независимо от его местонахождения.

Поддерживаются следующие цвета:

 Список цветов.
 ---------------------------------------------------------------------
 Цветной дисплей           Код-буква            Черно-белый
 ---------------------------------------------------------------------
 Черный                    N, Пробел            Черный
 Синий                     B                    Подчеркивание
 Зеленый                   G                    Белый
 Бирюзовый                 BG                   Белый
 Красный                   R                    Белый
 Фиолетовый                RB                   Белый
 Коричневый                GR                   Белый
 Белый                     W                    Белый
 Серый                     N+                   Черный
 Ярко-синий                B+                   Яркое подчеркивание
 Ярко-зеленый              G+                   Ярко-белый
 Ярко-бирюзовый            BG+                  Ярко-белый
 Ярко-красный              R+                   Ярко-белый
 Ярко-малиновый            RB+                  Ярко-белый
 Желтый                    GR+                  Ярко-белый
 Ярко-белый                W+                   Ярко-белый
 Черный                    U                    Подчеркивание
 Обратный                  I                    Обратный
 Пустой                    X                    Пустой
 ---------------------------------------------------------------------
 

Function SETCURSOR()

 SETCURSOR([<форма курсора>]) --> текущая форма курсора

SETCURSOR() является функцией среды, которая управляет формой экранного курсора. Фактическая форма зависит от текущего драйвера экрана. Указанные формы - это те, которые гарантированно изображаются на IBM-PC и совместимых с ним машинах. На других ЭВМ изображение может отличаться для каждого задаваемого значения.

SETCURSOR(0) - то же самое, что SET CURSOR OFF, а SETCURSOR(1) - то же, что SET CURSOR ON.

Function SETMODE()

 SETMODE(<кол-во строк>, <кол-во колонок>) --> признак завершения

SETMODE() - функция среды окружения, которая пытается изменить режим работы экрана, соответствующий определенному значению количества строк и столбцов. Изменение размеров экрана отражается на возвращаемых функциями MAXROW() и MAXCOL() значениях.

Function SETPOS()

 SETPOS(<номер строки>, <номер колонки>) --> NIL

SETPOS() является функцией среды, которая перемещает курсор на новую позицию на экране. После того, как курсор занял позицию, соответственно корректируются значения ROW() и COL(). Для управления формой и видимостью курсора, служит функция SETCURSOR().

Function SETPRC()

 SETPRC(<номер строки>,<номер колонки>) --> NIL

SETPRC() является функцией принтера, используемой для посылки управляющих кодов на принтер без изменения трассировки позиции печатающей головки. Когда xClipper печатает, он корректирует значение PCOL() с помощью ряда символов, посылаемых на принтер. Между печатаемыми и непечатаемыми символами не устанавливается никакого различия. Если, например, строка из десяти символов, посылаемая на принтер, содержит два символа, которые интерпретируются как управляющий код, значение PCOL() xClipper увеличивается на 10, в то время как истинная позиция печатающей головки перемещается только на 8. Это может привести к проблемам выравнивания. Используя SETPRC(), можно компенсировать управляющие коды путем установки PCOL(), как показано ниже.

SETPRC() может также использоваться для подавления перехода на новую страницу при печати с помощью @...SAY. Это важно, когда позиция следующей строки меньше текущей строки и не было дано команды EJECT. В таком случае xClipper производит автоматический переход на новую страницу, если позиция следующей строки меньше текущего значения PROW(). Используя SETPRC(), Вы можете установить PROW() на число, меньшее текущей строки, подавляя таким образом автоматический переход на новую строку.

Function TONE()

 TONE(<частота>, <длительность>) --> NIL

TONE() - функция управления звуковым сигналом - используется для индикации различных состояний программы, например, ошибки, граничных условий или окончания процесса: если в программе произошла ошибка, то пользователю подается звуковой сигнал перед сообщением о ней. TONE() подает звуковой сигнал заданной частоты и длительности. Длительность измеряется в единицах 1/18 сек. Частота измеряется в герцах (циклах в секунду). Частота ниже 20 герц неразличима для слуха. Ниже приведена таблица стандартных тональных частот (Гц), соответствующих нотам.

Примечание: Функция TONE() работает только на компьютерах IBM PC или полностью совместимых с ними.

Таблица тональных сигналов.
 ---------------------------------------------------------------------
 Обозначение      Частота           Обозначение      Частота
 ---------------------------------------------------------------------
 C                130.80            mid C            261.70
 C#               138.60            C#               277.20
 D                146.80            D                293.70
 D#               155.60            D#               311.10
 E                164.80            E                329.60
 F                174.60            F                349.20
 F#               185.00            F#               370.00
 G                196.00            G                392.00
 G#               207.70            G#               415.30
 A                220.00            A                440.00
 A#               233.10            A#               466.20
 B                246.90            B                493.90
 C                523.30
 ---------------------------------------------------------------------
 

Function UPDATED()

 UPDATED() --> признак завершения

UPDATED() используют, чтобы определить, была ли введена информация с клавиатуры в переменную оператора GET в процессе выполнения текущей команды READ. Каждое включение команды READ устанавливает значение UPDATED() - "ложь"(.F.). Затем любое изменение в переменной команды GET устанавливает значение UPDATED() - "истина"(.Т.) после успешного выхода из GET. Если пользователь для выхода из команды GET нажал клавишу <Esc>, UPDATED() возвратит значение "ложь"(.F.). Если значение функции UPDATED() "истина"(.Т.), то она сохраняет это значение до тех пор, пока управление не перейдет на следующую команду GET.

Внутри SET KEY или VALID процедуры, можно изменять значения текущих GET переменных, используя команду KEYBOARD или присваивая им новые значения с помощью операторов присвоения. Изменение значений переменных при помощи команды KEYBOARD аналогично тому, как если бы пользователь вносил изменения прямо с клавиатуры, и поэтому UPDATED() устанавливается на значение "истина"(.Т.). Но поскольку UPDATED() отражает только те изменения, которые сделаны с клавиатуры, изменение значений GET переменных любым другим путем на изменение значения UPDATED() не влияет.