Печать простого отчета...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Печать простого отчета...

Сообщение X-BOND » 18.11.2003 (Вт) 19:28

Значит мне надо просто запустить на принтер простую картинку и пару строк текста. (Данные беру с нужной формы)
Пытался использовать DataReport, но после метода .Show выскакивает ошибка Invalid data source. Насколько я понял необходимо заполнить поле DataSource. Но что туда писать если у меня нет базы данных. Может вообще надо использовать другой контрол?
Спасибо.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 22.11.2003 (Сб) 1:50

Если текста мало ... и каринка не большая..., то
рисуешь все а форме ...
так как надо чтобы оно вышло на принтере
цвет фона формы - белый,
бордер стиль - 0

и...
Код: Выделить всё
Form1.PrintForm

как у тебя нарисовано так он и напечатет иначе надо отправлять команды на принтер .... через ...
Код: Выделить всё
Printer.NewPage
Printer.CurrentY = 10
Printer.CurrentX = 20
Printer.Print "Этот текст"
Printer.CurrentY = 90
Printer.Print "И Этот тоже"
Printer.CurrentX = 1000
Printer.CurrentY = 10
Printer.PaintPicture LoadPicture("c:\1.bmp"), 0, 0
Printer.EndDoc

типа такого :)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 25.11.2003 (Вт) 13:52

Идея интересная.
Попробовал, но у меня печатается только картинка.
Причем на второй странице, а первая выходит пустая.
Закоментировал все строки, кроме рисунка, все равно две страницы вылазит (изв. за выражение).
в чем тута секрет?

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 26.11.2003 (Ср) 0:58

Код: Выделить всё
Printer.NewPage

не нужен ...
у Printer кажется есть ещё свойства для указания где печатать ... там тоже в твипах все ...
у меня тока сегодня Катридж появился .... завтра скажу :)
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

X-BOND
Реалист
Реалист
 
Сообщения: 944
Зарегистрирован: 19.08.2002 (Пн) 11:44
Откуда: Ukraine

Сообщение X-BOND » 26.11.2003 (Ср) 11:02

Немного поэкспериментировал и нашел оптимальный способ - печать через форму. Во-первых сразу видишь, что печатаешь, во-вторых можно сразу "на печатной странице", то бишь форме, заполнять поля.
Удобно и просто.
Кстати, BorderStyle не обязательно ставить в 0. У меня стоит как DialogBox и все ОК.

Спасибо!

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 27.11.2003 (Чт) 0:39

Рад, что помогло ... а я поэксперементировал с Printer и научился...

Короче CurentX и CurentY задается в твипах ... стало быть 1000 твипов - это где-то 2 см ... так что если величины изменить то все ОК..
печатает ...

там ещё куча замечательных свойств и шрифтик устанавливать надо :)))
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.11.2003 (Чт) 10:55

А почему бы не сделать Printer.ScaleMode=6 и не работать в миллиметрах?
Lasciate ogni speranza, voi ch'entrate.

SSecurity
Служба безопасности
Аватара пользователя
 
Сообщения: 1283
Зарегистрирован: 19.08.2003 (Вт) 1:11
Откуда: Россия, Мурманск

Сообщение SSecurity » 28.11.2003 (Пт) 0:17

alibek писал(а):А почему бы не сделать Printer.ScaleMode=6 и не работать в миллиметрах?


Можно ... но это для самых умных :))) ... сам вчера днем когда эксперементировал - обнаружил 6))) .... но всетаки надо же помучаться немного :)))
Программист - это маленький Бог, а все его ошибки - это самостоятельные творения:)
Так задумано:)

Oldman
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2003 (Пн) 12:23
Откуда: ТРТУ

Сообщение Oldman » 30.12.2003 (Вт) 14:06

А как сделать, чтобы свойства принтера вызвать (типа там режим, ориентация страницы и т.д.) как в каждой проге есть, причем я так понял, что вызывается стандартная форма... Она у каждого принтера своя :)
Ежики не колются, только бухают иногда

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

CommonDialog

Сообщение hCORe » 30.12.2003 (Вт) 14:40

Используй CommonDialog Control 6.0:
Код: Выделить всё
dlgCommon.ShowPrinter

или модуль CommonDialog (об этом как то раз писали на этой конференции)
У них есть все свойства (ориентация и пр.), которые тебе нужны.

ЗЫ. Если захочешь печатать данные из RichTextBox (с использованием модуля CommonDialog), вызови это дело так:
Код: Выделить всё
'xHDC (handler device context) - данные об дескрипторе устройства.
'См. код CommonDialog Module
ShowPrinter
RichTextBox1.SelPrint xHDC
Вложения
mdlCDLG.rar
Common Dialog Module
(5.03 Кб) Скачиваний: 41
Моду создают модоки, а распространяют модозвоны.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot, Yandex-бот и гости: 8

    TopList  
cron