【问题标题】:Delphi - preview a Rave report on the formDelphi - 在表单上预览 Rave 报告
【发布时间】:2009-10-23 09:31:27
【问题描述】:

如何在 Delphi 表单上预览 rave 报告? 我有一个包含 2 个页面的页面控件:在第一个页面上,用户输入一些数据(姓名、地址...),我希望在第二个页面上预览使用第一页中的数据生成的报告。

【问题讨论】:

    标签: delphi rave-reports


    【解决方案1】:

    您可以使用 TRvRenderPreview 向任何 TScrollBox 呈现预览:

    使用 TRvSystem:

       RvRenderPreview1.ScrollBox := ScrollBox1; // a scrollbox on a TTabSheet
    
       RvSystem1.DefaultDest := rdFile;
       RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup];
    
       RvSystem1.RenderObject := RvRenderPreview1;
       RvSystem1.DoNativeOutput := false;
    
       RvSystem1.Execute;
    

    【讨论】:

      【解决方案2】:

      您可以使用 TRvNDRWriter 组件代替 TRvSystem。

      procedure TForm1.Button1Click(Sender: TObject);
      begin
        RvProject1.Execute;
        RvRenderPreview1.Render;
      end;
      
      procedure TForm1.FormCreate(Sender: TObject);
      var
        ms: TMemoryStream;
      begin
      //  RvNDRWriter1.StreamMode := smUser;
      //  RvRenderPreview1.ScrollBox := ScrollBox1;
        ms := TMemoryStream.Create;
        RvNDRWriter1.Stream := ms;
        RvRenderPreview1.NDRStream := ms;
      end;
      

      【讨论】:

        【解决方案3】:

        我使用了打印预览,它并不完全相同,但在我的应用程序中已经足够了。不知道是否可以内嵌页面控件。

        【讨论】:

          【解决方案4】:

          使用 TRvProject + TRvNDRWriter + TRvRenderPreview + TMemoryStream + TScrollBox

          procedure TForm1.FormCreate(Sender: TObject);
          begin
            FNdrStream := TMemoryStream.Create;
          end;
          
          procedure TForm1.FormDestroy(Sender: TObject);
          begin
            FNdrStream.Free;
          end;
          
          procedure TForm1.btnPreviewClick(Sender: TObject);
          begin
            //load report project file. You can use stored RAV instead
            rvProject.ProjectFile := 'C:\ExecutaveisGerados\Exemplos\sampleRave\sampleRave.rav';
            rvProject.Open;
          
            //tells rave we will write the report result to a NDR
            rvProject.Engine := rvNdrWriter;
          
            //ensure empty memory stream
            FNdrStream.Clear;
          
            //tells NDRWriter where to store ndr file (memory stream)
            rvNdrWriter.StreamMode := smUser;
            rvNdrWriter.Stream := FNdrStream;
          
            //execute the report using the NDRWriter. Now the Stream holds the NDR file
            rvProject.Execute;
          
            //tells RenderPreview where to display
            rvRenderPreview.ScrollBox := sbReportPreview;
          
            //display NDR file from memory stream
            rvRenderPreview.Render(FNdrStream);
          end;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多