Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.04;
Скачать: CL | DM;

Вниз

PrintDialog   Найти похожие ветки 

 
Alexor   (2003-05-22 00:32) [0]

Вызываю PrintDialog - пользователь выбирает принтер. Теперь нужно распечатать QReport-ский репорт. Как ему (QReport-у) указать тот принтер каторый вабрал рользователь?

Помогите пожалуйста! Я просто больше не знаю где искать ответ.


 
Роман Василенко ©   (2003-05-22 09:16) [1]

QuickReport1.PrinterSettings.PrinterIndex:=printer.Printers.IndexOf("Название выбранного принтера");
либо
QuickReport1.PrinterSettings.PrinterIndex:=Индекс твоего принтера в списке


 
Alexor   (2003-05-23 00:38) [2]

Спасибо,
Меня интересует именно то, как этот индекс принтера (выбранного) достать из PrintDialog-a ?

if PrintDialog1.Execute then
begin
QuickReport1.PrinterSettings.PrinterIndex:=???;
...
QuickReport1.Print;
end;


 
Сергеєєв Володимир   (2003-05-23 11:47) [3]

Никак ты его из стандартногo TPrintDialog не достанешь.

Я с этим имел продолжительные половые отношения месяц. В итоге все закончилось тем, что я переписал свой диалог печати.

Первая мысль была открыть Dialogs.pas и посмотреть метод Execute, чтобы вызвать Апи напрямую, без диалога Апи, посмотрел описание (по WinApiRus.hlp, де-то здесь валяется в документации. Большое спасибо автору). Ни в одной из передаваемых в функцию структур нет Индекса принтера. Спрашивается, нафиг тоды она нужна эта функция?
Насколько я разобрался че там происходит, то получается следующее: когда приложение стартует, то в нем по дефолту берется принтер по умолчанию виндов. Далее, при вызове Апи внутри самой Апи меняется принтер по дефолту для программы. А потом, после вызова Апи в методе Execute происходит переинициализация глобальных переменных. Это все хорошо, для Мемо всяких там, РичЭдитов. Но QReport берет принтер только в момент создания. И поэтому, вызов принтДиалога ему по-барабану.

Но это еще полбеды. Допустим, ты уже знаешь индекс требуемого тебе принтера. Метод QReport.PrinterSettings.ApplySettings(QPrinter :TQPrinter) в версии QReport3.0 работает через раз, а в Винде98 вообще не работает. До того, как я апгрейдил QReport я решал эту проблему просто перенастройкий принтера по дефолту виндов. Сперва менял принтер по дефолту виндов на требуемый, потом печатал, а потом возвращал на место.


 
Pat ©   (2003-05-23 12:23) [4]

На каждый Printer найдется свой QRPrinter © где-то прочитал
QuickReport использует свой QRPrinter, и работать надо с ним © местный FAQ



Страницы: 1 вся ветка

Текущий архив: 2003.08.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
7-10466
Desperado
2003-05-20 08:34
2003.08.04
Програмка для учета времени в бильярдной


9-10076
Кен
2003-02-06 01:56
2003.08.04
GLScene Коллизии. Как их определять для Actor и FreeForm? Когда о


14-10446
___Nikolay
2003-07-18 06:14
2003.08.04
Как пользоваться CRON-ом?


1-10192
Альф
2003-07-17 16:11
2003.08.04
Можно ли из множества целых составить строку ?


8-10306
_PG_gaws
2003-04-09 18:01
2003.08.04
Могу ли я использовать стандартные компоненты c DelpiX