DELPHI7中的报表打印控件RAVE的默认预览窗体的另存为选项是否可以隐藏,如果不可以,怎么才能自己建立一个预览窗体呢(50分)

  • 主题发起人 主题发起人 coolbee
  • 开始时间 开始时间
C

coolbee

Unregistered / Unconfirmed
GUEST, unregistred user!
出于安全角度,不想让可户能够保存报表,哪个RAVE的预览控件我只能让他建立画面,但是不能把表文件装近来,看到的只是一个白纸
 
可以自己建立预览窗体呀!
 
安全角度?
ACDSEE可以拍摄啊.
如果怕用户改坏了,你可以用缺省的,覆盖即可。
 
如何显示中文化的打印预览对话框
拷贝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版本升级的影响!
 
欢迎来我主持的论坛来交流RAVE的用法!
这里有大量的rave使用技巧和资料!
http://www.delphifans.com/forum_list.asp?forum_id=23
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部