在程序中新一个窗体然后加入TQuickRep和TQRBand,还有若干TQRShape与TQRLabel就这些了,再加入了一个TQRRichText组件。报表窗体掉用方式如下:        
procedure TFormPrint.btnprintClick(Sender: TObject);//打印按钮的单击事件
begin
  FormReport:=TFormReport.Create(self);
  FormReport.QuickRep1.PreviewModal;
  FormRepost:=nil;
end;
procedure TFormPrint.btnCloseClick(Sender: TObject);//关闭按钮的单击事件
begin
  Close;
end;在打印窗体中的Close事件中代码如下:
procedure TFormReport.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=caFree;
end;
 当我不用TQRRichText组件时程序一切正常(此时指TFormPrint窗体关闭时候,单击“Close”(btnClose)按钮,因为是TFormPrint是掉用TFormReport的窗体)但是当我加入TQRRichText组件时(可以打印多行并且可自动换行嘛,方便)在关闭TFormPrint窗体时就会出现如下错误:Project Project1.exe raised exception class EOSError with message 'System Error .Code:1400.无效的窗口句柄。' Process stopped .Use Step or Run to continue.以上就为错误消息,在调试时出现的。如果直接运行程序,后果就不说了,程序全部下课了。

解决方案 »

  1.   

    我沒遇過這種情況, 雖然我用QuickReport比較多!
    試下如下:
     QRRichText1.Lines.Clear;
    Action:=caFree;
      

  2.   

    to aiirii
    不得行,,
    还是一样的错误
      

  3.   

    procedure TFormPrint.btnprintClick(Sender: TObject);//打印按钮的单击事件
    begin
      FormReport:=TFormReport.Create(self);
      FormReport.QuickRep1.PreviewModal;
      FreeandNil(FormReport);
    end;
      

  4.   

    to konhon
     还是不行,,这下错误出来的更早了,,在关闭报表窗口时就出来错误了。以前是关闭掉用报表窗体的那个窗体(TFormPrint)进才出错,现在更早出来了(TFormReport)。
      

  5.   

    还有一个忘了说了,,我的窗体全是继承过来的,,(TFormReport,TFormPrint等)
      

  6.   

    这么大个CSDN应该有个解决这个问题哦