我想自定义预览,网上有如下代码:
如何自已做预览窗口 
创建一个窗口,在上面放RvProject组件、RvNDRWriter组件、RvRenderPreview组件和
ScrollBox组件,设定以下几个部件间的联系关系:RvProject.Engine:=RvNDRWriter;RvRenderPreview.ScrollBox:=ScrollBox;设定RvNDRWriter.filename为 demo.ndr ;进行预览的代码为:var
  NDRStream:TMemoryStream;
begin
  //建立内存流
  NDRStream:=TMemoryStream.Create 
  //输出报表数据
  RvProject1.Execute 
  //将报表数据调入内存流中供预览
  NDRStream.LoadFromFile('demo.ndr');
  //预览相应的报表,使用的是相应的内存流。
  RvRenderPreview1.Render(NDRStream);
  ShowButton();
end; 
问题:1.Rave Design 生成的是 '*.rav'文件,  何来‘*.ndr’?
      2.ShowButton()什么的干活,无效啊

解决方案 »

  1.   

    补充:
       要在程序中预览报表,是否设计时一定要 在窗体中添加多个 TRvDataSetConnection?
       能够通过在报表中先创建 DataBase Connection 再创建 Driver DataView的形式吗?
      

  2.   

    1.ndr 自动生成
    2.一定要TRvDataSetConnection
    3.正确代码:
      NDRStream:=TMemoryStream.Create ;  DataModule2.RvProject1.Engine := RvNDRWriter1;
      DataModule2.RvProject1.Open;
      DataModule2.RvProject1.SelectReport('Report1',true); 
      With DataModule2.RvProject1.ProjMan do
      begin
        MyPage := FindRaveComponent('Report1.Page1',nil) as TRavePage;
        MyBitMap := FindRaveComponent('Bitmap1',MyPage) as   TRaveBitmap;
        MyBitMap.Image.LoadFromFile('1.bmp');
      end;
      RvNDRWriter1.FileName:='Report1.ndr';
      RvNDRWriter1.StreamMode:=smfile; 
      DataModule2.RvProject1.Execute;  NDRStream.LoadFromFile('Report1.ndr');
      
      RvRenderPreview1.Render(NDRStream);