- •08080101 (Дисциплина опд. Ф.04 – лекции: 18 часов),
- •1. Понятие о визуальном программировании (2 часа)
- •2. Структура программы на Visual Basic .Net (1 час)
- •Imports имя_класса
- •3. Работа с переменными в Visual Basic .Net (2 часа)
- •4. Работа с формами в Visual Studio .Net (2 часа)
- •5. Элементы управления в формах (2 часа)
- •6. Дополнительные элементы управления (2 часа)
- •7. Работа с меню в Visual Studio .Net (2 час)
- •8. Создание многооконных приложений в Visual Basic .Net (1 час)
- •9. Работа с файлами данных в Visual Studio .Net (2 часа)
- •10. Печать в Visual Basic .Net (2 часа)
- •Глоссарий
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()