Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






End Sub. В кнопках Command1 и Command2 мы пишем код для смены имени загружаемого файла






В кнопках Command1 и Command2 мы пишем код для смены имени загружаемого файла. Все это опять-таки похоже на программку Tester из Главы 8, и на этом я подробно останавливаться не буду.

Private Sub Command1_Click()
If Val(FileName) > 1 Then
FileName = Str(Val(FileName) - 1)
FileName = Right(FileName, Len(FileName) - 1)
DataLoading
End If
End Sub

Private Sub Command2_Click()
FileName = Str(Val(FileName) + 1)
FileName = Right(FileName, Len(FileName) - 1)
If Dir(App.Path & " \" & FileName & ".txt") < > " " Or Dir(App.Path & " \" & FileName & ".jpg") < > " " Then
DataLoading
Else
FileName = Str(Val(FileName) - 1)
FileName = Right(FileName, Len(FileName) - 1)
DataLoading
End If
End Sub

А вот сейчас мы переходм к тому, ради чего мы все это затеяли. Попробуем подготовить для печать документ. В процедуре кнопки Command3 мы начнем формировать страницу для печати. Сперва объявим кое-какие переменные

Private Sub Command3_Click()
Dim OrientTelefona As Single ' меняет отступ от картинки в зависимости горизонтальная она или вертикальная
Dim Fonts() As String 'одномерный динамический массив для хранения существующих шрифтов
Dim VertCoord As Single 'накапливает сдвиг по вертикали по мере создания строк в документе
Dim NumberFont As Long ' номер шрифта

обнуляем переменную, содержащую количество шрифтов на всякий случай

QuantityFonts = 0

В смысле определения шрифтов на текущем принтере я пошел по пути наименьшего сопротивления. Исходя из того, что на любом компьютере установлен хотя бы один из четырех общеупотребимых шрифтов, я проверяю их наличие и имена найденых шрифтов загружаю в динамический массив Fonts(). Для этого мы организуем цикл, где перебираем все существующие на текущем компьютере шрифты (их количество нам возвращает свойство .FontCount), и грузим их имена в массив Fonts(). При этом счетчик QuantityFonts отражает, сколько из четырех шрифтов найдено.

For NumberFont = 0 To Printer.FontCount - 1
If Printer.Fonts(NumberFont) = " Arial Cyr" Or Printer.Fonts(NumberFont) = " Times New Roman" _
Or Printer.Fonts(NumberFont) = " Courier New" Or Printer.Fonts(NumberFont) = " MS Sans Serif" Then
QuantityFonts = QuantityFonts + 1
ReDim Preserve Fonts(QuantityFonts)
Fonts(QuantityFonts) = Printer.Fonts(NumberFont)
End If
Next NumberFont

Затем, если хоть один шрифт найден, мы устанавливаем его из первого элемента массива

If QuantityFonts > 0 Then Printer.FontName = Fonts(1)

Ну уж если не найдено ни одного шрифта, то в надежде, что какой-то там шрифт в принтере по умолчанию все же есть, продолжаем формировать документ.
Для удобства и наглядности все будем мерять в сантиметрах, поэтому устанавливаем размерность в сантиметрах

Printer.ScaleMode = vbCentimeters

Хочу сказать, что начинать формирование страницы методом Printer.NewPage (создание новой страницы) не надо, иначе первой вылезет пустая страница. У тебя нет еще ни одной страницы, и нет необходимости переходить на новую. Вот для второй, третьей и т.д. страницы - пожалуйста.
Устанавливаем размер шрифта для первой строки

Printer.FontSize = 12

'устанавливаем подчеркивание
Printer.Font.Underline = True
'устананавливаем качество печати - среднее
Printer.PrintQuality = 3

Прижимаем вправо первую строчку с названием фирмы. Для установки положения начала вывода по-горизонтали используется свойство .CurrentX. Чтобы строчка прижалась вправо мы из общей ширины нашего документа Printer.ScaleWidth вычтем длину нашей строчки Printer.TextWidth(Label1.Caption), которую она займет при печати объявленным нами шрифтом:

Printer.CurrentX = Printer.ScaleWidth - Printer.TextWidth(Label1.Caption)

В переменной VertCoord мы будем накапливать сдвиг по вертикали. Сначала запишем в нее, сколько высоты заняла первая строка (вместе с отступами).

VertCoord = Printer.TextHeight(Label1.Caption)

Теперь встраиваем в страницу первую строчку. Никакой печати при этом не происходит. Собственно принтер начинает работать только тогда, когда VB посчитает, что формирование документа полностью закончено. Это произойдет, если будет написан оператор Printer.EndDoc, либо если ты выйдешь из программы совсем.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.