140 lines
3.6 KiB
ObjectPascal
140 lines
3.6 KiB
ObjectPascal
|
|
unit U_PrintFr3;
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|||
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB, RM_Common, RM_Class, RM_GridReport,
|
|||
|
|
RM_E_llPDF, RM_e_Xls, RM_BarCode, RM_RichEdit, RM_Dataset, frxExportXLSX, frxExportPPTX, frxClass,
|
|||
|
|
frxExportBaseDialog,Vcl.Printers, frxExportXLS, frxTableObject, frxBarcode, frxOLE, frxRich, frxDBSet;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
TfrmPrintFr3 = class(TForm)
|
|||
|
|
frxReport1: TfrxReport;
|
|||
|
|
frxDBDataset1: TfrxDBDataset;
|
|||
|
|
frxRichObject1: TfrxRichObject;
|
|||
|
|
frxOLEObject1: TfrxOLEObject;
|
|||
|
|
frxBarCodeObject1: TfrxBarCodeObject;
|
|||
|
|
frxReportTableObject1: TfrxReportTableObject;
|
|||
|
|
frxXLSExport1: TfrxXLSExport;
|
|||
|
|
frxPPTXExport1: TfrxPPTXExport;
|
|||
|
|
frxXLSXExport1: TfrxXLSXExport;
|
|||
|
|
ADOQueryReport: TADOQuery;
|
|||
|
|
procedure FormShow(Sender: TObject);
|
|||
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|||
|
|
private
|
|||
|
|
procedure getReportFile();
|
|||
|
|
public
|
|||
|
|
fFormID:integer;
|
|||
|
|
fCopyNumber:integer;
|
|||
|
|
fBLCLID:string;
|
|||
|
|
fIsPreview:Integer;
|
|||
|
|
fprinterIndex:Integer;
|
|||
|
|
constructor Create(
|
|||
|
|
AOwner: TComponent;
|
|||
|
|
ACaption: String;
|
|||
|
|
mFormID:integer;
|
|||
|
|
recid:string;
|
|||
|
|
CopyNumber:integer;IsPreview:integer;printerIndex:integer);
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
uses
|
|||
|
|
U_dataLink,U_CompressionFun;
|
|||
|
|
{$R *.dfm}
|
|||
|
|
|
|||
|
|
constructor TfrmPrintFr3.Create(
|
|||
|
|
AOwner: TComponent;
|
|||
|
|
ACaption: String;
|
|||
|
|
mFormID:integer;
|
|||
|
|
recid:string;
|
|||
|
|
CopyNumber:integer;
|
|||
|
|
IsPreview:integer;printerIndex:integer);
|
|||
|
|
begin
|
|||
|
|
inherited Create(AOwner);
|
|||
|
|
if ACaption<>'' then
|
|||
|
|
Caption := ACaption;
|
|||
|
|
fFormID:=mFormID;
|
|||
|
|
fBLCLID:=recid;
|
|||
|
|
if CopyNumber>0 then
|
|||
|
|
fCopyNumber:= CopyNumber
|
|||
|
|
else
|
|||
|
|
fCopyNumber:=1;
|
|||
|
|
fIsPreview:=IsPreview;
|
|||
|
|
fprinterIndex:= printerIndex ;
|
|||
|
|
end;
|
|||
|
|
/////////////////////////////////////////////////////////////
|
|||
|
|
///
|
|||
|
|
procedure TfrmPrintFr3.FormClose(Sender: TObject; var Action: TCloseAction);
|
|||
|
|
begin
|
|||
|
|
action:=cafree;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrmPrintFr3.FormShow(Sender: TObject);
|
|||
|
|
begin
|
|||
|
|
getReportFile();
|
|||
|
|
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
procedure TfrmPrintFr3.getReportFile();
|
|||
|
|
var
|
|||
|
|
myStream: TMemoryStream;
|
|||
|
|
mReportFile:string;
|
|||
|
|
// ff: TADOBlobstream;
|
|||
|
|
begin
|
|||
|
|
if fBLCLID='' then
|
|||
|
|
begin
|
|||
|
|
showMessage('!δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1>¼id') ;
|
|||
|
|
self.Close ;
|
|||
|
|
exit;
|
|||
|
|
end;
|
|||
|
|
try
|
|||
|
|
myStream:= TMemoryStream.Create;
|
|||
|
|
myStream.Position:=0;
|
|||
|
|
with ADOQueryReport do
|
|||
|
|
begin
|
|||
|
|
close;
|
|||
|
|
sql.Clear;
|
|||
|
|
sql.Add('select * from Bs_report_Cloud_File');
|
|||
|
|
sql.Add('where BLCLID='+quotedstr(fBLCLID));
|
|||
|
|
open;
|
|||
|
|
if isEmpty then
|
|||
|
|
begin
|
|||
|
|
showMessage('δ<><CEB4>ȡ<EFBFBD><C8A1>Ҫ<EFBFBD><D2AA>ӡ<EFBFBD><D3A1><EFBFBD>ļ<EFBFBD>!') ;
|
|||
|
|
self.Close ;
|
|||
|
|
exit;
|
|||
|
|
end;
|
|||
|
|
TBlobField(ADOQueryReport.FieldByName('GenerateFiles')).SaveToStream(myStream);
|
|||
|
|
// ff := TADOBlobstream.create(fieldByName('GenerateFiles') as TblobField, bmRead);
|
|||
|
|
// ff.SaveToStream(myStream);
|
|||
|
|
mReportFile:= ExtractFilePath(Application.ExeName) +'report\'+Trim(ADOQueryReport.fieldByName('GenerateFileName').AsString);
|
|||
|
|
|
|||
|
|
myStream.Position:=0;
|
|||
|
|
if fprinterIndex>=0 then
|
|||
|
|
frxReport1.PrintOptions.Printer := Printer.Printers[fprinterIndex];
|
|||
|
|
|
|||
|
|
frxReport1.PreviewPages.LoadFromStream(myStream);
|
|||
|
|
frxReport1.EngineOptions.IgnoreExprError :=true;
|
|||
|
|
if fIsPreview =1 then
|
|||
|
|
begin
|
|||
|
|
frxReport1.ShowPreparedReport ;
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
begin
|
|||
|
|
frxReport1.PrintOptions.Copies :=fCopyNumber;
|
|||
|
|
frxReport1.PrintOptions.ShowDialog:=false;
|
|||
|
|
frxReport1.Print() ;
|
|||
|
|
end;
|
|||
|
|
self.Close;
|
|||
|
|
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
finally
|
|||
|
|
myStream.Free;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
|
|||
|
|
end.
|