Grazie a San Google ho trovato chi aveva lo stesso problema e lo ha risolto, posto quì il codice della chaimata caso mai possa servire a qualcuno.
in pratica si parte dal solito LazReport fino ad arrivare alla preparazione del report,
per l'esportazione è necessario reperire l'unit lr_e_pdf.pas da inserire in uses, ecco il link all'unit: https://github.com/alrieckert/lazarus/blob/master/components/lazreport/source/addons/pdfexport/lr_e_pdf.pas (https://github.com/alrieckert/lazarus/blob/master/components/lazreport/source/addons/pdfexport/lr_e_pdf.pas)
una volta preparato il report ed esportato su file (uso lo stesso nome per tutti, tanto sovrascrive),
si chiama ShellExecute per visualizzarlo, stamparlo o salvarlo da qualche parte (eventualmente lo si può eliminare all'uscita del programma se non si vuole lasciare documenti in giro)
procedure TForm1.BitBtn1Click(Sender: TObject);
var
e: integer;
begin
try
// define data filters ...
SQLQueryMaster.Filter := 'ID='+IntToStr( SQLQueryMaster.FieldByName('ID').AsInteger);
SQLQueryDetail1.Filter := 'IDCliente='+IntToStr( SQLQueryMaster.FieldByName('ID').AsInteger);
SQLQueryMaster.Filtered := true;
SQLQueryDetail1.Filtered := true;
// load report's file from disk ...
frReport1.LoadFromFile('RptAnagrafica.lrf');
// try report preparation...
if frReport1.PrepareReport then
begin
// if ok, create pdf file directly to program folder ...
frReport1.ExportTo(TFrTNPDFExportFilter, 'temp.pdf');
// call external reader (must be at least one installed ...
e := ShellExecute( 0, 'open', PChar('temp.pdf'), nil, nil, 0);
if (e < 33) then showMessage( 'Something went wrong ... error # '+IntToStr( e)) else showMessage( 'Report done !');
end;
except on E: ESQLDatabaseError do
ShowMessage( 'ERROR ON DB !');
end;
SQLQueryMaster.Filtered := false;
SQLQueryDetail1.Filtered := false;
end;
semplice e veloce !
Ciao @giacomarko,
vedo che sei riuscito a fare quello che ti eri proposto, però perchè chiami un programma esterno per aprire il pdf?
Potresti fare:
frReport1.ExportTo(TFrTNPDFExportFilter, 'temp.pdf');
frReport1.ShowReport;
Anche così puoi visualizzarlo, stamparlo e salvarlo in pdf da qualche parte