unit U_LabelAdd; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ToolWin, StdCtrls, BtnEdit, ExtCtrls, DB, ADODB, RM_System, RM_Common, RM_Class, RM_GridReport, Buttons, FTComboBox, RM_Preview, RM_e_Xls, RM_e_Graphic, RM_e_bmp, RM_BarCode, RM_DsgGridReport, RM_Dataset, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid; type TfrmLabelAdd = class(TForm) Panel1: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; customerNo: TBtnEditA; LabelFileName: TBtnEditA; beizhu: TMemo; ToolBar1: TToolBar; Tsave: TToolButton; Tclose: TToolButton; ADOQueryCmd: TADOQuery; OpenDialog1: TOpenDialog; RMGridReport1: TRMGridReport; BtOpen: TBitBtn; Label9: TLabel; LabelCaption: TEdit; Label10: TLabel; LabelType: TFTComboBox; ADOQueryTmp: TADOQuery; RMPreview1: TRMPreview; RMGridReportDesigner1: TRMGridReportDesigner; RMBarCodeObject1: TRMBarCodeObject; RMBMPExport1: TRMBMPExport; RMXLSExport1: TRMXLSExport; RMDS_Main: TRMDBDataSet; RMDataDictionary1: TRMDataDictionary; ADOQuery1: TADOQuery; RMGridReport2: TRMGridReport; procedure TcloseClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TsaveClick(Sender: TObject); procedure LabelFileNameBtnClick(Sender: TObject); procedure customerNoBtnClick(Sender: TObject); procedure BtOpenClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure RMPreview1DblClick(Sender: TObject); private fIsChg:Boolean; function SaveData():Boolean; function EditData():Boolean; procedure InitWinData(); procedure InitVarDictionary(); procedure InitDataSetDictionary(); public fcustomNo:string; fKeyNo:string; fWinStatus:integer; end; var frmLabelAdd: TfrmLabelAdd; implementation uses U_DataLink,U_RTFun; {$R *.dfm} procedure TfrmLabelAdd.TcloseClick(Sender: TObject); begin if fIsChg then begin if application.MessageBox('标签设计过,是否要保存?','提示信息',1)=1 then begin Tsave.Click ; end else close; end else close; end; procedure TfrmLabelAdd.FormCreate(Sender: TObject); begin panel1.Align :=alClient; fIsChg:=false; // ClearWinData(panel1); // InitVarDictionary(); end; procedure TfrmLabelAdd.TsaveClick(Sender: TObject); begin if trim(labelCaption.Text)='' then begin application.MessageBox('标签名称不能为空!','提示'); labelCaption.SetFocus; exit; end; if trim(LabelFileName.Text)='' then begin application.MessageBox('标签文件不能为空,请选择标签!','提示'); LabelFileName.SetFocus; exit; end; if fWinStatus=0 then begin if SaveData() then begin ModalResult:=1; end; end else begin if EditData() then begin ModalResult:=1; end; end; end; ///////////////////////////////////////////////////////////////////// //函数功能:保存数据 ///////////////////////////////////////////////////////////////////// function TfrmLabelAdd.SaveData():Boolean; begin try with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from P_Label'); sql.Add('where 1<>1'); Open; Append; fieldByName('CustomerNO').value:=trim(customerno.txtCode); fieldByName('filler').value:=DName; fieldByName('filltime').value:=DServerDate; fieldByName('beizhu').value:= trim(beizhu.text); fieldByName('LabelCaption').value:=trim(LabelCaption.text); fieldByName('LabelType').value:=trim(LabelType.text); fieldByName('LabelFileName').value:= trim(LabelFileName.text); //TBlobField(FieldByName('LabelFile')).LoadFromStream(fStream); RMGridReport1.SaveToBlobField(TBlobField(FieldByName('LabelFile'))); Post; end; result:=true; except Result:=false; application.MessageBox('保存标签模板出错!','警告信息',0); end; end; ///////////////////////////////////////////////////////////////////// //函数功能:保存数据 ///////////////////////////////////////////////////////////////////// function TfrmLabelAdd.EditData():Boolean; begin try with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from P_Label'); sql.Add('where labelId='+fkeyNo); Open; Edit; fieldByName('LabelCaption').value:=trim(LabelCaption.text); fieldByName('LabelType').value:=trim(LabelType.text); fieldByName('LabelFileName').value:= trim(LabelFileName.text); RMGridReport1.SaveToBlobField(TBlobField(FieldByName('LabelFile'))); fieldByName('Editer').value:=DName; fieldByName('EditTime').value:=DServerDate; fieldByName('beizhu').value:= trim(beizhu.text); Post; end; result:=true; except Result:=false; application.MessageBox('保存标签模板出错!','警告信息',0); end; end; procedure TfrmLabelAdd.LabelFileNameBtnClick(Sender: TObject); begin if OpenDialog1.Execute() then begin LabelFileName.Text:=OpenDialog1.FileName; RMGridReport1.LoadFromFile(LabelFileName.Text); RMGridReport1.Preview :=RMPreview1; RMGridReport1.ShowReport ; end; end; procedure TfrmLabelAdd.customerNoBtnClick(Sender: TObject); begin { FormGetCust:=TFormGetCust.Create(self); if FormGetCust.ShowModal=mrok then begin customNo.TxtCode:=trim(FormGetCust.ADOQuery1.Fieldbyname('customno').AsString); customNo.Text:=trim(FormGetCust.ADOQuery1.Fieldbyname('shortname').AsString); end; FormGetCust.Free; } { frmCustHelp:=TfrmCustHelp.create(self); with frmCustHelp do begin if showModal=1 then begin customNo.TxtCode:=trim(ADOQueryHelp.Fieldbyname('customno').AsString); customNo.Text:=trim(ADOQueryHelp.Fieldbyname('shortname').AsString); end; free; end; } end; procedure TfrmLabelAdd.BtOpenClick(Sender: TObject); begin with RMGridReport2 do begin if trim(LabelFileName.Text)='' then LoadFromFile(ExtractFilePath(Application.ExeName)+'report/标签模板.rmf'); InitDataSetDictionary(); RMDS_Main.DataSet :=ADOQuery1; application.ProcessMessages; DesignReport() ; fIsChg:=true; RMDS_Main.DataSet :=nil; RMGridReport1.NewReport; RMGridReport1.LoadFromFile(LabelFileName.Text); RMGridReport1.ShowReport ; end; end; //////////////////////////////////////////////////////////// //初始化窗口数据 //////////////////////////////////////////////////////////// procedure TfrmLabelAdd.InitWinData(); begin try with ADOQueryTmp do begin close; sql.Clear ; sql.Add('select A.*'); // sql.Add('customNoName=isnull((select customName from BC_customer where customNO=A.customNo),A.customNo)'); sql.Add('from P_Label A'); sql.Add('WHERE LabelId='+fkeyNo); Open; if isEmpty then begin close; exit; end; SSetWinData(ADOQueryTmp,panel1); RMGridReport1.LoadFromBlobField(tblobfield(fieldbyname('labelFile'))); RMGridReport2.FileName:=trim(fieldByName('labelFileName').AsString); RMGridReport2.LoadFromBlobField(tblobfield(fieldbyname('labelFile'))); RMGridReport1.Preview :=RMPreview1; //RMGridReport1.PrepareReport; RMGridReport1.ShowReport ; end; except end; end; procedure TfrmLabelAdd.FormShow(Sender: TObject); begin if fWinStatus>0 then InitWinData(); end; procedure TfrmLabelAdd.RMPreview1DblClick(Sender: TObject); begin //btOpen.Click ; end; //////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////// procedure TfrmLabelAdd.InitVarDictionary(); var i:integer; begin { try with RMGridReport2 do begin Dictionary.Variables.Clear ; Dictionary.Variables.AddCategory('客户单位信息'); with ADOQueryTmp do begin close; sql.clear; sql.Add('exec P_Label_CustPrintData'); sql.Add(quotedStr(fCustomNo)); Open; for i:=0 to FieldCount-1 do begin Dictionary.Variables.Add(trim(fields[i].FieldName) ,''); Dictionary.Variables.AsString[trim(fields[i].FieldName)]:=trim(fields[i].AsString); end; end; end; finally end; } end; ///////////////////////////////////////////////// // ///////////////////////////////////////////////// procedure TfrmLabelAdd.InitDataSetDictionary(); begin { with ADOQuery1 do begin close; sql.Clear ; sql.Add('exec P_Label_PrintSet'); sql.Add(quotedStr('')); //sql.Add(','+quotedStr('')); //sql.Add(','+quotedStr('')); //sql.Add(','+quotedStr('')); //sql.Add(','+quotedStr('')); OPen; end; with RMGridReport2 do begin Dictionary.FieldAliases.Clear; Dictionary.FieldAliases['RMDS_Main']:= '标签数据'; Dictionary.FieldAliases['RMDS_Main."barcode"']:='标签条码'; end; } end; end.