用Printers类的方法控制打印,在Printer.BeginDoc之前要求像Wrod里打印文档时一样弹出打印机设置对话框,可以在这对话框里面选择打印机、纸张大小等。

解决方案 »

  1.   

    TPrinterSetupDialog 不就得了?如果需要做特殊的打印控制 自己搭打印设置窗体,根本上就是设置TPrinter的属性
      

  2.   

    如果需要做特殊的打印控制 继承TPrinterSetupDialog也行的
      

  3.   

    TPrinterSetupDialog就行了,其实用它设置的还是TPrinter。
      

  4.   

    我用以下方法,改变字体没有用var
      Pd : TPrintDlg;
      DocInfo: TDocInfo;  vc: TCanvas;
      sText: String;
    begin
      sText := 'What can i do?';
      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);
        vc := TCanvas.Create;
        vc.Handle := Pd.hDC;
        vc.Font.Name := 'Arial';
        vc.Font.Size := 24;
        vc.Font.Style := [fsBold];
        StartDoc(vc.Handle, DocInfo);
        StartPage(vc.Handle);
        TextOut(vc.Handle, 50, 50, PChar(sText), Length(sText));
        EndPage(vc.Handle);
        EndDoc(vc.Handle);
        vc.Free;
      end;
    end;
      

  5.   

    原始方法:
    取得当前打印机的TDeviceMode结构指针
    TDeviceMode结构包含了打印机驱动程序的初始化信息和数据环境
    然后通过设置TDeviceMode.dmFields来设置各项打印参数
      

  6.   

    shellexecute(handle,'open','rundll','shell32.dll,shhelpshortcuts_rundll addprinter','',sw_shownormal);
      

  7.   

    To delphiseabird(沙鸥) :能否说清楚一点,谢谢!!
      

  8.   

    我用fastreport,反正自己不写那玩意儿,标准的东东。、