БОЛЬШОЙ FAQ ПО DELPHI



Как печатать без TPrinter

Автор: Олег Кулабухов

Пример показывает, как использовать PrintDlg() для того, чтобы дать возможность пользователю выбрать принтер, и напечатать две страницы.


 uses CommDlg;
 
 {$IFNDEF WIN32}
 const
   MAX_PATH = 144;
 {$ENDIF}
 
 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:\Download\Test.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;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ