unit U_CPAdd; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ADODB, DBClient, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, ComCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, cxTextEdit, cxButtonEdit, StdCtrls, ExtCtrls, cxCurrencyEdit, cxDropDownEdit, cxCalendar, BtnEdit, RM_Class, RM_System, RM_Dataset, RM_Common, RM_GridReport, cxLookAndFeels, cxLookAndFeelPainters, cxContainer, cxMemo; type TfrmCPAdd = class(TForm) ToolBar1: TToolBar; ToolButton1: TToolButton; TBClose: TToolButton; ADOQueryMain: TADOQuery; ADOQueryCmd: TADOQuery; ADOQueryTemp: TADOQuery; Panel1: TPanel; CheckBox1: TCheckBox; Panel2: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label18: TLabel; Label20: TLabel; CYNo: TEdit; CYSpec: TEdit; CYKZ: TEdit; CYHX: TEdit; KuWei: TEdit; CYName: TEdit; CYECF: TEdit; CYMF: TEdit; CYColor: TEdit; CYEColor: TEdit; Note: TEdit; CYCF: TBtnEditC; Label6: TLabel; CYPO: TEdit; Label7: TLabel; Label8: TLabel; CYFacNO: TEdit; Label14: TLabel; Label15: TLabel; MGNO: TEdit; CYPrice: TEdit; Label16: TLabel; Qty: TEdit; ToolButton2: TToolButton; ComboBox1: TComboBox; RMDB_Main: TRMDBDataSet; ADOQueryPrint: TADOQuery; RM1: TRMGridReport; CYFacName: TBtnEditC; Label21: TLabel; Edit1: TEdit; Label17: TLabel; MSKWYS: TcxMemo; Label19: TLabel; KHorderno: TEdit; Label22: TLabel; MMF: TEdit; procedure FormShow(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure v1Column2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure CheckBox1Click(Sender: TObject); procedure v1Column46PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure CYMFExit(Sender: TObject); procedure CYKZExit(Sender: TObject); procedure CYCFBtnDnClick(Sender: TObject); procedure CYCFBtnUpClick(Sender: TObject); procedure CYNoKeyPress(Sender: TObject; var Key: Char); procedure ToolButton2Click(Sender: TObject); procedure CYECFKeyPress(Sender: TObject; var Key: Char); procedure CYFacNameBtnUpClick(Sender: TObject); private canshu1: string; Fint: Integer; procedure InitSubGrid(); function SaveData(): Boolean; { Private declarations } public FCYID, FCPID: string; CopyInt: Integer; { Public declarations } end; var frmCPAdd: TfrmCPAdd; implementation uses U_DataLink, U_Fun, U_iniParam, U_ZDYHelp, U_ZdyAttachGYS; {$R *.dfm} procedure TfrmCPAdd.InitSubGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; SQL.Clear; SQL.Add(' select * from CP_YDang where CYID=''' + Trim(FCYID) + ''' '); Open; end; SCSHDataNew(ADOQueryMain, Panel2, 0); mskwys.Text := ADOQueryMain.fieldbyname('mskwys').AsString; finally ADOQueryMain.EnableControls; end; end; procedure TfrmCPAdd.FormShow(Sender: TObject); begin InitSubGrid(); if CopyInt = 1 then begin FCYID := ''; end; if CheckBox1.Checked = True then begin canshu1 := '英寸'; end else begin canshu1 := ''; end; if FCYID = '' then begin ToolButton2.Enabled := False; end; end; procedure TfrmCPAdd.TBCloseClick(Sender: TObject); begin Close; end; function TfrmCPAdd.SaveData(): Boolean; var maxId: string; begin try ADOQueryCmd.Connection.BeginTrans; if Trim(FCYID) = '' then begin if GetLSNo(ADOQueryCmd, maxId, '', 'CP_YDang', 3, 1) = False then begin Result := False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; end else begin maxId := Trim(FCYID); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from CP_YDang where CYID=''' + Trim(FCYID) + ''''); Open; end; with ADOQueryCmd do begin if Trim(FCYID) = '' then begin Append; FieldByName('CYType').Value := Trim(FCPID); FieldByName('CYID').Value := Trim(maxId); FieldByName('Filler').Value := Trim(DName); end else begin Edit; FieldByName('Editer').Value := Trim(DName); FieldByName('EditTime').Value := SGetServerDateTime(ADOQueryTemp); end; SSetsavedataNew(ADOQueryCmd, 'CP_YDang', Panel2, 0); FieldByName('CYCF').Value := Trim(CYCF.Text); FieldByName('CYFacName').Value := Trim(CYFacName.Text); FieldByName('MSKWYS').Value := MSKWYS.Text; Post; end; // with ADOQueryTemp do // begin // Close; // sql.Clear; // sql.Add(' select count(CYNO) as AA from CP_YDang where CYNo=''' + Trim(CYNo.Text) + ''' and Status=''0'' '); //// ShowMessage(SQL.text); // Open; // if FieldByName('AA').AsInteger > 1 then // begin // ADOQueryCmd.Connection.RollbackTrans; // Result := False; // Application.MessageBox('产品编号重复!', '提示', 0); // Exit; // end; // end; ADOQueryCmd.Connection.CommitTrans; FCYID := Trim(maxId); Result := True; except ADOQueryCmd.Connection.RollbackTrans; Result := False; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmCPAdd.ToolButton1Click(Sender: TObject); begin if (Trim(CYNo.Text) = '') then begin Application.MessageBox('产品编号不能为空!', '提示', 0); Exit; end; // if (Trim(CYName.Text) = '') then // begin // Application.MessageBox('中文品名不能为空!', '提示', 0); // Exit; // end; ToolBar1.SetFocus; if SaveData() then begin Application.MessageBox('保存成功!', '提示', 0); // ModalResult := 1; ToolButton2.Enabled := True; end; end; procedure TfrmCPAdd.v1Column2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin { try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='YPName'; flagname:='样品名称'; if ShowModal=1 then begin with CDS_Sub do begin Edit; FieldByName('CYName').Value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); end; end; end; finally frmZDYHelp.Free; end;} end; procedure TfrmCPAdd.CheckBox1Click(Sender: TObject); begin if CheckBox1.Checked = True then begin canshu1 := '英寸'; end else begin canshu1 := ''; end; end; procedure TfrmCPAdd.v1Column46PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin { try frmZdyAttachGYS:=TfrmZdyAttachGYS.Create(Application); with frmZdyAttachGYS do begin if ShowModal=1 then begin with CDS_Sub do begin Edit; FieldByName('defstr19').Value:=Trim(CDS_HZ.fieldbyname('ZdyName').AsString); end; end; end; finally frmZdyAttachGYS.Free; end; } end; procedure TfrmCPAdd.CYMFExit(Sender: TObject); var mvalue: string; FReal: Double; begin mvalue := Trim(TcxTextEdit(Sender).EditingText); if (TryStrToFloat(mvalue, FReal)) then begin if Trim(canshu1) = '英寸' then mvalue := mvalue + '"' else mvalue := mvalue + 'CM'; end; TEdit(Sender).Text := mvalue; end; procedure TfrmCPAdd.CYKZExit(Sender: TObject); var mvalue: string; FReal: Double; begin mvalue := Trim(TcxTextEdit(Sender).EditingText); if (TryStrToFloat(mvalue, FReal)) then begin mvalue := mvalue + 'GSM'; end; TEdit(Sender).Text := mvalue; end; procedure TfrmCPAdd.CYCFBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text := ''; TBtnEditC(Sender).TxtCode := ''; CYECF.Text := ''; end; procedure TfrmCPAdd.CYCFBtnUpClick(Sender: TObject); var i: Integer; FieldName: string; begin // if Trim(CYNo.Text)='' then // begin // Application.MessageBox('请先输入产品编号!','提示',0); // Exit; // end; // // frmCFAdd:=TfrmCFAdd.Create(Application); // with frmCFAdd do // begin // FCYID:=''; // FCPID:=Trim(CYNo.Text); // Label1.Caption:=trim(CYNo.Text); // if ShowModal=1 then // begin // with ADOQueryTemp do // begin // Close; // SQL.Clear; // sql.add('exec P_Get_CF :mainid') ; // Parameters.ParamByName('mainid').Value:=CYNo.Text; // Open; // end; // CYCF.Text:=ADOQueryTemp.fieldbyname('CF').AsString; // CYECF.Text:=ADOQueryTemp.fieldbyname('ECF').AsString; // end; // end; end; procedure TfrmCPAdd.CYNoKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin with ADOQueryTemp do begin Close; SQL.Clear; sql.add('select * from CP_YDang where CYNO =''' + cyno.Text + ''''); Open; end; if ADOQueryTemp.IsEmpty then begin end else begin Application.MessageBox('产品编号重复!', '提示', 0); Exit; end; Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmCPAdd.ToolButton2Click(Sender: TObject); var fPrintFile, FFCYID: string; DPS, i, j: Integer; Txt, fImagePath: string; Moudle: THandle; Makebar: TMakebar; Mixtext: TMixtext; begin CYNo.SetFocus; if FCYID = '' then Exit; if trim(ComboBox1.Text) = '' then begin Application.MessageBox('样品标签不能为空!', '提示', 0); exit; end; if Trim(Edit1.Text) <> '' then begin if TryStrToInt(Edit1.Text, i) = False then begin Application.MessageBox('份数录入错误!', '提示', 0); exit; end; end; fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + trim(ComboBox1.Text) + '.rmf'; DPS := 0; FFCYID := ''; i := 1; if Trim(Edit1.Text) = '' then begin j := 1; end else begin j := StrToInt(Edit1.Text); end; try Moudle := LoadLibrary('MakeQRBarcode.dll'); @Makebar := GetProcAddress(Moudle, 'Make'); @Mixtext := GetProcAddress(Moudle, 'MixText'); Txt := Trim(FCYID); fImagePath := ExtractFilePath(Application.ExeName) + 'image\temp.bmp'; if not DirectoryExists(pchar(ExtractFilePath(Application.ExeName) + 'image')) then CreateDirectory(pchar(ExtractFilePath(Application.ExeName) + 'image'), nil); if FileExists(fImagePath) then DeleteFile(fImagePath); Makebar(pchar(Txt), Length(Txt), 3, 3, 0, PChar(fImagePath), 3); except application.MessageBox('条形码生成失败!', '提示信息', MB_ICONERROR); exit; end; RMVariables['QRBARCODE'] := fImagePath; with ADOQueryPrint do begin Close; sql.Clear; sql.Add('select * from CP_YDang where CYID=''' + trim(FCYID) + ''' '); open; end; for i := 1 to j do begin if FileExists(fPrintFile) then begin RM1.LoadFromFile(fPrintFile); RM1.PrintReport; // RM1.ShowReport; end else begin Application.MessageBox(PChar('没有找' + ExtractFilePath(Application.ExeName) + 'Report\样品标签.rmf'), '提示', 0); Exit; end; end; end; procedure TfrmCPAdd.CYECFKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmCPAdd.CYFacNameBtnUpClick(Sender: TObject); begin try frmZdyAttachGYS := TfrmZdyAttachGYS.Create(Application); with frmZdyAttachGYS do begin if self.canshu1 <> '高权限' then canshu1 := '业务员'; FZSD := '1'; if ShowModal = 1 then begin CYFacName.Text := Trim(CDS_HZ.fieldbyname('ZDYName').AsString); // JGFactoryName.TxtCode := Trim(CDS_HZ.fieldbyname('ZDYCode').AsString); end; end; finally frmZdyAttachGYS.Free; end; end; end.