Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Электронный учебник по дисциплине ВМиП для спец...doc
Скачиваний:
18
Добавлен:
09.11.2019
Размер:
299.52 Кб
Скачать

10. Печать в Visual Basic .Net (2 часа)

Для печати в Visual Basic .Net используются два невизуальных элемента управления: PrintDocument и PrintPreviewDialog. Первый элемент управления предназначен собственно для печати, второй – для организации предварительного просмотра перед печатью.

Объект PrintDocument представляет собой текущий принтер. Для организации печати в нём пользователь должен предварительно создать графическое изображение, но это делается не вручную, а программно.

Свойства объекта PrintDocument, связанные с параметрами страницы, объединяются в семейство DefaultPageSettings. Важнейшими членами этого семейства являются:

PaperSizeразмеры текущей страницы (PaperSize.Width и PaperSize.Height);

Colorлогическое свойство, определяющее, нужна ли цветная печать;

Margins – поля текущей страницы (Margins.Left, Margins.Right, Margins.Top и Margins.Bottom);

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

Значения всех этих свойств могут изменяться программно и вручную в процессе разработки. Размер печатаемого текста или рисунка также должен привязываться к значениям этих свойств. В указанное семейство также входит свойство PrinterSettings, определяющее свойства принтера, в том числе:

CanDuplexлогическое свойство, указывающее, поддерживает ли принтер двустороннюю печать;

DuplexPage Settingsустанавливает параметры страницы для двусторонней печати;

Copiesопределяет нужное число копий;

FromPage и ToPageустанавливает начальную и конечную страницу печати;

InstalledPrintersопределяет имена всех установленных в системе принтеров;

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

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

Важнейший метод объекта PrintDocument – метод Print, вызывающий собственно процесс печати, например:

PrintDocument1.Print

Этот код обычно записывается в обработчике события Click кнопки «Печать», нанесённой на соответствующую форму или соответствующего пункта меню. Метод Print вызывает событие PrintPage объекта PrintDocument, которое является важнейшим событием этого объекта, и в котором, собственно, и программируется вывод текста и изображений на печать.

Обработчику события PrintPage среди прочих передаётся аргумент е, у которого имеется ряд свойств. Важнейшим свойством аргумента е является свойство Graphics, которое представляет собой рабочую поверхность для формирования печатаемого изображения. Это свойство является объектом, у которого, в свою очередь, имеются свои свойства и методы. Для печати текста используется метод DrawString, имеющий синтаксис:

e.Graphics.DrawString(строка, шрифт, цвет, координата Х, координата Y).

Шрифт определяется объектом Font, а цвет – объектом Brush. Например, для вывода строки «Иванов Иван Иванович» шрифтом типа Arial, размером 20 пунктов, шоколадным цветом в позиции с координатами (20,20) необходимо записать код:

Dim F As Font

Dim A As String

A = «Иванов Иван Иванович»

F = New Font(«Arial», 20)

e.Graphics.DrawString(A, F, Brushes.Chocolate, 10, 20)

Обработчик события PrintPage выполняет печать только одной очередной страницы документа. Если документ содержит несколько страниц, то перед выходом из данного обработчика необходимо установить свойство e.HasMorePages, равное True. Это вызовет генерацию ещё одного события PrintPage.

Рассмотрим пример. Пусть необходимо вывести на печать столбец цифр от 0 до 60 шрифтом Arial, размером 20 пунктов, чёрным цветом, расстояние между строками – 7 пунктов, необходимое число страниц определить автоматически. В этом случае обработчик события PrintPage будет иметь следующий вид (x,yкоординаты строки, i – выводимое число, jсчётчик чисел, который необходим, поскольку при переходе на новую страницу происходит обнуление количества выведенных чисел. Переменную i необходимо объявит вне кода всех процедур с атрибутом Public, т.к. при выходе из процедуры значения всех ее собственных переменных обнуляются):

Dim x, y As Single

Dim F As Font

Dim j As Integer

F = New Font("Arial", 20)

j = 0

x = PrintDocument1.DefaultPageSettings.Margins.Left

While i <= 60

y = PrintDocument1.DefaultPageSettings.Margins.Top + (j - 1) * (F.Size + 7)

e.Graphics.DrawString(Str$(i), F, Brushes.Black, x, y)

If y > PrintDocument1.DefaultPageSettings.PaperSize.Height - PrintDocument1.DefaultPageSettings.Margins.Bottom Then

e.HasMorePages = True

j = 0

Exit Sub

End If

j = j + 1

i = i + 1

End While

Для вызова процесса печати необходимо нанести на форму кнопку с надписью «Печать» или создать меню печати, и записать обработчик события Click:

PrintDocument1.Print()

Для организации предварительного просмотра используют объект PrintPreviewDialog. Этот объект представляет собой стандартное диалоговое окно с кнопками навигации по страницам. Обычно специального кода, реализующего функцию предварительного просмотра, не пишут, а, создав код печати, перенаправляют этот код в объект PrintPreviewDialog. Для этого пишут следующий код:

Объект PrinrPrewiewDialog.Document=Объект PrintDocument

Объект PrinrPrewiewDialog.ShowDialog

Рассмотрим пример. Пусть необходимо вывести результаты работы предыдущего примера (столбец цифр от 0 до 60) в окне предварительного просмотра. Для этого необходимо нанести на форму объект PrinrPrewiewDialog, затем написать код обработчика события PrintPage объекта PrintDocument, после чего следует нанести кнопку с надписью «Предварительный просмотр» или создать соответствующее меню, и в обработчик события Click записать код:

PrintPreviewDialog1.Document = PrintDocument1

PrintPreviewDialog1.ShowDialog()