200分求解qrreport的疑问(50分)

  • 主题发起人 主题发起人 zyhml
  • 开始时间 开始时间
Z

zyhml

Unregistered / Unconfirmed
GUEST, unregistred user!
我用qr来做图形的输出,用的是qrimage。我另外新建了一个预览窗口替代qr本身的。
在该预览窗口中我将主绘图窗口的image,按照设定分为几个小图片(即实现分页打印)
create时,将第一片分配给qrimage,然后qrpreview.qrprinter:=qrrep.qrprinter;
以后按向前、先后时,相应的将图片赋值给qrimage,再更新qrprinter。
现在问题是
1。第一张图片是能够预览到的,但在不退出程序的情况下,多选几次预览,有时会出现
图片区一片黑色,概率为50%左右。
2。后面的图片无法更新。始终显示第一张。
能解决问题一定给分(200),不够还可以再加
 
你为什么不用delphi自带的那个预览窗口呢? 汉化一下就很爽了。
还有,你好像不该在每次移动记录时都qrpreview.qrprinter:=qrrep.qrprinter;吧?
只需要在创建你的预览窗体时执行一次就好了。
你试试。
 
你可以用qrcompisitereport试试,每个图片用一个qrreport,从第二个qrreport开始
在qrreport的beforeprint时间中强制分页,其他都不用大变。
qrcompisitereport的onAddReports事件:
procedure TForm1.COMRPTAddReports(Sender: TObject);
begin
with COMRPTdo
begin
Reports.Add(QuickRep1);
Reports.Add(QuickRep2);
end;
end;

预览触发事件:
procedure TForm1.Button1Click(Sender: TObject);
begin
COMRPT.Reports.Add(@QuickRep1);

COMRPT.Reports.Add(@QuickRep2);
COMRPT.Preview;
end;
不知能否解决你的问题。
 
to shangshang:
1。如何汉化
2。关键是汉化后我无法控制显示,因为我的元图片其实是一张,我要在预览是计算
当前试用图片的那一部分。
 
汉化部分参见这里,^_^
http://www.delphibbs.com/delphibbs/dispq.asp?lid=993052
qreport的beforeprint事件是预览和打印都会触发的,在这里加入你的计算代码然后把
得到的图片放倒qrimage或者qrdbimage里不行吗?
 
to shangshang:
换页也会触发beforeprint事件吗?
 
to zyhml:
换页不触发的,要用中文预览,自己写人预览窗口就行了.
 
to hbezwwl:
我就是自己写了个预览窗口,发现又上面的问题
 
只要是打印都会触发BEFOREPRINT事件,不过好像没有换页事件哦。
你试试onSTARTPAGE事件行不?或者ONNEEDDATA.
再或者你在BEFOREPRINT事件中判断当前页号,能不能满足你的要求?
 
看来这样不能分页打印,我想只能做成autocad的样子啦,有没有其他建议
 
了解qr的预览原理,就知道这样做不大可行,quickreport的老家www.qusoft.com上有个自定义预览窗口的
例子,里边的源码 有怎样将qr的报表分割的代码 在qrqr.pas里。 您研究一下, 一定可以解决。
 
多人接受答案了。
 
后退
顶部