Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с TPrinter


И. Павел ©   (2011-04-11 10:32:00) 

Здравствуйте.

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

1. Зачем нужен метод Printer, создающий новый TPrinter или возвращающий старый экземпляр, если такой имеется? Это же получается глобальный объект. А если в нескольких потоках его использовать - будет путаница, да и в одном потоке тоже можно с этим столкнуться. Можно ли самому создавать свой экземпляр и с ним работать? Т.е. просто писать: MyPrinter := TPrinter.Create? Или же есть плюсы в использовании именно функции Printer?
2. Есть ли какие-нибудь краеугольные камни, с которыми придется столкнуться при переходе с QReport на TPrinter (кроме того, что придется все масштабировать, учитывая параметр dpi принтера)?
3. У TPrinter есть какое-нибудь окно предварительного просмотра, или придется самому велосипед создавать?

PS. Как работать с TPrinter вспоминал, читая эту статью: http://www.podgoretsky.com/ftp/Docs/Delphi/D4/DG_Delphi4/chap10.pdf

Заранее спасибо.


Плохиш   (2011-04-11 11:43:00) [1]

Печатать из разных потоков одновременно это прикольно :-)
Буква из одного документа, буква из другого...


clickmaker   (2011-04-11 11:40:00) [2]

> Просто показалось странным использование одной глобальной
> переменной

а что странного? удобно. Принтер, как правило, один


И. Павел   (2011-04-11 11:33:00) [3]

Anatoly Podgoretsky ©
Спасибо.
Превью поищу.


> [2] Anatoly Podgoretsky ©   (11.04.11 11:30)

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


Anatoly Podgoretsky   (2011-04-11 11:30:00) [4]

> Anatoly Podgoretsky  (11.04.2011 11:15:01)  [1]

Кстати раз нужна много поточность, то может напрямую работать чер Spool API


Anatoly Podgoretsky   (2011-04-11 11:15:00) [5]

Ну ты сам ответил на все вопросы. Только вот использовать свой экземпляр не получится, это Singleton - в одном экземпляре. Просто не надо его использовать в потоках, пусть об будет использоваться в главном потоке и уже, через синхронизацию к нему обращаться. Плюсом или минусов нет, поскольку принтер один, просто надо именно использовать функцию Printer/
Собственно а как же иначе, ведь созданием экземпляра принтер не размножится.

2 Краеугольных камней просто нет, придется с нуля делать, иногда именно так и поступают, чтобы иметь доступ до канвы.

3. есть куча разных превью, разработаных разными разработчиками, можно поискать на Торри, самому совсем не обязательно разрабатывать.

ЗЫ: хоть и Д4 а статья не устарела. Жалко что теперь подобная документация с Дельфи уже давно не поставляется. А то эти четыре книги были очень ценными, но можно пользоваться старыми, информация там не сильно устарела.


Наверх

Титульная страница Поиск, карта сайта Написать письмо