unit U_KnitMachInsp;

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, XMLDoc, XMLIntf, DateUtils, cxMaskEdit,
  cxButtonEdit, dxSkinBasic, dxSkinBlack, dxSkinBlue, dxSkinBlueprint,
  dxSkinCaramel, dxSkinCoffee, dxSkinDarkroom, dxSkinDarkSide,
  dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy,
  dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian,
  dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMetropolis,
  dxSkinMetropolisDark, dxSkinMoneyTwins, dxSkinOffice2007Black,
  dxSkinOffice2007Blue, dxSkinOffice2007Green, dxSkinOffice2007Pink,
  dxSkinOffice2007Silver, dxSkinOffice2010Black, dxSkinOffice2010Blue,
  dxSkinOffice2010Silver, dxSkinOffice2013DarkGray, dxSkinOffice2013LightGray,
  dxSkinOffice2013White, dxSkinOffice2016Colorful, dxSkinOffice2016Dark,
  dxSkinOffice2019Black, dxSkinOffice2019Colorful, dxSkinOffice2019DarkGray,
  dxSkinOffice2019White, dxSkinPumpkin, dxSkinSeven, dxSkinSevenClassic,
  dxSkinSharp, dxSkinSharpPlus, dxSkinSilver, dxSkinSpringtime, dxSkinStardust,
  dxSkinSummer2008, dxSkinTheAsphaltWorld, dxSkinTheBezier, dxSkinValentine,
  dxSkinVisualStudio2013Blue, dxSkinVisualStudio2013Dark,
  dxSkinVisualStudio2013Light, dxSkinVS2010, dxSkinWhiteprint, dxSkinWXI,
  dxSkinXmas2008Blue, dxScrollbarAnnotations;

type
  TfrmKnitMachInsp = 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: TEdit;
    Button1: TButton;
    Button4: TButton;
    CIFEnd: TEdit;
    CIFQty: TEdit;
    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: TEdit;
    Panel9: TPanel;
    Panel2: TPanel;
    lblLenUnit: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label11: TLabel;
    Label31: TLabel;
    Label32: TLabel;
    Label29: TLabel;
    InputLen: TEdit;
    GrossWeight: TEdit;
    BTPrint: TButton;
    NetWeight: TEdit;
    Button6: TButton;
    Button8: TButton;
    PieceNo: TEdit;
    ToolBar2: TToolBar;
    ToolButton3: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    GPM_3: TcxGridPopupMenu;
    Panel6: TPanel;
    Label35: TLabel;
    Label16: TLabel;
    Label26: TLabel;
    edtChen: TEdit;
    edtMaBiao: TEdit;
    ComboBox1: TComboBox;
    Edit6: TEdit;
    Label6: TLabel;
    Panel10: TPanel;
    Label14: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label1: TLabel;
    PCId: TEdit;
    JXPerson: TEdit;
    CodeName: TEdit;
    edtScan: TEdit;
    Button3: TButton;
    ToolButton4: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    Label7: TLabel;
    edtMBDW: TEdit;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton9: TToolButton;
    Label30: TLabel;
    Label37: TLabel;
    Tare: TEdit;
    Label3: TLabel;
    Coefficient: TEdit;
    Label9: TLabel;
    MinLen: TEdit;
    Label15: TLabel;
    MinWeight: TEdit;
    MaxLen: TEdit;
    MaxWeight: TEdit;
    Label19: TLabel;
    MPlace: TEdit;
    Label20: TLabel;
    Label21: TLabel;
    YPlace: TEdit;
    Label27: TLabel;
    KgPlace: TEdit;
    Label28: TLabel;
    Label33: TLabel;
    Label13: TLabel;
    BatchNo: TEdit;
    Label22: TLabel;
    Grade: TComboBox;
    Label10: TLabel;
    ComboBox2: TComboBox;
    Label12: TLabel;
    Label34: TLabel;
    Label49: TLabel;
    WorkShift: TComboBox;
    SCPerson: TcxButtonEdit;
    JBSCPerson: TcxButtonEdit;
    Label36: TLabel;
    Revolution1: TEdit;
    Label38: TLabel;
    Revolution2: TEdit;
    Label39: TLabel;
    CarNo: TEdit;
    Label40: TLabel;
    Code: TEdit;
    ToolButton10: TToolButton;
    Label23: TLabel;
    JuanHao: TEdit;
    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 ToolButton1Click(Sender: TObject);
    procedure edtScanKeyPress(Sender: TObject; var Key: Char);
    procedure CIFBegClick(Sender: TObject);
    procedure CIFEndChange(Sender: TObject);
    procedure Edit6Click(Sender: TObject);
    procedure MJstr3KeyPress(Sender: TObject; var Key: Char);
    procedure NetWeightExit(Sender: TObject);
    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 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 ComboBox1Change(Sender: TObject);
    procedure ToolButton9Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure MinLenExit(Sender: TObject);
    procedure cxButtonEdit1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure JBSCPersonPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure ToolButton10Click(Sender: TObject);
  private
    { Private declarations }
    FCIID, FOperationStatus, FCIFName, FWorkshop: string;
    FOrderNo, FMainId, FSubId, FPCId, FConNo, FConMId, FConSId: string;
    FBatchNO, FLenUnit, FC_Code, FC_Name, FC_Spec, FC_Width, FC_GramWeight, FC_KnitGramWeight, FC_Deal: string;
    FC_Color, FC_ColorNo, FC_StyleNo, FC_Pattern, FC_CustPattern, FC_ColorDepth, FCarNo, FJXPerson, FC_Figure, FC_Yarn: string;
    FC_Composition, FC_KnitNote: string;
    FFtyPCId, FGangNo: string;
    FPieceNo: Integer;
    IsCommopen: boolean;
    procedure SetINIFile();  //���������ļ�
    procedure GetINIFile(); //���ó��ȵ�λ
    procedure SetUnit(MUnit: string); //���ó��ȵ�λ
    procedure SetDdetails(); //ˢ����ϸ��Ϣ
    procedure InitCDPanel(); //ˢ�´õ�ѡ��
    procedure InitCDGrid(MCIID: string); //ˢ�´õ�Ǽ���Ϣ
    procedure InitCDGridCX(MCIID: string); //ˢ�´õ��ѯ��Ϣ
    procedure InitJYGrid(); //ˢ�¼�����Ϣ
    function CheckData(CKType: string): Boolean; //������
    function SaveData(): Boolean; //��������
    procedure InitLCK(MPCId: string);  //ɨ�����̿�
    procedure InitJTM(MCIID: string);  //ɨ�������
    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 PlayWav(MWav: string);

  public
    fmanage: string;
    fFlileFlag: string;
    { Public declarations }
  end;

var
  frmKnitMachInsp: TfrmKnitMachInsp;
  newh, newh1: hwnd;

implementation

uses
  U_DataLink, U_RTFun, U_ZDYHelp, U_iniParam, U_EmployeeSel, MMSystem;

{$R *.dfm}

procedure TfrmKnitMachInsp.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 TfrmKnitMachInsp.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 TfrmKnitMachInsp.SetDdetails();
begin
  AOrdDefNote1.Text := '';
  AOrdDefNote1.Text := AOrdDefNote1.Text + 'Ʒ��:' + FC_Name + #13;
  AOrdDefNote1.Text := AOrdDefNote1.Text + '�ŷ�:' + FC_Width + #13;
  AOrdDefNote1.Text := AOrdDefNote1.Text + '��������:' + FC_KnitGramWeight + #13;
  AOrdDefNote1.Text := AOrdDefNote1.Text + '��Ʒ����:' + FC_GramWeight + #13;
  AOrdDefNote1.Text := AOrdDefNote1.Text + '��ɫ:' + FC_Color + #13;
  AOrdDefNote1.Text := AOrdDefNote1.Text + '�ɷ�:' + FC_Composition + #13;
  AOrdDefNote1.Text := AOrdDefNote1.Text + '�Ứ:' + FC_Figure + #13;
  AOrdDefNote1.Text := AOrdDefNote1.Text + '��ɴ:' + FC_Yarn + #13;
  AOrdDefNote1.Text := AOrdDefNote1.Text + 'ɴ��:' + FC_SPec + #13;
  AOrdDefNote1.Text := AOrdDefNote1.Text + '����:' + FC_Deal + #13;
  AOrdDefNote1.Text := AOrdDefNote1.Text + '�߲�Ҫ��:' + FC_KnitNote + #13;
end;

procedure TfrmKnitMachInsp.SetUnit(MUnit: string);
begin
  lblLenUnit.Caption := MUnit;
  lblLenUnit1.Caption := MUnit;
end;

procedure TfrmKnitMachInsp.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 TfrmKnitMachInsp.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 TfrmKnitMachInsp.QuantityConversion();
var
  MLen, MNWet, MGWet, MPWet, MCC, FYJZQty: Double;
begin
  MLen := StrToFloatdef(trim(InputLen.Text), 0);
  MNWet := StrToFloatdef(trim(NetWeight.Text), 0);
  MPWet := StrToFloatdef(trim(Tare.Text), 0);
  MGWet := StrToFloatdef(trim(GrossWeight.Text), 0);
  MCC := StrToFloatdef(trim(Coefficient.Text), 0);

        //���� �� ��ȥ����
  if TV2.DataController.Summary.FooterSummaryValues[2] <> NULL then
  begin
    FYJZQty := StrToFloatdef(TV2.DataController.Summary.FooterSummaryValues[2], 0);
  end
  else
  begin
    FYJZQty := 0;
  end;
  {  //  ��������
  if MCC > 0 then
  begin
    MGWet := StrToFloat(format('%.1f', [(MLen - FYJZQty) * MCC]));
    MNWet := MGWet - MPWet;
    GrossWeight.Text := FloatToStr(MGWet);
    NetWeight.Text := FloatToStr(MNWet);
  end;   }

  MNWet := MGWet - MPWet;
  //��������
  if MCC > 0 then
  begin
    MLen := RoundFloat(MNWet * MCC, 1);
    InputLen.Text := FloatToStr(MLen);
  end;
  NetWeight.Text := FloatToStr(MNWet);
end;

function TfrmKnitMachInsp.CheckData(CKType: string): Boolean;
var
  mvalue: Double;
begin
  try
    if Trim(FPCId) = '' then
      raise Exception.Create('��ɨ�貼Ʊ��');

    if Trim(CKType) = '�ύ' then
    begin
//      if trim(FLenUnit) = 'M' then
//        if trim(lblLenUnit.Caption) <> 'M' then
//          raise Exception.Create('��ͬ�����λΪM,������������');
//      if trim(FLenUnit) = 'Y' then
//        if trim(lblLenUnit.Caption) <> 'Y' then
//          raise Exception.Create('��ͬ�����λΪY,������������');
      if trim(lblLenUnit.Caption) = '' then
        raise Exception.Create('���ȵ�λ����Ϊ��!');

      if Trim(GrossWeight.Text) <> '' then
      begin
        GrossWeight.Text := '0';
//        if TryStrToFloat(GrossWeight.Text, mvalue) = False then
//          raise Exception.Create('����¼�����!');
//        if strtofloatdef(trim(GrossWeight.Text), 0) <= Strtofloatdef(MinWeight.Text, 0) then
//          raise Exception.Create('����������' + MinWeight.Text + '!');
//        if strtofloatdef(trim(GrossWeight.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(NetWeight.Text), 0) = 0) then
//        raise Exception.Create('���Ⱥ��������ܶ�Ϊ0!!');
    end;
    Result := True;
  except
    Result := false;
    application.MessageBox(PChar(Exception(ExceptObject).Message), '��ʾ��Ϣ', 0);
  end;
end;

procedure TfrmKnitMachInsp.ClearGlobal();
begin
  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_StyleNo := '';
  FC_Width := '';
  FC_KnitGramWeight := '';
  FC_Figure := '';
  FC_Yarn := '';
  FC_GramWeight := '';
  FC_Pattern := '';
  FCIID := '';
  FWorkshop := '';
  InputLen.Text := '';
  Coefficient.Text := '';
  AOrdDefNote1.Text := '';
  Tare.Text := '';
  NetWeight.Text := '';
  FLenUnit := '';
  FC_Composition := '';
  FC_KnitNote := '';
end;

procedure TfrmKnitMachInsp.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 TfrmKnitMachInsp.Pic_Image1DblClick(Sender: TObject);
begin
  if TcxDBImage(Sender).Picture.Height = 0 then
    exit;
  LookImage(ADOQueryImage.fieldbyname(TcxDBImage(Sender).Hint).asstring);
end;

procedure TfrmKnitMachInsp.InitLCK(MPCId: string);
begin
  with ADOTmp do
  begin
    Close;
    sql.Clear;
    sql.Add('EXEC P_Knit_Insp_Get_PlanCard @PCID=''' + Trim(MPCId) + '''');
    Open;
  end;

  if ADOTmp.IsEmpty = False then
  begin
    if Trim(ADOTmp.fieldbyname('Status').AsString) = '-1' then
    begin
      PlayWav('��Ʊ������');
      Sleep(500);
      application.MessageBox('��Ʊ�����ϣ��޷����飡', '��ʾ��Ϣ', MB_ICONERROR);
      ClearGlobal();
    end
    else if Trim(ADOTmp.fieldbyname('Status').AsString) = '1' then
    begin
      PlayWav('��Ʊ�Ѽ���');
      Sleep(500);
      application.MessageBox('��Ʊ�Ѽ���', '��ʾ��Ϣ', MB_ICONERROR);
      ClearGlobal();
    end
    else
    begin
      FConNo := Trim(ADOTmp.fieldbyname('ConNo').AsString);
      FOrderNo := Trim(ADOTmp.fieldbyname('OrderNo').AsString);
      FMainId := Trim(ADOTmp.fieldbyname('MainId').AsString);
      FSubId := Trim(ADOTmp.fieldbyname('SubId').AsString);
      FConMId := Trim(ADOTmp.fieldbyname('ConMId').AsString);
      FConSId := Trim(ADOTmp.fieldbyname('ConSId').AsString);
      FPCId := Trim(ADOTmp.fieldbyname('PCId').AsString);
      FWorkshop := Trim(ADOTmp.fieldbyname('Workshop').AsString);
      FC_Code := Trim(ADOTmp.fieldbyname('C_Code').AsString);
      FC_Name := Trim(ADOTmp.fieldbyname('C_Name').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_Width := Trim(ADOTmp.fieldbyname('C_Width').AsString);
      FC_GramWeight := Trim(ADOTmp.fieldbyname('C_GramWeight').AsString);
      FC_KnitGramWeight := Trim(ADOTmp.fieldbyname('C_KnitGramWeight').AsString);
      FC_Figure := Trim(ADOTmp.fieldbyname('C_Figure').AsString);
      FC_Yarn := Trim(ADOTmp.fieldbyname('C_Yarn').AsString);
      FC_Pattern := Trim(ADOTmp.fieldbyname('C_Pattern').AsString);
      FBatchNo := Trim(ADOTmp.fieldbyname('BatchNo').AsString);
      FCarNo := Trim(ADOTmp.fieldbyname('CarNo').AsString);
      FJXPerson := Trim(ADOTmp.fieldbyname('JXPerson').AsString);
      FC_Deal := Trim(ADOTmp.fieldbyname('C_Deal').AsString);
      FC_Composition := Trim(ADOTmp.fieldbyname('C_Composition').AsString);
      FC_KnitNote := Trim(ADOTmp.fieldbyname('C_KnitNote').AsString);
      Coefficient.Text := '0';

      CodeName.Text := FC_Name;
      Code.Text := FC_Code;
      JXPerson.Text := FJXPerson;
      PCId.Text := FPCId;
      BatchNo.Text := FBatchNo;
      CarNo.Text := FCarNo;
      JuanHao.Text := Trim(ADOTmp.fieldbyname('PCNO').AsString);
      SetDdetails();
      InputLen.SetFocus;
      CIFBegClick(GrossWeight);
    end;

  end
  else
  begin
    PlayWav('��Ʊ������');
    Sleep(500);
    application.MessageBox('��Ʊ�����ڣ�', '��ʾ��Ϣ', MB_ICONERROR);
    ClearGlobal();
  end;

  InitJYGrid();
  InitCDGrid(FCIID);
  edtScan.Text := '';

end;

procedure TfrmKnitMachInsp.JBSCPersonPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmEmployeeSel := TfrmEmployeeSel.Create(self);
    with frmEmployeeSel do
    begin
      FPost := '������';
      if ShowModal = 1 then
      begin
        JBSCPerson.Text := frmEmployeeSel.FRName;
        JBSCPerson.Hint := frmEmployeeSel.FRCode;
      end;
    end;
  finally
    frmEmployeeSel.Free;
  end;
end;

procedure TfrmKnitMachInsp.InitJTM(MCIID: string);
begin
  with ADOTmp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from Knit_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 Knit_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 Knit_Cloth_Inspect where CIID=''' + Trim(MCIID) + '''');
    Open;
  end;
  if not ADOTmp.IsEmpty then
  begin
    FOperationStatus := '������';
    FCIID := MCIID;
    InitCDGrid(MCIID);
  end;

end;

procedure TfrmKnitMachInsp.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 TfrmKnitMachInsp.ComboBox1Change(Sender: TObject);
begin
  SetINIFile();
end;

procedure TfrmKnitMachInsp.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 TfrmKnitMachInsp.FormDestroy(Sender: TObject);
begin
  inherited;
  frmKnitMachInsp := nil;
end;

procedure TfrmKnitMachInsp.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]);
  end;
  if (trim(edtMBDW.Text) = '��') then
  begin
    if i2 = 0 then
    begin
      SetUnit('M');
    end
    else
    begin
      SetUnit('Y');
    end;
  end;
end;

procedure TfrmKnitMachInsp.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
    GrossWeight.Text := format('%.2f', [i1 / 100000]);
  end;

end;

procedure TfrmKnitMachInsp.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  if isCommopen then
  begin
    closeCom(DZCDYDllName);
    closeCom(MBDYDllName);
  end;
  Action := caFree;
end;

procedure TfrmKnitMachInsp.InitCDGrid(MCIID: string);
begin
  cxPageControl1.ActivePageIndex := 0;
  with ADOTmp do
  begin
    Close;
    SQL.Clear;
    sql.Add('select * from Knit_Cloth_Inspect_Flaw where CIID=' + quotedstr(Trim(MCIID)));
    Open;
  end;
  SCreateCDS(ADOTmp, CDS_2);
  SInitCDSData(ADOTmp, CDS_2);
end;

procedure TfrmKnitMachInsp.InitCDGridCX(MCIID: string);
begin
  cxPageControl1.ActivePageIndex := 1;
  with ADOTmp do
  begin
    Close;
    SQL.Clear;
    sql.Add('select * from Knit_Cloth_Inspect_Flaw where CIID=' + quotedstr(Trim(MCIID)));
    Open;
  end;
  SCreateCDS(ADOTmp, CDS_1);
  SInitCDSData(ADOTmp, CDS_1);
end;

procedure TfrmKnitMachInsp.InitJYGrid();
var
  MNetWeight, MJYLen: double;
begin
  with ADOQueryMain do
  begin
    Close;
    SQL.Clear;
    sql.Add('select A.*');
    sql.Add('from Knit_Cloth_Inspect A where Filler=''' + Trim(DName) + '''');
    sql.Add('and CONVERT(VARCHAR(10),A.FillTime,120) =CONVERT(VARCHAR(10),getdate(),120)   ');
    sql.Add('order by filltime desc');
//    ShowMessage(SQL.Text);
    Open;
  end;
  SCreateCDS(ADOQueryMain, CDS_3);
  SInitCDSData(ADOQueryMain, CDS_3);

end;

procedure TfrmKnitMachInsp.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 TfrmKnitMachInsp.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]) > 2 then
      begin
        TSpeedButton(Controls[j]).Caption := Copy(Trim(AA[j]), 1, 2) + #13 + Copy(Trim(AA[j]), 3, Length(AA[j]) - 2);
      end
      else
        TSpeedButton(Controls[j]).Caption := AA[j];
    end;
  end;
end;

procedure TfrmKnitMachInsp.Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
  if CDS_2.IsEmpty 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('delete Knit_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 TfrmKnitMachInsp.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 TfrmKnitMachInsp.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 TfrmKnitMachInsp.SaveData(): Boolean;
var
  maxno, MCIID, BZID, strsql, Dmaxno: string;
  MInputLen, MMeter, MYardage: Double;
begin
  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 Knit_Cloth_Inspect where CIID=''' + Trim(MCIID) + '''');
      Open;
    end;
    with ADOCmd do
    begin
      if Trim(MCIID) = '' then
      begin
        maxno := Trim(FPCID);
        Append;
        FieldByName('Filler').Value := Trim(DName);
        FieldByName('CIID').Value := Trim(FPCID);
      end
      else
      begin
        maxno := Trim(FPCID);
        Edit;
        FieldByName('Editer').Value := Trim(DName);
        FieldByName('EditTime').Value := SGetServerDateTime(ADOTmp);
      end;
    {
//      ���� �� ��ȥ����
      if TV2.DataController.Summary.FooterSummaryValues[2] <> NULL then
      begin
        FYJZQty := StrToFloatdef(TV2.DataController.Summary.FooterSummaryValues[2], 0);
      end
      else
      begin
        FYJZQty := 0;
      end;
      FieldByName('YJZQty').Value := FYJZQty;   }
      //Ƥ��
      FieldByName('Tare').Value := StrToFloatdef(trim(Tare.Text), 0);
      //�
      FieldByName('GrossWeight').Value := RoundFloat(StrToFloatdef(trim(GrossWeight.Text), 0), StrTointdef(KgPlace.Text, 0));
      //����
      FieldByName('NetWeight').Value := RoundFloat(StrToFloatdef(trim(GrossWeight.Text), 0), StrTointdef(KgPlace.Text, 0)) - StrToFloatdef(trim(Tare.Text), 0);
      //ϵ��
      FieldByName('Coefficient').Value := StrToFloatdef(trim(Coefficient.Text), 0);
      //���볤��
      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);
      FieldByName('Grade').Value := Grade.text;
      FieldByName('PieceNo').Value := 0;
      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('Workshop').value := Trim(FWorkshop);
      FieldByName('CIIOFlag').Value := '��';
      FieldByName('PCId').value := FPCId;
      FieldByName('C_Code').value := FC_Code;
      FieldByName('C_Name').value := FC_Name;
      FieldByName('BatchNO').value := FBatchNO;
      FieldByName('C_Spec').value := FC_Spec;
      FieldByName('C_Deal').value := FC_Deal;
      FieldByName('C_Color').value := FC_Color;
      FieldByName('C_ColorNo').value := FC_ColorNo;
      FieldByName('C_StyleNo').value := FC_StyleNo;
      FieldByName('C_Width').value := FC_Width;
      FieldByName('C_KnitGramWeight').value := FC_KnitGramWeight;
      FieldByName('C_GramWeight').value := FC_GramWeight;
      FieldByName('C_Figure').value := FC_Figure;
      FieldByName('C_Yarn').value := FC_Yarn;
      FieldByName('C_Pattern').value := FC_Pattern;
      FieldByName('C_Composition').value := FC_Composition;
      FieldByName('Loom').value := FCarNO;
      FieldByName('C_CustPattern').value := FC_CustPattern;
      FieldByName('CIMachNo').Value := Trim(SCXFlag);
      Post;
    end;

    MCIID := Trim(maxno);   //������
    FCIID := Trim(maxno);

    //���浲������Ϣ
    Dmaxno := maxno + '1';
//    if Revolution1.Text = '' then
//      Revolution1.Text := '0';
//    if Revolution2.Text = '' then
//      Revolution2.Text := '0';

    with ADOCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('insert into Knit_Cloth_knitter(CIID,CKID,knittid,knitter,Revolution)');
      sql.Add('values(' + quotedstr(maxno) + ',' + quotedstr(Dmaxno) + ',' + quotedstr(SCPerson.Hint) + ',' + quotedstr(SCPerson.Text) + ',' + quotedstr(IntToStr(StrtoIntdef(Revolution1.Text, 0))) + ')');
      execsql;
    end;
    Dmaxno := maxno + '2';
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('insert into Knit_Cloth_knitter(CIID,CKID,knittid,knitter,Revolution)');
      sql.Add('values(' + quotedstr(maxno) + ',' + quotedstr(Dmaxno) + ',' + quotedstr(JBSCPerson.Hint) + ',' + quotedstr(JBSCPerson.Text) + ',' + quotedstr(IntToStr(StrtoIntdef(Revolution2.Text, 0))) + ')');
      execsql;
    end;

//////////////////       ����õ���Ϣ       //////////////////
    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', 'Knit_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 Knit_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, 'Knit_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_Knit_Insp_Up @CIID=''' + trim(MCIID) + '''');
      if FOperationStatus = '������' then
        sql.Add(',@InspType=' + QuotedStr('���̿�'))
      else
        sql.Add(',@InspType=' + QuotedStr('�����޸�'));
      execsql;
    end;
//////////////////       ���¾��Ŵõ���Ϣ       //////////////////
///
//////////////////       ����⼰���       //////////////////
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('exec P_Knit_Insp_In_Stk @CIID=''' + trim(MCIID) + '''');
      execsql;
    end;
//////////////////       ����⼰���       //////////////////
///
//////////////////       ���½���       //////////////////
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('insert into Knit_Need_Up(UType,UDataId) values(''��̨����'',' + quotedstr(maxno) + ')  ');
      execsql;
    end;
//////////////////       ���½���       //////////////////
///
    ADOCmd.Connection.CommitTrans;
    Result := True;
  except
    ADOCmd.Connection.RollbackTrans;
    application.MessageBox(PChar(Exception(ExceptObject).Message), '��ʾ��Ϣ', 0);
    Result := False;
  end;
end;

procedure TfrmKnitMachInsp.PlayWav(MWav: string);
begin
  if FileExists(PChar(ExtractFilePath(Application.ExeName) + 'wav\' + MWav + '.wav')) then
    PlaySound(PChar(ExtractFilePath(Application.ExeName) + 'wav\' + MWav + '.wav'), 0, SND_ASYNC);
end;

procedure TfrmKnitMachInsp.BTPrintClick(Sender: TObject);
var
  fPrintFile: string;
  mvalue: Double;
  i: Integer;
begin
  edtScan.SetFocus;
  if CheckData('�ύ') = False then
    exit;

  if SaveData() then
  begin
    PlayWav('����ɹ�');
    InputLen.Text := '';
    GrossWeight.Text := '';
    NetWeight.Text := '';

    PieceNo.Text := inttostr(strTointdef(trim(PieceNo.Text), 0) + 1);

    if Trim(Edit6.Text) = '��' then
    begin
      PrtData(FCIID);
    end;

  end;

  InputLen.SetFocus;
  CIFBegClick(GrossWeight);
  FOperationStatus := '������';
  InitJYGrid();
  InitCDGrid('');
  ClearGlobal();
  FCIID := '';

  SCPerson.Text := '';
  JBSCPerson.Text := '';
  Revolution1.Text := '';
  Revolution2.Text := '';
  edtScan.SetFocus();
end;

procedure TfrmKnitMachInsp.PrtData(MCIID: string);
var
  fPrintFile, FLBName: string;
begin
  with ADOQueryPrint do
  begin
    Close;
    SQL.Clear;
    sql.Add(' EXEC P_Knit_Insp_Prt_Lab ');
    SQL.Add(' @CIID=''' + Trim(MCIID) + '''');
    Open;
  end;
  if ADOQueryPrint.IsEmpty then
  begin
    application.MessageBox('��ǩ����δ�ҵ���', '��ʾ��Ϣ', MB_ICONERROR);
    exit;
  end;

  FLBName := Trim(ADOQueryPrint.fieldbyname('LBName').AsString);

  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 TfrmKnitMachInsp.SpeedButton1Click(Sender: TObject);
var
  fsj: string;
begin
  fsj := Trim(TSpeedButton(Sender).Hint);
  if Trim(fsj) = '' then
    Exit;
  if TEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Name = 'KuangHao' then
    Exit;
  fsj := Trim(TEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text);
  TEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text := fsj + Trim(TSpeedButton(Sender).Caption);
  TEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).SelectAll;
end;

procedure TfrmKnitMachInsp.SpeedButton12Click(Sender: TObject);
var
  fsj: string;
begin
  fsj := Trim(TEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text);
  if Trim(fsj) = '' then
    Exit;
  TEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).Text := Copy(fsj, 1, Length(fsj) - 1);
  TEdit(FindComponent(Trim(TSpeedButton(Sender).Hint))).SelectAll;
end;

procedure TfrmKnitMachInsp.SpeedButton13Click(Sender: TObject);
var
  i: Integer;
begin
  if CheckData('�õ�') = False then
    exit;

  FCIFName := Trim(TSpeedButton(Sender).Hint);
  MovePanel1.Visible := True;
  lblCIFName.Caption := Trim(FCIFName);
  CIFNumber.SetFocus;
  //��ʾ���ּ���
//  CIFBeg.Text := InputLen.Text;
  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 TfrmKnitMachInsp.cxButtonEdit1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmEmployeeSel := TfrmEmployeeSel.Create(self);
    with frmEmployeeSel do
    begin
      FPost := '������';
      if ShowModal = 1 then
      begin
        SCPerson.Text := frmEmployeeSel.FRName;
        SCPerson.Hint := frmEmployeeSel.FRCode;
      end;
    end;
  finally
    frmEmployeeSel.Free;
  end;
end;

procedure TfrmKnitMachInsp.cxDBImage1DblClick(Sender: TObject);
begin
  if TcxDBImage(Sender).Picture.Height = 0 then
    exit;
  LookImage(Qry_ImgHX.fieldbyname(TcxDBImage(Sender).Hint).asstring);
end;

procedure TfrmKnitMachInsp.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('CIFNumber').Value := Trim(CIFNumber.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);
    FieldByName('YJQty').Value := 0;
    Post;
  end;
  CIFBeg.Text := '';
  CIFEnd.Text := '';
  CIFQty.Text := '';
  CIFNumber.Text := '';
  MovePanel1.Visible := False;
  cxPageControl1.ActivePageIndex := 0;
end;

procedure TfrmKnitMachInsp.ToolButton10Click(Sender: TObject);
begin

  if cxPageControl1.ActivePageIndex = 0 then
  begin
    if CDS_2.IsEmpty then
      Exit;
    if Application.MessageBox('ȷ��Ҫɾ������õ���', '��ʾ', 32 + 4) <> IDYES then
      Exit;
    CDS_2.Delete;
  end
  else
  begin
    if CDS_1.IsEmpty then
      Exit;
    if Application.MessageBox('ȷ��Ҫɾ������õ���', '��ʾ', 32 + 4) <> IDYES then
      Exit;

    with ADOCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('delete Knit_Cloth_Inspect_Flaw where CIFID=''' + Trim(CDS_1.fieldbyname('CIFID').AsString) + '''');
      ExecSQL;
    end;
    //���´õ���Ϣ
    with ADOCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('exec P_Knit_Insp_Up @CIID=''' + Trim(CDS_1.fieldbyname('CIID').AsString) + '''');
      if FOperationStatus = '������' then
        sql.Add(',@InspType=' + QuotedStr('���̿�'))
      else
        sql.Add(',@InspType=' + QuotedStr('�����޸�'));
      execsql;
    end;

    CDS_1.Delete;
  end;

//  if Trim(CDS_2.fieldbyname('CIFID').AsString) = '' then
//  begin
//    CDS_2.Delete;
//  end
//  else
//  begin
//    with ADOCmd do
//    begin
//      Close;
//      SQL.Clear;
//      sql.Add('delete Knit_Cloth_Inspect_Flaw where CIFID=''' + Trim(CDS_1.fieldbyname('CIFID').AsString) + '''');
//      ExecSQL;
//    end;
//    //���´õ���Ϣ
//    with ADOCmd do
//    begin
//      Close;
//      sql.Clear;
//      sql.Add('exec P_Knit_Insp_Up @CIID=''' + Trim(CDS_1.fieldbyname('CIID').AsString) + '''');
//      if FOperationStatus = '������' then
//        sql.Add(',@InspType=' + QuotedStr('���̿�'))
//      else
//        sql.Add(',@InspType=' + QuotedStr('�����޸�'));
//      execsql;
//    end;
//    CDS_2.Delete;
//  end;
end;

procedure TfrmKnitMachInsp.ToolButton1Click(Sender: TObject);
var
  MINo, MStkIds: string;
begin
  if CDS_3.IsEmpty then
    exit;

  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, 'R', 'Knit_Cloth_IO', 4, 1) = False then
  begin
    Application.MessageBox('ȡ��ⵥ��ʧ��!', '��ʾ', 0);
    Exit;
  end;

  ADOCmd.Connection.BeginTrans;
  try

//    ADOCmd.Connection.CommitTrans;
    with ADOCmd do
    begin
      Close;
      Sql.Clear;
      Sql.Add('exec P_Knit_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;
    application.MessageBox('�������ɹ���', '��ʾ��Ϣ', MB_ICONERROR);
    ADOCmd.Connection.CommitTrans;
  except
    ADOCmd.Connection.RollbackTrans;
    application.MessageBox('�������ʧ�ܣ�', '��ʾ��Ϣ', MB_ICONERROR);
  end;

end;

procedure TfrmKnitMachInsp.ToolButton2Click(Sender: TObject);
begin
  if CDS_3.IsEmpty then
    exit;
  if Application.MessageBox('ȷ��Ҫ���´�ӡ��', '��ʾ', 32 + 4) <> IDYES then
    Exit;
  try
    with ADOCmd do
    begin
      close;
      sql.Clear;
      sql.Add('update Knit_Cloth_IO SET PrintFlag=0 where PCID=''' + trim(CDS_3.fieldbyName('PCID').AsString) + ''' and CRFlag=''���'' ');
      execsql;
    end;
  except
    application.MessageBox('���´�ӡʧ��!', '��ʾ��Ϣ', MB_ICONERROR);
  end;
end;

procedure TfrmKnitMachInsp.edtScanKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    if trim(edtScan.Text) = '' then
      exit;
    if trim(edtScan.Text) = FPCId then
    begin
      edtScan.Text := '';
      exit;
    end;

    ClearGlobal();
    FOperationStatus := '������';
    InitLCK(edtScan.Text);
    InitJYGrid();
//    GrossWeight.SetFocus;
    InputLen.SetFocus;
  end;
end;

procedure TfrmKnitMachInsp.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(TEdit(Sender).Name);
      end;
    end;
  end;
end;

procedure TfrmKnitMachInsp.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 TfrmKnitMachInsp.Edit6Click(Sender: TObject);
begin
  if Trim(Edit6.Text) = '' then
  begin
    Edit6.Text := '��';
  end
  else
  begin
    Edit6.Text := '';
  end;
end;

procedure TfrmKnitMachInsp.MinLenExit(Sender: TObject);
begin
  SetINIFile();
end;

procedure TfrmKnitMachInsp.MJstr3KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    Key := #0;
    SelectNext(ActiveControl as TWinControl, True, True);
  end;
end;

procedure TfrmKnitMachInsp.NetWeightExit(Sender: TObject);
begin
  if (trim(GrossWeight.Text) = '') and (trim(NetWeight.Text) = '') then
    exit;
  if (trim(GrossWeight.Text) = '') and (trim(Tare.Text) = '') then
    exit;
  if (trim(NetWeight.Text) = '') and (trim(Tare.Text) = '') then
    exit;

  if (trim(Tare.Text) = '') then
    exit;

  if (trim(NetWeight.Text) <> '') then
  begin
    GrossWeight.Text := floattostr(strtofloatdef(trim(Tare.Text), 0) + strtofloatdef(trim(NetWeight.Text), 0));
    exit;
  end;
end;

procedure TfrmKnitMachInsp.Button2Click(Sender: TObject);
begin
  RadioGroup1.ItemIndex := -1;
end;

procedure TfrmKnitMachInsp.Button3Click(Sender: TObject);
begin
  if Panel6.Visible then
    Panel6.Visible := False
  else
    Panel6.Visible := True;

end;

procedure TfrmKnitMachInsp.GrossWeightChange(Sender: TObject);
begin
  QuantityConversion();
end;

procedure TfrmKnitMachInsp.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(TEdit(Sender).Name);
      end;
    end;
  end;
end;

procedure TfrmKnitMachInsp.NetWeightKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    BTPrint.Click;
  end;
end;

procedure TfrmKnitMachInsp.FormCreate(Sender: TObject);
begin
  inherited;
  IsCommopen := false;
end;

procedure TfrmKnitMachInsp.lblLenUnitClick(Sender: TObject);
begin
  if Trim(lblLenUnit.Caption) = 'M' then
    SetUnit('Y')
  else
    SetUnit('M');
end;

procedure TfrmKnitMachInsp.Button4Click(Sender: TObject);
begin
  MovePanel1.Visible := false;
end;

procedure TfrmKnitMachInsp.ToolButton3Click(Sender: TObject);
begin
  if CDS_3.IsEmpty then
    Exit;
  PrtData(CDS_3.fieldbyname('CIID').AsString);

end;

procedure TfrmKnitMachInsp.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 TfrmKnitMachInsp.ToolButton5Click(Sender: TObject);
begin
  if CDS_3.IsEmpty then
    Exit;
  if Application.MessageBox('ȷ��Ҫɾ��������', '��ʾ', 32 + 4) <> IDYES then
    Exit;
//  with ADOTmp do
//  begin
//    Close;
//    sql.Clear;
//    sql.Add('select * from Knit_Cloth_IO where StkId=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + ''' 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 Knit_Cloth_IO where StkId=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + ''' and IOFlag=''����''');
    Open;
  end;
  if not ADOTmp.IsEmpty then
  begin
    Application.MessageBox('�Ѳ����������ݲ���ɾ��!', '��ʾ', 0);
    Exit;
  end;
  with ADOCmd do
  begin
    Close;
    sql.Clear;

    sql.Add('insert into Knit_Cloth_Inspect_Del  select * from Knit_Cloth_Inspect where CIID=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');
    sql.Add('insert into Knit_Cloth_IO_Del  select * from  Knit_Cloth_IO where StkId=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');
    sql.Add('insert into Knit_Cloth_Stock_Del  select * from  Knit_Cloth_Stock where StkId=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');
    sql.Add('insert into Knit_Cloth_Inspect_Flaw_Del  select * from  Knit_Cloth_Inspect_Flaw where CIID=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');

    sql.Add('update Knit_Cloth_Inspect_Del set  DelId=' + quotedstr(trim(DCode)) + ',Deler=' + quotedstr(trim(DName)) + ',Deltime=getdate() where CIID=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');
    sql.Add('update Knit_Cloth_IO_Del set  DelId=' + quotedstr(trim(DCode)) + ',Deler=' + quotedstr(trim(DName)) + ',Deltime=getdate() where StkId=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');
    sql.Add('update Knit_Cloth_Stock_Del set  DelId=' + quotedstr(trim(DCode)) + ',Deler=' + quotedstr(trim(DName)) + ',Deltime=getdate() where StkId=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');
    sql.Add('update Knit_Cloth_Inspect_Flaw_Del set  DelId=' + quotedstr(trim(DCode)) + ',Deler=' + quotedstr(trim(DName)) + ',Deltime=getdate() where CIID=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');
    sql.Add('update knit_Plan_Card  set Status =''0'' where PCID=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');

    sql.Add('delete Knit_Cloth_Inspect where CIID=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');
    sql.Add('delete Knit_Cloth_IO where StkId=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');
    sql.Add('delete Knit_Cloth_Stock where StkId=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');
    sql.Add('delete Knit_Cloth_Inspect_Flaw where CIID=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');
    sql.Add('delete Knit_Cloth_knitter where CIID=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + '''');

    sql.Add('insert into Knit_Need_Up(UType,UDataId) values(''����ɾ��'',' + quotedstr(Trim(CDS_3.fieldbyname('CIID').AsString)) + ')  ');

    ExecSQL;
  end;
  CDS_3.Delete;
end;

procedure TfrmKnitMachInsp.ToolButton6Click(Sender: TObject);
begin
  if CDS_3.IsEmpty then
    Exit;
  with ADOTmp do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from Knit_Cloth_IO where StkId=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + ''' 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 Knit_Cloth_IO where StkId=''' + Trim(CDS_3.fieldbyname('CIID').AsString) + ''' and IOFlag=''����''');
    Open;
  end;
  if not ADOTmp.IsEmpty then
  begin
    Application.MessageBox('�Ѳ����������ݲ���ɾ��!', '��ʾ', 0);
    Exit;
  end;
  InitJTM(CDS_3.fieldbyname('CIID').AsString);
end;

procedure TfrmKnitMachInsp.ToolButton7Click(Sender: TObject);
begin
  WriteCxGrid(trim(Self.Caption) + 'Tv1', Tv1, 'ó�׼������');
  WriteCxGrid(trim(Self.Caption) + 'Tv2', Tv2, 'ó�׼������');
  WriteCxGrid(trim(Self.Caption) + 'Tv3', Tv3, 'ó�׼������');

end;

procedure TfrmKnitMachInsp.ToolButton8Click(Sender: TObject);
begin
  Close;
end;

procedure TfrmKnitMachInsp.ToolButton9Click(Sender: TObject);
var
  MStkIds: string;
begin
  if CDS_3.IsEmpty then
    exit;

  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);

  ADOCmd.Connection.BeginTrans;
  try
    ADOCmd.Connection.CommitTrans;
    with ADOCmd do
    begin
      Close;
      Sql.Clear;
      Sql.Add('exec P_Knit_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('�������ɹ���', '��ʾ��Ϣ', MB_ICONERROR);

  except
    ADOCmd.Connection.RollbackTrans;
    application.MessageBox('�������ʧ�ܣ�', '��ʾ��Ϣ', MB_ICONERROR);
  end;

end;

procedure TfrmKnitMachInsp.edtChenClick(Sender: TObject);
begin
  if Trim(TEdit(Sender).Text) = '' then
  begin
    TEdit(Sender).Text := '��';
  end
  else
  begin
    TEdit(Sender).Text := '';
  end;
  SetINIFile();
end;

procedure TfrmKnitMachInsp.edtYJClick(Sender: TObject);
begin
  if Trim(TEdit(Sender).Text) = '' then
  begin
    TEdit(Sender).Text := '��';
  end
  else
  begin
    TEdit(Sender).Text := '';
  end;
end;

procedure TfrmKnitMachInsp.Button6Click(Sender: TObject);
begin
  if ScrollBox1.Visible then
    ScrollBox1.Visible := False
  else
    ScrollBox1.Visible := True;
end;

procedure TfrmKnitMachInsp.Button8Click(Sender: TObject);
begin
  if Panel7.Visible then
    Panel7.Visible := False
  else
    Panel7.Visible := True;
end;

end.