Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций.docx
Скачиваний:
11
Добавлен:
01.07.2025
Размер:
425 Кб
Скачать
☆

13.4. Вывод информации на печать

Несмотря на стремление к безбумажному офису, вероятно нам еще долго придется переносить результаты обработки данных на бумагу.

Для печати данных VB предоставляет несколько возможностей.

Использование метода Print позволяет осуществить вывод информации в одно из следующих четырех мест:

В экранную форму

На принтер

В объект управления Picture Box

В окно Debug (Отладка)

При направлении вывода в экранные формы или в графическое окно метод Print выводит информацию в фон объекта. Это означает, что выводимая информация будет появляться позади объектов управления , расположенных на экранной форме или в графическом окне.

При печати информации на экране целесообразно создать для этой цели отдельное графическое окно. Это позволит осуществлять ввод в чистое поле.

Метод Print направляет выходной поток Диспетчеру печати Print Maneger Windows, чтобы напечатать сформированные страницы.

Для вызова метода Print используется следующая синтаксическая запись

[objectName.] Print [expressionlist]

где

objectName – является именем объекта, в который выводится информация. Это должно быть имя экранной формы либо графического окна, объект или окно Debug. Если параметр objectName опущен. программа по умолчанию выводит информацию на текущую экранную форму.

[expressionlist – переменная, содержащая выводимую на печать информацию.

Информация , выводимая на печать с помощью оператора Print. может содержать единственную строку или численное значение, либо может содержать несколько выражений, значения которых выводятся в указанные позиции:

expr1[, | ; ] [Spc(n) | Tab(m) ] [, | ; expr2]

Выражения expr1, expr2 могут быть любыми численными или строковыми выражениями. Это могут быть литералы, переменные, либо функции, возвращающие строку или число. При наличии в операторе нескольких выражений они должны быть разделены запятой либо точкой с запятой. При использовании точки с запятой второе выражение будет выводиться сразу после последнего символа первого выражения. При использовании запятой второе выражение будет выводиться. начиная с первой позиции следующей зоны вывода. Размер каждой зоны вывода равен 14 символам.

Для дополнительного управления расположением выражения на печатной строке можно использовать функции Spc(n) и Tab(m). Функция Spc(n) определяет количество пробелов, (задаваемое как n) перед печатью следующего выражения .Функция Tab(m) определяет номер позиции (задаваемой, как m), с которой должна начинаться печать следующего выражения. При включении указанных функций в список вывода, они должны быть отделены от выражения запятой или точкой с запятой.

При каждом обращении к методу Print вывод начинается с новой строки, если только после последнего выражения последнего выполнявшегося оператора не стояла точка с запятой.

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

Font.Name – определяет используемый шрифт

Font. Size – определяет размер шрифта в пунктах

Font. Bold – определяет полужирный шрифт

Font. Italic – определяет используется ли курсив

Font.Underline – определяет используется ли подчеркивание текста

Font.StrikeThrught – определяет производится ли перечеркивание текста.

Эти свойства можно изменять с помощью операторов в вашем коде.

В экранных формах и в графических окнах для изменения начальной установки шрифта можно воспользоваться в режиме проектирования программы диалогом Properties. начальная установка шрифта принтера определяется Диспетчером печати Windows.

Определение размера области вывода

Печатная страница как правило имеет формат А4. К сожалению размеры в Vb задаются не в сантиметрах а в твипах (Один дюйм составляет приблизительно 1440 твипсов. Кроме того может изменяться ориентация листа (Portrait – книжная, Landscape – альбомная). Наиболее удобным способом определения размера объекта, в которую вы собираетесь осуществить вывод является использование свойств Height – высота, Width – ширина.

Для определения высоты и ширины объекта используются следующие команды.

ResultHT = ObjectName.Hight

ResultWd = ObjectName.Width

Значения высоты и ширины Экранной формы и графического окна можно задать с помощью следующей записи.

ObjectName.Hight = Value

ObjectName.Width = Value

Определение размера выводимого элемента

Причина по которой необходимо определение размера области вывода связана с тем, что в методе Print не предусмотрена проверка согласования размера выводимого элемента и размера поля вывода.

Методы Text Hight и TextWidht позволяет определить размер текста по вертикали и по горизонтали.

Синтаксис использования метода следующий:

ResulTxHt = ObjectName. TextHight (stringexp)

ResulTxWd = ObjectName. TextWidht (stringexp)

ResulTxHt и ResulTxWd – переменные, в которые будут записаны значения возвращаемые методами

stringexp – переменная, представляющая проверяемую строку. Этим выражением может быть литерал, переменная или функция. При оценке размера числа его следует преобразовать в строку с помощью функции Str или CStr

Пример листинга для выполнения переноса слов при выводе текста.

prntvar = txtInput.Text

objwid = picWord.Widht

Do

endpos = 0

txtlen = 0

prntlen = “ “

Do

strtpos = endpos + 1

endpos = InStr(strtpos, prntvar, “ “)

prntlen = Left$(prntvar, endpos)

txtlen = picWord. TextWidth (prntin)

Loop Untill txtlen > objwid or endpos =0

If endpos = 0 Then

prntln = prntvar

prntvar = “ “

Else

prntln = Left$(prntvar, strtpos –1)

prntvar = Ltrim$(Mid$9prntvar< strtpos))

End If

PicWord. Print prntln

Loop While Len(prntvar) > 0

Первая строка кода выполняет ввод строки из текстового редактора. Вторая строка определяет ширину текстового окна.

Третья строка является началом цикла. По мере вывода текста в строку уменьшается размер текста, хранящегося в переменной prntvar, Цикл завершается когда размер оставшегося текста будет равен 0.

При каждой итерации цикла инициализируются три переменные для обработки оставшейся части текста. Это выполняют три первые строки в теле цикла. После инициализации переменных начинает выполняться внутренний цикл. Этот цикл предназначен для выделения из оставшегося текста строку максимальной длины, умещающейся в печатную строку. При выполнении внутреннего цикла сначала выполняется поиск пробела с помощью функции InStr, если пробел не найден возвращается 0 и цикл завершается .Если функция InStr возвращает число , формируется строка, включающая весь текст до пробела. Длина полученной строки сравнивается с длиной области вывода, Если размер строки превышает размер области вывода, цикл завершается. В противном случае выполняется поиск следующего пробела в тексте.

После выполнения внутреннего цикла строка для печати сформирована. Если функция InStr возвратила нулевое значение (записанное в переменную endpos) весь оставшийся текст запоминается в выходной переменной, а переменную, содержащую оставшуюся часть текста , записывается строка нулевой длины. Если значение переменной endpos отлично от нуля, в выходную переменную записывается часть текста, умещающаяся в строку вывода, остальная часть текста записывается в строку остатка. Последней операцией является вывод выходной информации с помощью метода Print.

Управление размещением текста осуществляется с помощью задания значений свойствам CurrentX и CurrentY, Эти два свойства определяют положение верхнего левого угла фрагмента текста. При выводе методом Print текст выводится в область, расположенную справа и снизу от этой точки

Для очистки экранной формы или графического окна используется метод Cls.