如何用 QuickReport 打印当前页(100分)

  • 主题发起人 主题发起人 黎永欢
  • 开始时间 开始时间

黎永欢

Unregistered / Unconfirmed
GUEST, unregistred user!

各位朋友你们好!
我正在完善一个QuickReport的定制预览对话框,最后剩“打印当前页”
的功能没办法完成,我利用TQRPrinter类的对象无法控制打印的页数和范围
,加上没有QuickReport的源代码和详细的帮助文档。
下列属性我已经试过,但没有用:
FirstPage LastPage
现向各位朋友们求肋。(You will get 100)
 
我与你遇到同样问题,只不过我是用Reportbuilder做的,不是QuickReport,
关注此问题。
 
把QuickRep.PrinterSetting.FirstPage和PrintSettings.Lastpage设为同一页就可以了!
如:
with YourRepdo
begin
PrinterSettings.FirstPage := PageNumber;
PrinterSettings.LastPage := PageNumber;
Print;
end;
 
杜宝,聪明!
 
to:黎永欢
高哇!请问你的打印机纸型是怎么控制的,我可以给你加分!
 
to:杜宝
不好意思,这种方法我早就想过了。
在TQRPreviewInterface类中的Show和ShowModal方法中只有一个TQRPrinter类的变量,
用它是无法控制的。
unit QRCoolPrevBox;
interface
uses
Classes, Controls, Forms, QRPrntr;
type
TQRCoolPreviewInterface = class(TQRPreviewInterface)
public
function Show(AQRPrinter: TQRPrinter): TWinControl;
override;
function ShowModal(AQRPrinter: TQRPrinter): TWinControl;
override;
end;

TQRCoolPreviewBox = class(TComponent)
public
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
end;

implementation
uses
QRCoolPrevFrm;
var
CoolPreviewBoxCount: Integer;
////////////////////////////////////////////////////////////////////////////////
function TQRCoolPreviewInterface.Show(AQRPrinter: TQRPrinter): TWinControl;
begin
Result := TQRCoolPreviewForm.CreatePreview(Application, AQRPrinter);
TQRCoolPreviewForm(Result).Show;
end;

function TQRCoolPreviewInterface.ShowModal(AQRPrinter: TQRPrinter): TWinControl;
begin
Result := TQRCoolPreviewForm.CreatePreview(Application, AQRPrinter);
TQRCoolPreviewForm(Result).ShowModal;
end;
////////////////////////////////////////////////////////////////////////////////
constructor TQRCoolPreviewBox.Create(AOwner: TComponent);
begin
inherited;
if CoolPreviewBoxCount = 0 then
RegisterPreviewClass(TQRCoolPreviewInterface);
Inc(CoolPreviewBoxCount);
end;

destructor TQRCoolPreviewBox.Destroy;
begin
inherited;
if CoolPreviewBoxCount > 0 then
Dec(CoolPreviewBoxCount);
if CoolPreviewBoxCount = 0 then
RegisterPreviewClass(TQRStandardPreviewInterface);
end;

initialization
CoolPreviewBoxCount := 0;
end.
 
to:黎永欢
你好!
看到你的回复后,我立即给我的系统(Win2000)装了一台打印机
型号为Epson LQ 300 ESC/P 2, 没办法,我现在找不到打印机,
我用它的打印管理器来看打印页数!
用我的方法,在我自己的预览窗口上,按打印一份自己程序的报表
,按下打印:全部报表送到打印管理器,共五页,按下打印当前页,报表送到
打印管理器,共一页取消所有的打印文档;倒个顺序,先打当前,再打全部,
文档分别为一页, 五页
我想已经实现了你要的功能.
你的程序由于不是很清楚,我不想评论,可能是我与你对程序的思路不同
,我实在不明白"TQRCoolPreviewBox"的用途,,还有CoolPreviewBoxCount 这
个计数器的用法我也不明白
还有" 在TQRPreviewInterface类中的Show和ShowModal方法中只有一个
TQRPrinter类的变量",我想我根本不会用到这个类.
 
别用QuickReport,用Printer.Canvas.TextOut()吧!
 
后退
顶部