有关QuickReport的Preview的问题,有谁知道?(100分)

  • 主题发起人 主题发起人 LEEMA
  • 开始时间 开始时间
L

LEEMA

Unregistered / Unconfirmed
GUEST, unregistred user!
我在主窗口中有一个Panel, 里面放了一个QuickReport的Preview, 另外我有一个报表的Form,现在我可以做到将该报表
的预览放在Preview中,但是在主窗口中关闭该Preview时,原报表的Form并未从内存中释放,请问有谁知道该如何将该报表
释放掉呢?
┏━━━━━━━━━━━━━━┓
  ┃  主窗口         ┃
  ┃   ┏━━━━━━━━━┓┃
  ┃   ┃         ┃┃
  ┃   ┃  报表预览窗口  ┃┃
  ┃   ┃         ┃┃
  ┃   ┃         ┃┃
  ┃   ┃         ┃┃
  ┃   ┃         ┃┃
  ┃   ┃         ┃┃
  ┃   ┗━━━━━━━━━┛┃
  ┗━━━━━━━━━━━━━━┛
我的方法如下:
在MainForm中有一个全局变量CurrentRep: TQuickRep;
在报表FORM中有一个Report;它的OnPreview事件如下:
procedure TDirectPrintForm.ReportPreview(Sender: TObject);
begin
MainForm.QRPreview1.QRPrinter := TQRPrinter(Sender);
MainForm.CurrentRep := Report;
end;

在报表FORM中执行Report.Preview后将在主窗口的QRPreview1中进行预览, 如下。
function OpenReport: Boolean;
begin
with TDirectPrintForm.Create(Application)do
try
........
Report.Preview;
//预览
finally
free;
//程序执行不到这一步,除非主程序关闭,该怎么办?
end;
end;

在MainForm中将CurrentRep := nil不管用。
有谁知道该怎么办,最好给出一个完整的方法。
 
主窗口应该还有"打印", "关闭"等,再设一个全局变量RepForm(:TDirectPrintForm),
"打印", "关闭" 初始的状态是 not Enabled的, CurrentRep可以不要
function MainForm.OpenReport: Boolean;
begin
RepForm := TDirectPrintForm.Create(Application);
with RepFormdo
begin
........
QuickRep.PreviewModeless;
repeat
Application.ProcessMessages
until Integer(QRPreview1.QRPrinter.Status) = 2;
btnClose.Enabled := true;
btnPrint.Enabled := true;
end;
end;
响应"关闭"的事件:
procedure MainForm.btnCloseClick(Sender: TObject);
begin
QRPreview1.QRPrinter := Nil;
RepForm.Free;
RepForm := Nil;
end;
响应"打印"的事件:
自己写吧
 
真是王八蛋
 
昨天这个问题就已解决,只是分没法收回了。
我另做了一个专门进行PREVIEW的FORM,然后在主窗口内将其DOCK进预览内,运行结果很令人满意。
 
后退
顶部