ACHOICE() | Реализует всплывающее меню |
ALERT() | Выводит на экран простое диалоговое окно. |
COL() | Возвращает номер колонки позиции курсора на экране. |
COLORSELECT() | Activate attribute in current color settings |
DEVOUT() | Выводит значение выражения на текущее устройство. |
DEVOUTPICT() | Write a value to the current device using a picture clause |
DEVPOS() | Перемещает курсор или головку принтера на новую позицию. |
DISPBEGIN() | Начинает вывод из буфера на экран. |
DISPBOX() | Формирует на экране прямоугольную рамку. |
DISPCOUNT() | Return the number of pending DISPEND() requests |
DISPEND() | Выводит буферизованные экранные изменения. |
DISPOUT() | Выводит значение на экран. |
GETACTIVE() | Возвращает текущий активный Get объект. |
GETAPPLYKEY() | Apply a key to a Get object from within a reader |
GETDOSETKEY() | Process SET KEY during GET editing |
GETPOSTVALIDATE() | Postvalidate the current Get object |
GETPREVALIDATE() | Prevalidate a Get object |
GETREADER() | Execute standard READ behavior for a Get object |
ISCOLOR() | Определяет наличие цветовых возможностей у компьютера. |
ISPRINTER() | Определяет состояние готовности принтера. |
MAXCOL() | Определяет максимальный номер колонки, видимой на экране. |
MAXROW() | Определяет наибольший номер видимой строки на экране. |
MENUMODAL() | Activate a top bar menu |
NOSNOW() | Управляет режимом подавления "снега". |
OUTERR() | Выводит результаты вычисления выражений передаваемого списка на |
OUTSTD() | Записывает список выражений на стандартное устройство вывода. |
PCOL() | Возвращает текущую позицию головки печатающего устройства. |
PROW() | Возвращает текущий номер строки размещения печатающей головки принтера |
QOUT() | Выводит список выражений на консоль. |
READEXIT() | Устанавливает клавиши UP и DOWN как клавиши выхода |
READFORMAT() | Return and optionally, set the code block that implements a format (.fmt) |
READINSERT() | Переключает текущий режим вставки, для команды READ и функции MEMOEDIT() |
READKEY() | Определяет, какая клавиша была нажата для завершения READ |
READKILL() | Return, and optionally set, whether the current READ should be exited |
READMODAL() | Активизирует режим полно-экранного редактирования GetList |
READUPDATED() | Determine whether any GET variables changed during a READ and optionally |
READVAR() | Возвращает текущее имя переменной GET/MENU |
RESTSCREEN() | Выводит ранее сохраненную область экрана в заданное место экрана. |
ROW() | Возвращает номер строки размещения курсора на экране. |
SAVESCREEN() | Сохраняет область экрана для дальнейшего вывода. |
SCROLL() | Прокручивает область экрана вверх или вниз. |
SETBLINK() | Управляет интерпретацией символа "звездочка" (*), используемого в строке |
SETCANCEL() | Переключает Alt-C или Ctrl+C как ключ завершения программы. |
SETCOLOR() | Возвращает текущие цвета и необязательно устанавливает новые цвета. |
SETCURSOR() | Устанавливает форму курсора. |
SETKEY() | Присваивает клавише блок кода. |
SETMODE() | Изменяет режим работы экрана, определяя количество строк и столбцов. |
SETPOS() | Перемещает курсор в новую позицию. |
SETPRC() | Устанавливает значения PROW() и PCOL(). |
TONE() | Звуковое устройство подает сигнал заданной частоты и длительности. |
UPDATED() | Определяет, были ли изменены поля GET в процессе выполнения команды READ. |
COL() --> номер колонки
No arguments
COL() возвращает целое числовое значение, лежащее в интервале от 0 до MAXCOL().
COL() - экранная функция, которая возвращает текущий номер колонки позиции курсора на экране. Значение, возвращаемое COL(), изменяется, как только изменяется позиция курсора. Все команды работы с экраном могут изменять позицию курсора. В дополнение к сказанному, команды CLEAR, CLEAR SCREEN или CLS автоматически устанавливают значение COL() в 0.
Функцию COL() можно использовать для установки новой позиции курсора относительно его текущей позиции. COL() чаще всего используется в сочетании с функцией ROW() и всех модификациях команды @. Можно использовать функции COL() и ROW() для создания процедур или функций формирования экранных изображений, не связанных конкретным их размещением на экране. Таким процедурам или функциям обычно в качестве параметров передаются координаты левого верхнего угла изображения.
Если в качестве устройства выдачи информации установлен принтер, все команды @...SAY изменяют значение функций PCOL() и PROW(), а функции COL() и ROW() своих значений не меняют. Если необходимо получить координаты при выдаче информации на принтер, пользуйтесь функциями PCOL() и PROW().
В этом примере имя получателя выдается начиная с 10-й колонки. Состояние счета получателя затем выдается за последним символом имени получателя, при помощи функции COL(): USE Sales NEW @ 1, 10 SAY "Имя получателя :" + TRIM(Customer) @ ROW(), COL() + 1 SAY "Состояние счета :" + Status
COLORSELECT(<nColorIndex>) --> NIL
Always returns 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 ------------------------------------------------------------------------
This example demonstrates use of COLORSELECT() with the Color.ch manifest constants: USE Sales NEW ? SETCOLOR() // displays "W/B,N/B,W/N,W/N,W/N" // in white on blue COLORSELECT(CLR_ENHANCED) // enhanced is active color pair ? "I'm black and blue" // displayed in black on blue COLORSELECT(CLR_STANDARD) // restore standard color
DEVOUT(<выражение>,[<цвета>]) -->NIL
<выражение> | - значение для вывода на устройство |
<цвета> | - необязательный аргумент, который определяет цвета для |
вывода <выражение>. Если текущее устройство - экран, то вывод | |
осуществляется в заданных цветах. | |
Если этот аргумент опущен, то <выражение> выводится в стандартном | |
цвете текущей цветовой спецификации, заданной функцией SETCOLOR(). | |
<цвета> | - символьное выражение, содержащее стандартную установку |
цветов. Если вы хотите задать литеральную строку цветов, то эта | |
строка должна быть заключена в кавычки. |
DEVOUT() всегда возвращает NIL.
DEVOUT() - полноэкранная функция вывода, которая выводит значение выражения на текущее устройство, в текущую позицию курсора или печатающей головки. Вызов функции DEVOUT() в сочетании с DEVPOS() используется в STD.CH для реализации команды @...SAY.
Следующий пример демонстрирует родственность функции DEVOUT() и команды @...SAY: DEVPOS(10,10) DEVOUT("Привет","BG+/B") // @10,10 SAY "Привет"
DEVOUTPICT(<exp>, <cPicture>, [<cColorString>]) --> NIL
<exp> | is the value to display. |
<cPicture> | defines the formatting control for the display of <exp>. |
The picture specified here is the same as one used with @...SAY or | |
TRANSFORM and can include both templates and functions. | |
<cColorString> | is an optional argument that defines the display |
color of <exp>. If the current DEVICE is SCREEN, output displays in the | |
specified color. | |
If not specified, <exp> displays as the standard color of the current | |
system color as defined by SETCOLOR(). <cColorString> is a character | |
expression containing the standard color setting. If you want to | |
specify a literal color setting, it must be enclosed in quote marks. |
DEVOUTPICT() always returns 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.
This example shows the relationship between the DEVOUTPICT() function and the @...SAY command: DEVPOS(10, 10) DEVOUTPICT("Hello there", "@!", "BG+/B")) // @ 10, 10 SAY "Hello there" PICTURE "@!" COLOR "BG+/B"
DEVPOS(<номер строки>,<номер колонки>]) -->NIL
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() изменяет состояние файла, а не принтера.
DISPBEGIN() --> NIL
No arguments
DISPBEGIN() всегда возвращает NIL.
DISPBEGIN() - экранная функция, сообщающая системе вывода xClipper, что прикладная программа собирается выполнить ряд действий на экране.
DISPBEGIN(), используемая в сочетании с DISPEND(), позволяет системе вывода на экран буферизировать экранные изменения данных. Вывод на экран, который осуществляется после DISPBEGIN(), но перед DISPEND(), может накапливаться во внутренних буферах. При исполнении функции DISPEND() любые отложенные изменения выполняются на экране. Это удобно в программах, где сложные экранные изображения медленны и нежелательно изображение хода действий. Вызов функций DISPBEGIN() и DISPEND() необязателен. В них нет необходимости при нормальном выводе.
В этом примере буферизируется экранный вывод, модифицирующий изображение, а затем выводятся буферизированные данные: DISPBEGIN() // Начало экранной буферизации // SETPOS(10,10) DISPOUT("Модификация экрана") SETPOS(11,10) DISPOUT("Еще одна модификация экрана") // DISPEND() // Вывод буферизированной экранной информации
DISPBOX( <верхняя строка>, <левая колонка>, <нижняя строка>, <правая колонка>, [<строка рамки>], [<строка цвета>] ) --> NIL
<верхняя строка> | , <левая колонка>, <нижняя строка>, <правая колонка> |
определяют координаты рамки. Граничные значения номеров колонок - от | |
0 до MAXCOL(), граничные значения номеров строк - от 0 до MAXROW(). | |
Если выражения <нижняя строка> и <правая колонка> больше, чем | |
значения MAXROW() и MAXCOL() соответственно, то нижний правый угол | |
будет размещен за видимой частью экрана. | |
<строка рамки> | - числовое или символьное выражение, которое |
определяет символы изображения рамки. Если задано как числовое | |
выражение, то при значении 1 рисуется одинарная рамка, а при значении | |
2 - двойная рамка. Все остальные числовые значения рисуют одинарную | |
рамку. | |
Если <строка рамки> - символьное выражение, то она задает символы, | |
которые используются для рисования рамки. Это строка из восьми | |
символов изображения границ рамки и одного символа - заполнителя. | |
Если <строка рамки> определяется как один символ, то этот символ | |
используется для рисования всей рамки. | |
Если <строка рамки> не задана, рисуется одинарная рамка. | |
<строка цвета> | - определяет цвета изображаемой рамки. Если <строка |
цвета> не задана, то рамка рисуется в стандартном цвете текущей | |
цветовой спецификации, заданной функцией SETCOLOR(). |
DISPBOX() всегда возвращает NIL.
DISPBOX - экранная функция, рисует рамку в заданных координатах экрана и в заданных цветах. Если <строка рамки> определена, DISPBOX() рисует рамку на экране, используя граничные и заполняющие символы. DISPBOX() рисует рамку, используя граничные символы из выражения <строка рамки>, если она задана, начиная с верхнего левого угла по направлению часовой стрелки, и заполняет пространство внутри рамки девятым символом. Если девятый символ не задан, пространство экрана внутри рамки не заполняется, а существующие текст и цвет внутри рамки не изменяются.
После выполнения функции DISPBOX() курсор занимает положение в верхнем углу рамки с координатами <верхняя строка> + 1 и <левая колонка> + 1. Значения функций ROW() и COL() отражают новую позицию курсора.
Различные конфигурации границ рамки определены в файле описаний Box.ch, помещаемом в директорию \include.
This code example displays a double-line box using a numeric value to specify the box border: #define B_SINGLE 1 #define B_DOUBLE 2 // DISPBOX(1, 1, 10, 10, B_DOUBLE, "BG+/B") This example displays a single-line top and double-line side box by specifying border characters with a manifest constant defined in Box.ch: #include "Box.ch" // DISPBOX(1, 1, 10, 10, B_SINGLE_DOUBLE, "BG+/B") This example displays a box with a 3-D look. It can be used for graphic mode: // Display a box with a 3D look of constant width 16x16x16x16 DISPBOX( nTop, nLeft, nBottom, nRight, LLG_BOX_GRAY_SQUARE ) // Write some transparent text in the 3D frame GWRITEAT( nLeft * GMODE()[LLG_MODE_FONT_COL] ,; nTop * GMODE()[LLG_MODE_FONT_ROW] ,; "This is some Text...",; 4,; LLG_MODE_SET; )
DISPCOUNT() --> nDispCount
No arguments
DISPCOUNT() returns the number of DISPEND() calls required to restore the original display context.
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.
This example saves the setting of DISPCOUNT(), then releases all pending display contexts before writing to the screen: PROCEDURE ForceDisplay(cExp) LOCAL nSavCount nSavCount := DISPCOUNT() // Discard pending display contexts DO WHILE ( DISPCOUNT() > 0) DISPEND() ENDDO DISPOUT(cExp) // "Rewind" the current display context DO WHILE (DISPCCOUNT() < nSavCount ) DISPBEGIN() ENDDO RETURN
DISPEND() --> NIL
No arguments
DISPEND() всегда возвращает NIL.
DISPEND() - экранная функция, которая сообщает подсистеме вывода xClipper, что прикладная программа закончила выполнение ряда буферизируемых действий с экраном.
DISPEND(), используемая в сочетании с DISPBEGIN(), позволяет подсистеме вывода буферизировать экранные изменения данных. Это может быть важно для программ, где сложные экранные изображения медленны и нежелательно изображение хода действий.
Более подробную информацию смотрите в DISPBEGIN().
В этом примере буферизируется экранный вывод, модифицирующий изображение, а затем выводятся буферизированные данные: DISPBEGIN() // Начало экранной буферизации // SETPOS(10,10) DISPOUT("Модификация экрана") SETPOS(11,10) DISPOUT("Еще одна модификация экрана") // DISPEND() // Вывод буферизированной экранной информации
DISPOUT(<выражение>, [<строка цвета>]) --> NIL
<выражение> | - значение для вывода. |
<строка цвета> | - необязательный аргумент, который определяет цвет для |
вывода результата вычисления <выражение>. При его отсутствии | |
<выражение> | выводится с использованием стандартного цвета текущей |
цветовой спецификации, заданной функцией SETCOLOR(). <строка цвета> - | |
символьное выражение, определяющее стандартный цвет. При задании | |
цвета в литеральной форме строка должна быть заключена в кавычки. |
DISPOUT() всегда возвращает NIL.
DISPOUT() - функция простого вывода, выводящая значение вычисляемого выражения на экран в текущую позицию курсора. Эта функция не зависит от режима, установленного командой SET DEVICE - вывод всегда производится на экран.
Следующий пример, взятый из файла Getsys.prg, демонстрирует, как DISPOUT() может быть использована для выполнения полноэкранного вывода, не зависящего от установки SET DEVICE. Заметим, что позиция курсора сохраняется и восстанавливается использованием функций ROW(), COL() и SETPOS(): STATIC PROCEDURE ShowScoreboard LOCAL nRow, nCol IF ( SET(_SET_SCOREBOARD) ) nRow := ROW() nCol := COL() SETPOS( SCORE_ROW, SCORE_COL ) DISPOUT( IF(SET(_SET_INSERT), "Ins", " ") ) SETPOS(nRow, nCol) ENDIF RETURN
GETACTIVE() --> Get объект
GETACTIVE() - возвращает текущий активный Get объект текущего выполняемого READ. Если не существует активного READ, когда вызывается GETACTIVE(), то функция возвращает NIL.
GETACTIVE() - функция среды, предоставляет доступ к активному Get-объекту в процессе выполнения READ. Текущим активным Get-объектом является тот, который имеет фокус ввода во время вызова функции GETACTIVE().
Следующая программа использует предложение WHEN для переключения управления на специальную считывающую функцию. Внутри этой функции GETACTIVE() используется для получения активного Get объекта: @ 10, 10 GET x @ 11, 10 GET y WHEN MyReader() @ 12, 10 GET z READ // Вызывается только перед тем, как второй get становится текущим FUNCTION MyReader LOCAL objGet objGet := GETACTIVE() // Возвращает текущий активный Get BarCodeRead( objGet ) RETURN (.F.) // Заставляет пропустить Get
GETAPPLYKEY(<oGet>, <nKey>, <GetList>, <oMenu>, <nMsgRow>, <nMsgLeft>, <nMsgRight>, <cMsgColor>) --> NIL
<oGet> | is a reference to a Get object. |
<nKey> | is the INKEY() value to apply to <oGet>. |
<GetList> | is a reference to the current list of Get objects. |
<oMenu> | is a reference to any top bar menu. |
<nMsgRow> | is a numeric value representing the row of the message |
bar. | |
<nMsgLeft> | is a numeric value representing the left column of the |
message bar. | |
<nMsgRight> | is a numeric value representing the right column of the |
message bar. | |
<cMsgColor> | is a character string representing the colors to be used |
for the message bar text. |
GETAPPLYKEY() always returns 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.
This example will apply keystrokes until Exit: WHILE (oGet:exitState == GE_NOEXIT) GETAPPLYKEY (oGet, INKEY(0), GetList, oMenu, nMsgRow,; nMsgLeft, nMsgRight, nMsgColor) ENDDO
GETDOSETKEY(<bKeyBlock>, <oGet>) --> NIL
GETDOSETKEY() always returns 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().
The following example determines if the last key pressed, nKey, has a SET KEY associated with it. If it does, then GETDOSETKEY is called to execute that block on the current GET. IF ((bKeyBlock := SETKEY (nKey)) == NIL) GETDOSETKEY (bKeyBlock, oGet) ENDIF
GETPOSTVALIDATE(<oGet>) --> lSuccess
GETPOSTVALIDATE() returns a logical value indicating whether the Get object has been postvalidated successfully.
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.).
This example calls GETPOSTVALIDATE to determine whether or not the VALID clause of oGet is satisfied. If not, then the user is not allowed to exit from the Get object. IF (! GETPOSVALIDATE (oGet)) oGet : exitState := GE_NOEXIT ENDIF
GETPREVALIDATE(<oGet>) --> lSuccess
GETPREVALIDATE() returns a logical value indicating whether the Get object has been prevalidated successfully.
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().
This example demonstrates the GETPREVALIDATE() function. IF GETPREVALIDATE (oGet) // process the get ELSE // WHEN clause not satisfied // give a warning to the user ENDIF
GETREADER(<oGet>, <GetList>, <oMenu>, <nMsgRow>, <nMsgLeft>, <nMsgRight>, <cMsgColor>) --> NIL
<oGet> | is a reference to a Get object. |
<GetList> | is an array of all the Get objects in the current Get |
list. | |
<oMenu> | is a reference to a TopBarMenu object. |
<nMsgRow> | is a numeric value representing the row number on the |
screen where the message bar is located. | |
<nMsgLeft> | is a numeric value representing the left border of the |
row bar. | |
<nMsgRight> | is a numeric value representing the right border of the |
row bar. | |
<cMsgColor> | is a character string representing the color string to |
be used for the message bar. |
GETREADER() always returns 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.
This example sets the current Get object to the first GET in the Get list. Then, a READ is performed on this GET which has no menu object, but includes a message bar at row 25 from column 0 to column 80. The color of the text on the message bar is white with a red background. oGet := GetList [1] GETREADER (oGet, Getlist, NIL,25,; 0,80,"W+/R")
ISCOLOR() | ISCOLOUR() --> логическое значение
No arguments
ISCOLOR() возвращает значение "истина" (.Т.), если установлена карта цветной графики, в противном случае она возвращает значение "ложь" (.F.).
ISCOLOR() - это функция работы с экраном, которая позволяет Вам принять решение относительно типа экрана, чтобы установить атрибуты (цветной или монохромный). Отметим, что некоторые монохромные адаптеры с графическими возможностями возвращают значение "истина" (.Т.).
Следующий пример устанавливает значения атрибутов цвета во время выполнения программы: IF ISCOLOR() cBox = "BG+/B, W/N" cSays = "BG/B, W/N" cGets = "W/N, N/W" ELSE cBox = "W+" cSays = "W/N, N+/W" cGets = "W/N, N/W" ENDIF . .<операторы> . SETCOLOR(cSays)
ISPRINTER() --> признак готовности.
No arguments
ISPRINTER() возвращает значение "истина" (.T.), если LPT1 готово, в противном случае - значение "ложь" (.F.).
ISPRINTER() является функцией работы с принтером и определяет, готов ли параллельный порт LPT1 начать вывод на печать. ISPRINTER() является аппаратурно-зависимой функцией, и поэтому работает только на системах с IBM - совместимым BIOS.
ISPRINTER() используется для определения состояния готовности принтера перед началом вывода на печать. Однако если во время вывода на печать происходит ошибка, то генерируется ошибка времени выполнения.
Этот пример 25 раз проверяет готовность параллельного порта. Если он готов, то начинается вывод на печать: LOCAL nCount := 0, nTimes := 25, lReady // DO WHILE nCount++ <= nTimes .AND. !(lReady := ISPRINTER()) ENDDO // IF lReady REPORT FORM Sales TO PRINTER ELSE ? "Принтер не готов" BREAK ENDIF
MAXCOL() --> номер колонки
No arguments
MAXCOL() возвращает номер самой правой колонки экрана.
MAXCOL() является функцией работы с экраном, используемой для определения максимального номера видимой колонки на экране. В xClipper номера строк и колонок начинаются с нуля.
Следующий пример демонстрирует использование MAXROW() и MAXCOL() для того, чтобы определить координаты для рисования прямоугольника и задания области для DBEDIT(): CLS @ 0, 0 TO MAXCOL(), MAXROW() DOUBLE DBEDIT( 1, 1, MAXROW() + 1, MAXCOL() - 1)
MAXROW() --> номер строки
No arguments
MAXROW() возвращает номер самой нижней строки экрана
MAXROW() является функцией работы с экраном, используемой для определения максимального номера видимой строки на экране. Номера строк и колонок в xClipper начинаются с нуля.
В следующем примере функция пользователя ScreenSize() использует MAXROW() и MAXCOL() для того, чтобы возвратить массив, содержащий текущие размеры экрана: FUNCTION ScreenSize RETURN { MAXROW(), MAXCOL() }
MENUMODAL(<oTopBar>, <nSelection>, <nMsgRow>, <nMsgLeft>, <nMsgRight>, <cMsgColor>) --> MenuID
<oTopBar> | is a TopBarMenu object created from the TopBarMenu class. |
<nSelection> | is the TopBarMenu item selected by default. |
<nMsgRow> | is the row number where menu item messages will appear. |
<nMsgLeft> | specifies the left border for menu item messages. |
<nMsgRight> | specifies the right border for menu item messages. |
<cMsgColor> | defines the color string for the menu item messages. It |
consists of a single foreground/background pair. |
MENUMODAL() returns the menu ID of the chosen menu item. Menu IDs are assigned using the MenuItem class.
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. ------------------------------------------------------------------------
See the Menu.prg sample file in the \sample directory. This example demonstrates combining TopBarMenu, PopUpMenu, and MenuItem objects to create a menu with a number of available choices. See "Introduction to the Menu System" in the Programming and Utilities Guide for more information about using this function.
NOSNOW(<признак>) --> NIL
Returns NIL.
NOSNOW() используется для подавления "снега" на мониторах типа CGA. Обычно пользователю следует предоставлять средство подавления "снега" в разделе конфигурационной настройки программы. Для этой цели можно использовать вызов функции NOSNOW().
PCOL() --> номер колонки
No arguments
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 функций.
Этот пример использует PCOL() для создания простого отчета, который печатает список имен, адресов и телефонных номеров: LOCAL nLine := 1 USE Customer INDEX CustName NEW SET DEVICE TO PRINTER DO WHILE !EOF() IF nLine > 55 PageTop(nPage) nLine := 1 nPage++ ENDIF @ nLine, 10 SAY CustName @ nLine, PCOL() + 2 SAY RTRIM(City) + "," + RTRIM(State) + ZipCode; PICTURE REPLICATE("X", 35) @ nLine, PCOL() + 2; SAY Phone; PICTURE "@R (999) 999-9999" nLine++ SKIP ENDDO SET DEVICE TO SCREEN CLOSE
PROW() --> номер строки
No arguments
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() после посылки на принтер какого-либо из этих символов.
Этот пример показывает, как использовать PROW() и SETPRC() для создания программы, которая для вывода на печать использует вместо команды ? команду @...SAY: USE Customer INDEX CustName NEW SET DEVICE TO PRINTER SETPRC(2, O) DO WHILE !EOF() @ PROW(), 3 SAY CustName @ PROW()+1,3 SAY RTRIM(City) +","+ RTRIM(State)+ZipCode @ PROW()+1,3 SAY Phone PICTURE "@R (999) 999-9999" SETPRC(2,O) SKIP ENDDO SET DEVICE TO SCREEN CLOSE
READEXIT([<переключатель>]) --> логическое значение установки
READEXIT() возвращает текущую установку в виде логического значения.
READEXIT() - это функция среды, которая сообщает текущее назначение клавиш <стрелка вверх> и <стрелка вниз> как клавиш, которые пользователь может нажать, чтобы выйти из команды READ, обрабатывающей первый или последний GET-объекты в списке GetList. Обычно в состав клавиш выхода из команды READ при обработке последней команды GET входят только клавиши <PgUp>, <PgDn>, <Esc> или <Enter>.
Этот пример демонстрирует использование функции READEXIT(), которая переназначает клавиши <стрелка вверх> и <стрелка вниз> как клавиши выхода из оператора READ, а после выполнения READ восстанавливает первоначальное назначение: cMyvar = SPACE(10) lLastExit = READEXIT(.T.) // Результат: Включены клавиши выхода // @ 10,10 SAY "Введите: " GET cMyvar READ READEXIT(lLastExit) // Результат: Восстановлено // первоначальное назначение
READFORMAT([<bFormat>]) --> bCurrentFormat
READFORMAT() returns the current format file as a code block. If no format file has been set, READFORMAT() returns NIL.
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.
READINSERT([<переключатель>]) --> текущий режим вставки
<переключатель> | - устанавливает режим вставки ON или OFF. |
При значении аргумента <переключатель> - "истина" (.T.) включается | |
режим вставки, если его значение - "ложь" (.F.) режим вставки | |
выключается. Если аргумент не задан, его значение по умолчанию - | |
"ложь" (.F.) или последний выбранный пользователем режим для команды | |
READ или функции MEMOEDIT(). |
READINSERT() возвращает текущее состояние режима вставки в виде логического значения.
READINSERT() - функция среды, которая возвращает текущее состояние режима вставки для команды READ и функции MEMOEDIT() и по желанию включает или выключает режим вставки в зависимости от значения аргумента <переключатель>. Когда READINSERT() возвращает значение "ложь"(.F.) и пользователь вводит данные в буфер GET-объекта во время выполнения READ или MEMOEDIT(), то символы перезаписываются. Когда READINSERT() возвращает "истину" (.T.), вводимые символы вставляются, раздвигая текст. Режим вставки - это установка, принадлежащая системе, а не какому-либо особому объекту.
READINSERT() может быть выполнена до или во время выполнения команды READ или функции MEMOEDIT(). При использовании в сочетании с READ, READINSERT() может быть вызвана внутри предложений WHEN или VALID оператора @...GET или внутри процедуры, определенной в команде SET KEY. При использовании в сочетании с MEMOEDIT() она может быть вызвана с помощью функции пользователя так же, как и с помощью процедуры, установленной командой SET KEY.
Следующий пример устанавливает режим вставки перед выполнением MEMOEDIT() и сбрасывает этот режим, когда MEMOEDIT() завершается: USE Sales NEW lInsMode = READINSERT(.T.) // Включение режима вставки Sales->Notes := MEMOEDIT(Sales->Notes) READINSERT(lInsMode) // Восстановление начального режима
READKEY() --> код клавиши
No arguments
READKEY() возвращает код, соответствующий клавише, нажатой для выхода из команды READ. В таблице 5-27 приведены состав клавиш, являющихся стандартными в xClipper для выхода из READ, и коды возврата READKEY().
Коды возврата READKEY() --------------------------------------------------------------------- Клавиша выхода Код возврата --------------------------------------------------------------------- <стрелка вверх> 5 <стрелка вниз> 2 <PgUp> 6 <PgDn> 7 <Ctrl>-<PgUp> 31 <Ctrl>-<PgDn> 30 <Esc> 12 <Ctrl>-<End>, <Ctrl>-<W> 14 Ввод после конца файла 15 <Return> 15 ---------------------------------------------------------------------
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().
READKILL([<lKillRead>]) --> lCurrentSetting
READKILL() returns the current setting as a logical value.
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.
READMODAL(<массив GET-объектов>) --> NIL
READMODAL() всегда возвращает 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 в главе "Стандартные команды".
READUPDATED([<lChanged>]) --> lCurrentSetting
READUPDATED() returns the current setting as a logical value.
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.
READVAR() --> имя переменной
No arguments
READVAR() возвращает имя переменной, связанной с текущим GET-объектом или переменной текущей команды MENU TO, в виде символьной строки в верхнем регистре.
READVAR() - функция среды, прежде всего используемая для организации контекстно-зависимых подсказок (help) связанных с GET-объектами и меню c выделенной строкой.
READVAR() действует только во время реализации команд READ и MENU TO. При использовании каких-либо других команд или функций, переводящих программу в режим ожидания, таких как ACCEPT, INPUT, WAIT, ACHOICE(), DBEDIT() или MEMOEDIT(), она возвращает нулевую строку (""). Она может быть включена либо в процедуру, заданную в команде SET KEY, либо в функцию пользователя, вызываемую из предложений WHEN или VALID GET-объекта.
Этот пример обеспечивает простую систему подсказки для GET-объектов, используя файл базы данных для хранения текстов подсказок. После нажатия пользователем клавиши F1 производится поиск нужной записи в файле подсказки при помощи возвращаемого значения функции READVAR() в качестве ключа поиска: #include "Inkey.ch" // SET KEY K_F1 TO HelpLookup cString = SPACE(10) @ 5, 5 SAY "Введите:" GET cString READ RETURN FUNCTION HelpLookup USE Help INDEX Help NEW SEEK READVAR() IF FOUND() DisplayHelp(Help->Topic) ELSE DisplayHelp("Нет подсказки для" + READVAR()) ENDIF CLOSE Help RETURN NIL FUNCTION DisplayHelp (cTopic) LOCAL cScreen := SAVESCREEN(5,5,15,70) LOCAL cColor := SETCOLOR("BG+/B") // SET CURSOR OFF @ 5, 5 CLEAR TO 15, 70 @ 5, 5 TO 15, 70 DOUBLE @ 5, 30 SAY "Подсказка для" + READVAR() + " " MEMOEDIT(cTopic, 6, 7, 14, 68, .F.) // RESTSCREEN(5, 5, 15, 70, cScreen) SETCOLOR(cColor) SET CURSOR ON // RETURN NIL
RESTSCREEN( <верхняя строка>, <левая колонка>, <нижняя строка>, <правая колонка>, <образ экрана>) --> NIL
RESTSCREEN() всегда возвращает NIL.
RESTSCREEN() - функция работы с экраном, которая "перерисовывает" сохраненную с помощью функции SAVESCREEN() область экрана. Восстановленная область может быть размещена как на старом, так и на новом месте экрана.
Если вы задаете новое местоположение экрана, новая область экрана должна иметь тот же размер, иначе вы получите неопределенный результат. Для использования RESTSCREEN() с целью восстановления областей экрана, сохраненных с помощью SAVESCREEN(), задайте координаты области 0, 0, MAXROW(), MAXCOL().
Предупреждение: Команды SAVE SCREEN и RESTORE SCREEN и функции SAVESCREEN() и RESTSCREEN() поддерживаются только при использовании стандартного заданного по умолчанию экранного драйвера (IBM-PC карта памяти). Использование других экранных драйверов не гарантирует поддержку работы этих функций.
Этот пример демонстрирует RESTSCREEN() как часть "всплывающего" меню часто используемой функции PopMenu(): ? PopMenu({ 1, 1, 3, 10, {"ItemOne", "ItemTwo"}, "BG+/B"} ) FUNCTION PopMenu( aList ) LOCAL cScreen, nChoice, cOldColor := SETCOLOR(aList[6]) cScreen := SAVESCREEN( aList[1], aList[2], aList[3], aList[4]) @ aList[1], aList[2], TO aList[3], aList[4] DOUBLE nChoice := ACHOICE(++aList[1], ++aList[2],; --aList[3], --aList[4], aList[5]) SETCOLOR(cOldColor) RESTSCREEN(--aList[1], --aList[2],; ++aList[3], ++aList[4], cScreen) RETURN nChoice
ROW() --> номер строки
No arguments
ROW() возвращает номер строки размещения курсора в виде целого числа. Диапазон возвращаемых значений - от нуля до значения MAXROW().
ROW() - это функция работы с экраном, которая возвращает текущий номер строки экрана, на которой находится курсор. Значения функции ROW() обновляются консольными и полноэкранными командами и функциями. Команда @...SAY обновляет значения ROW(), только тогда, когда связана с выводом информации на экран.
ROW() используется в сочетании с функцией COL() и всеми вариациями команды @... для позиционирования курсора на новой строке, относительно текущей строки. Вы можете использовать функции ROW() и COL() для создания позиционно - независимых процедур или функций пользователя, которым передаются в качестве параметров "верхняя левая строка" и "колонка".
Функция ROW() аналогична функциям PROW() и PCOL(), которые отслеживают текущую позицию печатающей головки вместо позиции курсора на экране.
Этот пример использует ROW() для моделирования команды LIST, выдающей текст на той же строке, но в других колонках: LOCAL nRow USE Customer INDEX CustName NEW DO WHILE .NOT. EOF() CLS @ 1, 1 SAY PADR("Name", LEN(CustName)) @ ROW(), COL() + 2 SAY PADR("Address", LEN(Address)) @ ROW(), COL() + 2 SAY PADR("Phone", LEN(Phone)) nRow = 0 DO WHILE nRow++ <= 15 .AND. (!EOF()) @ ROW() + 1, 1 SAY CustName @ ROW(), COL() + 2 SAY Address @ ROW(), COL() + 2 SAY Phone SKIP ENDDO WAIT ENDDO CLOSE Customer
SAVESCREEN(<верхняя строка>,<левая колонка>,<нижняя строка>, <правая колонка>) --> образ экрана
SAVESCREEN() возвращает заданную область экрана в виде символьной строки.
SAVESCREEN() - это функция работы с экраном, используемая для сохранения области экрана в переменной любого класса памяти, включая поле. Позднее вы можете "перерисовать" изображение сохраненного экрана в том же самом или в другом месте экрана с помощью RESTSCREEN().
Обычно области экрана сохраняются и восстанавливаются, когда используется программа с "всплывающим" (pop-up) меню или для перемещения объекта экрана.
Предупреждение: Команды SAVE SCREEN и RESTORE SCREEN и функции SAVESCREEN() и RESTSCREEN() поддерживаются только при использовании стандартного заданного по умолчанию экранного драйвера ( IBM-PC карта памяти ). Использование других экранных драйверов не гарантирует поддержку работы этих функций.
Следующая функция пользователя создает всплывающее (pop-up) меню с помощью ACHOICE() в сочетании с SAVESCREEN() и RESTSCREEN(): FUNCTION PopMenu( nTop, nLeft, nBottom, nRight, aItems, cColor ) LOCAL cScreen, nChoice, cLastColor := SETCOLOR(cColor) // cScreen = SAVESCREEN( nTop, nLeft, nBottom, nRight) @ nTop, nLeft TO nBottom, nRight DOUBLE // nChoice = ACHOICE(++nTop, ++nLeft, --nBottom, --nRight, aItems) // RESTSCREEN( --nTop, --nLeft, ++nBottom, ++nRight, cScreen) SETCOLOR(cLastColor) RETURN nChoice
SCROLL([<верхняя строка>], [<левая колонка>], [<нижняя строка>], [<правая колонка>], [<кол-во строк>]) --> NIL
<верхняя строка> | , <левая колонка>, <нижняя строка> и <правая колонка> |
определяют координаты обрабатываемой области. Значения строк и | |
колонок могут находиться в диапазоне от 0, 0 до MAXROW(), MAXCOL(). | |
Если аргументы координат не заданы, то используются размеры видимого | |
экрана. | |
<кол-во строк> | определяет количество строк, на которое необходимо |
прокрутить содержимое окна. Когда значение аргумента <кол-во строк> | |
больше нуля, перемещение происходит вверх, когда меньше нуля - вниз. | |
Значение, равное нулю, заполняет заданное окно пробелами. Если | |
<кол-во строк> | не задано, то принимается значение ноль. |
SCROLL() всегда возвращает NIL.
SCROLL() - это функция работы с экраном, которая перемещает содержимое заданной области экрана вверх или вниз на заданное количество строк. Если содержимое области экрана перемещается вверх, строки, уходящие за верхнюю границу области, стираются, все другие строки передвигаются вверх, а освобождающиеся снизу строки заполняются пробелами в стандартном цвете. Если содержимое области экрана перемещается вниз, нижние строки, уходящие за нижнюю границу области стираются, все остальные строки передвигаются вниз, а освобождающиеся сверху строки заполняются пробелами в стандартном цвете.
SCROLL() чаще всего используют для вывода информации о режиме работы в определенную область экрана. Каждый раз, когда выводится новое сообщение, область экрана перемещается на одну строку, а внизу освобождается строка.
Следующая функция пользователя выводит сообщение в нижнюю строку области на экране, после прокрутки этой области вверх на одну строку: FUNCTION ScrollUp( nTop, nLeft, nBottom, nRight, expDisplay ) // SCROLL(nTop, nLeft, nBottom, nRight, 1) @ nBottom, nLeft SAY expDisplay // RETURN NIL
SETBLINK([<признак>]) --> признак текущей установки
SETBLINK() возвращает текущую установку как логическое значение.
SETBLINK() - функция среды окружения, переключающая атрибут мерцания/интенсивности фонового цвета и возвращающая его текущее состояние. Когда функция включает режим, символы могут мерцать при наличии символа звездочки (*) в строке цветовой спецификации, устанавливаемой функцией SETCOLOR(). В противном случае, символ звездочка (*) вызывает интенсивное свечение фона. Мерцание и интенсивное свечение фона невозможны в одно и то же время.
Примечание: Эту функцию можно использовать только на IBM-PC совместимых компьютерах, с адаптерами экрана типа CGA, EGA или VGA.
В этом примере сохраняется текущее состояние SETBLINK() перед передачей управления функции пользователя. Затем функция SETBLINK() восстанавливает исходное значение: lOldBlink := SETBLINK() MyFunc() SETBLINK(lOldBlink)
SETCANCEL([<переключатель>]) --> текущий режим
SETCANCEL() возвращает текущий режим в виде логического значения.
SETCANCEL() является функцией работы с клавиатурой, которая переключает состояние ключа завершения программы Alt-C и сообщает, возможно ли в данный момент завершение программы при помощи нажатия клавиш Alt-C.
SETCANCEL() используется в тех случаях, когда вы хотите подавить возможность завершения программы этим методом. Необходимо помнить, что Alt-C переназначается с помощью команды SET KEY, установка SET KEY имеет приоритет даже в том случае, если SETCANCEL() возвращает значение "истина" (.T.).
Предупреждение: Когда SETCANCEL() устанавливает значение "ложь" (.F.), пользователь не может завершить программу, пока не будет обеспечен альтернативный механизм выхода.
В примере демонстрируется, как обеспечить маршрут выхода из состояния ожидания при режиме (.F.) функции SETCANCEL(): #define K_ALTC 302 // SETCANCEL(.F.) // Запрещает использование <Alt>-<C> SET KEY K_ALTC TO AltC // Переназначает <Alt>-<C> ... ...<операторы> ... RETURN FUNCTION AltC LOCAL cScreen, nChoice, cLastColor := SETCOLOR("W/B, N/G") // SAVE SCREEN TO cScreen @ 5, 20 CLEAR TO 9, 58 @ 6, 20 TO 9, 58 DOUBLE @ 7, 26 SAY "Alt-C: Желаете завершить работу ?" @ 8, 35 PROMPT " Да " @ 8, 41 PROMPT " Нет " MENU TO nChoice SETCOLOR(cLastColor) RESTORE SCREEN FROM cScreen // IF nChoice = 1 QUIT ENDIF // RETURN NIL
SETCOLOR([<цвета>]) --> текущие цвета
<cColorString> | is a character string containing a list of color |
attribute settings for subsequent screen painting. The following is a | |
list of settings and related scopes: | |
Color Settings ------------------------------------------------------------------------ Setting Scope ------------------------------------------------------------------------ Standard All screen output commands and functions Enhanced GETs and selection highlights Border Border around screen, not supported on EGA and VGA Background Not supported Unselected Unselected GETs ------------------------------------------------------------------------ | |
Each setting is a foreground and background color pair separated by the | |
slash (/) character and followed by a comma. All settings are optional. | |
If a setting is skipped, its previous value is retained with only new | |
values set. Settings may be skipped within the list or left off the end | |
as illustrated in the examples below. |
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 Пустой ---------------------------------------------------------------------
Этот пример показывает присвоение текущих цветовых атрибутов переменной cColor: cColor = SETCOLOR() Этот пример демонстрирует использование SETCOLOR() для сохранения текущих цветовых атрибутов и установки новых: cNewColor = "BR+/N, R+/N" cOldColor = SETCOLOR(cNewColor) Этот пример показывает использование SET COLOR TO для восстановления цветов по умолчанию: SET COLOR TO ? SETCOLOR() // Результат: W/N, N/W, N, N, N/W В двух следующих примерах демонстрируется задание SETCOLOR() с отсутствующими атрибутами: SETCOLOR("W/N, BG+/B") // SETCOLOR("W/N, BG+/B,,,W/N") Этот пример показывает, как использовать SETCOLOR() в сочетании с ISCOLOR() для установления цветов в зависимости от типа экрана: FUNCTION DefaultColors IF ISCOLOR() cForm := "W+/N, BG+/B,,, W/N" cDialog := "N/N+, BG+/B,,,W+/R" cAlert := "W+/R, BG+/B,,,W+/R" ELSE cForm := "W+/N, N/W,,,W/N" cDialog := "W+/N, N/W,,,W/N" cAlert := "W+N/, N/W,,,W/N" ENDIF RETURN NIL
SETCURSOR([<форма курсора>]) --> текущая форма курсора
<форма курсора> | - число, указывающее форму курсора. Для того, |
чтобы облегчить задание формы курсора, используется файл описаний | |
Setcurs.ch, который присваивает описательные имена различным формам | |
курсора, как показано в таблице : | |
Формы курсора. --------------------------------------------------------------------- Форма Значение Setcurs.ch --------------------------------------------------------------------- Нет 0 SC_NONE Подчерк 1 SC_NORMAL Нижний полублок 2 SC_INSERT Блок 3 SC_SPECIAL1 Верхний полублок 4 SC_SPECIAL2 --------------------------------------------------------------------- |
SETCURSOR() возвращает текущую форму курсора в виде числа.
SETCURSOR() является функцией среды, которая управляет формой экранного курсора. Фактическая форма зависит от текущего драйвера экрана. Указанные формы - это те, которые гарантированно изображаются на IBM-PC и совместимых с ним машинах. На других ЭВМ изображение может отличаться для каждого задаваемого значения.
SETCURSOR(0) - то же самое, что SET CURSOR OFF, а SETCURSOR(1) - то же, что SET CURSOR ON.
Этот пример показывает использование SETCURSOR() для включения курсора в форме блока для выполнения последующей команды READ. Когда READ завершается, SETCURSOR() отключает курсор : #include "Setcurs.ch" // USE Customer NEW @ 10, 10 GET Customer->Name @ 11, 10 GET Customer->Phone // SETCURSOR(SC_SPECIAL) // Устанавливает курсор - блок READ SETCURSOR(SC_NONE) // Отключает курсор
SETMODE(<кол-во строк>, <кол-во колонок>) --> признак завершения
SETMODE() возвращает значение "истина" (.T.), если изменение режима было успешным, в противном случае, возвращает "ложь" (.F.).
SETMODE() - функция среды окружения, которая пытается изменить режим работы экрана, соответствующий определенному значению количества строк и столбцов. Изменение размеров экрана отражается на возвращаемых функциями MAXROW() и MAXCOL() значениях.
В следующем примере экран переключается в режим отображения 43 строк: IF SETMODE(43,80) ? "Режим работы 43 строки успешно установлен" ELSE ? "Режим работы 43 строки не доступен" END
SETPOS(<номер строки>, <номер колонки>) --> NIL
SETPOS() всегда возвращает NIL.
SETPOS() является функцией среды, которая перемещает курсор на новую позицию на экране. После того, как курсор занял позицию, соответственно корректируются значения ROW() и COL(). Для управления формой и видимостью курсора, служит функция SETCURSOR().
Этот пример показывает перемещение курсора на новую позицию и последующее выведение на экран строки путем использования диалоговой команды ??: SETPOS( 1, 1) ?? "Привет !"
SETPRC(<номер строки>,<номер колонки>) --> NIL
SETPRC() всегда возвращает NIL.
SETPRC() является функцией принтера, используемой для посылки управляющих кодов на принтер без изменения трассировки позиции печатающей головки. Когда xClipper печатает, он корректирует значение PCOL() с помощью ряда символов, посылаемых на принтер. Между печатаемыми и непечатаемыми символами не устанавливается никакого различия. Если, например, строка из десяти символов, посылаемая на принтер, содержит два символа, которые интерпретируются как управляющий код, значение PCOL() xClipper увеличивается на 10, в то время как истинная позиция печатающей головки перемещается только на 8. Это может привести к проблемам выравнивания. Используя SETPRC(), можно компенсировать управляющие коды путем установки PCOL(), как показано ниже.
SETPRC() может также использоваться для подавления перехода на новую страницу при печати с помощью @...SAY. Это важно, когда позиция следующей строки меньше текущей строки и не было дано команды EJECT. В таком случае xClipper производит автоматический переход на новую страницу, если позиция следующей строки меньше текущего значения PROW(). Используя SETPRC(), Вы можете установить PROW() на число, меньшее текущей строки, подавляя таким образом автоматический переход на новую строку.
В этом примере функция пользователя PrintCodes() показывает, как SETPRC() может использоваться для посылки управляющих кодов на принтер, не оказывая воздействия на значения PROW() и PCOL(): #include "Set.ch" #define ITALICS_ON CHR(27) + "I" #define ITALICS_OFF CHR(27) + "E" // SET DEVICE TO PRINTER @ 12, 10 SAY "Это " @ PROW(), PCOL() + 2 SAY PrintCodes(ITALICS_ON) + "Важная" @ PROW(), PCOL() + 2 SAY PrintCodes(ITALICS_OFF) + "Встреча" SET DEVICE TO SCREEN FUNCTION PrintCodes( cCtrlCode ) LOCAL nRow, nCol, lPrinter lPrinter := SET(_SET_PRINTER, .T.) // SET PRINTER ON nRow = PROW() // Сохранить позицию головки nCol = PCOL() // ?? cCtrlCode // Посылка управляющего кода // SETPRC(nRow, nCol) SET(_SET_PRINTER, lPrinter) // Восстановить статус принтера RETURN "" // Возврат пустой ("") строки
TONE(<частота>, <длительность>) --> NIL
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 ---------------------------------------------------------------------
Следующий пример показывает функцию DoneBeep, которая использует звуковой сигнал для индикации окончания пакетной операции: FUNCTION DoneBeep TONE(300, 1) TONE(100, 1) TONE(300, 1) TONE(100, 1) RETURN NIL Этот пример иллюстрирует последовательность звуковых сигналов, для индикации неверно нажатых клавиш или выхода за границу файла или экрана: FUNCTION ErrorBeep TONE(100, 3) RETURN NIL
UPDATED() --> признак завершения
No arguments
UPDATED() возвращает значение "истина" (.Т.), если данные в GET дополнялись или изменялись; в противном случае возвращается значение "ложь" (.F.).
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() не влияет.
Следующий пример присваивает переменным памяти значения полей базы данных Customer.dbf и затем редактирует их. Если пользователь изменил любые из этих значений, то поля текущей записи модифицируются новыми значениями: USE Customer NEW CLEAR MEMVAR->Customer = Customer->Customer MEMVAR->Address = Customer->Address @ 1, 1 SAY "Имя:" GET MEMVAR->Customer @ 2, 1 SAY "Адрес:" GET MEMVAR->Address READ // IF UPDATED() Customer->Customer := MEMVAR->Customer Customer->Address := MEMVAR->Address ENDIF
Пред. | Начало | След. |
GAME | Уровень выше | SERIAL I/O |