298 lines
7.6 KiB
ObjectPascal
298 lines
7.6 KiB
ObjectPascal
unit U_ClientPrintRmf;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
|
||
cxEdit, DB, cxDBData, ToolWin, ComCtrls, cxGridCustomTableView,
|
||
cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls,
|
||
cxGridCustomView, cxGrid, DBClient, ADODB, ImgList, StdCtrls, ExtCtrls,
|
||
cxTextEdit, cxGridCustomPopupMenu, cxGridPopupMenu, cxLookAndFeels,
|
||
cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, RM_Common, RM_Class,
|
||
RM_GridReport, RM_Dataset, RM_E_llPDF, RM_BarCode, RM_e_Graphic, RM_e_Jpeg,
|
||
RM_e_Xls, cxContainer, cxMaskEdit, cxDropDownEdit, cxMRUEdit, dxSkinsCore,
|
||
dxSkinsDefaultPainters, cxProgressBar, cxButtons, RM_System;
|
||
|
||
type
|
||
TfrmClientPrintRmf = class(TForm)
|
||
ADOQueryTemp: TADOQuery;
|
||
ADOConnection1: TADOConnection;
|
||
ImageList1: TImageList;
|
||
RMDB_1: TRMDBDataSet;
|
||
RM1: TRMGridReport;
|
||
RMDB_2: TRMDBDataSet;
|
||
CDS_Label: TClientDataSet;
|
||
ADO_Prt: TADOQuery;
|
||
RMDB_3: TRMDBDataSet;
|
||
RMXLSExport1: TRMXLSExport;
|
||
RMJPEGExport1: TRMJPEGExport;
|
||
RMBarCodeObject1: TRMBarCodeObject;
|
||
ADOQueryCmd: TADOQuery;
|
||
ADO_While: TADOQuery;
|
||
RMDB_4: TRMDBDataSet;
|
||
RMDB_5: TRMDBDataSet;
|
||
ADOQueryReport: TADOQuery;
|
||
CDS_1: TClientDataSet;
|
||
CDS_2: TClientDataSet;
|
||
CDS_3: TClientDataSet;
|
||
CDS_4: TClientDataSet;
|
||
CDS_5: TClientDataSet;
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||
procedure FormShow(Sender: TObject);
|
||
procedure FormDestroy(Sender: TObject);
|
||
procedure TV1DblClick(Sender: TObject);
|
||
private
|
||
IsDebug, FPreviewPrint, fIsPreview: Boolean;
|
||
FLMType, FLBName, FQrCodeField: string;
|
||
FExportFileType, FExportFileName: string;
|
||
SqlStr1, SqlStr2, SqlStr3, SqlStr4, SqlStr5: string;
|
||
FSuccessfulFun: string;
|
||
FparamBlclid: string;
|
||
procedure PrintReport();
|
||
procedure ExportReport();
|
||
procedure GetPrtData(Ado: TADOQuery; Cds: TClientDataSet; SqlStr: string);
|
||
procedure InitArgs();
|
||
|
||
{ Private declarations }
|
||
public
|
||
FPrintJson: PChar;
|
||
FJsonOut: PChar;
|
||
DConString, DCode, DName: string;
|
||
constructor Create(AOwner: TComponent; JsonArgs: PChar);
|
||
|
||
{ Public declarations }
|
||
end;
|
||
|
||
var
|
||
frmClientPrintRmf: TfrmClientPrintRmf;
|
||
|
||
implementation
|
||
|
||
uses
|
||
U_RTFun, superobject, U_QrCodeFun;
|
||
|
||
{$R *.dfm}
|
||
constructor TfrmClientPrintRmf.Create(AOwner: TComponent; JsonArgs: PChar);
|
||
begin
|
||
inherited Create(AOwner);
|
||
FPrintJson := JsonArgs;
|
||
end;
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>
|
||
|
||
procedure TfrmClientPrintRmf.InitArgs;
|
||
var
|
||
JSONObject, item: ISuperObject;
|
||
jsonArray: TSuperArray;
|
||
i, loopCount: Integer;
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD> JSON <20>ַ<EFBFBD><D6B7><EFBFBD>
|
||
JSONObject := SO(FPrintJson);
|
||
if JSONObject = nil then
|
||
begin
|
||
Application.MessageBox('PrintJson<6F><6E>ʽ<EFBFBD>쳣!', '<27><>ʾ', 0);
|
||
Exit;
|
||
end;
|
||
|
||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
|
||
fIsPreview := JSONObject.B['IsPreview'];
|
||
IsDebug := JSONObject.B['IsDebug'];
|
||
FSuccessfulFun := JSONObject.S['SuccessfulFun'];
|
||
FLMType := JSONObject.S['LMType'];
|
||
FPreviewPrint := JSONObject.B['PreviewPrint'];
|
||
FLBName := JSONObject.S['LBName'];
|
||
FExportFileType := JSONObject.S['ExportFileType'];
|
||
FExportFileName := JSONObject.S['ExportFileName'];
|
||
FQrCodeField := JSONObject.S['QrCodeField'];
|
||
DConString := JSONObject.S['DConString'];
|
||
DCode := JSONObject.S['DCode'];
|
||
DName := JSONObject.S['DName'];
|
||
|
||
// <20><><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||
if Trim(FExportFileName) = '' then
|
||
FExportFileName := FLBName;
|
||
|
||
|
||
|
||
// <20><>ʼ<EFBFBD><CABC> SQL <20>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
SqlStr1 := '';
|
||
SqlStr2 := '';
|
||
SqlStr3 := '';
|
||
SqlStr4 := '';
|
||
SqlStr5 := '';
|
||
|
||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PrtArgs <20><><EFBFBD><EFBFBD>
|
||
jsonArray := JSONObject.A['PrtArgs'];
|
||
if Assigned(jsonArray) then
|
||
begin
|
||
// ȷ<><C8B7>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5<EFBFBD><35>Ԫ<EFBFBD>أ<EFBFBD>
|
||
loopCount := jsonArray.Length;
|
||
|
||
for i := 0 to loopCount - 1 do
|
||
begin
|
||
item := jsonArray.O[i];
|
||
case i of
|
||
0:
|
||
SqlStr1 := item.S['SqlStr'];
|
||
1:
|
||
SqlStr2 := item.S['SqlStr'];
|
||
2:
|
||
SqlStr3 := item.S['SqlStr'];
|
||
3:
|
||
SqlStr4 := item.S['SqlStr'];
|
||
4:
|
||
SqlStr5 := item.S['SqlStr'];
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
// <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>Ԥ<EFBFBD><D4A4><EFBFBD><EFBFBD>ť
|
||
// if FPreviewPrint then
|
||
// RM1.PreviewButtons := [rmpbZoom, rmpbLoad, rmpbSave, rmpbPrint, rmpbFind, rmpbPageSetup, rmpbExit, rmpbSaveToXLS, rmpbExport, rmpbNavigator]
|
||
// else
|
||
// RM1.PreviewButtons := [rmpbZoom, rmpbLoad, rmpbSave, rmpbFind, rmpbPageSetup, rmpbExit, rmpbSaveToXLS, rmpbExport, rmpbNavigator];
|
||
end;
|
||
|
||
procedure TfrmClientPrintRmf.GetPrtData(Ado: TADOQuery; Cds: TClientDataSet; SqlStr: string);
|
||
|
||
begin
|
||
if Trim(SqlStr) = '' then
|
||
Exit;
|
||
|
||
// ִ<><D6B4>ADO<44><4F>ѯ
|
||
with Ado do
|
||
begin
|
||
Close;
|
||
SQL.Clear;
|
||
SQL.Add(SqlStr);
|
||
if IsDebug then
|
||
ShowMessage(sql.Text);
|
||
Open;
|
||
end;
|
||
IintCDS(Ado, Cds);
|
||
SetQrCodePath(Cds, FQrCodeField);
|
||
end;
|
||
|
||
procedure TfrmClientPrintRmf.ExportReport();
|
||
var
|
||
fPrintFile, fExportPath: string;
|
||
begin
|
||
fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + FLBName + '.rmf';
|
||
if FileExists(fPrintFile) then
|
||
begin
|
||
RM1.LoadFromFile(fPrintFile);
|
||
RMVariables['LBPrtCode'] := dcode;
|
||
RMVariables['LBPrtName'] := dname;
|
||
|
||
fExportPath := ExtractFilePath(Application.ExeName) + FExportFileName + '.' + FExportFileType;
|
||
if not DirectoryExists(ExtractFileDir(fExportPath)) then
|
||
CreateDir(ExtractFileDir(fExportPath));
|
||
RM1.PrepareReport; //ֱ<>ӵ<EFBFBD><D3B5><EFBFBD>
|
||
// if FExportFileType = 'pdf' then
|
||
// RM1.ExportTo(RMllPDFExport1, fExportPath)
|
||
// else
|
||
RM1.ExportTo(RMXLSExport1, fExportPath);
|
||
|
||
FJsonOut := '{"success":true,"message":"<22><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>!"}';
|
||
end
|
||
else
|
||
begin
|
||
FJsonOut := '{"success":false,"message":"<22><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>û<EFBFBD>ҵ<EFBFBD>!"}';
|
||
end;
|
||
|
||
end;
|
||
|
||
procedure TfrmClientPrintRmf.PrintReport();
|
||
var
|
||
fPrintFile: string;
|
||
begin
|
||
fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + FLBName + '.rmf';
|
||
if FileExists(fPrintFile) then
|
||
begin
|
||
RM1.LoadFromFile(fPrintFile);
|
||
// RM1.DefaultCopies := StrToIntDef(ComboBox1.Text, 1);
|
||
RMVariables['LBPrtCode'] := dcode;
|
||
RMVariables['LBPrtName'] := dname;
|
||
if fIsPreview then
|
||
RM1.ShowReport
|
||
else
|
||
RM1.PrintReport;
|
||
|
||
FJsonOut := '{"success":true,"message":"<22><>ӡ<EFBFBD>ɹ<EFBFBD>!"}';
|
||
end
|
||
else
|
||
begin
|
||
FJsonOut := '{"success":false,"message":"<22><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>û<EFBFBD>ҵ<EFBFBD>!"}';
|
||
end;
|
||
|
||
end;
|
||
|
||
procedure TfrmClientPrintRmf.FormCreate(Sender: TObject);
|
||
begin
|
||
FPreviewPrint := True;
|
||
InitArgs();
|
||
|
||
with ADOConnection1 do
|
||
begin
|
||
Connected := false;
|
||
ConnectionString := DConString;
|
||
Connected := true;
|
||
end;
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2>䣩
|
||
ExportFtErpFile(FLBName + '.rmf', ADOQueryReport);
|
||
EnsureQrCodeDirectory();
|
||
ClearQrCodeDirectory();
|
||
end;
|
||
|
||
procedure TfrmClientPrintRmf.FormClose(Sender: TObject; var Action: TCloseAction);
|
||
begin
|
||
|
||
Action := cafree;
|
||
end;
|
||
|
||
procedure TfrmClientPrintRmf.FormShow(Sender: TObject);
|
||
begin
|
||
|
||
if flbName = '' then
|
||
begin
|
||
FJsonOut := '{"success":false,"message":"δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1>ǩ!"}';
|
||
self.Close;
|
||
exit;
|
||
end;
|
||
if SqlStr1 = '' then
|
||
begin
|
||
FJsonOut := '{"success":false,"message":"δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD>!"}';
|
||
self.Close;
|
||
exit;
|
||
end;
|
||
|
||
GetPrtData(ADO_Prt, CDS_1, SqlStr1);
|
||
GetPrtData(ADO_Prt, CDS_2, SqlStr2);
|
||
GetPrtData(ADO_Prt, CDS_3, SqlStr3);
|
||
GetPrtData(ADO_Prt, CDS_4, SqlStr4);
|
||
GetPrtData(ADO_Prt, CDS_5, SqlStr5);
|
||
|
||
if FExportFileType = '' then
|
||
begin
|
||
PrintReport();
|
||
end
|
||
else
|
||
ExportReport();
|
||
|
||
self.Close;
|
||
end;
|
||
|
||
procedure TfrmClientPrintRmf.TV1DblClick(Sender: TObject);
|
||
begin
|
||
ModalResult := 1;
|
||
end;
|
||
|
||
procedure TfrmClientPrintRmf.FormDestroy(Sender: TObject);
|
||
begin
|
||
frmClientPrintRmf := nil;
|
||
end;
|
||
|
||
end.
|
||
|