к оглавлению VB   VBScript   VBA   VB7 (.NET)   к 4GL - визуальному программированию

Объект Printer Visual Basic

  1. Полезные свойства и методы объекта Printer.
  2. Набор Printers.
  3. Печать информации в RichTextBox.

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
1
vbPRSMColor
2
 

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
1
Черновая печать
vbPRPQLow
2
Низкое разрешение
vbPRPQMedium
3
Среднее разрешение
vbPRPQHigh
4
Высокое разрешение
 
 
    
 


Примечание: Дополнительно можно устанавливать разрешение в точках на дюйм, если принтер (и его драйвер) поддерживают это.

Набор Printers

    По определению объект Printer представляет собой текущий принтер Windows. Набор Printers, с другой стороны, позволяет получить доступ ко всем установленным драйверам принтеров в системе (например, это может быть и драйвер факса). Число установленных принтеров можно получить так:

Printers.Count

Доступ к элементу набора осуществляется следующим образом:

Printers {индекс},

где индекс означает число от 0 до Printers.Count - 1.


Примечание: Фактически принтер по умолчанию можно изменить, используя Visual Basic. Это делается при помощи команды Set.

    Например, следующий фрагмент кода использует оператор 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 для специальных целей и лучше не вникать в то, как он работает.)

к оглавлению VB   VBScript   VBA   VB7 (.NET)   к 4GL - визуальному программированию

Знаете ли Вы, что cогласно релятивистской мифологии "гравитационное линзирование - это физическое явление, связанное с отклонением лучей света в поле тяжести. Гравитационные линзы обясняют образование кратных изображений одного и того же астрономического объекта (квазаров, галактик), когда на луч зрения от источника к наблюдателю попадает другая галактика или скопление галактик (собственно линза). В некоторых изображениях происходит усиление яркости оригинального источника." (Релятивисты приводят примеры искажения изображений галактик в качестве подтверждения ОТО - воздействия гравитации на свет)
При этом они забывают, что поле действия эффекта ОТО - это малые углы вблизи поверхности звезд, где на самом деле этот эффект не наблюдается (затменные двойные). Разница в шкалах явлений реального искажения изображений галактик и мифического отклонения вблизи звезд - 1011 раз. Приведу аналогию. Можно говорить о воздействии поверхностного натяжения на форму капель, но нельзя серьезно говорить о силе поверхностного натяжения, как о причине океанских приливов.
Эфирная физика находит ответ на наблюдаемое явление искажения изображений галактик. Это результат нагрева эфира вблизи галактик, изменения его плотности и, следовательно, изменения скорости света на галактических расстояниях вследствие преломления света в эфире различной плотности. Подтверждением термической природы искажения изображений галактик является прямая связь этого искажения с радиоизлучением пространства, то есть эфира в этом месте, смещение спектра CMB (космическое микроволновое излучение) в данном направлении в высокочастотную область. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution