RT!

解决方案 »

  1.   


    改变打印机的打印端口uses Printers;{$IFNDEF WIN32}const MAX_PATH = 144;{$ENDIF}procedure TForm1.Button1Click(Sender: TObject);varpDevice : pChar;pDriver : pChar;pPort : pChar;hDMode : THandle;PDMode : PDEVMODE;beginif PrintDialog1.Execute then beginGetMem(pDevice, cchDeviceName);GetMem(pDriver, MAX_PATH);GetMem(pPort, MAX_PATH);Printer.GetPrinter(pDevice, pDriver, pPort, hDMode);Printer.SetPrinter(pDevice, PDriver, 'FILE:', hDMode);FreeMem(pDevice, cchDeviceName);FreeMem(pDriver, MAX_PATH);FreeMem(pPort, MAX_PATH);Printer.BeginDoc;Printer.Canvas.TextOut(100, 100, 'Delphi Is RAD!');Printer.EndDoc;end;end;
     
      

  2.   

    用API直接打印uses CommDlg;{$IFNDEF WIN32}const MAX_PATH = 144;{$ENDIF}procedure TForm1.Button1Click(Sender: TObject);varPd : TPrintDlg;DocInfo: TDocInfo;beginFillChar(Pd, sizeof(Pd), #0);Pd.lStructSize := sizeof(Pd);Pd.hWndOwner := Form1.Handle;Pd.Flags := PD_RETURNDC;if PrintDlg(pd) then beginFillChar(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:.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;