Распечатать страницу

Команды и функции, управляющие выводом VFP

« Назад

Команда

SET PRINTER ON [PROMPT] | OFF

направляет вывод на притер или в файл.

Опции:

ON [PROMPT] – направляет вывод на принтер. Если задана опция PROMPT, то откроется диалог настройки параметров принтера.

OFF – (по умолчанию) отменяет вывод на принтер.

Команда

SET PRINTER TO [DEFAULT | NAME WindowsPrinterName]

направляет вывод на принтер по умолчанию (DEFAULT) или на принтер, заданный опцией NAME WindowsPrinterName.

Для получения имени принтера можно употребить функцию GETPRINTER( ) или APRINTERS( ), например:

set printer to name GetPrinter( )

Команда

SET PRINTER TO [FileName [ADDITIVE] | PortName]

задает файл FileName или порт PortName, в который направляется вывод. Опция ADDITIVE позволяет заносить данные в файл, сохраняя имеющиеся. При ее отсутствии файл перезаписывается.

Открытый таким образом файл будет закрыт после выполнения SET PRINTER TO без параметра FileName.

Пример:

set textmerge on show

&& Вывод в файл d:\a.txt

set printer on

set printer to d:\a.txt

fi = Pi( ) / 4

\Синус угла <<fi>> равен <<Sin(fi)>>

&& Закрываем файл d:\a.txt

set printer to

При выводе в порт (в параллельный – LPT1, LPT2 или LPT3 или последовательный – COM1 или COM2) могут быть указаны следующие параметры:

  • размер порции в бодах – 300, 600, 1200, 1800, 2400, 3600, 4800, 7200, 9600, 19200 или 57600;

  • контроль по четности – N (не выполняется), O (нечетный), E (четный)

  • информационный бит – 5, 6, 7, 8

  • стоповый бит – 1, 1.5, 2

  • квитирование установления связи – H (аппаратное), S (программное), N (нет)

  • конец строки – R (символ возврата каретки), L (символ новой строки); всего не более 4-х символов, например RLRL.

Пример:

set printer on

set printer to COM1, 9600, N, 8, 1, H, RL

В примере приведены заданные по умолчанию установки последовательного порта COM1.

Команда

SET PRINTER TO NAME \\ServerName\PrinterName

направляет вывод на сетевой принтер. Поддерживается начиная с версии Windows NT 4.0.

Параметры:

ServerName – уникальное сетевое имя сервера печати.

PrinterName – сетевое имя принтера.

Выполнение

SET PRINTER TO

направит вывод на устройство, определяемое MS-DOS PRN-утилитой.

Команда

SET PRINTER FONT cFontName [, cFontSize] [STYLE cFontStyle]

задает шрифт и его параметры, употребляемые при выводе текста на принтер.

Параметры:

cFontName, cFontSize и cFontStyle – соответственно имя шрифта, его размер и стиль, например:

set printer font "MS Sans Serif", 16 style "BI"

В строке, задающей опцию cFontStyle, могут находиться приведенные в табл. 4.3 символы.

Таблица 4.3

Символы, входящие в cFontStyle

Символ

Описание

B

Жирный

I

Курсив

N

Обычный

O

Контур

Q

Непрозрачный

S

С тенью

Перечеркнутый (только VFP)

T

Прозрачный

U

Подчеркнутый

Если опция STYLE не задана, используется обычный стиль.

Замечание. Параметры cFontName, cFontSize и cFontStyle могут быть заданы как результат функции GETFONT( ), например:

set printer font GetFont("MS Sans Serif")

Функция

GETPRINTER( )

открывает диалог Print выбора принтера и возвращает строку, содержащую имя выбранного принтера. Если принтер не выбран, то функция вернет пустую строку.

Пример:

selectedPrinter = GetPrinter( )

if not Empty(selectedPrinter) then

                                            && Используем выражение с именем

                                            set printer to name (selectedPrinter)

else

                                            MessageBox("Принтер не выбран!")

endif

Функция

PRINTSTATUS( )

возвращает .T., если принтер работает или установлен в панели управления Windows, или .F. – в противном случае.

Функция

GETFONT([cFontName [, nFontSize [, cFontStyle [, nFontCharSet]]]])

открывает диалог Font выбора шрифта и возвращает строку, содержащую имя выбранного шрифта, его размер, стиль и набор символов, например:

MS Sans Serif,18,BI,204

Набор символов включается в результат, если функции GETFONT( ) передан параметр nFontCharSet.

Функция вернет пустую строку, если шрифт не выбран.

Параметры:

cFontName – имя шрифта, устанавливаемое в Font-диалоге после его открытия. Если заданный шрифт не существует, то будет выбран шрифт по умолчанию.

nFontSize – размер шрифта, выбираемый в Font-диалоге после его открытия. Если указанный размер не поддерживается или если nFontSize опущен, то выбирается размер по умолчанию.

cFontStyle – стиль шрифта, выбираемый в Font-диалоге после его открытия. Если указанный стиль не поддерживается или если cFontStyle опущен, то выбирается стиль по умолчанию. Параметр cFontStyle могут быть комбинацией следующих значений:

  • "B" – жирный;

  • "I" – курсив;

  • "P" – отображаются шрифты, доступные на текущем принтере.

Пример:

Getfont("Arial", 12, "BP")

nFontCharSet – число, задающее набор символов шрифта; принимает следующие значения:

  • 1 – Western;

  • 2 – Symbol;

  • 77 – Mac;

  • 128 – Japanese;

  • 161 – Greek;

  • 162 – Turkish;

  • 163 – Vietnamese;

  • 177 – Hebrew;

  • 178 – Arabic;

  • 186 – Baltic;

  • 204 – Cyrillic;

  • 238 – Central European;

  • 255 – OEM/DOS.

Замечание. Если использовать сокращенное имя GETF( ), то будет вызвана функция GETFILE( ), а не GETFONT( ).

Функция

FONTMETRIC(nAttribute [, cFontName, nFontSize [, cFontStyle]])

возвращает атрибут шрифта для текущего окна вывода данных. Тип возвращаемого значения – Numeric. Имя текущего шрифта, его размер и стиль возвращает функция WFONT( ).

Параметры:

nAttribute – определяет атрибут шрифта, значение которого возвращается функцией FONTMETRIC( ). Если параметры cFontName, nFontSize и cFontStyle опущены, то функция вернет атрибут для текущего шрифта активного окна вывода данных. Принимает приведенные в табл. 4.4 значения; в третьем столбце таблицы приведены результаты функции FONTMETRIC( ), возвращаемые после выполнения команд

define window someWindow at 10, 10 size 21, 40 ;

                                               in desktop system float close ;

                                               font "Times New Roman", 12 style "BI"

activate window someWindow

for ind = 1 to 20

                                            ? Fontmetric(ind)

next

Таблица 4.4

Значения параметра nAttribute

nAttribute

Возвращаемый результат

Результат
для примера

1

Высота шрифта в пикселях

19

2

Число пикселей над базовой линией

15

3

Число пикселей под базовой линией

4

4

Число пикселей между строками

3

5

Число пикселей перед символом

1

6

Средняя длина символа в пикселях

7

7

Наибольшая ширина символа в пикселях

28

8

Вес шрифта

700

9

Курсив (0 – нет, не 0 – да)

255

10

Подчеркнутый (0 – нет, не 0 – да)

0

11

Перечеркнутый (0 – нет, не 0 – да)

0

12

Код первого символа шрифта

30

13

Код последнего символа шрифта

255

14

Код символа шрифта, подставляемый для символов, не имеющихся в шрифте

31

15

Код символа, разделяющего слова

32

16

Код семейства шрифта (Roman, Swiss, Modern, Script, Decorative)

23

17

Номер набора символов

204

18

Дополнительная ширина в пикселях

0

19

Горизонтальный аспект

96

20

Вертикальный аспект

96

cFontName – имя установленного шрифта.

nFontSize – размер шрифта cFontName.

cFontStyle – код стиля шрифта cFontName. Может принимать приведенные в табл. 4.3. значения. Если параметр опущен, то FONTMETRIC( ) возвращает атрибут для нормального стиля.

Команда

TYPE FileName1 [AUTO] [WRAP] [TO PRINTER [PROMPT]
| TO FILE FileName2] [NUMBER]

печатает файл FileName1 или копирует его в файл FileName2. Имена файлов могут содержать путь и должны включать расширение.

Если SET HEADINGS установлен в ON, то вывод текста предваряется полным именем файла-источника и текущей датой.

Если SET CONSOLE установлен в ON, то дополнительно вывод направляется в текущее окно VFP.

Опции и параметр:

AUTO – автоматически включает употребление отступов. Если также использована опция WRAP, то TYPE применяет отступ для всего абзаца, беря ту же величину отступа, которая использована для первой строки абзаца. В качестве единицы измерения отступа может быть использован символ табуляции или пробел.

WRAP – обеспечивает перемещение слова на следующую строку, когда оно выходит за правую границу листа.

TO PRINTER [PROMPT] – направляет вывод на принтер. Если включена опция PROMPT, то появится диалог настройки принтера.

TO FILE FileName2 – направляет вывод в файл FileName2.

NUMBER – размещает номера в начале каждой строки.

Число символов на странице текстового файла содержит системная переменная _RMARGIN, равная по умолчанию 80 (правая граница области вывода).

Левая граница области вывода определяется системной переменной _LMARGIN, равной по умолчанию 0.

Пример. Текст файла d:\Text1.txt выводится в файл d:\Text2.txt.

&& Установки, влияющие на результат вывода

set headings on

set console off

_RMARGIN = 50

&& Вывод и просмотр результата

type d:\Text1.txt auto wrap to file d:\Text2.txt number

modify file d:\Text2.txt

Состав файла d:\Text1.txt:

Первая строка файла, который будет использован командой TYPE. Эта строка достаточно длинная, чтобы уместиться на одной строке листа формата А4.

Посмотрим, как будет передан этот текст.

Состав результирующего файла d:\Text2.txt:

d:\text1.txt 01.13.2005               1

                                            1 Первая строка файла, который будет

                                            2 использован командой TYPE. Эта строка

                                            3 достаточно длинная, чтобы уместиться

                                            4 на одной строке листа формата А4.

                                            5 Посмотрим, как будет передан этот текст.

Команда

? | ?? Expression1 [PICTURE cFormatCodes] | [FUNCTION cFormatCodes]
| [VnWidth] [AT nColumn] [FONT cFontName [, nFontSize]
[STYLE cFontStyle | Expression2]]] [, Expression3] ...

выполняет вывод значений любого типа в окно VFP, в файл, на принтер или порт.

Отличие команды ? от команды ?? в том, что первая выполняет вывод с новой строки, а вторая продолжает на текущей. Так, команды

? Pi( )

? Exp(1)

напечатают числа p и e на двух строчках, а команды

? Pi( )

?? Exp(1)

выведут эти числа на одной строке, что равносильно выполнению команды

? Pi( ), Exp(1)

Команда ? | ?? также может направить вывод на принтер, в текстовый файл или порт, если соответствующим образом употребить команду SET ALTERNATE или SET PRINTER.

Опции и параметры:

Expression1 – выводимое значение. Результат выводится на новой строке главного или активного окна или принтера. По умолчанию выравнивание выполняется по левой границе. Оно, однако, может быть изменено путем задания cFormatCodes или соответствующего значения системной переменной _ALIGNMENT.

Если выражение опущено, то выводится пустая строка. Если присутствуют несколько выражений, то они разделяются пробелом. Если выражение – это объект, то команда напечатает строку "(Object)".

PICTURE cFormatCodes – задает способ форматирования результата. Строка cFormatCodes может содержать как функциональные (табл. 4.5), так и картинные коды (табл. 4.6).

Таблица 4.5

Функциональные коды

Код

Описание и примеры

!

При форматировании символьных данных выводит строчные буквы как прописные

? "upper" function "!"                                  && Напечатает: UPPER

$

Проставляет символ валюты, заданный командой SET CURRENCY. Для изменения символа валюты и его положения (перед полем вывода или после него) употребляется соответственно команда SET CURRENCY. Символ, разделяющий группы в целой части числа, задается командой SET SEPARATOR, а вид десятичной точки регулируется командой SET POINT

set currency to " руб."
set currency right
set separator to "-"
? 12345.98 picture "999,999.99" function "$"                 && Напечатает: 12-345.98 руб.
&& Восстанавливаем заданный по умолчанию разделитель
set separator to

^

Отображает числовые данные в научном формате; употребляется только с числовыми данными

? Pi( ) function "^"            && Напечатает: 3.14159265358980E+0

(

Заключает отрицательные числа в скобки, знак минус не отображается; употребляется только с числовыми данными

? –Pi( ) picture "99.99" function "("          && Напечатает: (3.14)

0

Преобразовывает положительные данные типа Currency или Numeric в шестнадцатеричное представление. Преобразовываемое число должно быть меньше 4,294,967,296

? 15 function "0"                                          && Напечатает: 0x0000000F

B

Отбрасывает ведущие пробелы

? 123 picture '9999999'                               && Напечатает:     123
? 123 picture '@B 9999999'                                      && Напечатает: 123

C

Символы CR выводятся после положительного числа для обозначения кредита; употребляется только с числовыми данными

? 123 function 'C'                                         && Напечатает: 123 CR

D

Применяется при выводе данных типа Date и DateTime; использует текущий SET DATE-формат

? {^2005–12–31} function "D"                 && Напечатает: 12/31/2005

E

Выводит дату в формате, принятом в Великобритании

? {^2005–12–31} function "E"                 && Напечатает: 31/12/2005

F

Предотвращает появление в Varchar-значениях хвостовых пробелов и в Varbinary-величинах хвостовых нулевых байтов

L

Отображает ведущие нули вместо пробелов

? 123 picture '@L 9999999'                       && Напечатает: 0000123

R

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

&& Употребляем функциональный код R
? "aaabbcc" picture "@R 999-99-99"                      && Напечатает: aaa-bb-cc
&& Функциональный код R не используется
? "aaabbcc" picture "999-99-99"                              && Напечатает: aaa-bc-

T

Удаляет ведущие и хвостовые пробелы

? "ab  ", "    cd"                                              && Напечатает: ab      cd
? "ab  " function "T", "    cd" function "T"               && Напечатает: ab cd

X

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

? –Pi( ) function "X"                                     && Напечатает: 3.14 DB

YS

Отображает дату а коротком формате, определяемом установками панели управления Windows

? {^2005–12–31} function "YS"              && Напечатает: 31.12.2005

YL

Отображает дату а длинном формате, определяемом установками панели управления Windows

? {^2005–12–31} function "YL"              && Напечатает: 31 декабря 2005

Z

Числовое значение, если оно равно нулю, выводится в виде пробелов; употребляется только числовыми данными и датами. В случае пустой даты разделители между частями даты не отображаются

store 0 to nVar
? nVar picture '@L 9999999'                                     && Напечатает: 0000000
? nVar picture '@Z 9999999'                                     && Напечатает:

Таблица 4.6

Картинные коды

Код

Описание и примеры

9

При форматировании числовых и символьных данных задает размер поля вывода

? Pi( ) picture "99.9999"                                              && Напечатает: 3.1400
set decimals to 7
? Pi( )                                                                              && Напечатает: 3.1415
? Pi( ) picture "99.9999"                                              && Напечатает: 3.1415
? 'aabbcc' picture "9999"                                            && Напечатает: aabb

При форматировании числовых данных может также использоваться с другими, задающими маску символами

? 1203948 picture "999-99-99"                 && Напечатает: 120-39-48

При выводе чисел длина форматной строки должна быть не меньше числа имеющихся в числе знаков

? 1203948 picture "999"                             && Напечатает: ***

#

Имеет то же действие, что и код 9

set decimals to
? Pi( ) picture "##.####"                                              && Напечатает: 3.1400
? 1203948 picture "###-##-##"                                && Напечатает: 120-39-48
? 'aabbcc' picture "####"                                            && Напечатает: aabb

.

Задает положение десятичной точки

,

Задает положение разделителя в целой части числа

set separator to ":"
? 1234567.9 picture "9,999,999.99"                        && Напечатает: 1:234:567.90

X

При форматировании символьных данных задает размер поля вывода

? "Часть строки" picture "xxxxxxx"       && Напечатает: Часть с

!

При форматировании символьных данных задает размер поля вывода и выводит строчные буквы как прописные

? "Часть строки" picture "!!!!!!!"              && Напечатает: ЧАСТЬ С
? "Часть строки" picture "@! xxxxxxx"                 && Напечатает: ЧАСТЬ С

Y

При форматировании логических данных печатает взамен .T. и .F. соответственно Y и N

? IsDigit("A")                                                 && Напечатает: .F.
? IsDigit("A") picture "Y"                                            && Напечатает: N

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

Функциональные коды воздействуют на весь результат, картинные – только на его отдельные символы. Если функциональные коды присутствуют в cFormatCodes, то они должны появляться перед картинными и им должен предшествовать символ @. Для нескольких неразделенных пробелами функциональных кодов можно употребить один символ @. После последнего функционального кода нужно проставить один или несколько пробелов, а затем начать запись картинных кодов.

FUNCTION cFormatCodes – задает функциональные коды. Символ @ при этом не употребляется.

VnWidth – специальный функциональный код, позволяющий вывести результат на нескольких строках, ограничивая длину каждой строки не более nWidth символами, например:

&& Задаем размер области вывода равным 20 позициям

? "Этот текст разместится на трех строчках." function "V20"

После выполнения команды ? на экране появится следующий результат:

Этот текст

разместится на

трех строчках.

AT nColumn – задает номер позиции (столбца) окна вывода, начиная с которой печатается результат.

FONT cFontName [, nFontSize] – задает имя шрифта (cFontName) и его размер (nFontSize). Если параметр nFontSize опущен, то размер шрифта устанавливается равным 10. Если указанный шрифт недоступен, то берется шрифт с похожими характеристиками. Если не задана опция FONT, то используется шрифт, определенный для окна, в которое выполняется вывод.

STYLE cFontStyle задает стиль шрифта. Опция употребляется, если присутствует опция FONT. Параметр cFontStyle может включать приведенные в табл. 4.3 символы. Если опция опущена, то используется обычный стиль.

Пример. После выполнения команд

set decimals to 7

? Pi( ) at 10 font "Impact", 16 style "BI"

на экране появится число p, содержащее 7 десятичных знаков, отображенное с использованием шрифта Impact размера 16 и стилей Italic и Bold. Изображение числа разместится начиная с 10-й позиции текущей строки (рис. 4.6).

74.1.-Изображение-числа

Рис. 4.6. Изображение числа p

Если SET PRINTER установлен в ON, то результат команды ? | ?? направляется и в окно (главное или активное пользовательское) и на принтер (или в порт, или текстовый файл). Если при этом SET CONSOLE установлен в OFF, то результат печатается только на принтере.

Вторая возможность направить вывод команды ? | ?? в текстовый файл – это использовать SET ALTERNATE.

По умолчанию между выводимыми командой ? | ?? значениями проставляется 1 пробел.

Команда

SET SPACE ON | OFF

задает (ON) или устраняет (OFF) пробел между полями вывода, формируемыми командой ? | ??.

Пример:

set space on

? "ab  " function "T", "    cd" function "T"         && Напечатает: ab cd

set space off

? "ab  " function "T", "    cd" function "T"         && Напечатает: abcd

Команды

SET ALTERNATE ON | OFF

или

SET ALTERNATE TO [FileName [ADDITIVE]]

направляют вывод команд \ | \\, ? | ??, DISPLAY и LIST в текстовый файл.

Опции и параметр:

ON – вывод будет направлен в текстовый файл.

OFF – (по умолчанию) вывод в текстовый файл отменяется.

TO FileName – создает текстовый файл FileName. Расширение файла, если оно не задано явно, – TXT.

При выполнении SET ALTERNATE TO последний текстовый файл, созданный SET ALTERNATE TO FileName, будет закрыт.

ADDITIVE – добавляет данные в конец файла FileName. Если опция опущена, то содержимое файла перезаписывается.

Команда

CLOSE ALTERNATE

закрывает файл, открытый SET ALTERNATE.

Команда

SET BELL ON | OFF

или

SET BELL TO [cWAVFileName]

включает (ON) или отключает (OFF) звуковой сигнал или устанавливает его атрибут путем задания имени звукового файла cWAVFileName.

Сигнал воспроизводится при попытке ввести недопустимые данные, например в проверяемое поле таблицы, отображаемой в browse-окне.

Пример. Звучит мелодия из файла Ding.wav.

set bell to 'c:\Windows\Media\Ding.wav'

?? Chr(7)