unigui发布_unigui+fastReport实现web打印方案

本文介绍了如何使用unigui与fastReport结合,实现在Web上进行会议通知单的打印功能。首先,通过unigui创建数据录入和浏览页面,接着利用frxReport设计会议通知单模板,并保存为pdf。当点击打印按钮时,frxPDFExport将报表导出为pdf,并在UniURLFrame中预览。最后,通过设置相关属性和事件处理,动态填充模板内容并完成打印预览。注意,unigui在Chrome浏览器中表现最佳,与旧版IE兼容性不佳。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日单位需要用到会议通知单的打印功能,故引出篇。

unigui是delphi环境下快速开发web应用的优秀工具,不再赘述,下面直接记录使用搭配使用,基本逻辑就是:

unigui实现数据录入和浏览的web页---->点击打印按钮时使用【frxPDFExport】动态将报表导出为pdf------>将pdf文件动态载入打印预览窗口(UniURLFrame)实现打印预览功能。

具体实现:

1,用unigui控件实现数据的“增改删”,如下图:

2,unigui实现预览窗口,如下图,需要引入frxReport、frxPDFExport和frxRichObject组件:

3,双击frxReport设计好会议通知单模板,且将文件另存到unigui发布目录的files文件夹下,文件名为”会议通知单模板.fr3“,如下图:

4,点击【打印会议通知单】按钮实现如下代码(利用frxReport打开已设计好的会议通知单模板.fr3,通过frxPDFExport将frxReport的报表导出为pdf文件):

procedure TfrmMeetingInf.btnPrintClick(Sender: TObject);

begin

with frmMeetingInfPrint do begin

try

sTitle := memTitle.Lines.Text;

sTime := edTime.Text;

sPsn := edPsn.Text;

sAddress := memAddress.Lines.Text;

ShowModal(nil);

finally

end;

end;

end;

procedure TfrmMeetingInfPrint.UniFormBeforeShow(Sender: TObject);

var

rptFileName,url: string;

begin

rptFileName := '会议通知单.fr3';

frxReport1.Clear();

try

frxReport1.LoadFromFile(UniServerModule.FilesFolderPath+rptFileName); //存放在files目录下面

frxReport1.PrintOptions.ShowDialog := false;

frxReport1.ShowProgress := false;

frxReport1.EngineOptions.SilentMode := true;

frxReport1.EngineOptions.EnableThreadSafe := true;

frxReport1.EngineOptions.DestroyForms := false;

frxReport1.EngineOptions.UseGlobalDataSetList := false;

frxPDFExport1.Background:=true;

frxPDFExport1.ShowProgress:=False;

frxPDFExport1.ShowDialog:=false;

frxPDFExport1.FileName:=UniServerModule.NewCacheFileUrl(False,'pdf','','',url,true);

frxPDFExport1.DefaultPath := '';

frxReport1.PreviewOptions.AllowEdit := false;

frxReport1.PrepareReport();

frxReport1.Export(frxPDFExport1);

UniURLFrame1.URL := url;

finally

end;

end;

procedure TfrmMeetingInfPrint.frxReport1BeforePrint(

Sender: TfrxReportComponent);

begin

if (Sender is TfrxMemoView) then begin

if ((Sender as TfrxMemoView).Name = 'memTitle') then begin

(Sender as TfrxMemoView).Memo.Text := sTitle;

end;

if ((Sender as TfrxMemoView).Name = 'memPsn') then begin

(Sender as TfrxMemoView).Memo.Text := sPsn;

end;

if ((Sender as TfrxMemoView).Name = 'memTime') then begin

(Sender as TfrxMemoView).Memo.Text := sTime;

end;

if ((Sender as TfrxMemoView).Name = 'memAddress') then begin

(Sender as TfrxMemoView).Memo.Text := sAddress;

end;

end;

end;

完成上述几步,就能看到成果了:

BTW,unigui配合Chrome浏览器效果最佳,与旧版IE的兼容性不太好。

QQ:508882988。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值