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

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

Количество копий на печать для TQuickRep


Vladimir Gorkov ©   (2002-06-05 07:17:00) 

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


QRPreview1->QRPrinter->Copies = 2;
QRPreview1->QRPrinter->Print();


Всё компилится только копия всё равно одна.((


Vladimir Gorkov   (2002-06-07 08:33:00) [1]

Если бы так можно было сделать, то я бы так давно сделал. Но так не сделать, потому что не я инициализирую обект соего preview, а это делает TQuickRep. Вот же код выше я приводил:
QRForm_LastLayer->QuickRep1->OnPreview = Form_main->CustomPreview;// Подмена функции QuickRep1.OnPreview своей
QRForm_LastLayer->QuickRep1->Preview();// Теперь Preview()вызывает мою функцию. Конечно было бы красиво, где-нибудь в конструктор сунуть объект QuickRep1. Но не получается так.((

Видимо придётся делать не очень красиво. Заводить гловальный объект TQuickRepи инициализировать его перед вызовом Preview().
Добавляетс ещё одна строчка везде где создается предварительный просмотр.((
Ну ничего. Пара десятков отчетов - можно подредактировать.



Lusha   (2002-06-06 09:34:00) [2]

А завести в своей форме предварительного просмотра указатель на вызывающий ее отчет и инициализировать его при ее вызове это так сложно... Практически невозможно, я думаю... :)


Vladimir Gorkov   (2002-06-06 05:39:00) [3]

Ну да, это бы прокатило если бы я имел доступ к объекту QuickReport. Вся фишка в том что я не знаю из какого QuickReportвызвана моя QRPreview. У меня создана моя превьюшка. С моими кнопочками, моим видом. Там совершаются некие шаманские действия (в примерах нарыл) и она подменяет стандартную превьюшку. Существует множество отчетов и они в нужное время кидают себя в мою превьюшку. А из самого объекта превью я даже не знаю какой QuickReportвызвал её.

Когда нужно показать какой нибудь отчет, это делается примерно нак:
QRForm_LastLayer = new TQRForm_LastLayer(this);
QRForm_LastLayer->QuickRep1->OnPreview = Form_main->CustomPreview;
QRForm_LastLayer->QuickRep1->Preview();
Application->ProcessMessages();
delete QRForm_LastLayer;


Вот так.



Anatoly Podgoretsky   (2002-06-05 12:52:00) [4]

Не там ты роешь, рой короче, как сказал Lusha, а к приватным лезть не зачем, и еще на всякий случай QRPrinter это не один объект, их может быть много, а работать нужно только с нужным, прямой путь через QuickReport.PrinterSettings


Lusha   (2002-06-05 12:40:00) [5]

Нда-а... Нарыл много... А как насчет TQuickReport.PrinterSettings.Copies? =)


Vladimir Gorkov   (2002-06-05 12:32:00) [6]

Ну да, синтаксис из С++. Потому что я в С++ Builder пишу. Но суть та же.
Если в Инспекторе объектов менять свойсво PrinterSettings, то да, количество копий меняется. А из программы не получается. Дело в том что TQRPrinterSettingsэто класс. Объект этого класса PrinterSettingsпрописан в классе QRPrinter, НО в разделе private. Т.е. он не доступен напрямую, например так
QRPreview1->QRPrinter->PrinterSettings
Т.е. свойства объекта PrinterSettingsизменяются внутренними функциями класса. При присвоении QRPreview1->QRPrinter->Copies
значения, вызывается функция SetCopiesкласса TQRPrinter, которая должна менять значение Copiesкласса TQRPrinterSettings. Но этого не происходит.
Вот до чего я докопался.


Anatoly Podgoretsky   (2002-06-05 07:43:00) [7]

PrinterSettings
Синтаксис у тебя странный, совсем на Паскаль не похож


Наверх

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