Главная страница
    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.038 c
15-1184753380
tean-q
2007-07-18 14:09
2007.08.19
Китайская программа


2-1185171076
pathfinder
2007-07-23 10:11
2007.08.19
Типизированные файлы..


11-1168263971
mixail_shar
2007-01-08 16:46
2007.08.19
Замечание по КНИГЕ


2-1184918070
wWwWw
2007-07-20 11:54
2007.08.19
Как отследить нажатие комбинации клавиш?


2-1185128088
mefodiy
2007-07-22 22:14
2007.08.19
Почему GetCurrentPositionEx возвращает нулевые координаты





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский