Delphi里使用QuickReport 3.5.0,其中Deplex设为了true,双面打印时出来的效果却是头尾方向相反,听说可以改QuickReport 3.5.0的源代码,但却不懂在哪找到源代码和改动哪个地方可实现双面打印后效果正常(像普通课本那样翻页后方向相同),请各位大侠指教小弟?!

解决方案 »

  1.   

    你查一下你的 QrPrntr.PAS,其中 DevMode^.dmDuplex 是給什么值?
      

  2.   

    reportBuilder:  {@TppPrinterSetup.Duplex    This property indicates what type of two-sided printing should occur.  Not
        all printers support duplex printing.
        Value               Meaning
        ---------------------------
        dpNone         Duplex printing is disabled.
        dpHorizontal Duplex printing should be performed across the page,
                            from left to right, so the text will read as in a book
        dpVertical         Duplex printing should be performed down the page, from
                            top to bottom, so the text will read as in tablet
                      //0        1             2
      TppDuplexType = (dpNone, dpHorizontal, dpVertical);//對應到windows定義的常量時,會先加1windows的定義  {$EXTERNALSYM DMDUP_SIMPLEX}
      DMDUP_SIMPLEX = 1;
      {$EXTERNALSYM DMDUP_VERTICAL}
      DMDUP_VERTICAL = 2;
      {$EXTERNALSYM DMDUP_HORIZONTAL}
      DMDUP_HORIZONTAL = 3;再看quickReport,當duplex為True,給的是默認值  if FDuplex then
      begin
        SetField(dm_duplex);
        DevMode^.dmDuplex := dmdup_horizontal;//dmdup_horizontal對應DMDUP_HORIZONTAL 
      end;dmdup_horizontal對應DMDUP_HORIZONTAL ,依據reportBuilder解釋:Duplex printing should be performed down the page, from top to bottom, so the text will read as in tablet。
    而設置為DMDUP_VERTICAL,則:Duplex printing should be performed across the page,
                            from left to right, so the text will read as in a book
    類似于書本的雙面打印效果所以,改法是在  if FDuplex then
      begin
        SetField(dm_duplex);
        DevMode^.dmDuplex := DMDUP_VERTICAL;
      end;改後,要重新編譯對應的DPK,并把編譯後的bpl放到 system32路徑下
      

  3.   

    楼上的大哥,QrPrntr.PAS在QuickReport 3.5.0找不到对应的源代码,我装的版本只有dfm和dcu代码,你的用哪个版本呢?!
      

  4.   

    沒有任何pas? 
    若有源碼,建議用delphi ID搜索 quickReport路徑  ,內容——DevMode^.dmDuplex 
      

  5.   

    非常感谢楼上大哥,下了QuickReport 3.6.2版本后,找到对应源代码,改了后该如何重新編譯對應的DPK呢?!
      

  6.   

    我的是delphi5.0,對應的DPK是 qrpt50.dpk,看你的版本是多少了...
      

  7.   

    大哥能发下你带源码的3.5 Quickreport给我吗?!
      

  8.   

    http://www.ccrun.com/view.asp?id=141這個有完整源碼的
      

  9.   

    改好后该怎么编译呢?没有工程文件,只能打开单个.pas文件
      

  10.   

    保存後,假設你是D7,則打開qrpt70.dpk,編譯這個就好了,有source的話,肯定有這個DPK,自己再找找
      

  11.   

    由于下了个QuickReport 3.6.2 for Delphi6,打开的报表和之前的3.0不一样,总是小窗口,如何改成默认是最大化呢?!
      

  12.   

    如何获取打印机的单双面设置啊?!我设置了Duplex=false,打印机设置为双面打印,打出来还是单面哎~
      

  13.   

    顶顶我也是遇到一样问题,奇怪的,明明 设置 duplex =true,但是还是不能安装打印机的双面打印设置来。
      

  14.   

    打印机是支持双面打印的,我在QRPrntr.pas设了断点,开始FDuplex是根据打印机设置来判断true和false的,但执行到后面老是自动判断为true,找了好久都找不到原因.
      

  15.   

    公司的打印机支持双面,我用Word或者Adobe Reader 进行双面打印都不成功,另一面总是打的反的。
      

  16.   

    呼~ 终于解决了!
    QuickReport 3.6.2版本默认DevMode^.dmDuplex := dmdup_horizontal,不用做任何修改。编译后的bpl放到system32路径下,quickrpt文件夹编译生成的dcu文件全部拷到lib文件夹内,可设断点查看Printer.Duplex是否根据打印机单双面设置而变化。感谢楼上的各位。