unit U_LabelPrint; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 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, dxSkinsCore, dxSkinsDefaultPainters, 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; type TfrmLabelPrint = class(TfrmBaseHelp) ADOQueryTemp: TADOQuery; ADOConnection1: TADOConnection; Panel1: TPanel; ImageList1: TImageList; RMDB_1: TRMDBDataSet; RM1: TRMGridReport; RMDB_2: TRMDBDataSet; CDS_Label: TClientDataSet; ADO_1: TADOQuery; btnPrint: TSpeedButton; btnShow: TSpeedButton; ADO_2: TADOQuery; RMDB_3: TRMDBDataSet; ADO_3: TADOQuery; RMXLSExport1: TRMXLSExport; RMJPEGExport1: TRMJPEGExport; RMBarCodeObject1: TRMBarCodeObject; RMllPDFExport1: TRMllPDFExport; CheckBox1: TCheckBox; ComboBox1: TComboBox; Label1: TLabel; cbbLab: TcxMRUEdit; CheckBox2: TCheckBox; 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); { Private declarations } public FPreviewPrint, IsSql1: Boolean; FLMType: string; //标签类型 FFiltration1, FFiltration2, FFiltration3: string; { Public declarations } end; var frmLabelPrint: TfrmLabelPrint; implementation uses U_DataLink, U_RTFun, U_LabelMapSet; {$R *.dfm} procedure TfrmLabelPrint.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 IsSql1 then begin with ADO_1 do begin Close; sql.Clear; sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql1').AsString)); sql.add(FFiltration1); Open; end; end else begin if trim(CDS_Label.fieldbyname('LMSql1').AsString) <> '' then begin with ADO_1 do begin Close; sql.Clear; sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql1').AsString) + ' @Filtration=' + quotedstr(Trim(FFiltration1))); Open; end; end; if trim(CDS_Label.fieldbyname('LMSql2').AsString) <> '' then begin with ADO_2 do begin Close; sql.Clear; sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql2').AsString) + ' @Filtration=' + quotedstr(Trim(FFiltration2))); Open; end; end; if trim(CDS_Label.fieldbyname('LMSql3').AsString) <> '' then begin with ADO_3 do begin Close; sql.Clear; sql.add('exec ' + trim(CDS_Label.fieldbyname('LMSql3').AsString) + ' @Filtration=' + quotedstr(Trim(FFiltration3))); Open; end; 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 TfrmLabelPrint.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 TfrmLabelPrint.btnPrintClick(Sender: TObject); begin PrintLabel(False); ModalResult := 1; end; procedure TfrmLabelPrint.btnShowClick(Sender: TObject); begin PrintLabel(true); end; procedure TfrmLabelPrint.cbbLabPropertiesButtonClick(Sender: TObject); begin try frmLabelMapSet := TfrmLabelMapSet.Create(Application); with frmLabelMapSet do begin IsSql1 := self.IsSql1; 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 TfrmLabelPrint.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := cahide; end; procedure TfrmLabelPrint.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 TfrmLabelPrint.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; InitGrid(); end; procedure TfrmLabelPrint.TV1DblClick(Sender: TObject); begin ModalResult := 1; end; procedure TfrmLabelPrint.FormDestroy(Sender: TObject); begin inherited; frmLabelPrint := nil; end; end.