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,   dxDateRanges,
  dxBarBuiltInMenu, cxContainer, cxImage, cxDBEdit, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, ShellAPI, IdFTP,
  FireDAC.Stan.StorageXML, cxPC,  dxScrollbarAnnotations, 
  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.

