unit U_TradeMachInsp; interface uses Windows, Messages, SysUtils, StrUtils, 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, Menus, U_BaseList, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu, cxContainer, cxImage, cxDBEdit, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, ShellAPI, IdFTP, FireDAC.Stan.StorageXML, cxPC, dxScrollbarAnnotations, dxSkinWXI, cxProgressBar; type TfrmTradeMachInsp = class(TfrmBaseList) cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; cxStyle2: TcxStyle; GPM_1: TcxGridPopupMenu; ADOQueryMain: TADOQuery; ADOCmd: TADOQuery; RMDB_1: TRMDBDataSet; DS_2: TDataSource; CDS_2: TClientDataSet; ADOQueryPrint: TADOQuery; GPM_2: TcxGridPopupMenu; ADOQueryMainDSC: TADOQuery; Panel7: TPanel; AOrdDefNote1: TRichEdit; RM1: TRMGridReport; ADOTmp: TADOQuery; ScrollBox1: TScrollBox; SpeedButton13: TSpeedButton; SpeedButton14: TSpeedButton; SpeedButton15: TSpeedButton; SpeedButton16: TSpeedButton; SpeedButton17: TSpeedButton; SpeedButton18: TSpeedButton; SpeedButton21: TSpeedButton; SpeedButton22: TSpeedButton; SpeedButton23: TSpeedButton; SpeedButton24: TSpeedButton; SpeedButton25: TSpeedButton; SpeedButton26: TSpeedButton; SpeedButton29: TSpeedButton; SpeedButton30: TSpeedButton; SpeedButton31: TSpeedButton; SpeedButton32: TSpeedButton; SpeedButton33: TSpeedButton; SpeedButton34: TSpeedButton; SpeedButton37: TSpeedButton; SpeedButton38: TSpeedButton; SpeedButton39: TSpeedButton; SpeedButton40: TSpeedButton; SpeedButton41: TSpeedButton; SpeedButton42: TSpeedButton; SpeedButton45: TSpeedButton; SpeedButton46: TSpeedButton; SpeedButton47: TSpeedButton; SpeedButton48: TSpeedButton; SpeedButton50: TSpeedButton; SpeedButton51: TSpeedButton; SpeedButton54: TSpeedButton; SpeedButton55: TSpeedButton; SpeedButton56: TSpeedButton; SpeedButton57: TSpeedButton; SpeedButton58: TSpeedButton; SpeedButton59: TSpeedButton; SpeedButton62: TSpeedButton; SpeedButton63: TSpeedButton; SpeedButton64: TSpeedButton; SpeedButton65: TSpeedButton; SpeedButton66: TSpeedButton; SpeedButton67: TSpeedButton; SpeedButton70: TSpeedButton; SpeedButton71: TSpeedButton; SpeedButton72: TSpeedButton; SpeedButton73: TSpeedButton; SpeedButton74: TSpeedButton; SpeedButton75: TSpeedButton; SpeedButton19: TSpeedButton; SpeedButton20: TSpeedButton; SpeedButton27: TSpeedButton; SpeedButton28: TSpeedButton; SpeedButton35: TSpeedButton; SpeedButton36: TSpeedButton; SpeedButton43: TSpeedButton; SpeedButton44: TSpeedButton; SpeedButton52: TSpeedButton; SpeedButton53: TSpeedButton; SpeedButton60: TSpeedButton; SpeedButton61: TSpeedButton; SpeedButton68: TSpeedButton; SpeedButton69: TSpeedButton; SpeedButton76: TSpeedButton; SpeedButton77: TSpeedButton; SpeedButton78: TSpeedButton; SpeedButton79: TSpeedButton; SpeedButton80: TSpeedButton; SpeedButton81: TSpeedButton; SpeedButton82: TSpeedButton; SpeedButton83: TSpeedButton; CDS_3: TClientDataSet; DS_3: TDataSource; ADOQueryImage: TADOQuery; DataSource2: TDataSource; IdFTP1: TIdFTP; Panel4: TPanel; cxGrid3: TcxGrid; Tv3: TcxGridDBTableView; cxGridDBColumn1: TcxGridDBColumn; v3Column1: TcxGridDBColumn; v3Column4: TcxGridDBColumn; v3Column5: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; 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; Panel1: TPanel; Pic_Image1: TcxDBImage; Tv3Column1: TcxGridDBColumn; MovePanel1: TMovePanel; Label17: TLabel; Label18: TLabel; lblLenUnit1: TLabel; CIFBeg: TcxTextEdit; Button1: TButton; Button4: TButton; CIFEnd: TcxTextEdit; CIFQty: TcxTextEdit; RadioGroup1: TRadioGroup; Button2: TButton; Panel8: TPanel; cxDBImage1: TcxDBImage; DS_ImgHX: TDataSource; Qry_ImgHX: TADOQuery; Tv3Column3: TcxGridDBColumn; Tv3Column4: TcxGridDBColumn; cxStyle4: TcxStyle; cxPageControl1: TcxPageControl; cxTabSheet1: TcxTabSheet; 查看: TcxTabSheet; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; tv2CDType: TcxGridDBColumn; tv2CDWZ: TcxGridDBColumn; v2Column2: TcxGridDBColumn; Tv2CDQty: TcxGridDBColumn; Tv2CDReason: TcxGridDBColumn; v2Column1: TcxGridDBColumn; v2Column3: TcxGridDBColumn; v2Column4: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; cxGrid1: TcxGrid; TV1: TcxGridDBTableView; cxGridDBColumn2: TcxGridDBColumn; cxGridDBColumn3: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; cxGridDBColumn5: TcxGridDBColumn; cxGridDBColumn6: TcxGridDBColumn; cxGridDBColumn7: TcxGridDBColumn; cxGridDBColumn8: TcxGridDBColumn; cxGridDBColumn9: TcxGridDBColumn; cxGridLevel3: TcxGridLevel; DS_1: TDataSource; CDS_1: TClientDataSet; lblCIFName: TLabel; Label2: TLabel; Label8: TLabel; CIFNumber: TcxTextEdit; Panel9: TPanel; Panel10: TPanel; Label22: TLabel; Label13: TLabel; Label14: TLabel; Label23: TLabel; Label24: TLabel; Label25: TLabel; Label27: TLabel; Piece: TcxTextEdit; Qty: TcxTextEdit; FtyPCId: TcxTextEdit; Color: TcxTextEdit; ColorNo: TcxTextEdit; CodeName: TcxTextEdit; OrderNo: TcxTextEdit; Panel2: TPanel; lblLenUnit: TLabel; Label4: TLabel; Label5: TLabel; Label11: TLabel; InputLen: TcxTextEdit; BTPrint: TButton; Button6: TButton; Button8: TButton; ToolBar2: TToolBar; ToolButton3: TToolButton; ToolButton5: TToolButton; ToolButton6: TToolButton; Label10: TLabel; Edit3: TcxTextEdit; Label12: TLabel; Edit4: TcxTextEdit; GPM_3: TcxGridPopupMenu; pnlSet: TPanel; Label35: TLabel; Label16: TLabel; Label26: TLabel; Label6: TLabel; Label7: TLabel; Label9: TLabel; Label15: TLabel; Label19: TLabel; Label20: TLabel; Label21: TLabel; Label3: TLabel; Label30: TLabel; Label33: TLabel; edtChen: TcxTextEdit; edtMaBiao: TcxTextEdit; ComboBox1: TComboBox; Edit6: TcxTextEdit; edtMBDW: TcxTextEdit; MinLen: TcxTextEdit; MinWeight: TcxTextEdit; MaxLen: TcxTextEdit; MaxWeight: TcxTextEdit; MPlace: TcxTextEdit; YPlace: TcxTextEdit; KgPlace: TcxTextEdit; lblRuleConversion: TLabel; Tare: TcxTextEdit; Coefficient: TcxTextEdit; Label1: TLabel; edtScan: TcxTextEdit; Button3: TButton; ToolButton4: TToolButton; ToolButton7: TToolButton; ToolButton8: TToolButton; InputWeight: TcxTextEdit; Label36: TLabel; Label28: TLabel; BCIOID: TcxTextEdit; ToolBar1: TToolBar; btnRK: TToolButton; btnCXRK: TToolButton; ToolButton2: TToolButton; BatchNO: TcxTextEdit; Label29: TLabel; Tv3Column2: TcxGridDBColumn; Label31: TLabel; ComboBox2: TComboBox; Label32: TLabel; PieceNo: TcxTextEdit; Label34: TLabel; ComboBox3: TComboBox; Label37: TLabel; OutPutWeight: TcxTextEdit; Label38: TLabel; Label39: TLabel; YGNo: TcxTextEdit; Edit1: TcxTextEdit; edtPacketNo: TcxTextEdit; Label40: TLabel; Label41: TLabel; edtdabao: TcxTextEdit; edtfrnshu: TcxTextEdit; ADOQueryTmp: TADOQuery; Tv3Column5: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); 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 Button1Click(Sender: TObject); procedure edtScanKeyPress(Sender: TObject; var Key: Char); procedure CIFBegClick(Sender: TObject); procedure CIFEndChange(Sender: TObject); procedure Edit3Click(Sender: TObject); procedure Edit4Click(Sender: TObject); procedure Edit6Click(Sender: TObject); procedure MJstr3KeyPress(Sender: TObject; var Key: Char); procedure Button2Click(Sender: TObject); procedure GrossWeightChange(Sender: TObject); procedure edtScanClick(Sender: TObject); procedure NetWeightKeyPress(Sender: TObject; var Key: Char); procedure FormCreate(Sender: TObject); procedure Button4Click(Sender: TObject); procedure edtChenClick(Sender: TObject); procedure Button6Click(Sender: TObject); procedure edtScanDblClick(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Tv3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure edtYJClick(Sender: TObject); procedure cxDBImage1DblClick(Sender: TObject); procedure Pic_Image1DblClick(Sender: TObject); procedure Tv3CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure lblLenUnitClick(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure ToolButton6Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure ToolButton7Click(Sender: TObject); procedure ToolButton8Click(Sender: TObject); procedure MPlaceExit(Sender: TObject); procedure InputLenChange(Sender: TObject); procedure InputWeightChange(Sender: TObject); procedure btnRKClick(Sender: TObject); procedure btnCXRKClick(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ComboBox2Change(Sender: TObject); procedure ComboBox3Change(Sender: TObject); procedure Edit1Click(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure edtdabaoClick(Sender: TObject); private { Private declarations } FCIID, FOperationStatus, FCIFName, FWorkshop: string; FBCIOID, FOrderNo, FMainId, FSubId, FPCId, FConNo, FConMId, FConSId: string; FBatchNO, FLenUnit, FC_Code, FC_Name, FC_Spec, FC_Width, FC_GramWeight: string; FC_Color, FC_EColor, FC_ColorNo, FC_StyleNo, FC_Composition, FC_Pattern, FC_CustPattern, FC_ColorDepth: string; Faddwet: string; FFtyPCId, FGangNo, FRulePieceNo, FCDUnit: string; FPieceNo: Integer; IsCommopen: boolean; FPacketCIID: string; FPacketCount: Integer; procedure SetINIFile(); procedure GetINIFile(); procedure SetUnit(MUnit: string); procedure InitPlan(MSubID: string); procedure InitCDPanel(); //刷新疵点选项 procedure InitCDGrid(MCIID: string); //刷新疵点登记信息 procedure InitCDGridCX(MCIID: string); //刷新疵点查询信息 procedure InitJYGrid(); //刷新检验信息 function CheckData(CKType: string): Boolean; //校验数据 function SaveData(): Boolean; //保存数据 procedure InitLCK(MBCIOID: string); //扫描流程卡 procedure InitJTM(MCIID: string); //扫描卷条码 procedure SetDdetails(); procedure ClearGlobal(); //清除全局ID procedure PrtData(MCIID: string); //打印卷标签 procedure QuantityConversion(); //数量换算 procedure InitImage(YFTPName: string); //图片 procedure InitImageHX(HXSID: string); procedure LookImage(FileName: string); procedure OpenCom(DllName: string); //打开串口 procedure CloseCom(DllName: string); //关闭串口 procedure On1201(var Message: Tmessage); message 1201; //电子称 procedure On1301(var Message: Tmessage); message 1301; //码表 procedure PrtMD(MInNo: string); //打印入库单 procedure PrintBao(PPacketId: string); public fmanage: string; fFlileFlag: string; { Public declarations } end; var frmTradeMachInsp: TfrmTradeMachInsp; newh, newh1: hwnd; implementation uses U_DataLink, U_RTFun, U_ZDYHelp, U_iniParam; {$R *.dfm} procedure TfrmTradeMachInsp.PrintBao(PPacketId: string); var fPrintFile, NLBName: string; Txt, fImagePath: string; Moudle: THandle; Makebar: TMakebar; Mixtext: TMixtext; begin with ADOQueryPrint do begin Close; SQL.Clear; SQL.Add('exec P_Trade_Insp_Prt_PackLab ' + quotedstr(PPacketId)); Open; end; NLBName := ADOQueryPrint.FieldByName('LabPackage').AsString; ExportFtErpFile(Trim(NLBName) + '.rmf', ADOQueryTmp); fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + Trim(NLBName) + '.rmf'; if not FileExists(fPrintFile) then begin Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0); Exit; end; if FileExists(fPrintFile) then begin RM1.LoadFromFile(fPrintFile); RM1.DefaultCopies := 1; RM1.printReport; end; if FileExists(fImagePath) then DeleteFile(fImagePath); end; procedure TfrmTradeMachInsp.SetDdetails(); begin AOrdDefNote1.Text := ''; AOrdDefNote1.Text := AOrdDefNote1.Text + '卡号:' + FBCIOID + #13; AOrdDefNote1.Text := AOrdDefNote1.Text + '品名:' + FC_Name + #13; AOrdDefNote1.Text := AOrdDefNote1.Text + '门幅:' + FC_Width + #13; AOrdDefNote1.Text := AOrdDefNote1.Text + '克重:' + FC_GramWeight + #13; AOrdDefNote1.Text := AOrdDefNote1.Text + '颜色:' + FC_Color + #13; AOrdDefNote1.Text := AOrdDefNote1.Text + '色号:' + FC_ColorNo + #13; AOrdDefNote1.Text := AOrdDefNote1.Text + '款号:' + FC_StyleNo + #13; AOrdDefNote1.Text := AOrdDefNote1.Text + '花型:' + FC_Pattern + #13; AOrdDefNote1.Text := AOrdDefNote1.Text + '加重:' + Faddwet + #13; end; procedure TfrmTradeMachInsp.PrtMD(MInNo: string); var fPrintFile, FLBName: string; begin with ADOQueryPrint do begin Close; SQL.Clear; sql.Add(' EXEC P_Trade_Cloth_In_Prt11 '); SQL.Add(' @Filtration=''' + Trim(MInNo) + ''''); Open; end; FLBName := '机台检验入库单'; ExportFtErpFile(FLBName + '.rmf', ADOTmp); fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + FLBName + '.rmf'; if FileExists(fPrintFile) then begin RM1.LoadFromFile(fPrintFile); RM1.DefaultCopies := strtointdef(trim(ComboBox1.Text), 1); RM1.PrintReport; end else begin Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0); end; end; procedure TfrmTradeMachInsp.SetINIFile(); begin if edtChen.Text = '√' then IsDZCDYDll := '1' else IsDZCDYDll := '0'; if edtMaBiao.Text = '√' then IsMBDYDll := '1' else IsMBDYDll := '0'; if edtMBDW.Text = '√' then IsMBDYDllUnit := '1' else IsMBDYDllUnit := '0'; LabQty := ComboBox1.Text; FMinLen := MinLen.Text; FMaxLen := MaxLen.Text; FMinWeight := MinWeight.Text; FMaxWeight := MaxWeight.Text; FMPlace := MPlace.Text; FYPlace := YPlace.Text; FKgPlace := KgPlace.Text; WriteINIFile(); end; procedure TfrmTradeMachInsp.GetINIFile(); begin if IsDZCDYDll = '1' then edtChen.Text := '√' else edtChen.Text := ''; if IsMBDYDll = '1' then edtMaBiao.Text := '√' else edtMaBiao.Text := ''; if IsMBDYDllUnit = '1' then edtMBDW.Text := '√' else edtMBDW.Text := ''; ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(trim(LabQty)); MinLen.Text := FMinLen; MaxLen.Text := FMaxLen; MinWeight.Text := FMinWeight; MaxWeight.Text := FMaxWeight; MPlace.Text := FMPlace; YPlace.Text := FYPlace; KgPlace.Text := FKgPlace; end; procedure TfrmTradeMachInsp.SetUnit(MUnit: string); begin lblLenUnit.Caption := MUnit; lblLenUnit1.Caption := MUnit; end; procedure TfrmTradeMachInsp.InitImage(YFTPName: string); begin // with ADOQueryImage do // begin // close; // sql.Clear; // sql.Add('select * from TC_File A'); // sql.Add('where isnull(WBID,'''')<>'''' and WBID=' + quotedstr(YFTPName)); //// showmessage(sql.text); // open; // end; end; procedure TfrmTradeMachInsp.InitImageHX(HXSID: string); begin // with Qry_ImgHX do // begin // close; // sql.Clear; // sql.Add('select * from TC_File A'); // sql.Add('where isnull(WBID,'''')<>'''' and WBID=' + quotedstr(HXSID)); //// ShowMessage(SQL.Text); // open; // end; end; procedure TfrmTradeMachInsp.QuantityConversion(); begin if ComboBox3.ItemIndex = 0 then // InputWeight 毛重 OutPutWeight 净重 begin if lblRuleConversion.Caption = '米转公斤' then begin InputWeight.Text := floattostr(StrToFloatdef(trim(InputLen.Text), 0) * StrToFloatdef(trim(Coefficient.Text), 0) + StrToFloatdef(trim(Tare.Text), 0)); end; if lblRuleConversion.Caption = '毛重转米' then begin InputLen.Text := floattostr(StrToFloatdef(trim(InputWeight.Text), 0) * StrToFloatdef(trim(Coefficient.Text), 0)); end; if lblRuleConversion.Caption = '净重转米' then begin InputLen.Text := floattostr((RoundFloat(StrToFloatdef(trim(InputWeight.Text), 0), 1) - StrToFloatdef(trim(Tare.Text), 0)) * StrToFloatdef(trim(Coefficient.Text), 0)); end; OutPutWeight.Text := floattostr((StrToFloatdef(trim(InputWeight.Text), 0) - StrToFloatdef(trim(Tare.Text), 0))); //净重 end; if ComboBox3.ItemIndex = 1 then // InputWeight 净重 OutPutWeight 毛重 begin if lblRuleConversion.Caption = '米转公斤' then begin InputWeight.Text := floattostr(StrToFloatdef(trim(InputLen.Text), 0) * StrToFloatdef(trim(Coefficient.Text), 0)); end; if lblRuleConversion.Caption = '毛重转米' then begin InputLen.Text := floattostr((StrToFloatdef(trim(InputWeight.Text), 0) + StrToFloatdef(trim(Tare.Text), 0)) * StrToFloatdef(trim(Coefficient.Text), 0)); end; if lblRuleConversion.Caption = '净重转米' then begin InputLen.Text := floattostr(RoundFloat(StrToFloatdef(trim(InputWeight.Text), 0), 1) * StrToFloatdef(trim(Coefficient.Text), 0)); end; OutPutWeight.Text := floattostr((StrToFloatdef(trim(InputWeight.Text), 0) + StrToFloatdef(trim(Tare.Text), 0))); //毛重 end; end; function TfrmTradeMachInsp.CheckData(CKType: string): Boolean; var mvalue: Double; begin try if Trim(FBCIOID) = '' then raise Exception.Create('请扫描流程卡!'); if Trim(CKType) = '提交' then begin if edtdabao.Text = '√' then begin if StrToIntDef(edtPacketNo.Text, 0) = 0 then raise Exception.Create('包号不能为空!'); if StrToIntDef(edtfrnshu.Text, 0) = 0 then raise Exception.Create('每包卷数不能为空!'); end; if (StrToIntDef(PieceNo.Text, 0) = 0) and (ComboBox2.Text = '手动') then raise Exception.Create('卷号不能为空!'); if trim(lblLenUnit.Caption) = '' then raise Exception.Create('长度单位不能为空!'); if Trim(InputWeight.Text) <> '' then begin if TryStrToFloat(InputWeight.Text, mvalue) = False then raise Exception.Create('重量录入错误!'); if strtofloatdef(trim(InputWeight.Text), 0) < Strtofloatdef(MinWeight.Text, 0) then raise Exception.Create('重量不能小于' + MinWeight.Text + '!'); if strtofloatdef(trim(InputWeight.Text), 0) > Strtofloatdef(MaxWeight.Text, 0) then raise Exception.Create('重量不能大于' + MaxWeight.Text + '!'); end; if Trim(InputLen.Text) <> '' then begin if TryStrToFloat(InputLen.Text, mvalue) = False then raise Exception.Create('长度录入错误!'); if strtofloatdef(trim(InputLen.Text), 0) < Strtofloatdef(MinLen.Text, 0) then raise Exception.Create('长度不能小于' + MinLen.Text + '米!'); if strtofloatdef(trim(InputLen.Text), 0) > Strtofloatdef(MaxLen.Text, 0) then raise Exception.Create('长度不能大于' + MaxLen.Text + '米!'); end; if (strtofloatdef(trim(InputLen.Text), 0) = 0) and (strtofloatdef(trim(InputWeight.Text), 0) = 0) then raise Exception.Create('长度和重量不能都为0!!'); end; Result := True; except Result := false; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); end; end; procedure TfrmTradeMachInsp.ClearGlobal(); begin FBCIOID := ''; FOrderNo := ''; FConNo := ''; FConMId := ''; FConSId := ''; FMainId := ''; FSubId := ''; FPCId := ''; FC_CustPattern := ''; FC_ColorDepth := ''; FFtyPCId := ''; FGangNo := ''; FC_Code := ''; FC_Name := ''; FBatchNO := ''; FC_Spec := ''; FC_Color := ''; FC_ColorNo := ''; FC_EColor := ''; FC_StyleNo := ''; FC_Composition := ''; FC_Width := ''; FC_GramWeight := ''; FC_Pattern := ''; FCIID := ''; FWorkshop := ''; InputLen.Text := ''; Coefficient.Text := ''; AOrdDefNote1.Text := ''; Tare.Text := ''; InputWeight.Text := ''; FLenUnit := ''; YGNo.Text := ''; BatchNO.Text := ''; Faddwet := ''; FPacketCIID := ''; FPacketCount := 0; end; procedure TfrmTradeMachInsp.LookImage(FileName: string); var sFieldName: string; begin sFieldName := leftbstr(ExtractFilePath(Application.ExeName), 1) + ':\图片查看'; if not DirectoryExists(pchar(sFieldName)) then CreateDirectory(pchar(sFieldName), nil); sFieldName := sFieldName + '\' + trim(FileName); try IdFTP1.Host := ReadINIFileStr('SYSTEMSET.INI', 'SERVER', '服务器地址', '127.0.0.1'); IdFTP1.Username := 'three'; IdFTP1.Password := '641010'; IdFTP1.Connect(); except ; end; if IdFTP1.Connected then begin try IdFTP1.Get(fFlileFlag + '\' + Trim(FileName), sFieldName, true, false); except Application.MessageBox('客户图样文件不存在', '提示', MB_ICONWARNING); IdFTP1.Quit; Exit; end; end else begin Application.MessageBox('无法连接文件服务器', '提示', MB_ICONWARNING); IdFTP1.Quit; Exit; end; if IdFTP1.Connected then IdFTP1.Quit; ShellExecute(Handle, 'open', PChar(sFieldName), '', '', SW_SHOWNORMAL); end; procedure TfrmTradeMachInsp.Pic_Image1DblClick(Sender: TObject); begin if TcxDBImage(Sender).Picture.Height = 0 then exit; LookImage(ADOQueryImage.fieldbyname(TcxDBImage(Sender).Hint).asstring); end; procedure TfrmTradeMachInsp.InitPlan(MSubID: string); begin with ADOTmp do begin Close; sql.Clear; sql.Add('EXEC P_Trade_Insp_Get_plan @SubID=''' + Trim(MSubID) + ''''); Open; end; if NOT ADOTmp.IsEmpty then begin // InitImage(Trim(ADOTmp.fieldbyname('YFTPName').AsString)); // InitImageHX(Trim(ADOTmp.fieldbyname('HXSID').AsString)); FBCIOID := Trim(MSubID); FLenUnit := Trim(ADOTmp.fieldbyname('ruleLenUnit').AsString); if (FLenUnit='') then begin ShowMessage('计划单包装规则还未设置长度单位!'); end; SetUnit(FLenUnit); //计划单打卷设置的长度单位 ,没填的话赋值和界面一样 // if Trim(ADOTmp.fieldbyname('CDUnit').AsString) = '' then FCDUnit := lblLenUnit.Caption ; // else // FCDUnit := Trim(ADOTmp.fieldbyname('ordUnit').AsString); FConMId := Trim(ADOTmp.fieldbyname('ConMId').AsString); FConSId := Trim(ADOTmp.fieldbyname('ConSId').AsString); FConNo := Trim(ADOTmp.fieldbyname('ConNo').AsString); FOrderNo := Trim(ADOTmp.fieldbyname('OrderNo').AsString); FMainId := Trim(ADOTmp.fieldbyname('MainId').AsString); FSubId := Trim(ADOTmp.fieldbyname('SubId').AsString); // FPCId := Trim(ADOTmp.fieldbyname('ToPCId').AsString); // FC_CustPattern := Trim(ADOTmp.fieldbyname('C_CustPattern').AsString); // FC_ColorDepth := Trim(ADOTmp.fieldbyname('C_ColorDepth').AsString); // FWorkshop := Trim(ADOTmp.fieldbyname('Workshop').AsString); FC_StyleNo := Trim(ADOTmp.fieldbyname('C_StyleNo').AsString); FC_Composition := Trim(ADOTmp.fieldbyname('C_Composition').AsString); FC_Code := Trim(ADOTmp.fieldbyname('C_Code').AsString); FC_Name := Trim(ADOTmp.fieldbyname('C_Name').AsString); // FBatchNO := Trim(ADOTmp.fieldbyname('BatchNO').AsString); FC_Spec := Trim(ADOTmp.fieldbyname('C_Spec').AsString); FC_Color := Trim(ADOTmp.fieldbyname('C_Color').AsString); FC_ColorNo := Trim(ADOTmp.fieldbyname('C_ColorNo').AsString); FC_EColor := Trim(ADOTmp.fieldbyname('C_EColor').AsString); FC_Width := Trim(ADOTmp.fieldbyname('C_Width').AsString); FC_GramWeight := Trim(ADOTmp.fieldbyname('C_GramWeight').AsString); FC_Pattern := Trim(ADOTmp.fieldbyname('C_Pattern').AsString); // FFtyPCId := Trim(ADOTmp.fieldbyname('FtyPCId').AsString); Faddwet := Trim(ADOTmp.fieldbyname('ruleaddwet').AsString); FRulePieceNo := Trim(ADOTmp.fieldbyname('RulePieceNo').AsString); //卷号生成规则 if FRulePieceNo = '手动生成' then begin ComboBox2.ItemIndex := 1; Label32.Visible := True; PieceNo.Visible := True; end; Coefficient.Text := Trim(ADOTmp.fieldbyname('Coefficient').AsString); lblRuleConversion.Caption := Trim(ADOTmp.fieldbyname('RuleConversion').AsString); OrderNo.Text := FOrderNo; CodeName.Text := FC_Name; ColorNo.Text := FC_ColorNo; Color.Text := FC_Color; FtyPCId.Text := FFtyPCId; BCIOID.Text := FBCIOID; Piece.Text := Trim(ADOTmp.fieldbyname('ordPiece').AsString); Qty.Text := Trim(ADOTmp.fieldbyname('ordQty').AsString) + Trim(ADOTmp.fieldbyname('ordUnit').AsString); Tare.Text := Trim(ADOTmp.fieldbyname('RuleLaterTare').AsString); InputLen.SetFocus; CIFBegClick(InputLen); SetDdetails(); end else begin ClearGlobal(); end; InitJYGrid(); InitCDGrid(FCIID); edtScan.Text := ''; end; procedure TfrmTradeMachInsp.InitLCK(MBCIOID: string); begin with ADOTmp do begin Close; sql.Clear; sql.Add('EXEC P_Trade_Insp_Get_ClothIO @BCIOID=''' + Trim(MBCIOID) + ''''); // ShowMessage(sql.Text); Open; end; if ADOTmp.IsEmpty = False then begin // InitImage(Trim(ADOTmp.fieldbyname('YFTPName').AsString)); // InitImageHX(Trim(ADOTmp.fieldbyname('HXSID').AsString)); FBCIOID := Trim(MBCIOID); FLenUnit := Trim(ADOTmp.fieldbyname('LenUnit').AsString); SetUnit(FLenUnit); //计划单打卷设置的长度单位 ,没填的话赋值和界面一样 if Trim(ADOTmp.fieldbyname('CDUnit').AsString) = '' then FCDUnit := lblLenUnit.Caption else FCDUnit := Trim(ADOTmp.fieldbyname('CDUnit').AsString); FConMId := Trim(ADOTmp.fieldbyname('TOConMId').AsString); FConSId := Trim(ADOTmp.fieldbyname('ToConSId').AsString); FConNo := Trim(ADOTmp.fieldbyname('ToConNo').AsString); FOrderNo := Trim(ADOTmp.fieldbyname('ToOrdNo').AsString); FMainId := Trim(ADOTmp.fieldbyname('ToMainId').AsString); FSubId := Trim(ADOTmp.fieldbyname('ToSubId').AsString); FPCId := Trim(ADOTmp.fieldbyname('ToPCId').AsString); FC_CustPattern := Trim(ADOTmp.fieldbyname('C_CustPattern').AsString); FC_ColorDepth := Trim(ADOTmp.fieldbyname('C_ColorDepth').AsString); FWorkshop := Trim(ADOTmp.fieldbyname('Workshop').AsString); FC_StyleNo := Trim(ADOTmp.fieldbyname('C_StyleNo').AsString); FC_Composition := Trim(ADOTmp.fieldbyname('C_Composition').AsString); FC_Code := Trim(ADOTmp.fieldbyname('C_Code').AsString); FC_Name := Trim(ADOTmp.fieldbyname('C_Name').AsString); FBatchNO := Trim(ADOTmp.fieldbyname('BatchNO').AsString); FC_Spec := Trim(ADOTmp.fieldbyname('C_Spec').AsString); FC_Color := Trim(ADOTmp.fieldbyname('C_Color').AsString); FC_ColorNo := Trim(ADOTmp.fieldbyname('C_ColorNo').AsString); FC_EColor := Trim(ADOTmp.fieldbyname('C_EColor').AsString); FC_Width := Trim(ADOTmp.fieldbyname('C_Width').AsString); FC_GramWeight := Trim(ADOTmp.fieldbyname('C_GramWeight').AsString); FC_Pattern := Trim(ADOTmp.fieldbyname('C_Pattern').AsString); FFtyPCId := Trim(ADOTmp.fieldbyname('FtyPCId').AsString); Faddwet := Trim(ADOTmp.fieldbyname('addwet').AsString); FRulePieceNo := Trim(ADOTmp.fieldbyname('RulePieceNo').AsString); //卷号生成规则 if FRulePieceNo = '手动生成' then begin ComboBox2.ItemIndex := 1; Label32.Visible := True; PieceNo.Visible := True; end; Coefficient.Text := Trim(ADOTmp.fieldbyname('Coefficient').AsString); lblRuleConversion.Caption := Trim(ADOTmp.fieldbyname('RuleConversion').AsString); OrderNo.Text := FOrderNo; CodeName.Text := FC_Name; ColorNo.Text := FC_ColorNo; Color.Text := FC_Color; FtyPCId.Text := FFtyPCId; BCIOID.Text := FBCIOID; Piece.Text := Trim(ADOTmp.fieldbyname('Piece').AsString); Qty.Text := Trim(ADOTmp.fieldbyname('Qty').AsString) + Trim(ADOTmp.fieldbyname('QtyUnit').AsString); Tare.Text := Trim(ADOTmp.fieldbyname('RuleTare').AsString); InputLen.SetFocus; CIFBegClick(InputLen); SetDdetails(); end else begin ClearGlobal(); end; InitJYGrid(); InitCDGrid(FCIID); edtScan.Text := ''; end; procedure TfrmTradeMachInsp.InputLenChange(Sender: TObject); begin QuantityConversion(); end; procedure TfrmTradeMachInsp.InputWeightChange(Sender: TObject); begin QuantityConversion(); end; procedure TfrmTradeMachInsp.InitJTM(MCIID: string); begin with ADOTmp do begin Close; sql.Clear; sql.Add('select * from Trade_Cloth_IO where StkId=''' + Trim(MCIID) + ''' and IOFlag=''入库'''); Open; end; if not ADOTmp.IsEmpty then begin Application.MessageBox('已产生入库数据不能操作!', '提示', 0); Exit; end; with ADOTmp do begin Close; sql.Clear; sql.Add('select * from Trade_Cloth_IO where StkId=''' + Trim(MCIID) + ''' and IOFlag=''出库'''); Open; end; if not ADOTmp.IsEmpty then begin Application.MessageBox('已产生出库数据不能操作!', '提示', 0); Exit; end; with ADOTmp do begin Close; sql.Clear; sql.Add('select * from Trade_Cloth_Inspect where CIID=''' + Trim(MCIID) + ''''); Open; end; if not ADOTmp.IsEmpty then begin FOperationStatus := '卷条码'; FCIID := MCIID; InitCDGrid(MCIID); end; end; procedure TfrmTradeMachInsp.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 TfrmTradeMachInsp.ComboBox2Change(Sender: TObject); begin if ComboBox2.ItemIndex = 0 then begin PieceNo.Text := ''; Label32.Visible := False; PieceNo.Visible := False; end; if ComboBox2.ItemIndex = 1 then begin Label32.Visible := True; PieceNo.Visible := True; end; end; procedure TfrmTradeMachInsp.ComboBox3Change(Sender: TObject); begin if ComboBox3.ItemIndex = 0 then // InputWeight 毛重 OutPutWeight 净重 begin Label11.Caption := '毛重'; Label37.Caption := '净重'; end; if ComboBox3.ItemIndex = 1 then // InputWeight 净重 OutPutWeight 毛重 begin Label11.Caption := '净重'; Label37.Caption := '毛重'; end; end; procedure TfrmTradeMachInsp.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 TfrmTradeMachInsp.FormDestroy(Sender: TObject); begin inherited; frmTradeMachInsp := nil; end; procedure TfrmTradeMachInsp.On1301(var Message: Tmessage); var i1, i2: integer; unitname: string; fdata: double; begin i1 := Message.WParam; i2 := Message.LParam; if (trim(edtMaBiao.Text) = '√') then begin InputLen.Text := format('%.2f', [i1 / 100000]); if edtMBDW.Text = '√' then begin if i2 = 0 then begin SetUnit('M'); end else begin SetUnit('Y'); end; end; end; end; procedure TfrmTradeMachInsp.On1201(var Message: Tmessage); var i1, i2: integer; unitname: string; fdata: double; begin i1 := Message.WParam; i2 := Message.LParam; if trim(edtChen.Text) = '√' then begin InputWeight.Text := format('%.2f', [i1 / 100000]); end; end; procedure TfrmTradeMachInsp.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; if isCommopen then begin closeCom(DZCDYDllName); closeCom(MBDYDllName); end; Action := caFree; end; procedure TfrmTradeMachInsp.InitCDGrid(MCIID: string); begin cxPageControl1.ActivePageIndex := 0; with ADOTmp do begin Close; SQL.Clear; sql.Add('select * from Trade_Cloth_Inspect_Flaw where CIID=' + quotedstr(Trim(MCIID))); Open; end; SCreateCDS(ADOTmp, CDS_2); SInitCDSData(ADOTmp, CDS_2); end; procedure TfrmTradeMachInsp.InitCDGridCX(MCIID: string); begin cxPageControl1.ActivePageIndex := 1; with ADOTmp do begin Close; SQL.Clear; sql.Add('select * from Trade_Cloth_Inspect_Flaw where CIID=' + quotedstr(Trim(MCIID))); Open; end; SCreateCDS(ADOTmp, CDS_1); SInitCDSData(ADOTmp, CDS_1); end; procedure TfrmTradeMachInsp.InitJYGrid(); var MNetWeight, MJYLen: double; begin with ADOQueryMain do begin Close; SQL.Clear; sql.Add('select A.*'); sql.Add('from Trade_Cloth_Inspect A where BCIOID=''' + Trim(FBCIOID) + ''''); sql.Add('order by filltime desc'); Open; end; SCreateCDS(ADOQueryMain, CDS_3); SInitCDSData(ADOQueryMain, CDS_3); end; procedure TfrmTradeMachInsp.FormShow(Sender: TObject); begin inherited; ReadCxGrid(trim(Self.Caption) + 'Tv1', Tv1, '贸易检验管理'); ReadCxGrid(trim(Self.Caption) + 'Tv2', Tv2, '贸易检验管理'); ReadCxGrid(trim(Self.Caption) + 'Tv3', Tv3, '贸易检验管理'); fFlileFlag := UserDataFlag + 'HX'; InitCDPanel(); InitCDGrid(FCIID); if IsINIFile() then ReadINIFile() else WriteINIFile; GetINIFile(); if trim(fmanage) <> '高权限' then begin if trim(DZCDYDllName) <> '' then OpenCom(DZCDYDllName); if trim(MBDYDllName) <> '' then OpenCom(MBDYDllName); edtScan.SetFocus; end; end; procedure TfrmTradeMachInsp.InitCDPanel(); 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 TfrmTradeMachInsp.Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin if CDS_2.IsEmpty then Exit; // if FOperationStatus = '缸条码' then // Exit; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; if Trim(CDS_2.fieldbyname('CIFID').AsString) = '' then begin CDS_2.Delete; end else begin with ADOCmd do begin Close; SQL.Clear; // sql.Add('insert ZDel_Trade_Cloth_Inspect_Flaw into select * from Trade_Cloth_Inspect_Flaw where CIFID=''' + Trim(CDS_2.fieldbyname('CIFID').AsString) + ''''); sql.Add('delete Trade_Cloth_Inspect_Flaw where CIFID=''' + Trim(CDS_2.fieldbyname('CIFID').AsString) + ''''); ExecSQL; end; //更新疵点信息 with ADOCmd do begin Close; sql.Clear; sql.Add('exec C_JY_UC_CDList @CIID=''' + Trim(CDS_2.fieldbyname('CIID').AsString) + ''''); execsql; end; CDS_2.Delete; end; end; procedure TfrmTradeMachInsp.Tv3CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin if AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('Grade').Index] = '次品' then ACanvas.Brush.Color := clRed; end; procedure TfrmTradeMachInsp.Tv3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if CDS_3.isEmpty then exit; InitCDGridCX(CDS_3.FieldByName('CIID').AsString); end; function TfrmTradeMachInsp.SaveData(): Boolean; var maxno, MCIID, BZID, strsql: string; MInputLen, MMeter, MYardage: Double; MInputWeight, MGrossWeight, MNetWeight, MTare, Maddwet: Double; begin Maddwet := strtofloatdef(Faddwet, 0); if FOperationStatus = '卷条码' then begin MCIID := FCIID; end else begin MCIID := ''; end; try ADOCmd.Connection.BeginTrans; ///保存主表 with ADOCmd do begin Close; sql.Clear; SQL.Add('select * from Trade_Cloth_Inspect where CIID=''' + Trim(MCIID) + ''''); Open; end; with ADOCmd do begin if Trim(MCIID) = '' then begin if not GetLSNo(ADOTmp, maxno, Trim(SCXFlag), 'Trade_Cloth_Inspect', 4, 1) then raise Exception.Create('获取条码失败!'); Append; FieldByName('Filler').Value := Trim(DName); FieldByName('CIID').Value := Trim(maxno); end else begin maxno := Trim(MCIID); Edit; FieldByName('Editer').Value := Trim(DName); FieldByName('EditTime').Value := SGetServerDateTime(ADOTmp); end; FieldByName('Coefficient').Value := StrToFloatdef(trim(Coefficient.Text), 0); //系数 ///////////////////////// 保存重量 ///////////////////////// if ComboBox3.ItemIndex = 0 then // InputWeight 毛重 OutPutWeight 净重 begin MTare := StrToFloatdef(trim(Tare.Text), 0); //皮重 MInputWeight := RoundFloat(StrToFloatdef(trim(InputWeight.Text), 0), StrTointdef(KgPlace.Text, 0)); //毛重 MGrossWeight := MInputWeight + Maddwet; //毛重 + 加重 MNetWeight := MInputWeight - MTare; //净重 FieldByName('InputWeight').Value := MInputWeight; FieldByName('GrossWeight').Value := MGrossWeight; FieldByName('NetWeight').Value := MNetWeight; FieldByName('Tare').Value := MTare; FieldByName('addwet').Value := Maddwet; end; if ComboBox3.ItemIndex = 1 then // InputWeight 净重 OutPutWeight 毛重 begin MTare := StrToFloatdef(trim(Tare.Text), 0); //皮重 MInputWeight := RoundFloat(StrToFloatdef(trim(InputWeight.Text), 0), StrTointdef(KgPlace.Text, 0)); //净重 MGrossWeight := MInputWeight + MTare + Maddwet; //毛重 MNetWeight := MInputWeight; //净重 FieldByName('InputWeight').Value := MInputWeight; FieldByName('GrossWeight').Value := MGrossWeight; FieldByName('NetWeight').Value := MNetWeight; FieldByName('Tare').Value := MTare; FieldByName('addwet').Value := Maddwet; end; ///////////////////////// 保存重量 ///////////////////////// /// ///////////////////////// 保存长度 ///////////////////////// MInputLen := RoundFloat(StrToFloatdef(trim(InputLen.Text), 0), 2); if lblLenUnit.Caption = 'M' then begin MMeter := RoundFloat(StrToFloatdef(trim(InputLen.Text), 0), StrTointdef(MPlace.Text, 0)); MYardage := RoundFloat(MMeter / 0.9144, StrTointdef(YPlace.Text, 0)); end else begin MYardage := RoundFloat((StrToFloatdef(trim(InputLen.Text), 0)), StrTointdef(YPlace.Text, 0)); MMeter := RoundFloat(MYardage * 0.9144, StrTointdef(MPlace.Text, 0)); end; FieldByName('InputLen').Value := RoundFloat(StrToFloatdef(trim(InputLen.Text), 0), 2); FieldByName('Meter').Value := MMeter; FieldByName('Yardage').Value := MYardage; FieldByName('LenUnit').Value := TRIM(lblLenUnit.Caption); ///////////////////////// 保存长度 ///////////////////////// if Trim(Edit3.Text) <> '' then begin FieldByName('Grade').Value := '正品'; end; if Trim(Edit4.Text) <> '' then begin FieldByName('Grade').Value := '次品'; end; if FOperationStatus <> '卷条码' then begin FieldByName('PieceNo').Value := 0; end; //手动卷号 if FRulePieceNo = '手动生成' then begin FieldByName('PieceNo').Value := StrToInt(PieceNo.Text); end; FieldByName('OrderNo').value := Trim(FOrderNo); FieldByName('MainId').value := Trim(FMainId); FieldByName('SubId').value := Trim(FSubId); FieldByName('ConNo').value := Trim(FConNo); FieldByName('ConMId').value := Trim(FConMId); FieldByName('ConSId').value := Trim(FConSId); FieldByName('BCIOID').value := Trim(FBCIOID); FieldByName('Workshop').value := Trim(FWorkshop); FieldByName('CIIOFlag').Value := '未入库'; FieldByName('FtyPCId').value := FFtyPCId; FieldByName('C_Code').value := FC_Code; FieldByName('C_Name').value := FC_Name; FieldByName('BatchNO').value := BatchNO.text; FieldByName('FtyPCId').value := YGNo.text; //原缸号 FieldByName('C_Spec').value := FC_Spec; FieldByName('C_Color').value := FC_Color; FieldByName('C_EColor').value := FC_EColor; FieldByName('C_ColorNo').value := FC_ColorNo; FieldByName('C_StyleNo').value := FC_StyleNo; FieldByName('C_Composition').value := FC_Composition; FieldByName('C_Width').value := FC_Width; FieldByName('C_GramWeight').value := FC_GramWeight; FieldByName('C_Pattern').value := FC_Pattern; FieldByName('C_CustPattern').value := FC_CustPattern; FieldByName('C_ColorDepth').value := FC_ColorDepth; FieldByName('CIMachNo').Value := Trim(SCXFlag); Post; end; MCIID := Trim(maxno); FCIID := Trim(maxno); ////////////////// 保存疵点信息 ////////////////// with CDS_2 do begin First; while not Eof do begin if Trim(CDS_2.fieldbyname('CIFID').AsString) = '' then begin if not GetLSNo(ADOTmp, maxno, 'JC', 'Trade_Cloth_Inspect_Flaw', 5, 1) then raise Exception.Create('获取疵点失败!'); end else begin maxno := Trim(CDS_2.fieldbyname('CIFID').AsString); end; with ADOCmd do begin Close; SQL.Clear; sql.Add('select * from Trade_Cloth_Inspect_Flaw '); sql.Add(' where CIFID=''' + Trim(maxno) + ''''); Open; end; with ADOCmd do begin if Trim(CDS_2.fieldbyname('CIFID').AsString) = '' then Append else Edit; RTSetSaveDataCDS(ADOCmd, Tv2, CDS_2, 'Trade_Cloth_Inspect_Flaw', 0); FieldByName('CIID').Value := Trim(MCIID); FieldByName('CIFID').Value := Trim(maxno); Post; end; CDS_2.Edit; CDS_2.FieldByName('CIID').Value := Trim(MCIID); CDS_2.FieldByName('CIFID').Value := Trim(maxno); Next; end; end; ////////////////// 保存疵点信息 ////////////////// /// ////////////////// 更新卷号疵点信息 ////////////////// with ADOCmd do begin Close; sql.Clear; sql.Add('exec P_Trade_Insp_Up @CIID=''' + trim(MCIID) + ''''); if FOperationStatus = '缸条码' then sql.Add(',@InspType=' + QuotedStr('待检布出库')) else sql.Add(',@InspType=' + QuotedStr('单卷修改')); sql.Add(',@RulePieceNo=' + QuotedStr(FRulePieceNo)); //卷号生成规则 execsql; end; ////////////////// 更新卷号疵点信息 ////////////////// /// ////////////////// 更新开卡 ////////////////// with ADOCmd do begin Close; sql.Clear; sql.Add('insert into Trade_Need_Up(UOperation,UType,UDataId) values(''检验'',''机台检验'',' + quotedstr(maxno) + ') '); execsql; end; ////////////////// 更新开卡 ////////////////// /// ADOCmd.Connection.CommitTrans; ////////////////// 出入库及库存 ////////////////// with ADOCmd do begin Close; sql.Clear; sql.Add('exec P_Trade_Insp_In_Stk @CIID=''' + trim(MCIID) + ''''); ExecSQL; end; // Open; // end; // if ADOCmd.FieldByName('intReturn').AsInteger = -1 then // begin // application.MessageBox(PChar(trim(ADOCmd.FieldByName('ShowMsg').AsString)), '提示信息', 0); // Result := False; // end // else // begin // Result := True; // end; ////////////////// 出入库及库存 ////////////////// Result := True; except ADOCmd.Connection.RollbackTrans; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); Result := False; end; end; procedure TfrmTradeMachInsp.btnCXRKClick(Sender: TObject); var MStkIds: string; begin if CDS_3.IsEmpty then exit; btnCXRK.Enabled := False; with CDS_3 do begin DisableControls; First; while not eof do begin MStkIds := MStkIds + Trim(CDS_3.FieldByName('CIID').AsString) + ','; next; end; EnableControls; end; MStkIds := copy(MStkIds, 1, Length(MStkIds) - 1); try ADOCmd.Connection.BeginTrans; with ADOCmd do begin Close; Sql.Clear; Sql.Add('exec P_Trade_Cloth_ReIn '); Sql.Add('@StkIds=' + quotedstr(trim(MStkIds))); Sql.Add(',@IOIDS='''' '); Open; end; if ADOCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOCmd.FieldByName('ShowMsg').AsString))); end; application.MessageBox('撤销入库成功!', '提示信息'); ADOCmd.Connection.CommitTrans; btnCXRK.Enabled := True; except ADOCmd.Connection.RollbackTrans; btnCXRK.Enabled := True; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); end; end; procedure TfrmTradeMachInsp.btnRKClick(Sender: TObject); var MINo, MStkIds: string; begin if CDS_3.IsEmpty then exit; btnRK.Enabled := False; //刷出未入库的卷信息,执行入库操作 with ADOQueryMain do begin Close; SQL.Clear; sql.Add('select A.*'); sql.Add('from Trade_Cloth_Inspect A where BCIOID=''' + Trim(FBCIOID) + ''''); sql.Add('and CIIOFlag=''未入库'''); sql.Add('order by filltime desc'); Open; end; SCreateCDS(ADOQueryMain, CDS_3); SInitCDSData(ADOQueryMain, CDS_3); with CDS_3 do begin DisableControls; First; while not eof do begin MStkIds := MStkIds + Trim(CDS_3.FieldByName('CIID').AsString) + ','; next; end; EnableControls; end; MStkIds := copy(MStkIds, 1, Length(MStkIds) - 1); if GetLSNo(ADOCmd, MINo, '9', 'Trade_Cloth_IO', 4, 1) = False then begin Application.MessageBox('取入库单号失败!', '提示', 0); Exit; end; ADOCmd.Connection.BeginTrans; try with ADOCmd do begin Close; Sql.Clear; Sql.Add('exec P_Trade_Cloth_In '); Sql.Add('@StkIds=' + quotedstr(trim(MStkIds))); Sql.Add(',@IOTime=' + Quotedstr(FormatDateTime('yyyy-MM-dd', SGetServerDate(ADOTmp)))); Sql.Add(',@IOType=' + Quotedstr('检验入库')); Sql.Add(',@IONO=' + Quotedstr(MINo)); Open; end; if ADOCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOCmd.FieldByName('ShowMsg').AsString))); end; ADOCmd.Connection.CommitTrans; application.MessageBox('数据入库成功!', '提示信息'); btnRK.Enabled := True; except btnRK.Enabled := True; ADOCmd.Connection.RollbackTrans; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); end; //入库完后刷出全部卷信息 InitJYGrid(); end; procedure TfrmTradeMachInsp.BTPrintClick(Sender: TObject); var fPrintFile, MPacketId: string; mvalue: Double; i: Integer; begin edtScan.SetFocus; if CheckData('提交') = False then exit; if FCDUnit <> lblLenUnit.Caption then begin Application.MessageBox('单位与计划单设置不符!', '提示', 0); Exit; end; if SaveData() then begin InputLen.Text := ''; InputWeight.Text := ''; Edit3.Text := '√'; Edit4.Text := ''; // PieceNo.Text := inttostr(strtointdef(PieceNo.Text, 0) + 1); //自增卷号 PieceNo.Text := ''; if Trim(Edit6.Text) = '√' then begin PrtData(FCIID); end; if edtdabao.Text = '√' then begin FPacketCount := FPacketCount + 1; FPacketCIID := FPacketCIID + ',' + FCIID; if FPacketCount = strtoint(edtfrnshu.Text) then begin if GetLSNo(ADOQueryTmp, MPacketId, 'BI', 'Trade_Cloth_Inspect', 4, 1) = False then begin Application.MessageBox('取包条码最大号失败!', '提示', 0); Exit; end; try ADOCmd.Connection.BeginTrans; with ADOCmd do begin Close; sql.Clear; sql.add('Update Trade_Cloth_Inspect Set PacketTime=GETDATE() , PacketNo=' + edtPacketNo.Text + ',PacketId=' + QuotedStr(trim(MPacketId)) + ',PacketCode=' + QuotedStr(trim(DCode)) + ',PacketName=' + QuotedStr(trim(DName))); sql.Add('WHERE EXISTS(select X.RTValue from [dbo].[F_Tool_SplitString](' + QuotedStr(FPacketCIID) + ','','') X where Trade_Cloth_Inspect.CIID=X.RTValue ) '); sql.add('Update Trade_Cloth_Stock Set PacketTime=GETDATE() , PacketNo=' + edtPacketNo.Text + ',PacketId=' + QuotedStr(trim(MPacketId)) + ',PacketCode=' + QuotedStr(trim(DCode)) + ',PacketName=' + QuotedStr(trim(DName))); sql.Add('WHERE EXISTS(select X.RTValue from [dbo].[F_Tool_SplitString](' + QuotedStr(FPacketCIID) + ','','') X where Trade_Cloth_Stock.STKID=X.RTValue ) '); ExecSQL; end; PrintBao(MPacketId); edtPacketNo.Text := INTTOSTR(strtoint(edtPacketNo.Text) + 1); FPacketCIID := ''; FPacketCount := 0; ADOCmd.Connection.CommitTrans; except ADOCmd.Connection.RollbackTrans; application.MessageBox('打包失败!', '提示信息', 0); end; end; end; end; InputLen.SetFocus; CIFBegClick(InputLen); FOperationStatus := '缸条码'; InitJYGrid(); InitCDGrid(''); FCIID := ''; end; procedure TfrmTradeMachInsp.PrtData(MCIID: string); var fPrintFile, FLabVolume: string; Txt, fImagePath, Txt2, fImagePath2: string; Moudle: THandle; Makebar: TMakebar; Mixtext: TMixtext; begin with ADOQueryPrint do begin Close; SQL.Clear; sql.Add(' EXEC P_Trade_Print_Lab '); SQL.Add(' @CIID=''' + Trim(MCIID) + ''''); // ShowMessage(sql.Text); Open; end; if ADOQueryPrint.IsEmpty then begin application.MessageBox('标签内容未找到!', '提示信息', MB_ICONERROR); exit; end; if Trim(ADOQueryPrint.fieldbyname('Grade').AsString) = '正品' then FLabVolume := Trim(ADOQueryPrint.fieldbyname('LabVolume').AsString) else FLabVolume := '次品标签'; ExportFtErpFile(FLabVolume + '.rmf', ADOTmp); fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + FLabVolume + '.rmf'; if FileExists(fPrintFile) then begin RM1.LoadFromFile(fPrintFile); if Trim(ADOQueryPrint.fieldbyname('LabVolume').AsString) <> '次品标签' then RM1.DefaultCopies := strtointdef(trim(ComboBox1.Text), 1) else RM1.DefaultCopies := 1; RM1.PrintReport; end else begin Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0); end; end; procedure TfrmTradeMachInsp.SpeedButton1Click(Sender: TObject); var fsj: string; begin fsj := Trim(TSpeedButton(Sender).Hint); if Trim(fsj) = '' then Exit; if TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Name = 'KuangHao' then Exit; fsj := Trim(TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text); TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text := fsj + Trim(TSpeedButton(Sender).Caption); TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).SelectAll; end; procedure TfrmTradeMachInsp.SpeedButton12Click(Sender: TObject); var fsj: string; begin fsj := Trim(TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text); if Trim(fsj) = '' then Exit; TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text := Copy(fsj, 1, Length(fsj) - 1); TcxTextEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).SelectAll; end; procedure TfrmTradeMachInsp.SpeedButton13Click(Sender: TObject); var i: Integer; begin if CheckData('疵点') = False then exit; FCIFName := Trim(TSpeedButton(Sender).Hint); MovePanel1.Visible := True; lblCIFName.Caption := Trim(FCIFName); // CIFBeg.Text := InputLen.Text; Edit1Change(Edit1); // 是否读长度勾选 // //显示数字键盘 with Panel3 do begin for i := 0 to ControlCount - 1 do begin if Controls[i] is TSpeedButton then begin TSpeedButton(Controls[i]).Hint := Trim(CIFBeg.Name); end; end; end; end; procedure TfrmTradeMachInsp.cxDBImage1DblClick(Sender: TObject); begin if TcxDBImage(Sender).Picture.Height = 0 then exit; LookImage(Qry_ImgHX.fieldbyname(TcxDBImage(Sender).Hint).asstring); end; procedure TfrmTradeMachInsp.Button1Click(Sender: TObject); var mvalue: Double; begin if Trim(CIFBeg.Text) <> '' then begin if Trim(CIFEnd.Text) <> '' then begin if StrToFloat(CIFEnd.Text) < StrToFloat(CIFBeg.Text) then begin Application.MessageBox('疵点位置录入错误!', '提示', 0); Exit; end; end; end; if CIFQty.Text <> '' then begin if TryStrToFloat(CIFQty.Text, mvalue) = False then begin Application.MessageBox('非法数字!', '提示', 0); Exit; end; end; with CDS_2 do begin Append; // if RadioGroup1.ItemIndex = 5 then // FieldByName('CIFName').Value := '连续性' + Trim(FCIFName) // else if RadioGroup1.ItemIndex = 4 then // FieldByName('CIFName').Value := '整匹' + Trim(FCIFName) // else FieldByName('CIFName').Value := Trim(FCIFName); FieldByName('CIFbeg').Value := Trim(CIFBeg.Text); FieldByName('CIFEnd').Value := Trim(CIFEnd.Text); FieldByName('CIFPoints').Value := 0; if RadioGroup1.ItemIndex > -1 then begin if RadioGroup1.ItemIndex < 3 then begin FieldByName('CIFPoints').Value := RadioGroup1.ItemIndex + 1; end else begin FieldByName('CIFPoints').Value := 4; end; end; FieldByName('CIFQty').Value := StrToFloatdef(trim(CIFQty.Text), 0); Post; end; CIFBeg.Text := ''; CIFEnd.Text := ''; CIFQty.Text := ''; MovePanel1.Visible := False; cxPageControl1.ActivePageIndex := 0; end; procedure TfrmTradeMachInsp.edtScanDblClick(Sender: TObject); begin edtScan.Text := ''; end; procedure TfrmTradeMachInsp.edtScanKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin if trim(edtScan.Text) = '' then exit; if trim(edtScan.Text) = FBCIOID then exit; ClearGlobal(); FOperationStatus := '缸条码'; // InitLCK(edtScan.Text); InitPlan(edtScan.Text); Edit1Change(Edit1); // 是否读长度勾选 InputLen.SetFocus; end; end; procedure TfrmTradeMachInsp.CIFBegClick(Sender: TObject); var i: Integer; begin with Panel3 do begin for i := 0 to ControlCount - 1 do begin if Controls[i] is TSpeedButton then begin TSpeedButton(Controls[i]).Hint := Trim(TcxTextEdit(Sender).Name); end; end; end; end; procedure TfrmTradeMachInsp.CIFEndChange(Sender: TObject); var mvalue: Double; begin if Trim(CIFBeg.Text) <> '' then begin if TryStrToFloat(CIFBeg.Text, mvalue) = False then begin Application.MessageBox('非法数字!', '提示', 0); Exit; end; end else begin Exit; end; if Trim(CIFEnd.Text) <> '' then begin if TryStrToFloat(CIFEnd.Text, mvalue) = False then begin Application.MessageBox('非法数字!', '提示', 0); Exit; end; end else begin Exit; end; CIFQty.Text := FloatToStr(StrToFloat(CIFEnd.Text) - StrToFloat(CIFBeg.Text)); end; procedure TfrmTradeMachInsp.Edit1Change(Sender: TObject); begin if Trim(TcxTextEdit(Sender).Text) = '' then begin CIFBeg.Text := '0'; end else begin CIFBeg.Text := InputLen.Text; end; end; procedure TfrmTradeMachInsp.Edit1Click(Sender: TObject); begin if Trim(TcxTextEdit(Sender).Text) = '' then begin TcxTextEdit(Sender).Text := '√'; end else begin TcxTextEdit(Sender).Text := ''; end; end; procedure TfrmTradeMachInsp.Edit3Click(Sender: TObject); begin if Trim(Edit3.Text) = '' then begin Edit3.Text := '√'; Edit4.Text := ''; end else begin Edit3.Text := ''; Edit4.Text := '√'; end; end; procedure TfrmTradeMachInsp.Edit4Click(Sender: TObject); begin if Trim(Edit4.Text) = '' then begin Edit4.Text := '√'; Edit3.Text := ''; end else begin Edit4.Text := ''; Edit3.Text := '√'; end; end; procedure TfrmTradeMachInsp.Edit6Click(Sender: TObject); begin if Trim(Edit6.Text) = '' then begin Edit6.Text := '√'; end else begin Edit6.Text := ''; end; end; procedure TfrmTradeMachInsp.MJstr3KeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmTradeMachInsp.MPlaceExit(Sender: TObject); begin SetINIFile(); end; procedure TfrmTradeMachInsp.Button2Click(Sender: TObject); begin RadioGroup1.ItemIndex := -1; end; procedure TfrmTradeMachInsp.Button3Click(Sender: TObject); begin if pnlSet.Visible then pnlSet.Visible := False else pnlSet.Visible := True; end; procedure TfrmTradeMachInsp.GrossWeightChange(Sender: TObject); begin QuantityConversion(); end; procedure TfrmTradeMachInsp.edtScanClick(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(TcxTextEdit(Sender).Name); end; end; end; end; procedure TfrmTradeMachInsp.NetWeightKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin BTPrint.Click; end; end; procedure TfrmTradeMachInsp.FormCreate(Sender: TObject); begin inherited; IsCommopen := false; end; procedure TfrmTradeMachInsp.lblLenUnitClick(Sender: TObject); begin if Trim(lblLenUnit.Caption) = 'M' then SetUnit('Y') else SetUnit('M'); end; procedure TfrmTradeMachInsp.Button4Click(Sender: TObject); begin MovePanel1.Visible := false; end; procedure TfrmTradeMachInsp.ToolButton2Click(Sender: TObject); begin if CDS_3.IsEmpty then exit; if Application.MessageBox('确定要重新打印吗?', '提示', 32 + 4) <> IDYES then Exit; try with ADOTmp do begin Close; SQL.Clear; sql.Add(' select * from Trade_Cloth_IO A where IOFlag=''入库'' '); SQL.Add(' and A.StkId=''' + trim(CDS_3.fieldbyName('CIID').AsString) + ''''); Open; end; PrtMD(ADOTmp.fieldbyName('IONo').AsString); except application.MessageBox('重新打印失败!', '提示信息', MB_ICONERROR); end; end; procedure TfrmTradeMachInsp.ToolButton3Click(Sender: TObject); begin if CDS_3.IsEmpty then Exit; PrtData(CDS_3.fieldbyname('CIID').AsString); end; procedure TfrmTradeMachInsp.ToolButton4Click(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.InitCDPanel(); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmTradeMachInsp.ToolButton5Click(Sender: TObject); begin if CDS_3.IsEmpty then Exit; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; ADOCmd.Connection.BeginTrans; try with ADOCmd do begin Close; sql.Clear; sql.Add('insert into Trade_Need_Up(UType,UOperation,UDataId) values(''检验'',''检验删除'',' + quotedstr(Trim(CDS_3.fieldbyname('CIID').AsString)) + ') '); ExecSQL; end; with ADOCmd do begin Close; Sql.Clear; Sql.Add('exec P_Trade_Insp_Del '); Sql.Add('@CIIDS=' + quotedstr(Trim(CDS_3.fieldbyname('CIID').AsString))); Sql.Add(',@DCode=' + Quotedstr(DCode)); Sql.Add(',@DName=' + Quotedstr(DName)); Open; end; if ADOCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOCmd.FieldByName('ShowMsg').AsString))); end; ADOCmd.Connection.CommitTrans; CDS_3.Delete; application.MessageBox('删除成功!', '提示信息'); except ADOCmd.Connection.RollbackTrans; application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); end; end; procedure TfrmTradeMachInsp.ToolButton6Click(Sender: TObject); begin if CDS_3.IsEmpty then Exit; InitJTM(CDS_3.fieldbyname('CIID').AsString); end; procedure TfrmTradeMachInsp.ToolButton7Click(Sender: TObject); begin WriteCxGrid(trim(Self.Caption) + 'Tv1', Tv1, '贸易检验管理'); WriteCxGrid(trim(Self.Caption) + 'Tv2', Tv2, '贸易检验管理'); WriteCxGrid(trim(Self.Caption) + 'Tv3', Tv3, '贸易检验管理'); end; procedure TfrmTradeMachInsp.ToolButton8Click(Sender: TObject); begin Close; end; procedure TfrmTradeMachInsp.edtChenClick(Sender: TObject); begin if Trim(TcxTextEdit(Sender).Text) = '' then begin TcxTextEdit(Sender).Text := '√'; end else begin TcxTextEdit(Sender).Text := ''; end; SetINIFile(); end; procedure TfrmTradeMachInsp.edtdabaoClick(Sender: TObject); begin if Trim(TcxTextEdit(Sender).Text) = '' then begin TcxTextEdit(Sender).Text := '√'; Label40.Visible := True; edtPacketNo.Visible := True; end else begin Label40.Visible := False; edtPacketNo.Visible := False; TcxTextEdit(Sender).Text := ''; end; end; procedure TfrmTradeMachInsp.edtYJClick(Sender: TObject); begin if Trim(TcxTextEdit(Sender).Text) = '' then begin TcxTextEdit(Sender).Text := '√'; end else begin TcxTextEdit(Sender).Text := ''; end; end; procedure TfrmTradeMachInsp.Button6Click(Sender: TObject); begin if ScrollBox1.Visible then ScrollBox1.Visible := False else ScrollBox1.Visible := True; end; procedure TfrmTradeMachInsp.Button8Click(Sender: TObject); begin if Panel7.Visible then Panel7.Visible := False else Panel7.Visible := True; end; end.