Visual Basic использует
принтер, установленный по умолчанию в операционной системе. Он помогает
легко установить его разрешение, свойства шрифтов и т.п.
Сперва рассмотрим команду
PrintForm, выводящую на принтер графический образ окна формы. Если в приложении
используется несколько форм, то необходимо указать требуемое имя в качестве
параметра:
ИмяФормы.PrintForm
Поскольку данная команда выполняет
побитовый перенос формы вместе с заголовком и рамкой на принтер, она не
обладает достаточной гибкостью. Более того, большинство принтеров обладают
большей разрешающей способностью, чем экран компьютера.
Большинство команд принтера
в Visual Basic зависят от ориентации страницы. Это означает, что Visual
Basic пересчитывает все выводимые символы (фактически точки) перед передачей
информации на принтер. Это позволяет полностью управлять внешним видом
печатающейся страницы.
Обычный способ для передачи
информации на принтер состоит в использовании метода Print, связанного
с объектом Printer. Например, поскольку метод Print учитывает ориентацию
страницы, можно использовать свойства CurrentX и CurrentY для точного позиционирования
текста и даже точек на странице.
Синтаксис команды для вывода текста на печать
очень прост:
Printer.Print текст
В данном контексте можно использовать
символы ";" и "," таким же образом, как в формах. Точка с запятой подавляет
автоматический переход на следующую строку, а запятая осуществляет переход
к новой печатной зоне (те же 14 колонок). Функции Tab и Spc работают аналогичным
образом.
Управлять свойствами шрифта тоже можно обычным
образом. Например:
Printer.Font.Name = "Script" 'Используется индексный
шрифт размером 18 пунктов
Printer.Font.Size = 18
Как и в формах, изменения шрифта принтера не влияют на предыдущий текст. Все изменения отражаются только на вновь выводимом тексте.
Полезные свойства и методы для объекта Printer
Если изучить контекстную справку, то можно убедиться в наличии у объекта Printer 40 свойств и 12 методов. Большинство из них еще незнакомы читателю, например, DrawMode. Однако их знание является очень важным в плане работы не только с принтером, но и с формами. Ниже следует краткое описание некоторых наиболее часто используемых свойств и методов объекта Printer. (См. электронную документацию по тем свойствам и методам, которые не описаны здесь, а также документацию по символьным константам, обозначающим различные установки принтеров.)
ColorMode. Позволяет
определить тип принтера - цветной он или монохромный. Возможны два значения
данного свойства, они приведены в таблице ниже.
|
|
vbPRSMMonochrome |
|
vbPRSMColor |
|
Copies. Устанавливает количество печатающихся копии.
Height, Width. Возвращают горизонтальный и вертикальный размеры бумаги в принтере, установленном в Windows. Они измеряются в твипсах, если только не установлена другая единица измерения. Данные значения нельзя изменить в период работы программы; они предназначены только для чтения. Они используются, например, для проверки того, переключился ли пользователь на другой размер бумаги, если выводимая информация не умещается на стандартном листе 8,5х11 дюймов. (Для такой страницы Visual Basic выдает значение ширины 12 288 твипсов и высоты - 15 744 твипсов.)
EndDoc. Этот метод сообщает Windows об окончании работы с документом. Его синтаксис следующий:
Printer.EndDoc
Данная строка освобождает память от последних страниц текста и посылает их в Диспетчер Печати Windows на печать.
NewPage. Данный метод завершает текущую страницу и посылает принтеру команду перехода на следующую страницу. Синтаксис:
Printer.NewPage
Page. Это свойство
сохраняет количество напечатанных страниц текущего документа. Счетчик начинается
с 1 и заканчивается после выполнения операции EndDoc. Он увеличивается
на 1 всякий раз при использовании метода NewPage, а также в случаях, когда
выводимая информация не вмещается на одну страницу. Обычно его
используют при выводе верхнего колонтитула.
PrintQuality. Используется для установки качества печати, если это поддерживает драйвер принтера. Синтаксис:
Printer. PrintQuality = значение где можно использовать
четьгое встпоенные константы, пепечисленные в таблице ниже
|
|
|
vbPRPQDraft |
|
Черновая печать |
vbPRPQLow |
|
Низкое разрешение |
vbPRPQMedium |
|
Среднее разрешение |
vbPRPQHigh |
|
Высокое разрешение |
По определению объект Printer представляет собой текущий принтер Windows. Набор Printers, с другой стороны, позволяет получить доступ ко всем установленным драйверам принтеров в системе (например, это может быть и драйвер факса). Число установленных принтеров можно получить так:
Printers.Count
Доступ к элементу набора осуществляется следующим образом:
Printers {индекс},
где индекс означает число от 0 до Printers.Count - 1.
Например, следующий фрагмент кода использует оператор For-Next для проверки каждого принтера системы по признаку цветной/монохромный. (После изучения еще нескольких команд Вы сможете легко добавить сюда несколько строк, чтобы предложить пользователю перейти на цветной принтер.)
For I = 1 То Printers.Count - 1
If Printers(I).ColorMode =
vbPRCMColor Then
MsgBox
"At least one printer has a color mode"
End If Next I
Печать информации в RichTextBox
Метод SelPrint позволяет печатать
текущее отформатированное содержимое данного элемента управления на текущий
принтер. Если при этом пользователь выделил текст внутри RichTextBox, то
метод SelPrint посылает на принтер только выделенный фрагмент. Если текст
не выделен, то на принтер посылается все содержимое RichTextBox. Чтобы
перевести принтер в состояние готовности (Ready), необходимо послать сперва
на него пустую строку. Далее необходимо использовать контекст устройства
для текущего принтера. (Контекст устройства представляет собой целое число,
которое Windows использует для идентификации объекта.)
Таким образом, пример программы будет выглядеть
так:
Printer.Print. " "
RichTextBoxl.SelPrint(Printer.hDC)
(Свойство hDC объекта Printer определяет идентификатор контекста устройства. Он используется Windows для специальных целей и лучше не вникать в то, как он работает.)