1、建立一个uniForm,用于建立FastReport打印界面。在Form上增加uniFrame。和传统的的报表打印设计一样一样的。
2、在beofeShow事情中:
1procedure TUniFrm_Report.UniFormBeforeShow(Sender: TObject); 2var 3 rptFileName,url: string; 4begin 5 rptFileName := 'demo.fr3'; 6 frxrprt1.Clear(); 7 try 8 frxrprt1.LoadFromFile(UniServerModule.FilesFolderPath+rptFileName); //存放在files目录下面 9 frxrprt1.PrintOptions.ShowDialog := false; 10 frxrprt1.ShowProgress := false; 11 frxrprt1.EngineOptions.SilentMode := true; 12 frxrprt1.EngineOptions.EnableThreadSafe := true; 13 frxrprt1.EngineOptions.DestroyForms := false; 14 frxrprt1.EngineOptions.UseGlobalDataSetList := false; 15 16 frxpdfxprt1.Background:=true; 17 frxpdfxprt1.ShowProgress:=False; 18 frxpdfxprt1.ShowDialog:=false; 19 frxpdfxprt1.FileName:=UniServerModule.NewCacheFileUrl(False,'pdf','','',url,true); 20 frxpdfxprt1.DefaultPath := ''; 21 22 frxrprt1.PreviewOptions.AllowEdit := false; 23 frxrprt1.PrepareReport(); 24 frxrprt1.Export(frxpdfxprt1); 25 26 UniURLFrame1.URL := url; 27 finally 28 //CloseDB; 29 end; 30end;
3、在前端调用的代码
1procedure TUniFrmeWebEmbedBase_authoManage.act_PrtExecute(Sender: TObject); 2var prt : TUniFrm_Report; 3begin 4 5 prt := TUniFrm_Report.Create(UniApplication); 6 prt.ShowModal(); 7 8 9end;

4、关于乱码问题:

5、其他:窗口有数据控件,不知道为什么会自动连接open,因此你要能保持open而不出错。否则,啥也没有。错误见类似图:

OK,goodluck!