Сегодня врубрике для начинающих рассмотрим принтеры.
Первое - это объект Printer. В сущности этот объект и связывает программу с принтеров, но стоит иметь ввиду, что это просто переменная типа Printer, но вот его свойства и методы - это что-то невероятное, а принцип применения - вообще нечто. Итак:
Свойство/метод
Описание
Примерение
Print
Печатает текст в "текущем" месте листа
Printer.Print "Welcome"
Line
Позволяет нарисовать линию, прямоугольник или закрашенный
прямоугольник
Printer.Line (x0,y0)-(x1,y1),BF
Circle
Позволяет нарисовать окружность, дугу или сектор
Printer.circle (x,y),r,begin,end
CurrentX, CurrentY
Позволяет
определить или задать "Текущие" координаты для вывода
Printer.CurrentX=0:Printer.CurrentY=0
DeviceName
Позволяет получить имя принтера
Copies
Задает количество копий для печати
Duplex
Позволяет получить или задать режим двусторонней печати
PaintPucture
Позволяет вывести
рисунок в определенном месте бумаги
Width, Height
Выводит
соответственно ширину и высоту области печати
на листе
KillDoc
Отменяет печать до
момента отправки на принтер
NewPage
Завершает печать
текущей страницы и начинает новую
EndDoc
Завершает печать и
передает задание на принтер.
ScaleMode
Позволяет
установить метрическую единицу для работы с
принтером
Теперь внесем немного ясности. Как я уже говорил,
Printer - это переменная и если мы с ней ничего не
проделывали, то она имеет значение принтера "по
умолчанию", установленного в системе. Тут вы зададите
естественный вопрос, а как же быть с остальными
принтерами? Ну и получите естественный ответ: Printers.
Вот так дешево и сердито. Спросите что все это значит? А
то и значит, что Printer - переменная, а Printers -
массив объектов. Чтобы перебрать все принтеры можно
сделать так:
Sub
PrinterList()
For i=0
to Printers.Count - 1
ListBox.Add Printers.Item(i).DeviceName
Next i
End Sub
Из примера видно как получить список возможных
принтеров. А подключить определенный принтер можно
используя список
Sub
ListBox_Click()
Set
Printer=Printers.Item(ListBox.ListIndex)
End Sub
Таким образом мы на нашу переменную Printer подключили
выбранный принтер. Давайте теперь попробуем что-нибудь
нарисовать и напечатать.
Sub
CommandButton_Click()
Printer.ScaleMode=6 ' Задаем режим "Миллиметры"
Printer.Line (10,30)-(110,190),0,B ' Рисуем рамку 10*15
Printer.CurrentY=30-Printer.TextHeight("Моя Фотография")' Располагаем текст аккурат над рамкой
Printer.CurrentX=10+(100-Printer.TextWidth("Моя фотография"))/2 ' Центруем текст посередине рамки
Printer.Print "Моя фотография" ' Собственно печатаем текст
'В рамку можно как вывести картинку
Printer.PaintPicture LoadImage("C:\MyPhoto.jpg")
'Так и нарисовать с помощью Circle
Printer.EndDoc ' Посылаем в печать
End Sub
Итак мы рассмотрели варинты работы с принтером как "по
умолчанию", так и с помощью ручного выбора. Рисование же
на принтере выполняется точно также, как и на PictureBox.
С той лишь разницей, что PictureBox не поддерживает
методы NewPage, EndDoc, KillDoc. Применение методов Line,
Circle такое же как и в QBasic, при рисовании на экране,
с той лишь разницей, что тут не нужно указывать цвет.
Цвета задают параметры ForeColor, FillColor, FillStyle,
DrawStyle.
Еще стоит сказать о функциях TextWidth И TextHeight. Они
позволяют нам тонко форматировать вывод. К примеру есть
переменная S строкового типа (Dim S as string).
Допустим, что в нее мы записали (S="Привет мир"). Тогда
TextWidth(S) - выдаст длину фразы, но не в байтах или
символах, а в точках. В свою очередь TextHeight(S) -
выдаст высоту этой строки, опять же в точках.