unit U_MarkingInspection20230701; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxCalendar, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, RM_Common, RM_Class, RM_GridReport, RM_System, RM_Dataset, ADODB, DBClient, cxGridCustomPopupMenu, cxGridPopupMenu, ExtCtrls, ComCtrls, ToolWin, cxTextEdit, Buttons, cxSplitter, cxCheckBox, MovePanel, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator,dxCore,ActiveX,StrUtils; {function CommOpen(fhandle:hwnd;sCommName:PAnsiChar; IntTime:integer):integer;stdcall;external 'JCYData.DLL'; function CommClose(sCommName:PAnsiChar):integer;stdcall;external 'JCYData.DLL'; function CommOpen(fhandle:hwnd;sCommName:PAnsiChar; IntTime:integer;IsMessage:integer):integer;stdcall;external 'JCYData.DLL'; function CommClose(sCommName:PAnsiChar):integer;stdcall;external 'JCYData.DLL'; function CommOpen(fhandle:hwnd;sCommName:PAnsiChar; IntTime:integer;IsMessage:integer):integer;stdcall;external 'JZCRS323C.DLL'; function CommClose(sCommName:PAnsiChar):integer;stdcall;external 'JZCRS323C.DLL'; function GetCommData(fhandle:hwnd;var defnum1,defnum2:double;var fisjz:integer):integer;stdcall;external 'JZCRS323C.DLL'; function CommOpen1301(fhandle:hwnd;sCommName:PAnsiChar; IntTime:integer;IsMessage:integer):integer;stdcall;external 'JZCRS323C.DLL'; function CommClose1301(sCommName:PAnsiChar):integer;stdcall;external 'JZCRS323C.DLL'; function GetCommData1301(fhandle:hwnd;var defnum1,defnum2:double;var fisjz:integer):integer;stdcall;external 'JZCRS323C.DLL'; } type TfrmMarkingInspection20230701 = class(TForm) cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; cxStyle2: TcxStyle; cxGridPopupMenu1: TcxGridPopupMenu; DataSource1: TDataSource; Order_MJ: TClientDataSet; ADOQueryMain: TADOQuery; ADOCmd: TADOQuery; RMDB_Main: TRMDBDataSet; RM2: TRMGridReport; cxGrid3: TcxGrid; Tv3: TcxGridDBTableView; cxGridDBColumn1: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; DataSource2: TDataSource; CDS_MJCD: TClientDataSet; DataSource3: TDataSource; CDS_MJID: TClientDataSet; Timer1: TTimer; ADOQueryPrint: TADOQuery; ScrollBox1: TScrollBox; SpeedButton13: TSpeedButton; SpeedButton14: TSpeedButton; SpeedButton15: TSpeedButton; SpeedButton16: TSpeedButton; SpeedButton22: TSpeedButton; SpeedButton23: TSpeedButton; SpeedButton24: TSpeedButton; SpeedButton25: TSpeedButton; SpeedButton31: TSpeedButton; SpeedButton32: TSpeedButton; SpeedButton33: TSpeedButton; SpeedButton34: TSpeedButton; SpeedButton40: TSpeedButton; SpeedButton41: TSpeedButton; SpeedButton42: TSpeedButton; cxGridPopupMenu2: TcxGridPopupMenu; ADOQueryMainDSC: TADOQuery; SpeedButton45: TSpeedButton; SpeedButton50: TSpeedButton; SpeedButton51: TSpeedButton; SpeedButton54: TSpeedButton; SpeedButton55: TSpeedButton; SpeedButton59: TSpeedButton; SpeedButton62: TSpeedButton; SpeedButton63: TSpeedButton; SpeedButton64: TSpeedButton; SpeedButton70: TSpeedButton; SpeedButton71: TSpeedButton; SpeedButton72: TSpeedButton; SpeedButton73: TSpeedButton; Panel2: TPanel; Label9: TLabel; MJLen: TEdit; Label4: TLabel; MJMaoZ: TEdit; Label5: TLabel; Label11: TLabel; BTPrint: TButton; Button5: TButton; Edit3: TEdit; Label10: TLabel; Edit4: TEdit; Label12: TLabel; Panel3: TPanel; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton7: TSpeedButton; SpeedButton8: TSpeedButton; SpeedButton9: TSpeedButton; SpeedButton10: TSpeedButton; SpeedButton11: TSpeedButton; SpeedButton12: TSpeedButton; SpeedButton49: TSpeedButton; v3Column1: TcxGridDBColumn; v3Column2: TcxGridDBColumn; v3Column3: TcxGridDBColumn; Label26: TLabel; Edit6: TEdit; Label30: TLabel; MJQty3: TEdit; Label31: TLabel; Label32: TLabel; MJQty4: TEdit; Label33: TLabel; MovePanel1: TMovePanel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label20: TLabel; Label21: TLabel; Label7: TLabel; Label8: TLabel; Edit1: TEdit; Button1: TButton; Button4: TButton; Edit2: TEdit; CDQty: TEdit; RadioGroup1: TRadioGroup; Button2: TButton; Panel7: TPanel; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; tv2CDType: TcxGridDBColumn; tv2CDWZ: TcxGridDBColumn; v2Column2: TcxGridDBColumn; Tv2CDQty: TcxGridDBColumn; Tv2CDReason: TcxGridDBColumn; v2Column1: TcxGridDBColumn; v2Column3: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; Panel8: TPanel; AOrdDefNote1: TRichEdit; Label34: TLabel; ComboBox1: TComboBox; SpeedButton20: TSpeedButton; SpeedButton27: TSpeedButton; SpeedButton28: TSpeedButton; SpeedButton35: TSpeedButton; SpeedButton52: TSpeedButton; SpeedButton53: TSpeedButton; SpeedButton60: TSpeedButton; SpeedButton61: TSpeedButton; SpeedButton77: TSpeedButton; SpeedButton78: TSpeedButton; SpeedButton79: TSpeedButton; SpeedButton80: TSpeedButton; v3Column4: TcxGridDBColumn; Label36: TLabel; MJStr4: TEdit; Label37: TLabel; v3Column5: TcxGridDBColumn; Label38: TLabel; RM3: TRMGridReport; mjxh: TEdit; ADOTmp: TADOQuery; MKXS: TEdit; Panel5: TPanel; Panel6: TPanel; Label1: TLabel; lblOrderNo: TLabel; Label35: TLabel; Label39: TLabel; APID: TEdit; Edit7: TEdit; Edit8: TEdit; ToolBar1: TToolBar; ToolButton1: TToolButton; TBCD: TToolButton; TBClose: TToolButton; lblMPRTCodeName: TLabel; ToolButton3: TToolButton; lblcolor: TLabel; JYY1: TEdit; JYY2: TEdit; Label3: TLabel; Label2: TLabel; Label6: TLabel; Label13: TLabel; v3Column6: TcxGridDBColumn; Label14: TLabel; Label15: TLabel; KuanHao: TEdit; QryCheckNet: TADOQuery; v3Column7: TcxGridDBColumn; cxSplitter1: TcxSplitter; Label16: TLabel; Button6: TButton; JYFenShu: TComboBox; Panel1: TPanel; LabDJTS: TLabel; ADOQueryTS: TADOQuery; Tv3Column1: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBCDClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure BTPrintClick(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton12Click(Sender: TObject); procedure SpeedButton13Click(Sender: TObject); procedure cxGridDBColumn2PropertiesChange(Sender: TObject); procedure Button1Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure SpeedButton49Click(Sender: TObject); procedure APIDKeyPress(Sender: TObject; var Key: Char); procedure Edit1Click(Sender: TObject); procedure Edit2Change(Sender: TObject); procedure Edit3Click(Sender: TObject); procedure Edit4Click(Sender: TObject); procedure Edit6Click(Sender: TObject); procedure MJstr3KeyPress(Sender: TObject; var Key: Char); procedure Label9Click(Sender: TObject); procedure MJQty4Exit(Sender: TObject); procedure Button2Click(Sender: TObject); procedure MJMaoZChange(Sender: TObject); procedure APIDClick(Sender: TObject); procedure Edit7Click(Sender: TObject); procedure MJQty4KeyPress(Sender: TObject; var Key: Char); procedure FormCreate(Sender: TObject); procedure MJQty2Change(Sender: TObject); procedure Edit8Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure Tv3CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure MJStr4Change(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } FColumn, FAPID, FMainId, FSubId, FFFMJID, FOperationStatus, FYXJL, FJHGZ, FXSGZ, FIsOutRange: string; FMaxQty, FMinQty, FMaxWet, FMinWet, FMaxXS, FMinXS: Double; FCDName: string; isCommopen, IsJsMessage: boolean; fxsType, fRollType: string; function SelfConnData(): Boolean; procedure InitJP(); //刷新疵点选项 procedure InitCDGrid(); //刷新疵点信息 procedure InitCDGridID(); //刷新检验信息 function CheckData(CKType: string): Boolean; //校验数据 function SaveData(): Boolean; //保存数据 procedure InitLCK(); //扫描流程卡 procedure InitDDB(); //扫描待定布 procedure ClearGlobal(); //清除全局ID procedure PrintCKMDG(MRKOrdID: string); //打印入库单 procedure PrtData(FMJID: string); //打印卷标签 procedure QuantityConversion(); //数量换算 procedure OpenCom(DllName: string); procedure CloseCom(DllName: string); procedure On1201(var Message: Tmessage); message 1201; procedure On1301(var Message: Tmessage); message 1301; public fmanage: string; { Public declarations } end; var frmMarkingInspection20230701: TfrmMarkingInspection20230701; newh, newh1: hwnd; implementation uses U_DataLink, U_Fun, U_ZDYHelp, U_iniParam, U_ProductOrderListSel, U_MFSel; {$R *.dfm} procedure TfrmMarkingInspection20230701.QuantityConversion(); var MLen, MNWet, MGWet, MPWet, MCC: Double; begin MLen := StrToFloatdef(trim(MJLen.Text), 0); MNWet := StrToFloatdef(trim(MJQty4.Text), 0); MPWet := StrToFloatdef(trim(MJQty3.Text), 0); MGWet := StrToFloatdef(trim(MJMaoZ.Text), 0); MCC := StrToFloatdef(trim(MKXS.Text), 0); MNWet := MGWet - MPWet; MJQty4.Text := FloatToStr(MNWet); if MCC > 0 then begin MLen := StrToFloat(format('%.1f', [MNWet * MCC])); MJLen.Text := FloatToStr(MLen); end; // if FXSGZ = '计算系数' then // begin // if MNWet > 0 then // begin // MCC := StrToFloat(format('%.1f', [MLen / MNWet])); // MKXS.Text := FloatToStr(MCC); // end; // end; end; function TfrmMarkingInspection20230701.SelfConnData(): Boolean; begin try with QryCheckNet do begin Close; sql.Clear; //查询一个小表检测网络 SQL.Add('select getdate()'); Open; end; Result := true; except // if Application.MessageBox('是否重新连接网络!','提示',32+4)<>IDYES then Exit; if not Assigned(DataLink_DyeingFinishingPlan) then DataLink_DyeingFinishingPlan := TDataLink_DyeingFinishingPlan.Create(Application); try with DataLink_DyeingFinishingPlan.ADOLink do begin //if not Connected then begin Connected := false; ConnectionString := DConString; LoginPrompt := false; Connected := true; end; end; Result := true; except Result := false; end; end; end; function TfrmMarkingInspection20230701.CheckData(CKType: string): Boolean; var mvalue: Double; SJAPID:string; begin FIsOutRange := '正常'; try if Trim(FAPID) = '' then raise Exception.Create('请扫描流程卡!'); if Trim(FMainId) = '' then raise Exception.Create('请扫描流程卡!'); if Trim(FSubId) = '' then raise Exception.Create('请扫描流程卡!'); if Trim(CKType) = '提交' then begin {with ADOTmp do begin Close; sql.Clear; SQL.Add('select top 1 APID from WFB_MJJY where SubId=' + quotedstr(Trim(FSubId))); SQL.Add(' and APID<>' + quotedstr(Trim(FAPID))); SQL.Add(' and MJStr4=' + quotedstr(Trim(MJStr4.Text))); // ShowMessage(SQL.Text); Open; end; if not ADOTmp.IsEmpty then begin SJAPID:=Trim(ADOTmp.fieldbyname('APID').asstring); with ADOTmp do begin Close; sql.Clear; sql.Add('select MaxGangNo=Cast(Max(Cast(MJStr4 as int))+1 as varchar(20)) from WFB_MJJY where SubId=' + quotedstr(Trim(FSubId))); sql.Add('and ISNUMERIC(MJStr4)=1 '); Open; end; if Application.MessageBox(PChar('缸号 '+Trim(MJStr4.Text)+' 已被' + SJAPID + '占用,请确认无误!'), '提示', 32 + 4) <> IDYES then begin raise Exception.Create(PChar('缸号 '+Trim(MJStr4.Text)+' 已被' + SJAPID + '占用,推荐缸号 '+Trim(ADOTmp.fieldbyname('MaxGangNo').AsString))); end; end;} if trim(Label9.Caption) = '' then raise Exception.Create('长度单位不能为空!'); if (strtofloatdef(trim(MJLen.Text), 0) = 0) and (strtofloatdef(trim(MJQty4.Text), 0) = 0) then raise Exception.Create('长度和重量不能都为0!!'); //判断重量是否合法 if strtofloatdef(trim(MJMaoZ.Text), 0) > FMaxWet then begin FIsOutRange := '重量超范围'; if Application.MessageBox(PChar('数据有异常,重量大于' + floattostr(FMaxWet) + ',请确认无误!'), '提示', 32 + 4) <> IDYES then begin raise Exception.Create('重量大于' + floattostr(FMaxWet) + '!'); end; end; if strtofloatdef(trim(MJMaoZ.Text), 0) < FMinWet then begin FIsOutRange := '重量超范围'; if Application.MessageBox(PChar('数据有异常,重量小于' + floattostr(FMinWet) + ',请确认无误!'), '提示', 32 + 4) <> IDYES then begin raise Exception.Create('重量小于' + floattostr(FMinWet) + '!'); end; end; //判断长度是否合法 if strtofloatdef(trim(MJLen.Text), 0) > FMaxQty then begin FIsOutRange := '长度超范围'; if Application.MessageBox(PChar('数据有异常,长度大于' + floattostr(FMaxQty) + ',请确认无误!'), '提示', 32 + 4) <> IDYES then begin raise Exception.Create('长度大于' + floattostr(FMaxQty) + '!'); end; end; if strtofloatdef(trim(MJLen.Text), 0) < FMinQty then begin FIsOutRange := '长度超范围'; if Application.MessageBox(PChar('数据有异常,长度小于' + floattostr(FMinQty) + ',请确认无误!'), '提示', 32 + 4) <> IDYES then begin raise Exception.Create('长度小于' + floattostr(FMinQty) + '!'); end; end; //判断系数是否合法 // if Trim(MKXS.Text) <> '' then // begin // if TryStrToFloat(MKXS.Text, mvalue) = False then // begin // raise Exception.Create('系数录入错误!'); // end // else // begin // if FMaxXS = 0 then // FMaxXS := 44; // if FMinXS = 0 then // FMinXS := 0; // // if strtofloatdef(trim(MKXS.Text), 0) > FMaxXS then // begin // FIsOutRange := '系数超范围'; // if Application.MessageBox(PChar('数据有异常,系数大于' + floattostr(FMaxXS) + ',请确认无误!'), '提示', 32 + 4) <> IDYES then // begin // raise Exception.Create('系数大于' + floattostr(FMaxXS) + '!'); // end; // end; // if strtofloatdef(trim(MKXS.Text), 0) < FMinXS then // begin // FIsOutRange := '系数超范围'; // if Application.MessageBox(PChar('数据有异常,系数小于' + floattostr(FMinXS) + ',请确认无误!'), '提示', 32 + 4) <> IDYES then // begin // raise Exception.Create('系数小于' + floattostr(FMinXS) + '!'); // end; // end; // end; // end; end; Result := True; except Result := false; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); end; end; procedure TfrmMarkingInspection20230701.ClearGlobal(); begin FAPID := ''; FJHGZ := ''; FMainId := ''; FSubId := ''; FFFMJID := ''; JYFenShu.ItemIndex:=-1; lblOrderNo.Caption := '订单号'; lblMPRTCodeName.Caption := '品名'; lblcolor.Caption := '颜色'; MJXH.Text := ''; MJstr4.Text := ''; KuanHao.Text := ''; MKXS.Text := ''; AOrdDefNote1.Text := ''; MJQty3.Text := ''; MJQty4.Text := ''; JYY1.Text := ''; JYY2.Text := ''; Label13.Caption := '实际平均系数:'; Label14.Caption := '理论系数:'; FMaxQty := 0; FMinQty := 0; FMaxWet := 0; FMinWet := 0; FMaxXS := 0; FMinXS := 0; end; procedure TfrmMarkingInspection20230701.PrintCKMDG(MRKOrdID: string); var fPrintFile: string; Txt, fImagePath: string; Moudle: THandle; Makebar: TMakebar; Mixtext: TMixtext; begin with ADOQueryPrint do begin Close; SQL.Clear; sql.Add(' exec P_Print_RKMDGangNo '); SQL.Add(' @RKOrdID=''' + Trim(MRKOrdID) + ''''); Open; end; try Moudle := LoadLibrary('MakeQRBarcode.dll'); @Makebar := GetProcAddress(Moudle, 'Make'); @Mixtext := GetProcAddress(Moudle, 'MixText'); Txt := Trim(ADOQueryPrint.fieldbyname('RKOrdID').AsString); 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; fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\仓库码单.rmf'; if FileExists(fPrintFile) then begin RMVariables['QRBARCODE'] := fImagePath; RM2.LoadFromFile(fPrintFile); Rm2.DefaultCopies := 2; RM2.ShowReport; end else begin Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0); Exit; end; end; procedure TfrmMarkingInspection20230701.InitDDB(); begin with ADOTmp do begin Close; sql.Clear; sql.Add('select * from CK_BanCP_CR where MJID=''' + Trim(APID.Text) + ''' and CRFlag=''入库'''); Open; end; if ADOTmp.IsEmpty = False then begin APID.Text := ''; Application.MessageBox('已产生入库数据检验!', '提示', 0); Exit; end; with ADOTmp do begin Close; sql.Clear; sql.Add('select A.*,B.*,C.*,D.MJID,D.MJXH,D.MKXS,D.MJMaoZ,D.MJQty3,D. MJQty4,D.MJLen '); sql.Add('from CK_SXPB_CR A'); sql.Add('inner join JYOrder_Main B on A.ORDMainIdRK=B.MainId'); sql.Add('inner join JYOrder_Sub C on A.ORDSubIdRK=C.SubId'); sql.Add('inner join WFB_MJJY D on D.APID=A.SPID'); sql.Add('where MJType=''待定'' and MJID=''' + Trim(APID.Text) + ''''); Open; end; if ADOTmp.IsEmpty then begin ClearGlobal(); Application.MessageBox('此条码不是待定状态无法重新检验!', '提示', 0); end else begin FAPID := Trim(ADOTmp.fieldbyname('SPID').AsString); ; FMainId := Trim(ADOTmp.fieldbyname('ORDMainIdRK').AsString); FSubId := Trim(ADOTmp.fieldbyname('ORDSubIdRK').AsString); FFFMJID := Trim(ADOTmp.fieldbyname('MJID').AsString); lblOrderNo.Caption := Trim(ADOTmp.fieldbyname('OrderNo').AsString); lblMPRTCodeName.Caption := Trim(ADOTmp.fieldbyname('MPRTCodeName').AsString); lblcolor.Caption := trim(ADOTmp.fieldbyname('PRTColor').AsString); MJXH.Text := Trim(ADOTmp.fieldbyname('MJXH').AsString); MJstr4.Text := Trim(ADOTmp.fieldbyname('rcgangNo').AsString); MKXS.Text := Trim(ADOTmp.fieldbyname('Xs').AsString); AOrdDefNote1.Text := '包装要求:' + Trim(ADOTmp.fieldbyname('MPRTBZNote').AsString) + #13 + '门幅:' + Trim(ADOTmp.fieldbyname('MPRTMF').AsString) + #13 + '克重:' + Trim(ADOTmp.fieldbyname('MPRTKZ').AsString) + #13 + '特别提示:' + Trim(ADOTmp.fieldbyname('Note').AsString); // MJQty3.Text := Trim(ADOTmp.fieldbyname('PiZhong').AsString); MKXS.Text := Trim(ADOTmp.fieldbyname('MKXS').AsString); MJMaoZ.Text := Trim(ADOTmp.fieldbyname('MJMaoZ').AsString); MJQty3.Text := Trim(ADOTmp.fieldbyname('MJQty3').AsString); MJQty4.Text := Trim(ADOTmp.fieldbyname('MJQty4').AsString); MJLen.Text := Trim(ADOTmp.fieldbyname('MJLen').AsString); if Trim(ADOTmp.fieldbyname('OrderUnit').AsString) <> '' then begin Label19.Caption := Label9.Caption; Label20.Caption := Label9.Caption; Label7.Caption := Label9.Caption; end; end; with ADOCmd do begin Close; sql.Clear; sql.Add('insert into SY_SysLog(operor,opertime,Model,acction,opevent,result) values( '); sql.Add(' ' + quotedstr(trim(DName))); sql.Add(',getdate() '); sql.Add(',' + quotedstr(trim(self.Caption))); sql.Add(',' + quotedstr(trim('翻布重检验'))); sql.Add(',' + quotedstr(trim('卷号:' + trim(APID.Text)))); sql.Add(',' + quotedstr(trim('成功'))); sql.Add(')'); ExecSQL; end; InitCDGridID(); InitCDGrid(); APID.Text := ''; end; procedure TfrmMarkingInspection20230701.InitLCK(); begin with ADOTmp do begin Close; sql.Clear; sql.Add('select A.*,B.*,C.* '); sql.Add(',maxRoll=1+isnull((select cast (max(mjxh) as int) from WFB_MJJY X where X.APID=A.SPID and X.MJType =''正品'' ),0)'); sql.Add('from CK_SXPB_CR A'); sql.Add('inner join JYOrder_Main B on A.ORDMainIdRK=B.MainId'); sql.Add('inner join JYOrder_Sub C on A.ORDSubIdRK=C.SubId'); sql.Add('where SPID=''' + Trim(APID.Text) + ''''); Open; end; if ADOTmp.FieldByName('DJLockFlag').AsBoolean=True then begin Application.MessageBox('此卡已锁定,禁止打卷!','提示',0); APID.Text:=''; Exit; end; if ADOTmp.IsEmpty = False then begin FAPID := Trim(APID.Text); FMainId := Trim(ADOTmp.fieldbyname('ORDMainIdRK').AsString); FSubId := Trim(ADOTmp.fieldbyname('ORDSubIdRK').AsString); FYXJL := Trim(ADOTmp.fieldbyname('YXJL').AsString); FJHGZ := Trim(ADOTmp.fieldbyname('JHGZ').AsString); FXSGZ := Trim(ADOTmp.fieldbyname('XSGZ').AsString); if FJHGZ = '手动输入' then begin mjxh.ReadOnly := False; end else begin mjxh.ReadOnly := True; end; MJXH.Text := Trim(ADOTmp.fieldbyname('maxRoll').AsString); //MJstr4.Text := Trim(ADOTmp.fieldbyname('rcgangNo').AsString); lblOrderNo.Caption := Trim(ADOTmp.fieldbyname('OrderNo').AsString); lblMPRTCodeName.Caption := Trim(ADOTmp.fieldbyname('MPRTCodeName').AsString); lblcolor.Caption := trim(ADOTmp.fieldbyname('PRTColor').AsString); Label14.Caption := '理论系数:' + trim(ADOTmp.fieldbyname('LLXS').AsString); MKXS.Text := Trim(ADOTmp.fieldbyname('Xs').AsString); AOrdDefNote1.Text := AOrdDefNote1.Text + '包装要求:' + Trim(ADOTmp.fieldbyname('MPRTBZNote').AsString); AOrdDefNote1.Text := AOrdDefNote1.Text + #13 + '门幅:' + Trim(ADOTmp.fieldbyname('MPRTMF').AsString); AOrdDefNote1.Text := AOrdDefNote1.Text + #13 + '克重:' + Trim(ADOTmp.fieldbyname('MPRTKZ').AsString); FMaxQty := ADOTmp.fieldbyname('MaxQty').AsFloat; FMinQty := ADOTmp.fieldbyname('MinQty').AsFloat; FMaxWet := ADOTmp.fieldbyname('MaxWet').AsFloat; FMinWet := ADOTmp.fieldbyname('MinWet').AsFloat; AOrdDefNote1.Text := AOrdDefNote1.Text + #13 + '米数范围:' + Trim(ADOTmp.fieldbyname('MinQty').AsString) + '-' + Trim(ADOTmp.fieldbyname('MaxQty').AsString); AOrdDefNote1.Text := AOrdDefNote1.Text + #13 + '重量范围:' + Trim(ADOTmp.fieldbyname('MinWet').AsString) + '-' + Trim(ADOTmp.fieldbyname('MaxWet').AsString); AOrdDefNote1.Text := AOrdDefNote1.Text + #13 + '特别提示:' + Trim(ADOTmp.fieldbyname('Note').AsString); MJQty3.Text := Trim(ADOTmp.fieldbyname('PiZhong').AsString); if Trim(ADOTmp.fieldbyname('OrderUnit').AsString) <> '' then begin if Trim(ADOTmp.fieldbyname('OrderUnit').AsString)<>'Kg' then begin Label9.Caption:=Trim(ADOTmp.fieldbyname('OrderUnit').AsString); Label19.Caption := Label9.Caption; Label20.Caption := Label9.Caption; Label7.Caption := Label9.Caption; end; end; if FYXJL = '米数' then begin MJLen.SetFocus; Edit1Click(MJLen); end else begin MJMaoZ.SetFocus; Edit1Click(MJMaoZ); end; //重量、数量、系数 限制 FMaxQty := ADOTmp.fieldbyname('MaxQty').AsFloat; FMinQty := ADOTmp.fieldbyname('MinQty').AsFloat; FMaxWet := ADOTmp.fieldbyname('MaxWet').AsFloat; FMinWet := ADOTmp.fieldbyname('MinWet').AsFloat; FMaxXS := ADOTmp.fieldbyname('MaxXS').AsFloat; FMinXS := ADOTmp.fieldbyname('MinXS').AsFloat; end else begin ClearGlobal(); end; if Trim(lblOrderNo.Caption) = '' then Exit; InitCDGridID(); InitCDGrid(); APID.Text := ''; end; procedure TfrmMarkingInspection20230701.CloseCom(DllName: string); type TMyFunc = function(sCommName: PAnsiChar): HWND; stdcall; var Tf1: TMyFunc; Tp1: TFarProc; Th1: Thandle; begin Th1 := LoadLibrary(Pchar(trim(DllName))); if Th1 > 0 then begin try Tp1 := GetProcAddress(Th1, 'CommClose'); if Tp1 <> nil then begin Tf1 := TMyFunc(Tp1); newh1 := Tf1('Comm1'); end else begin end; finally // FreeLibrary(Th1); end; end else begin application.MessageBox(Pchar('找不到 ' + trim(DllName) + ' 文件!'), '提示'); end; end; procedure TfrmMarkingInspection20230701.OpenCom(DllName: string); type TMyFunc = function(fhandle: hwnd; sCommName: PAnsiChar; IntTime: integer; IsMessage: integer): HWND; stdcall; var Tf: TMyFunc; Tp: TFarProc; Th: Thandle; begin // closeCom(FComFile); Th := LoadLibrary(Pchar(trim(DllName))); if Th > 0 then begin try Tp := GetProcAddress(Th, 'CommOpen'); if Tp <> nil then begin Tf := TMyFunc(Tp); newh := Tf(self.Handle, 'Comm1', 500, 1); if newh < 1 then begin application.MessageBox(Pchar('打开串口失败!'), '提示'); end else IsCommOpen := true; end else begin IsCommOpen := false; end; finally // FreeLibrary(Th); end; end else begin IsCommOpen := false; application.MessageBox(Pchar('找不到 ' + trim(DllName) + ' 文件!'), '提示'); end; end; procedure TfrmMarkingInspection20230701.FormDestroy(Sender: TObject); begin frmMarkingInspection20230701 := nil; end; procedure TfrmMarkingInspection20230701.On1301(var Message: Tmessage); var i1, i2: integer; unitname: string; fdata: double; begin i1 := Message.WParam; i2 := Message.LParam; if IsJsMessage then begin if (trim(Edit7.Text) = '√') then begin MJLen.Text := format('%.f', [i1 / 100000]); if i2 = 0 then Label9.Caption := 'M' else Label9.Caption := 'Y'; edit1.Text := format('%.1f', [i1 / 100000]); end; end; end; procedure TfrmMarkingInspection20230701.On1201(var Message: Tmessage); var i1, i2: integer; unitname: string; fdata: double; begin i1 := Message.WParam; i2 := Message.LParam; if IsJsMessage then begin if trim(Edit7.Text) = '√' then begin MJMaoZ.Text := format('%.1f', [i1 / 100000]); end; end; end; procedure TfrmMarkingInspection20230701.FormClose(Sender: TObject; var Action: TCloseAction); begin //DataLink_WFBProducttion.ADOLink.Connected:=False; if isCommopen then begin closeCom(DllName); closeCom(JCYDLL); end; Action := caFree; end; procedure TfrmMarkingInspection20230701.InitCDGrid(); begin with ADOQueryMain do begin Close; SQL.Clear; sql.Add('select * from WFB_MJJY_CD where MJID=' + quotedstr(Trim(FFFMJID))); Open; end; SCreateCDS20(ADOQueryMain, CDS_MJCD); SInitCDSData20(ADOQueryMain, CDS_MJCD); end; procedure TfrmMarkingInspection20230701.InitCDGridID(); var MMJQty4, MMJLen: double; begin with ADOQueryMain do begin Close; SQL.Clear; sql.Add('select A.*'); sql.Add(',JXXS=(case when MJQty4>0 then round(MJLen/MJQty4,2) else 0 end)'); sql.Add(',PCBFB=(Case when ISNUMERIC(RTrim(CC.LLXS))=1 then Cast((MJLen/MJQty4-Cast(LLXS as decimal(18,4)))*1.00/LLXS as decimal(18,2))*100 else Null end)'); sql.Add('from WFB_MJJY A inner join JYOrder_Main CC on A.MainId=CC.MainId '); sql.Add(' where APID=''' + Trim(FAPID) + ''''); if Trim(SCXFlag) <> '' then sql.Add(' and A.JTType=''' + Trim(SCXFlag) + ''''); sql.Add(' and A.Filler=''' + Trim(DName) + ''''); sql.Add(' and A.MJstr2=''未入库'' '); // showmessage(sql.Text); Open; end; SCreateCDS20(ADOQueryMain, CDS_MJID); SInitCDSData20(ADOQueryMain, CDS_MJID); if TV3.DataController.Summary.FooterSummaryValues[1] <> NULL then MMJLen := TV3.DataController.Summary.FooterSummaryValues[1] else MMJLen := 0; if TV3.DataController.Summary.FooterSummaryValues[3] <> NULL then MMJQty4 := TV3.DataController.Summary.FooterSummaryValues[3] else MMJQty4 := 0; if MMJQty4 > 0 then Label13.Caption := '实际平均系数:' + floattostr(RoundFloat(MMJLen / MMJQty4, 2)) else Label13.Caption := '实际平均系数:'; end; procedure TfrmMarkingInspection20230701.TBCloseClick(Sender: TObject); begin Close; end; procedure TfrmMarkingInspection20230701.TBCDClick(Sender: TObject); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'WFBCD'; flagname := '疵点'; fnote := True; V1Note.Caption := '英文名称'; if ShowModal = 1 then begin Self.InitJP(); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmMarkingInspection20230701.FormShow(Sender: TObject); begin InitJP(); InitCDGrid(); if trim(Edit7.Text) = '√' then IsJsMessage := true; if trim(fmanage) <> '高权限' then begin if trim(DllName) <> '' then OpenCom(DllName); if trim(JCYDLL) <> '' then OpenCom(JCYDLL); Edit7.Visible := true; Label35.Visible := true; end; end; procedure TfrmMarkingInspection20230701.InitJP(); var AA: array[0..100] of string; i, j: Integer; begin with ADOTmp do begin Close; sql.Clear; sql.Add('select ZDYName from KH_Zdy where Type=''WFBCD'' order by ZDYNO '); Open; end; if ADOTmp.IsEmpty then begin Application.MessageBox('没有定义疵点!', '提示', 0); Exit; end; with ADOTmp do begin First; i := 0; while not Eof do begin AA[i] := Trim(fieldbyname('ZDYName').AsString); i := i + 1; Next; end; end; i := i - 1; if i > 69 then begin i := 69; end; for j := 0 to i do begin with ScrollBox1 do begin TSpeedButton(Controls[j]).Visible := True; TSpeedButton(Controls[j]).Hint := AA[j]; if Length(AA[j]) > 4 then begin TSpeedButton(Controls[j]).Caption := Copy(Trim(AA[j]), 1, 4) + #13 + Copy(Trim(AA[j]), 5, Length(AA[j]) - 4); end else TSpeedButton(Controls[j]).Caption := AA[j]; end; end; end; procedure TfrmMarkingInspection20230701.Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin if CDS_MJCD.IsEmpty then Exit; if Trim(CDS_MJCD.fieldbyname('MCID').AsString) = '' then begin if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; CDS_MJCD.Delete; end; end; function TfrmMarkingInspection20230701.SaveData(): Boolean; var maxno, FMJID, BZID, strsql: string; FMJLen: Double; begin if FOperationStatus = '翻布重检' then begin FMJID := FFFMJID; end else begin FMJID := ''; end; try ADOCmd.Connection.BeginTrans; ///保存主表 with ADOCmd do begin Close; sql.Clear; SQL.Add('select * from WFB_MJJY where MJId=''' + Trim(FMJID) + ''''); Open; end; with ADOCmd do begin if Trim(FMJID) = '' then begin Append; if GetLSNo(ADOTmp, maxno, Trim(SCXFlag), 'WFB_MJJY', 4, 1) = False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('生成流水号异常!', '提示', 0); exit; end; Randomize; maxno:=maxno+RightStr(inttostr(1000+Random(100)+1),2); end else begin maxno := Trim(FMJID); Edit; end; FieldByName('MainId').value := Trim(FMainId); FieldByName('SubId').value := Trim(FSubId); FieldByName('FromMainId').value := Trim(FMainId); FieldByName('FromSubId').value := Trim(FSubId); FieldByName('APId').value := Trim(FAPID); FieldByName('MJID').Value := Trim(maxno); FieldByName('MJStr2').Value := '未入库'; FieldByName('JYY1').Value := Trim(JYY1.Text) + '号桌'; FieldByName('JYY2').Value := Trim(JYY2.Text) + '号桌'; // FieldByName('JYMF').Value := Trim(JYMF.Text); //检验门幅 FieldByName('MJstr4').Value := Trim(MJstr4.Text); //本厂缸号 FieldByName('KuanHao').Value := Trim(KuanHao.Text); //款号 FieldByName('mjxh').Value := strtointdef(trim(mjxh.Text), 0); FieldByName('MJTypeOther').Value := Trim(Label9.Caption); //长度 FieldByName('MJLen').Value := StrToFloatdef(trim(MJLen.Text), 0); //皮重 FieldByName('MJQty3').Value := StrToFloatdef(trim(MJQty3.Text), 0); //毛重 FieldByName('MJMaoZ').Value := StrToFloatdef(trim(MJMaoZ.Text), 0); //净重 FieldByName('MJQty4').Value := StrToFloatdef(trim(MJMaoZ.Text), 0) - StrToFloatdef(trim(MJQty3.Text), 0); //系数 FieldByName('MKXS').Value := StrToFloatdef(trim(MKXS.Text), 0); //范围 FieldByName('IsOutRange').Value := FIsOutRange; // FieldByName('baoNO').Value := ''; // FieldByName('baoID').Value := ''; if Trim(Edit3.Text) <> '' then begin FieldByName('MJType').Value := '正品'; end; if Trim(Edit4.Text) <> '' then begin FieldByName('MJType').Value := '次品'; end; if Trim(FMJID) = '' then begin FieldByName('Filler').Value := Trim(DName); end else begin FieldByName('Editer').Value := Trim(DName); FieldByName('EditTime').Value := SGetServerDateTime(ADOTmp); end; //检验机台号 if Trim(SCXFlag) <> '' then begin FieldByName('JTType').Value := Trim(SCXFlag); end; FieldByName('MJTypeOther').Value := Trim(Label9.Caption); if Trim(JYFenShu.Text)<>'无' then begin FieldByName('JYFenShu').Value := StrToint(trim(JYFenShu.Text)); end else begin FieldByName('JYFenShu').Value :=null; end; Post; end; if FJHGZ = '按缸排序' then begin with ADOCmd do begin Close; sql.Clear; sql.Add('update WFB_MJJY SET mjxh=1+isnull((select cast (max(mjxh) as int) from WFB_MJJY X where X.subID=WFB_MJJY.subID and X.MJstr4=WFB_MJJY.Mjstr4 and X.APID=WFB_MJJY.APID and X.MJID<>WFB_MJJY.MJID and X.MJType =''正品''),0)'); sql.Add('where MJID=''' + Trim(maxno) + ''''); execsql; end; end; //将次品的卷号改为0 with ADOCmd do begin Close; sql.Clear; sql.Add('update WFB_MJJY SET mjxh=0 '); sql.Add('where MJType =''次品'' and MJID=''' + Trim(maxno) + ''''); execsql; end; //查询卷号修改界面 with ADOCmd do begin Close; sql.Clear; sql.Add('select MJXH from WFB_MJJY'); sql.Add('where MJID=''' + Trim(maxno) + ''''); open; if not IsEmpty then begin MJXH.Text := fieldbyname('mjxh').AsString; end; end; FMJID := Trim(maxno); FFFMJID := Trim(maxno); ///保存母卷疵点表 with CDS_MJCD do begin First; while not Eof do begin if Trim(CDS_MJCD.fieldbyname('MCID').AsString) = '' then begin if GetLSNo(ADOTmp, maxno, 'MC', 'WFB_MJJY_CD', 5, 1) = False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('取子流水号失败!', '提示', 0); Exit; end; end else begin maxno := Trim(CDS_MJCD.fieldbyname('MCID').AsString); end; with ADOCmd do begin Close; SQL.Clear; sql.Add('select * from WFB_MJJY_CD '); sql.Add(' where MCID=''' + Trim(maxno) + ''''); Open; end; with ADOCmd do begin if Trim(CDS_MJCD.fieldbyname('MCID').AsString) = '' then Append else Edit; FieldByName('MJId').Value := Trim(FMJID); FieldByName('MCID').Value := Trim(maxno); SSetSaveDataCDSNew(ADOCmd, Tv2, CDS_MJCD, 'WFB_MJJY_CD', 0); FieldByName('KouFenType').Value := CDS_MJCD.fieldbyname('KouFenType').Value; Post; end; CDS_MJCD.Edit; CDS_MJCD.FieldByName('MCID').Value := Trim(maxno); Next; end; end; with ADOCmd do begin close; sql.Clear; sql.Add('update WFB_MJJY SET CDList= dbo.F_Get_Order_SubStr(MJID,''MJCDHZSL'')'); sql.Add('where MJID=''' + Trim(FMJID) + ''' '); execsql; end; //出入库及库存 with ADOCmd do begin Close; sql.Clear; sql.Add('exec P_Do_JYCRK @MJID=''' + trim(FMJID) + ''''); execsql; end; //更新开卡 with ADOCmd do begin Close; sql.Clear; sql.Add('exec P_UPdate_LCKJY @APID=''' + trim(FAPID) + ''''); execsql; end; //更新检验分 with ADOCmd do begin Close; sql.Clear; sql.Add('exec P_Update_JYFenShu @APID=''' + trim(FAPID) + ''''); execsql; end; ADOCmd.Connection.CommitTrans; Result := True; except Result := False; ADOCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmMarkingInspection20230701.BTPrintClick(Sender: TObject); var fPrintFile,SJAPID,TJGangNo: string; mvalue: Double; i: Integer; begin APID.SetFocus; if SelfConnData() = false then begin Application.MessageBox('网络链接失败,请重新保存', '提示', 0); Exit; end; {if Trim(JYMF.Text)<>'' then begin if TryStrToInt(JYMF.Text,i)=False then begin Application.MessageBox('门幅非法数字!','提示',0); Exit; end; if StrToInt(JYMF.Text)<130 then begin Application.MessageBox('门幅不能小于130!','提示',0); Exit; end; if StrToInt(JYMF.Text)>180 then begin Application.MessageBox('门幅不能大于180!','提示',0); Exit; end; end else begin //Application.MessageBox('门幅没有填写!','提示',0); //Exit; end;} if Trim(JYFenShu.Text)='' then begin Application.MessageBox('检验分没有选择!','提示',0); Exit; end; if CheckData('提交') = False then exit; if FJHGZ = '手动输入' then begin with ADOTmp do begin Close; sql.Clear; SQL.Add('select * from WFB_MJJY where APID=' + quotedstr(Trim(FAPID))); SQL.Add(' and mjxh=' + Trim(mjxh.Text)); Open; end; if not ADOTmp.IsEmpty then begin if Application.MessageBox('当前卷号已存在,是否继续保存?', '提示', 32 + 4) <> IDYES then Exit; end; end; with ADOTmp do begin Close; sql.Clear; SQL.Add('select top 1 APID from WFB_MJJY where SubId=' + quotedstr(Trim(FSubId))); SQL.Add(' and APID<>' + quotedstr(Trim(FAPID))); SQL.Add(' and MJStr4=' + quotedstr(Trim(MJStr4.Text))); Open; end; if not ADOTmp.IsEmpty then begin SJAPID:=Trim(ADOTmp.fieldbyname('APID').asstring); {with ADOTmp do begin Close; sql.Clear; sql.Add('select MaxGangNo=Cast(Max(Cast(MJStr4 as int))+1 as varchar(20)) from WFB_MJJY where SubId=' + quotedstr(Trim(FSubId))); sql.Add('and ISNUMERIC(MJStr4)=1 '); Open; end; TJGangNo:=Trim(ADOTmp.fieldbyname('MaxGangNo').AsString); if Application.MessageBox(PChar('缸号 '+Trim(MJStr4.Text)+' 已被' + SJAPID + '占用,推荐缸号 '+TJGangNo+' ,是否采用推荐缸号?'), '提示', 32 + 4) <> IDYES then Exit;} //MJStr4.Text:=Trim(TJGangNo); if Application.MessageBox(PChar('缸号 '+Trim(MJStr4.Text)+' 已被' + SJAPID + '占用,确定要继续操作吗?'), '提示', 32 + 4) <> IDYES then begin MJStr4.Text:=''; Exit; end; // BTPrint.Click; end; if SaveData() then begin MJLen.Text := ''; MJMaoZ.Text := ''; MJQty4.Text := ''; Edit3.Text := '√'; Edit4.Text := ''; MJXH.Text := inttostr(strTointdef(trim(MJXH.Text), 0) + 1); //JYFenShu.ItemIndex:=-1; if Trim(Edit6.Text) = '√' then begin PrtData(FFFMJID); end; end; FOperationStatus := ''; FFFMJID := ''; InitCDGridID(); InitCDGrid(); if FYXJL = '米数' then begin MJLen.SetFocus; Edit1Click(MJLen); end else begin MJMaoZ.SetFocus; Edit1Click(MJMaoZ); end; end; procedure TfrmMarkingInspection20230701.PrtData(FMJID: string); var fPrintFile,FBQName,FEWMID: string; Txt, fImagePath: string; Moudle: THandle; Makebar: TMakebar; Mixtext: TMixtext; begin with ADOQueryPrint do begin Close; SQL.Clear; sql.Add(' EXEC P_Print_JYLab '); SQL.Add(' @MJID=''' + Trim(FMJID) + ''''); Open; end; if ADOQueryPrint.IsEmpty then begin application.MessageBox('标签内容未找到!', '提示信息', MB_ICONERROR); exit; end; FBQName:=Trim(ADOQueryPrint.fieldbyname('LBName').AsString); FEWMID:=Trim(ADOQueryPrint.fieldbyname('MJID').AsString); try Moudle := LoadLibrary('MakeQRBarcode.dll'); @Makebar := GetProcAddress(Moudle, 'Make'); @Mixtext := GetProcAddress(Moudle, 'MixText'); Txt := Trim(FEWMID); 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; ExportFtErpFile(Trim(ADOQueryPrint.fieldbyname('LBName').AsString) + '.rmf', ADOTmp); if Trim(FBQName) <> '' then begin fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + Trim(FBQName) + '.rmf' end else begin ExportFtErpFile('通用英文标签.rmf', ADOTmp); fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\通用英文标签.rmf'; end; if FileExists(fPrintFile) then begin RMVariables['QRBARCODE'] := fImagePath; RM2.LoadFromFile(fPrintFile); Rm2.DefaultCopies := strtointdef(trim(ComboBox1.Text), 1); Sleep(500); RM2.PrintReport; end else begin Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0); end; end; procedure TfrmMarkingInspection20230701.SpeedButton1Click(Sender: TObject); var fsj: string; begin fsj := Trim(TSpeedButton(Sender).Hint); if Trim(fsj) = '' then Exit; fsj := Trim(TEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text); TEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text := fsj + Trim(TSpeedButton(Sender).Caption); TEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).SelectAll; end; procedure TfrmMarkingInspection20230701.SpeedButton12Click(Sender: TObject); var fsj: string; begin fsj := Trim(TEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text); if Trim(fsj) = '' then Exit; TEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text := Copy(fsj, 1, Length(fsj) - 1); TEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).SelectAll; end; procedure TfrmMarkingInspection20230701.SpeedButton13Click(Sender: TObject); var i: Integer; begin if CheckData('疵点') = False then exit; FCDName := Trim(TSpeedButton(Sender).Hint); MovePanel1.Visible := True; Label21.Caption := Trim(FCDName); //显示数字键盘 Edit1.SetFocus; Panel3.Visible := True; with Panel3 do begin for i := 0 to ControlCount - 1 do begin if Controls[i] is TSpeedButton then begin TSpeedButton(Controls[i]).Hint := Trim(Edit1.Name); end; end; end; end; procedure TfrmMarkingInspection20230701.cxGridDBColumn2PropertiesChange(Sender: TObject); var fsj: string; begin fsj := Trim(Order_MJ.fieldbyname('SubId').AsString); Order_MJ.DisableControls; with Order_MJ do begin First; while not Eof do begin if Trim(Order_MJ.fieldbyname('SubId').AsString) <> fsj then begin Edit; FieldByName('SSel').Value := False; end; Next; end; end; Order_MJ.EnableControls; Order_MJ.Locate('SubId', fsj, []); end; procedure TfrmMarkingInspection20230701.Button1Click(Sender: TObject); var mvalue: Double; begin { if Trim(Edit1.Text)='' then begin Application.MessageBox('位置不能为空!','提示',0); exit; end; } if Trim(Edit1.Text) <> '' then begin if Trim(Edit2.Text) <> '' then begin if StrToFloat(Edit2.Text) < StrToFloat(Edit1.Text) then begin Application.MessageBox('疵点位置录入错误!', '提示', 0); Exit; end; end; end; if CDQty.Text <> '' then begin if TryStrToFloat(CDQty.Text, mvalue) = False then begin Application.MessageBox('非法数字!', '提示', 0); Exit; end; end; with CDS_MJCD do begin Append; FieldByName('cdname').Value := Trim(FCDName); FieldByName('CDbeg').Value := Trim(Edit1.Text); FieldByName('CDEnd').Value := Trim(Edit2.Text); FieldByName('KouFenQty').Value := 0; if RadioGroup1.ItemIndex > -1 then FieldByName('KouFenType').Value := RadioGroup1.Items.Strings[RadioGroup1.ItemIndex]; if RadioGroup1.ItemIndex > -1 then begin if RadioGroup1.ItemIndex < 3 then begin FieldByName('KouFenQty').Value := RadioGroup1.ItemIndex + 1; end else begin FieldByName('KouFenQty').Value := 4; end; end; if Trim(FCDName) = '测幅宽' then FieldByName('KouFenQty').Value := 0; FieldByName('CDQty').Value := StrToFloatdef(trim(CDQty.Text), 0); {if Trim(Edit2.Text)<>'' then begin FieldByName('CDQty').Value:=StrToFloat(Edit2.Text)-StrToFloat(Edit1.Text); end else begin FieldByName('CDQty').Value:=0; end; } Post; end; Edit1.Text := ''; Edit2.Text := ''; CDQty.Text := ''; MovePanel1.Visible := False; Panel3.Visible := False; end; procedure TfrmMarkingInspection20230701.ToolButton1Click(Sender: TObject); begin InitJP(); end; procedure TfrmMarkingInspection20230701.Button5Click(Sender: TObject); var fPrintFile: string; i: Integer; mvalue: Double; begin if CDS_MJID.IsEmpty then Exit; PrtData(CDS_MJID.fieldbyname('MJID').AsString); end; procedure TfrmMarkingInspection20230701.SpeedButton49Click(Sender: TObject); begin Panel3.Visible := False; end; procedure TfrmMarkingInspection20230701.APIDKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin ClearGlobal(); FOperationStatus := '打卷检验'; InitLCK(); // if Pos('KK', APID.Text) > 0 then // begin // // end // else // begin // FOperationStatus := '翻布重检'; // InitDDB(); // end; // // MJQty4.SetFocus; end; end; procedure TfrmMarkingInspection20230701.Edit1Click(Sender: TObject); var i: Integer; begin {Panel3.Visible := True; with Panel3 do begin for i := 0 to ControlCount - 1 do begin if Controls[i] is TSpeedButton then begin TSpeedButton(Controls[i]).Hint := Trim(TEdit(Sender).Name); end; end; end; } end; procedure TfrmMarkingInspection20230701.Edit2Change(Sender: TObject); var mvalue: Double; begin if Trim(Edit1.Text) <> '' then begin if TryStrToFloat(Edit1.Text, mvalue) = False then begin Application.MessageBox('非法数字!', '提示', 0); Exit; end; end else begin Exit; end; if Trim(Edit2.Text) <> '' then begin if TryStrToFloat(Edit2.Text, mvalue) = False then begin Application.MessageBox('非法数字!', '提示', 0); Exit; end; end else begin Exit; end; CDQty.Text := FloatToStr(StrToFloat(Edit2.Text) - StrToFloat(Edit1.Text)); end; procedure TfrmMarkingInspection20230701.Edit3Click(Sender: TObject); begin if Trim(Edit3.Text) = '' then begin Edit3.Text := '√'; Edit4.Text := ''; end else begin Edit3.Text := ''; Edit4.Text := '√'; end; end; procedure TfrmMarkingInspection20230701.Edit4Click(Sender: TObject); begin if Trim(Edit4.Text) = '' then begin Edit4.Text := '√'; Edit3.Text := ''; end else begin Edit4.Text := ''; Edit3.Text := '√'; end; end; procedure TfrmMarkingInspection20230701.Edit6Click(Sender: TObject); begin if Trim(Edit6.Text) = '' then begin Edit6.Text := '√'; end else begin Edit6.Text := ''; end; end; procedure TfrmMarkingInspection20230701.MJstr3KeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; // if Key = #13 then // begin // BTPrint.Click; // end; end; procedure TfrmMarkingInspection20230701.Label9Click(Sender: TObject); begin if trim(Label9.Caption) = 'M' then begin Label9.Caption := 'Y'; Label19.Caption := 'Y'; Label20.Caption := 'Y'; Label7.Caption := 'Y'; end else begin Label9.Caption := 'M'; Label19.Caption := 'M'; Label20.Caption := 'M'; Label7.Caption := 'M'; end; end; procedure TfrmMarkingInspection20230701.MJQty4Exit(Sender: TObject); begin if (trim(MJMaoZ.Text) = '') and (trim(MJQty4.Text) = '') then exit; if (trim(MJMaoZ.Text) = '') and (trim(MJQty3.Text) = '') then exit; if (trim(MJQty4.Text) = '') and (trim(MJQty3.Text) = '') then exit; if (trim(MJQty3.Text) = '') then exit; if (trim(MJQty4.Text) <> '') then begin MJMaoZ.Text := floattostr(strtofloatdef(trim(MJQty3.Text), 0) + strtofloatdef(trim(MJQty4.Text), 0)); exit; end; end; procedure TfrmMarkingInspection20230701.Button2Click(Sender: TObject); begin RadioGroup1.ItemIndex := -1; end; procedure TfrmMarkingInspection20230701.MJMaoZChange(Sender: TObject); begin QuantityConversion(); end; procedure TfrmMarkingInspection20230701.APIDClick(Sender: TObject); var i: Integer; begin Panel3.Visible := True; with Panel3 do begin for i := 0 to ControlCount - 1 do begin if Controls[i] is TSpeedButton then begin TSpeedButton(Controls[i]).Hint := Trim(TEdit(Sender).Name); end; end; end; end; procedure TfrmMarkingInspection20230701.Edit7Click(Sender: TObject); begin if Trim(Edit7.Text) = '' then begin Edit7.Text := '√'; end else begin Edit7.Text := ''; end; end; procedure TfrmMarkingInspection20230701.MJQty4KeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin BTPrint.Click; end; end; procedure TfrmMarkingInspection20230701.FormCreate(Sender: TObject); begin IsCommopen := false; IsJsMessage := false; end; procedure TfrmMarkingInspection20230701.MJQty2Change(Sender: TObject); var FReal: double; begin // MJLen.Text:=format('%.1f',[StrToFloatdef(trim(MJLen.Text),0)- StrToFloatdef(trim(MJQty2.Text),0)]); { IF trim(MKXS.Text)<>'' then begin if TryStrToFloat(MKXS.Text,FReal)=true then begin // MJLen.Text:=format('%.1f',[StrToFloatdef(trim(MJQty4.Text),0)* StrToFloatdef(trim(MKXS.Text),0)]); MJLen.Text:=format('%.1f',[StrToFloatdef(trim(MJLen.Text),0)- StrToFloatdef(trim(MJQty2.Text),0)]); end; end else begin if Trim(MJSJKZ.Text)='' then Exit; if TryStrToFloat(MJSJKZ.Text,FReal)=False then begin Application.MessageBox('克重录入错误!','提示',0); Exit; end; if Trim(MJFK.Text)='' then Exit; if TryStrToFloat(MJFK.Text,FReal)=False then begin Application.MessageBox('幅宽录入错误!','提示',0); Exit; end; if StrToFloat(MJSJKZ.Text)*StrToFloat(MJFK.Text)=0 then Exit; if Trim(Label9.Caption)='M' then begin //MJLen.Text:=FloatToStr(StrToFloat(MJQty4.Text)*1000*100/StrToFloat(MJSJKZ.Text)/StrToFloat(MJFK.Text)); MJLen.Text:=format('%.1f',[StrToFloat(MJQty4.Text)*1000*100/StrToFloat(MJSJKZ.Text)/StrToFloat(MJFK.Text)]); MJLen.Text:=format('%.1f',[StrToFloatdef(trim(MJLen.Text),0)- StrToFloatdef(trim(MJQty2.Text),0)]); end else begin MJLen.Text:=format('%.1f',[StrToFloat(MJQty4.Text)*1000*100/StrToFloat(MJSJKZ.Text)/StrToFloat(MJFK.Text)*1.0936]); MJLen.Text:=format('%.1f',[StrToFloatdef(trim(MJLen.Text),0)- StrToFloatdef(trim(MJQty2.Text),0)]); //MJLen.Text:=FloatToStr(StrToFloat(MJQty4.Text)*1000*100/StrToFloat(MJSJKZ.Text)/StrToFloat(MJFK.Text)*1.0936); // MJLen.Text:=floatToStr(Round(StrToFloat(MJQty4.Text)*1000*100/StrToFloat(MJSJKZ.Text)/StrToFloat(MJFK.Text)*1.0936)); end; end; } end; procedure TfrmMarkingInspection20230701.Edit8Click(Sender: TObject); begin if Trim(Edit8.Text) = '' then begin Edit8.Text := '√'; Button5.Visible := true; end else begin Edit8.Text := ''; Button5.Visible := false; end; end; procedure TfrmMarkingInspection20230701.ToolButton3Click(Sender: TObject); var SRKOrdID, strsql: string; begin ToolButton3.Enabled := false; if Trim(MJStr4.Text) = '' then begin Application.MessageBox('请输入缸号!', '提示', 0); Exit; end; if Trim(FAPID) = '' then begin Application.MessageBox('请扫描流程卡!', '提示', 0); Exit; end; if Trim(FMainId) = '' then begin Application.MessageBox('请选择指示单!', '提示', 0); Exit; end; if Trim(FSubId) = '' then begin Application.MessageBox('请选择颜色!', '提示', 0); Exit; end; with ADOTmp do begin Close; sql.Clear; SQL.Add(' exec P_Chk_DMRK' + quotedstr(trim(FAPID))); Open; end; if Trim(ADOTmp.FieldByName('msg').AsString) <> '可以入库' then begin if Application.MessageBox(PChar(Trim(ADOTmp.FieldByName('msg').AsString)), '提示', 32 + 4) <> IDYES then begin ToolButton3.Enabled := true; Exit; end; end else begin if Application.MessageBox('是否核实好数据', '提示', 32 + 4) <> IDYES then begin ToolButton3.Enabled := true; Exit; end; end; if GetLSNo(ADOTmp, SRKOrdID, 'RK', 'CK_BanCP_CR', 4, 1) = False then begin Application.MessageBox('生成流水号异常!', '提示', 0); exit; end; try ADOCmd.Connection.BeginTrans; with Self.ADOCmd do begin Close; sql.Clear; sql.Add('UPDATE CK_BanCP_CR Set '); sql.add('RKOrdID=' + quotedstr(trim(SRKOrdID))); sql.Add(' where CK_BanCP_CR.APID=' + quotedstr(trim(FAPID))); sql.Add(' and CK_BanCP_CR.MainId=' + quotedstr(trim(FMainId))); sql.Add(' and CK_BanCP_CR.SubId=' + quotedstr(trim(FSubId))); sql.Add(' and CK_BanCP_CR.ganghao=' + quotedstr(trim(MJStr4.Text))); sql.Add(' and CK_BanCP_CR.CRFlag=''待入库'' '); sql.Add('UPDATE CK_BanCP_CR Set '); sql.add(' CRTime=getdate(),CRType=''检验入库'',CRFlag=''入库'' '); sql.Add(' where CK_BanCP_CR.APID=' + quotedstr(trim(FAPID))); sql.Add(' and CK_BanCP_CR.MainId=' + quotedstr(trim(FMainId))); sql.Add(' and CK_BanCP_CR.SubId=' + quotedstr(trim(FSubId))); sql.Add(' and CK_BanCP_CR.ganghao=' + quotedstr(trim(MJStr4.Text))); sql.Add(' and CK_BanCP_CR.CRFlag=''待入库'' '); sql.Add('UPDATE WFB_MJJY Set '); sql.add('RKOrdID=' + quotedstr(trim(SRKOrdID)) + ' ,MJStr2=''已入库'' '); sql.Add(' where WFB_MJJY.APID=' + quotedstr(trim(FAPID))); sql.Add(' and WFB_MJJY.MainId=' + quotedstr(trim(FMainId))); sql.Add(' and WFB_MJJY.SubId=' + quotedstr(trim(FSubId))); sql.Add(' and WFB_MJJY.MJStr4=' + quotedstr(trim(MJStr4.Text))); SQL.Add('and WFB_MJJY.MJStr2=''未入库'' '); ExecSQL; end; ADOCmd.Connection.CommitTrans; PrintCKMDG(Trim(SRKOrdID)); except ADOCmd.Connection.RollbackTrans; ToolButton3.Enabled := true; application.MessageBox('数据撤销失败!', '提示信息', 0); end; ToolButton3.Enabled := true; end; procedure TfrmMarkingInspection20230701.Tv3CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); var FMJLen, FMJMaoZ,Fsunhao: Double; begin // FMJLen := AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('MJLen').Index]; // FMJMaoZ := AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('MJMaoZ').Index]; // if (FMJLen < 10) or (FMJLen > 200) then // begin // ACanvas.Brush.Color := $B5E4FF; // end; // if (FMJMaoZ < 5) or (FMJMaoZ > 40) then // begin // ACanvas.Brush.Color := $B5E4FF; // end if AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('IsOutRange').Index] <> '正常' then ACanvas.Brush.Color := $004080FF; //$B5E4FF Fsunhao := AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('PCBFB').Index]; if Fsunhao < 0 then Fsunhao := -Fsunhao; if Fsunhao >=20 then ACanvas.Brush.Color := clGreen; end; procedure TfrmMarkingInspection20230701.MJStr4Change(Sender: TObject); begin KuanHao.Text := ''; end; procedure TfrmMarkingInspection20230701.Button6Click(Sender: TObject); begin {try frmMFSel := TfrmMFSel.Create(Application); with frmMFSel do begin if ShowModal = 1 then begin Self.JYMF.Text := FSDPerson; end; end; finally frmMFSel.Free; end; } end; procedure TfrmMarkingInspection20230701.Timer1Timer(Sender: TObject); begin with ADOQueryTS do begin Close; sql.Clear; sql.Add(' exec P_DJ_CarTS :CarNo'); Parameters.ParamByName('CarNo').Value:=Trim(SCXFlag); Open; end; if ADOQueryTS.IsEmpty=false then begin LabDJTS.Visible:=True; end else begin LabDJTS.Visible:=False; end; end; end.