请问如何用RAVE控件自己写打印预览窗体(100分)

  • 主题发起人 主题发起人 coolbee
  • 开始时间 开始时间
rave 好用嗎
 
在相应的表单中放入RvProject组件,并且在RvProject组件上面双击鼠标左键。可以看到报表设计器
 
如果你有delphi7的安装盘在它的帮助手册中得到它的相关资料!
下载:http://se-ed.net/thaidelphicc/xml/updatepack/
 
谢谢各位:但是那些我都看了,包括RAVE的官方网站,上面也有说明,只是不够详细,说到的一些东西也找不到
自己做的预览窗体我已经能够建立,只是不知道怎么把他的报表文件连接到上面。如果你作过,或许能帮我。
 
首先不要用其PREVIEW,其次在RAVE DESIGN中设计
 
首先不要用其PREVIEW 为什么?
其次在RAVE DESIGN中设计 这个我也知道
 
如果要其PREVIEW的话,肯定出现一个ENGLISH的,不过可以改为中文样式的
 
他自带的PREVIEW的画面是英文的,就是因为找不到自己如何做PREVIEW窗体的办法,只好改DFM文件了
现在使用到也没问题,只是既然RAVE提供了制作PREVIEW的控件,我想就应该能够自己做出来吧。
并且RAVE自带的PREVIEW画面的打印按钮弹出的设置打印份数的设置无效。
 
没用过,UP
 
“并且RAVE自带的PREVIEW画面的打印按钮弹出的设置打印份数的设置无效”
对啊!我就曾经给他害苦了。
那次我做了一个REPORT,PREVIEW以后有110多页,原来想打第一页出来看看效果,结果它一下子
就把110多页LOAD到打印机里面,就算将打印项目取消也不能停止,最后我只好将打印机的电源
给拔掉!!!惨啊!!!!!!!![:(][:(][:(]
 
定义自己的预览窗体 要 在RvSystem1 的overridepreview 事件里写代码,
procedure TDM.RvSystem1OverridePreview(ReportSystem: TRvSystem;
OverrideMode: TOverrideMode;
var OverrideForm: TForm);
begin
Case OverrideMode Of
omCreate:
begin
OverrideForm := TMyPreviewForm.Create(self);
//创建预览窗体
OverrideForm.Caption := ReportSystem.TitlePreview;
OverrideForm.Width := ReportSystem.SystemPreview.FormWidth;
OverrideForm.Height := ReportSystem.SystemPreview.FormHeight;
OverrideForm.WindowState := ReportSystem.SystemPreview.FormState;
(OverrideForm As TMyPreviewForm).ReportSystem := ReportSystem;
end;

omShow:
begin
ReportSystem.SystemPreview.InitPreview((OverrideForm As TMyPreviewForm).RvRenderPreview);
If Assigned(ReportSystem.OnPreviewSetup) then
begin
ReportSystem.OnPreviewSetup((OverrideForm As TMyPreviewForm).RvRenderPreview);
end;
{ if }
(OverrideForm As TMyPreviewForm).InputFileName := ReportSystem.SystemFiler.Filename;
(OverrideForm As TMyPreviewForm).InputStream := ReportSystem.SystemFiler.Stream;
(OverrideForm As TMyPreviewForm).InitFromRPSystem;
If soPreviewModal In ReportSystem.SystemOptions then
begin
OverrideForm.ShowModal;
End
else
begin
OverrideForm.Show;
end;
{ else
}
end;

omWait:
begin
If Not (soPreviewModal In ReportSystem.SystemOptions) then
begin
// Wait for close
Repeat
Sleep(250);
Application.ProcessMessages;
Until Not OverrideForm.Visible;
end;
{ if }
end;

omFree:
begin
If (ReportSystem.SystemFiler.StreamMode In [smTempFile, smFile]) then
begin
(OverrideForm As TMyPreviewForm).RvRenderPreview.NDRStream.Free;
(OverrideForm As TMyPreviewForm).RvRenderPreview.NDRStream := Nil;
end;
{ if }
FreeAndNil(OverrideForm);
end;
end;
{ case }
end;
 
问题已收藏,好
 
怎么画线???
 
(OverrideForm As TMyPreviewForm).ReportSystem := ReportSystem;
这一句报错,没有reportsystem的定义???
 
ReportSystem 是后加上去的控件呀
 
如何显示中文化的打印预览对话框
拷贝C:/Rave5/Source目录中的RpFormPreview.pas和RpFormPreview.dfm到对应的项目目录中。
把RpFormPreview.pas加入到对应的项目文件中,把对应窗体的名字从RavePreviewForm更改为SCRavePreviewForm;将文件RpFormPreview.pas另存为SCFormPreview.pas。
把窗体SCRavePreviewForm中的对应文字从英文更改为中文。
在主窗体上加上 RvProject和 RvSystem部件,通过设定RvProject.Engine为RvSystem部件来把两者挂接。
设置RvSystem部件的OverridePreview事件过程为以下代码:
procedure TForm1.RvSystem1OverridePreview(ReportSystem: TRvSystem;
OverrideMode: TOverrideMode;
var OverrideForm: TForm);
begin
Case OverrideMode Of
omCreate:
begin
OverrideForm := TSCRavePreviewForm.Create(self);
//OverrideForm.Caption := ReportSystem.TitlePreview;
OverrideForm.Width := ReportSystem.SystemPreview.FormWidth;
OverrideForm.Height := ReportSystem.SystemPreview.FormHeight;
OverrideForm.WindowState := ReportSystem.SystemPreview.FormState;
(OverrideForm As TSCRavePreviewForm).ReportSystem := ReportSystem;
end;
omShow:
begin
ReportSystem.SystemPreview.InitPreview((OverrideForm As TSCRavePreviewForm).RvRenderPreview);
If Assigned(ReportSystem.OnPreviewSetup) then
begin
ReportSystem.OnPreviewSetup((OverrideForm As TSCRavePreviewForm).RvRenderPreview);
end;
{ if }
(OverrideForm As TSCRavePreviewForm).InputFileName := ReportSystem.SystemFiler.Filename;
(OverrideForm As TSCRavePreviewForm).InputStream := ReportSystem.SystemFiler.Stream;
(OverrideForm As TSCRavePreviewForm).InitFromRPSystem;
(* *)
If soPreviewModal In ReportSystem.SystemOptions then
begin
OverrideForm.ShowModal;
End
else
begin
OverrideForm.Show;
end;
{ else
}
end;
omWait:
begin
If Not (soPreviewModal In ReportSystem.SystemOptions) then
begin
// Wait for close
Repeat
Sleep(250);
Application.ProcessMessages;
Until Not OverrideForm.Visible;
end;
{ if }
end;
omFree:
begin
If (ReportSystem.SystemFiler.StreamMode In [smTempFile, smFile]) then
begin
(OverrideForm As TSCRavePreviewForm).RvRenderPreview.NDRStream.Free;
(OverrideForm As TSCRavePreviewForm).RvRenderPreview.NDRStream := Nil;
end;
{ if }
FreeAndNil(OverrideForm);
end;
end;
{ case }
end;

编译运行这个项目,其打印预览窗口就会变成中文的了!
备注:这种方式进行中文化不会受到RAVE版本升级的影响!
 
后退
顶部