代码之家  ›  专栏  ›  技术社区  ›  Chris Ghenea

Delphi-在表单上预览Rave报告

  •  1
  • Chris Ghenea  · 技术社区  · 15 年前

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

    4 回复  |  直到 5 年前
        1
  •  2
  •   jasonpenny    15 年前

    可以使用trvrenderPreview将预览渲染到任何tscrollbox:

    使用TRV系统:

       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
  •  2
  •   max    15 年前

    您可以使用trvndrwriter组件而不是trvssystem。

    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
  •  0
  •   Harriv    15 年前

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

        4
  •  0
  •   Iverson    5 年前

    使用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;
    
    推荐文章