Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];

Вниз

Печать принт-задания в *.prn-файл   Найти похожие ветки 

 
Сергей М. ©   (2007-02-28 12:09) [0]

Подскажите, в какой WinAPI-структуре хранится флаг настройки принтера "Печатать в файл"


 
Rouse_ ©   (2007-02-28 12:22) [1]

эээ... StartDocPrinter + DOC_INFO_1 ?


 
Сергей М. ©   (2007-02-28 12:29) [2]


> Rouse_ ©   (28.02.07 12:22) [1]


Что-то я там не вижу флажка.. Ткни меня носом ?

Или ты намекаешь на pOutputFile (nil или не nil) ?


 
Rouse_ ©   (2007-02-28 12:35) [3]

Да, на это :)


 
Сергей М. ©   (2007-02-28 12:56) [4]


> Rouse_ ©   (28.02.07 12:35) [3]


Поясню, откуда растут ноги у вопроса.

QReport использует для контроля/изменения настроек печати стандартный TPrinterSetupDialog, который не предусматривает ни интерактивный ни программный доступ к этому флажку.

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

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

p.s. Проект допотопный, крупные изменения, например, замена QReport на что-либо  более подходящее, исключены.


 
Rouse_ ©   (2007-02-28 13:16) [5]

Ааа, ну тогда не вижу сложностей, локально перехватывай
function PrintDlg(var PrintDlg: TPrintDlg): Bool; stdcall;
и выставляй
PrintDlg.Flags := PrintDlg.Flags or PD_PRINTTOFILE;


 
Rouse_ ©   (2007-02-28 13:17) [6]

Собственно в справке:

PD_PRINTTOFILE
If this flag is set, the Print to File check box is selected. If this flag is set when PrintDlgEx returns, the offset indicated by the wOutputOffset member of the DEVNAMES structure contains the string "FILE:". When you call the StartDoc function to start the printing operation, specify this "FILE:" string in the lpszOutput member of the DOCINFO structure. Specifying this string causes the print subsystem to query the user for the name of the output file.


 
Сергей М. ©   (2007-02-28 13:37) [7]


> Rouse_ ©   (28.02.07 13:16) [5]


Спасибо, с этим разобрался.

Смотрим далее (цитата из справки к флагу PD_PRINTTOFILE):

When you call the StartDoc function to start the printing operation, specify this "FILE:" string in the lpszOutput member of the DOCINFO structure. Specifying this string causes the print subsystem to query the user for the name of the output file.

Не думаю, что QReport что-то там "локально перехватывает" для того чтобы при  этом вывести собственную форму диалога выбора имени файла.
Полагаю, существует документированный механизм (предопределенное оконное сообщение ?), позволяющий нужным образом отреагировать на необходимость указания подсистеме печати целевого имени файла...


 
Rouse_ ©   (2007-02-28 14:15) [8]

ИМХО этот механизм и есть наличие включенного флага PD_PRINTTOFILE с lpszOutput := "FILE:";
Тестовый пример просто писать нет времени :)


 
Сергей М. ©   (2007-02-28 14:17) [9]


> Rouse_ ©   (28.02.07 14:15) [8]


Если я правильно понял, то решением будет

lpszOutput := "Путь\КонкретныйФайл.ext";

Так ?


 
Rouse_ ©   (2007-02-28 14:37) [10]

По идее да.
Слушай, я сейчас специально семерку поднял, там по CTRL+ALT+C все достаточно нормально видно что происходит при вызове, включая описания функций. Я просто с QReport-om не работал никогда, поэтому не знаю, как воспроизвести ситуацию, чтобы он показал свое окно для ввода пути к файлу...


 
Сергей М. ©   (2007-02-28 14:49) [11]


> Rouse_ ©   (28.02.07 14:37) [10]


> По идее да.


Буду попробовать.


> не знаю, как воспроизвести ситуацию, чтобы он показал свое
> окно для ввода пути к файлу


Да и не надо ее воспроизводить.

Из любопытства же можешь глянуть скриншот окна этого диалога (7.4 кб):

http://slil.ru/24006211



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

Форум: "WinAPI";
Текущий архив: 2007.08.19;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.044 c
2-1185559407
Скарамуш
2007-07-27 22:03
2007.08.19
Реакция на клавишу


15-1184888238
Чаво
2007-07-20 03:37
2007.08.19
Как принудительно обновить курсор?


11-1168189124
mixail_shar
2007-01-07 19:58
2007.08.19
что такое 7z


15-1184790249
Труп Васи Доброго
2007-07-19 00:24
2007.08.19
Как сделать VPN?


15-1184921014
Kolan
2007-07-20 12:43
2007.08.19
Однако не появления BDS2006 на TaskBar е сильно виляет на работу.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский