English 中文(简体)
Delphi - preview a Rave report on the form
原标题:Delphi - preview a Rave report on the form
  • 时间:2009-10-23 09:31:27
  •  标签:

How can I preview a rave report on a Delphi form? I have a page control with 2 pages: on the first one the user enter some data (name, address...) and I want on the second page to preview the report generated with the data from the first page.

最佳回答

您可以向任何STScrollBox提供预览,同时进行技术审查:

有了TyvSystem:

   RvRenderPreview1.ScrollBox := ScrollBox1; // a scrollbox on a TTabSheet

   RvSystem1.DefaultDest := rdFile;
   RvSystem1.SystemSetups := RvSystem1.SystemSetups - [ssAllowSetup];

   RvSystem1.RenderObject := RvRenderPreview1;
   RvSystem1.DoNativeOutput := false;

   RvSystem1.Execute;
问题回答

你们可以使用TvNDRWriter部分而不是TvSystem。

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;

我使用了印刷版的预盘,但并不完全相同,但在我的申请中,这已经足够了。 我不知道这是否有可能植根于页面控制。

利用TRIV项目 + 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:ExecutaveisGeradosExemplossampleRavesampleRave.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;




相关问题
热门标签