Заказчик захотел получать красивые отчеты на почту.
Решил использовать FastReport и придерживаться следующего алгоритма
Генерировать отчет в HTML файл
Загрузить в строку
Отправить на почту
Код (Очень черновой вариант, но чтобы было)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
procedure TForm2.Button1Click(Sender: TObject); var Emailer:TUniShopMilkSendEmail; ss:TStringStream; begin // save to html file frxReport1.PrintOptions.ShowDialog := False; frxReport1.ShowProgress := false; frxReport1.EngineOptions.SilentMode := True; frxReport1.EngineOptions.EnableThreadSafe := True; frxReport1.EngineOptions.DestroyForms := False; frxReport1.EngineOptions.UseGlobalDataSetList := False; frxHTMLExport1.FileName:='123.html'; frxReport1.PreviewOptions.AllowEdit := False; frxHTMLExport1.ShowDialog:=false; frxReport1.PrepareReport(); frxReport1. Export(frxHTMLExport1); // load from file Memo1.Lines.LoadFromFile('123.html',TEncoding.UTF8); // send to mail Emailer:=TUniShopMilkSendEmail.Create(Self); Emailer.Execute('someSubject',Memo1.Lines.Text,'panteleevstas@gmail.com'); end; |
Также кусок кода из примера UniGUI для FastReport
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ frxReport1.PrintOptions.ShowDialog := False; frxReport1.ShowProgress := false; frxReport1.EngineOptions.SilentMode := True; frxReport1.EngineOptions.EnableThreadSafe := True; frxReport1.EngineOptions.DestroyForms := False; frxReport1.EngineOptions.UseGlobalDataSetList := False; frxReport1.LoadFromFile(UniServerModule.FilesFolderPath+'rp.fr3'); frxPDFExport1.Background := True; frxPDFExport1.ShowProgress := False; frxPDFExport1.ShowDialog := False; frxPDFExport1.FileName := UniServerModule.NewCacheFileUrl(False, 'pdf', '', '', Result, True); frxPDFExport1.DefaultPath := ''; frxReport1.PreviewOptions.AllowEdit := False; frxReport1.PrepareReport; frxReport1.Export(frxPDFExport1); } ... |