![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TPrintDlg [D6, D7, WinXP]
Comp © (2004-10-13 15:22:00)Здравствуйте, уважаемые мастера. Подскажите пожалуйста, как напечатать документ (некоторый), добавив его в очередь для печати. Такой код:
procedure TForm1.Button1Click(Sender: TObject);
var
Pd: TPrintDlg;
DocInfo: TDocInfo;
begin
FillChar(Pd, sizeof(Pd), #0);
Pd.lStructSize := sizeof(Pd);
Pd.hWndOwner := Form1.Handle;
Pd.Flags := PD_RETURNDC;
if PrintDlg(pd) then
begin
FillChar(DocInfo, sizeof(DocInfo), #0);
DocInfo.cbSize := SizeOf(DocInfo);
GetMem(DocInfo.lpszDocName, 32);
GetMem(DocInfo.lpszOutput, MAX_PATH);
lStrCpy(DocInfo.lpszDocName, 'My Document');
{Add this line to print to a file }
lStrCpy(DocInfo.lpszOutput, 'C:DownloadTest.doc');
StartDoc(Pd.hDc, DocInfo);
StartPage(Pd.hDc);
TextOut(Pd.hDc, 100, 100, 'Page 1', 6);
EndPage(Pd.hDc);
StartPage(Pd.hDc);
TextOut(Pd.hDc, 100, 100, 'Page 2', 6);
EndPage(Pd.hDc);
EndDoc(Pd.hDc);
FreeMem(DocInfo.lpszDocName, 32);
FreeMem(DocInfo.lpszOutput, MAX_PATH);
end;
end;
просто вызывает диалоговое окно и печатает документ (2 стр.) в процессе работы программы. А если закрыть программу? Или принтер не включен? Надо, чтобы печать в очередь стала.
Подскажите пожалуйста. Буду очень благодарен.
tesseract (2004-10-14 12:50:00) [1]Вообще ты документ в очередь и отправляешь, т.к. обращаешься к через API к спулеру и мягко просишь напечатать.
Хочешь проверить - выруби принтер и попробуй напечатать. При отключеном принтера задание всё равно попадёт в очередь. Только в "Принтерах" напртив него появиться пометка "Ошибка"