unit U_LabelPrint2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Vcl.Printers, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ToolWin, ComCtrls, U_BaseHelp, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, DBClient, ADODB, ImgList, StdCtrls, ExtCtrls, cxTextEdit, cxGridCustomPopupMenu, cxGridPopupMenu, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxDateRanges, dxBarBuiltInMenu, System.ImageList, U_BaseInput, RM_Common, RM_Class, RM_GridReport, RM_Dataset, Vcl.Buttons, RM_E_llPDF, RM_BarCode, RM_e_Graphic, RM_e_Jpeg, RM_e_Xls, cxContainer, cxMaskEdit, cxDropDownEdit, cxMRUEdit, System.Net.HttpClient, System.Net.HttpClientComponent, System.JSON, dxSkinsCore, dxSkinsDefaultPainters, dxSkinWXI; type TfrmLabelPrint2 = class(TfrmBaseHelp) ADOQueryTemp: TADOQuery; ADOConnection1: TADOConnection; Panel1: TPanel; ImageList1: TImageList; RMDB_1: TRMDBDataSet; RM1: TRMGridReport; RMDB_2: TRMDBDataSet; CDS_Label: TClientDataSet; ADO_1: TADOQuery; btnShow: TSpeedButton; ADO_2: TADOQuery; RMDB_3: TRMDBDataSet; ADO_3: TADOQuery; RMXLSExport1: TRMXLSExport; RMJPEGExport1: TRMJPEGExport; RMBarCodeObject1: TRMBarCodeObject; RMllPDFExport1: TRMllPDFExport; CheckBox1: TCheckBox; Label1: TLabel; cbbLab: TcxMRUEdit; CheckBox2: TCheckBox; CheckBox3: TCheckBox; ADOQueryCmd: TADOQuery; ADO_While: TADOQuery; ComboBox1: TcxComboBox; ComboBox_Print: TcxComboBox; btnPrint: TSpeedButton; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure TV1DblClick(Sender: TObject); procedure btnPrintClick(Sender: TObject); procedure btnShowClick(Sender: TObject); procedure cbbLabPropertiesButtonClick(Sender: TObject); private procedure InitGrid(); procedure PrintLabel(MIsShow: Boolean); procedure PrintServerLabel(MIsShow: Boolean); function JsonGetChildValue(JsonStr, KeyName: string): string; { Private declarations } public FPreviewPrint, IsSql1, IsSql2, IsSql3: Boolean; FLMType: string; //标签类型 FFiltration1, FFiltration2, FFiltration3: string; FparamBlclid: string; { Public declarations } end; var frmLabelPrint2: TfrmLabelPrint2; implementation uses U_DataLink, U_RTFun, U_LabelMapSet, U_printPdf, U_LabelPrint; {$R *.dfm} function TfrmLabelPrint2.JsonGetChildValue(JsonStr, KeyName: string): string; var JSONObject: TJSONObject; // JSON类 JSONPair: TJSONPair; i, Cloint: integer; Z, X: string; begin Result := ''; JSONObject := TJSONObject.ParseJSONValue(JsonStr) as TJSONObject; Cloint := JSONObject.Count; for i := 0 to Cloint - 1 do begin JSONPair := JSONObject.Pairs[i]; Z := JSONPair.JsonString.Value; X := JSONPair.JSONValue.Value; if JSONPair.JsonString.Value = KeyName then Result := JSONPair.JSONValue.Value; end; end; procedure TfrmLabelPrint2.PrintServerLabel(MIsShow: Boolean); var MaxBLCLID, LBName: string; WBoolean: Boolean; HttpClient: THttpClient; Request: TStringStream; Response: IHTTPResponse; ResponseString: string; jsonArray: TJSONArray; // JSON数组变量 JSONObject: TJSONObject; // JSON类 JSONPair: TJSONPair; JSONStr: string; i: Integer; Mmessage, MpdfFileId, Mcode: string; mprintFlag, mprinter: Integer; begin if CDS_Label.IsEmpty then begin Application.MessageBox(PChar('类型' + FLMType + '没有设置标签!'), '提示', 0); Exit; end; LBName := cbbLab.text; if CDS_Label.Locate('LMName', LBName, []) then begin if GetLSNo(ADOQueryCmd, MaxBLCLID, 'X', 'Bs_Report_Cloud_Log', 4, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Bs_Report_Cloud_Log where 1=2'); Open; end; with ADOQueryCmd do begin Append; FieldByName('BLCLID').Value := MaxBLCLID; FieldByName('Filler').Value := dname; FieldByName('LMName').Value := trim(CDS_Label.fieldbyname('LMName').AsString); FieldByName('LMSql1').Value := trim(CDS_Label.fieldbyname('LMSql1').AsString); FieldByName('LMSql2').Value := trim(CDS_Label.fieldbyname('LMSql2').AsString); FieldByName('LMSql3').Value := trim(CDS_Label.fieldbyname('LMSql3').AsString); FieldByName('Filtration1').Value := Trim(FFiltration1); FieldByName('Filtration2').Value := Trim(FFiltration2); FieldByName('Filtration3').Value := Trim(FFiltration3); FieldByName('IsSql1').Value := IsSql1; FieldByName('IsSql2').Value := IsSql2; FieldByName('IsSql3').Value := IsSql3; FieldByName('Sheets').Value := strtointdef(ComboBox1.Text, 1); FieldByName('paramBlclid').Value := StrToFloatDef(FparamBlclid, 0); Post; end; end; if MIsShow then mprintFlag := 1 else mprintFlag := 0; mprinter := ComboBox_Print.ItemIndex; printPdf(Application, 1, PChar('title'), PChar(dcode), PChar(dname), PChar(MaxBLCLID), StrToIntDef(ComboBox1.Text, 1), mprintFlag, mprinter, PChar(DConString))// HttpClient := THttpClient.Create; // JSONStr := '{"reportFileName":"","ciid":"' + MaxBLCLID + '"}'; // Request := TStringStream.Create(JSONStr); // // try // HttpClient.ContentType := 'application/json'; // Response := HttpClient.Post('http://101.132.143.144:8089/datasnap/rest/TServerMethods1/RmfToPdf/', Request); // ResponseString := Response.ContentAsString; // JSONObject := TJSONObject.ParseJSONValue(ResponseString) as TJSONObject; // jsonArray := TJSONArray(JSONObject.GetValue('result')); // for i := 0 to 2 do // begin // JSONPair := jsonArray.Items[0].GetValue.Pairs[i]; // if JSONPair.JsonString.Value = 'code' then // Mcode := JSONPair.JSONValue.Value; // if JSONPair.JsonString.Value = 'pdfFileId' then // MpdfFileId := JSONPair.JSONValue.Value; // if JSONPair.JsonString.Value = 'message' then // Mmessage := JSONPair.JSONValue.Value; // end; // if Mmessage = 'success' then // begin // if MIsShow then // mprintFlag := 1 // else // mprintFlag := 0; // // mprinter := ComboBox_Print.ItemIndex; // // printPdf(Application, 1, PChar('title'), PChar(dcode), PChar(dname), PChar(MpdfFileId), StrToIntDef(ComboBox1.Text, 1), mprintFlag, mprinter, PChar(DConString)) // end; // finally // Request.Free; // HttpClient.Free; // end; end; procedure TfrmLabelPrint2.PrintLabel(MIsShow: Boolean); var fPrintFile, fPrintFile10, FMainID, LBName: string; begin if CDS_Label.IsEmpty then begin Application.MessageBox(PChar('类型' + FLMType + '没有设置标签!'), '提示', 0); Exit; end; RMllPDFExport1.ShowDialog := CheckBox2.Checked; RMJPEGExport1.ShowDialog := CheckBox2.Checked; RMXLSExport1.ShowDialog := CheckBox2.Checked; RM1.ShowPrintDialog := CheckBox1.Checked; LBName := cbbLab.text; ExportFtErpFile(LBName + '.rmf', ADOQueryTemp); if CDS_Label.Locate('LMName', LBName, []) then begin if trim(CDS_Label.fieldbyname('LMSql1').AsString) <> '' then begin with ADO_1 do begin Close; sql.Clear; if IsSql1 then begin sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql1').AsString)); sql.add(FFiltration1); end else begin sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql1').AsString) + ' @Filtration=' + quotedstr(Trim(FFiltration1))); end; Open; end; end; if trim(CDS_Label.fieldbyname('LMSql2').AsString) <> '' then begin with ADO_2 do begin Close; sql.Clear; if IsSql1 then begin sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql2').AsString)); sql.add(FFiltration2); end else begin sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql2').AsString) + ' @Filtration=' + quotedstr(Trim(FFiltration2))); end; Open; end; end; if trim(CDS_Label.fieldbyname('LMSql3').AsString) <> '' then begin with ADO_3 do begin Close; sql.Clear; if IsSql1 then begin sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql3').AsString)); sql.add(FFiltration3); end else begin sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql3').AsString) + ' @Filtration=' + quotedstr(Trim(FFiltration3))); end; Open; end; end; end; fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + LBName + '.rmf'; if FileExists(fPrintFile) then begin RM1.LoadFromFile(fPrintFile); RM1.DefaultCopies := StrToIntDef(ComboBox1.Text, 1); RMVariables['LBPrtCode'] := dcode; RMVariables['LBPrtName'] := dname; if MIsShow then RM1.ShowReport else RM1.PrintReport; end else begin Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0); end; end; procedure TfrmLabelPrint2.FormCreate(Sender: TObject); begin inherited; FPreviewPrint := True; try with ADOConnection1 do begin Connected := false; ConnectionString := DConString; Connected := true; end; ADOQueryBaseCmd.Connection := ADOConnection1; ADOQueryBaseTemp.Connection := ADOConnection1; except {if Application.MessageBox('网络连接失败,是否要再次连接?','提示',32+4)=IDYES then begin try with ADOConnection1 do begin Connected:=false; ConnectionString:=DConString; //ConnectionString:='23242'; Connected:=true; end; except end; end; } end; end; procedure TfrmLabelPrint2.btnPrintClick(Sender: TObject); begin if not CheckBox3.Checked then begin PrintLabel(False); end else begin PrintServerLabel(False); end; ModalResult := 1; end; procedure TfrmLabelPrint2.btnShowClick(Sender: TObject); begin if not CheckBox3.Checked then begin PrintLabel(true); end else begin PrintServerLabel(true); end; end; procedure TfrmLabelPrint2.cbbLabPropertiesButtonClick(Sender: TObject); begin try frmLabelMapSet := TfrmLabelMapSet.Create(Application); with frmLabelMapSet do begin IsSql1 := self.IsSql1; IsSql2 := self.IsSql2; IsSql3 := self.IsSql3; FFiltration1 := self.FFiltration1; FFiltration2 := self.FFiltration2; FFiltration3 := self.FFiltration3; FLMType := self.FLMType; if ShowModal = 1 then begin Self.InitGrid(); end; end; finally frmLabelMapSet.Free; end; end; procedure TfrmLabelPrint2.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := cahide; end; procedure TfrmLabelPrint2.InitGrid(); begin with ADOQueryTemp do begin close; sql.Clear; sql.Add('select LMName name from BS_Label_Map where LMType=' + QuotedStr(TRIM(FLMType))); sql.Add(' order by SerialNo '); Open; if isEmpty then begin exit; end; cbbLab.Properties.LookupItems.Clear; while not Eof do begin cbbLab.Properties.LookupItems.Add(Trim(fieldByName('Name').AsString)); Next; end; cbbLab.ItemIndex := 0; end; with ADOQueryTemp do begin Filtered := False; Close; sql.Clear; Sql.Add('select * from BS_Label_Map where LMType=' + QuotedStr(TRIM(FLMType))); Open; end; SCreateCDS(ADOQueryTemp, CDS_Label); SInitCDSData(ADOQueryTemp, CDS_Label); if CDS_Label.IsEmpty then begin Application.MessageBox(PChar('类型' + FLMType + '没有设置标签!'), '提示', 0); Exit; end; end; procedure TfrmLabelPrint2.FormShow(Sender: TObject); begin inherited; 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]; if Trim(FFiltration2) = '' then FFiltration2 := FFiltration1; if Trim(FFiltration3) = '' then FFiltration3 := FFiltration1; ComboBox_Print.Properties.Items.Assign(printer.Printers); InitGrid(); end; procedure TfrmLabelPrint2.TV1DblClick(Sender: TObject); begin ModalResult := 1; end; procedure TfrmLabelPrint2.FormDestroy(Sender: TObject); begin inherited; frmLabelPrint2 := nil; end; end.