unit U_ClothInfoInput;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
  cxEdit, DB, cxDBData, ADODB, DBClient, cxGridLevel, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView,
  cxGrid, ComCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, cxTextEdit,
  cxButtonEdit, StdCtrls, ExtCtrls, cxCurrencyEdit, BtnEdit, U_BaseList,
  cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxDateRanges,
  dxBarBuiltInMenu, cxCheckBox, cxDropDownEdit, cxContainer, cxMaskEdit,
  dxScrollbarAnnotations, cxMemo, dxSkinsCore, dxSkinsDefaultPainters, cxMRUEdit,
  ComObj, dxSkinWXI, dxCoreGraphics;

type
  TfrmClothInfoInput = class(TForm)
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    TBClose: TToolButton;
    ADOQueryCmd: TADOQuery;
    ADOQueryTemp: TADOQuery;
    ScrollBox1: TScrollBox;
    Label3: TLabel;
    ToolButton6: TToolButton;
    BCIID: TcxTextEdit;
    Panel1: TPanel;
    ToolBar2: TToolBar;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    cxGrid1: TcxGrid;
    TV1: TcxGridDBTableView;
    TV1Column1: TcxGridDBColumn;
    TV1Column2: TcxGridDBColumn;
    cxGridLevel2: TcxGridLevel;
    DS_1: TDataSource;
    CDS_1: TClientDataSet;
    GPM_1: TcxGridPopupMenu;
    ToolButton2: TToolButton;
    TV1Column5: TcxGridDBColumn;
    TV1Column6: TcxGridDBColumn;
    TV1Column3: TcxGridDBColumn;
    TV1Column4: TcxGridDBColumn;
    Panel2: TPanel;
    Label1: TLabel;
    Label5: TLabel;
    Label15: TLabel;
    Label22: TLabel;
    Label4: TLabel;
    Label7: TLabel;
    Label6: TLabel;
    Label9: TLabel;
    Label11: TLabel;
    Label10: TLabel;
    Label16: TLabel;
    Label18: TLabel;
    Label21: TLabel;
    Label23: TLabel;
    Label2: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label20: TLabel;
    Label25: TLabel;
    C_Code: TcxTextEdit;
    C_Name: TcxTextEdit;
    C_GramWeight: TcxButtonEdit;
    C_Composition: TcxButtonEdit;
    C_Spec: TcxButtonEdit;
    C_Width: TcxButtonEdit;
    C_Pattern: TcxButtonEdit;
    CINote: TcxMemo;
    GC_Name: TcxTextEdit;
    C_EComposition: TcxButtonEdit;
    CraftCode: TcxTextEdit;
    FtyNo: TcxTextEdit;
    C_EName: TcxTextEdit;
    DyeingMethod: TcxTextEdit;
    CostPrice: TcxCurrencyEdit;
    quota: TcxCurrencyEdit;
    StkPosition: TcxMRUEdit;
    qtyunit: TcxMRUEdit;
    Label12: TLabel;
    C_YarnSpec: TcxTextEdit;
    Panel3: TPanel;
    CDS_2: TClientDataSet;
    DS_2: TDataSource;
    cxGridPopupMenu1: TcxGridPopupMenu;
    ADO_2: TADOQuery;
    ADO_1: TADOQuery;
    Panel4: TPanel;
    ToolBar3: TToolBar;
    ToolButton5: TToolButton;
    ToolButton7: TToolButton;
    cxGrid2: TcxGrid;
    TV2: TcxGridDBTableView;
    cxGridDBColumn1: TcxGridDBColumn;
    cxGridDBColumn2: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    Panel5: TPanel;
    ToolBar4: TToolBar;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    cxGrid3: TcxGrid;
    TV3: TcxGridDBTableView;
    cxGridDBColumn3: TcxGridDBColumn;
    cxGridDBColumn4: TcxGridDBColumn;
    cxGridLevel3: TcxGridLevel;
    ADO_3: TADOQuery;
    DS_3: TDataSource;
    CDS_3: TClientDataSet;
    DS_4: TDataSource;
    CDS_4: TClientDataSet;
    ADO_4: TADOQuery;
    ToolButton10: TToolButton;
    ToolButton11: TToolButton;
    OpenDialog1: TOpenDialog;
    CDS_LM: TClientDataSet;
    ToolButton12: TToolButton;
    Panel6: TPanel;
    lbl1: TLabel;
    lbl2: TLabel;
    lbl3: TLabel;
    lbl4: TLabel;
    lbl5: TLabel;
    lbl6: TLabel;
    lbl7: TLabel;
    lbl8: TLabel;
    lbl9: TLabel;
    lbl10: TLabel;
    C_FromName: TcxButtonEdit;
    C_FromName2: TcxButtonEdit;
    C_FromName3: TcxButtonEdit;
    C_FromName4: TcxButtonEdit;
    C_FromName5: TcxButtonEdit;
    Process2: TcxButtonEdit;
    Process3: TcxButtonEdit;
    Process4: TcxButtonEdit;
    Process5: TcxButtonEdit;
    Process: TcxButtonEdit;
    ToolButton13: TToolButton;
    TV3Column1: TcxGridDBColumn;
    Panel7: TPanel;
    Label8: TLabel;
    Label17: TLabel;
    C_COLOR: TcxTextEdit;
    C_COLORNO: TcxTextEdit;
    ToolButton14: TToolButton;
    quotaUNIT: TComboBox;
    procedure FormShow(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure CYColorKeyPress(Sender: TObject; var Key: Char);
    procedure CYJGGYBtnDnClick(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure C_GramWeightDblClick(Sender: TObject);
    procedure C_FromNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure TV1Column5PropertiesEditValueChanged(Sender: TObject);
    procedure C_WidthPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure C_FromName2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure CostPricePropertiesEditValueChanged(Sender: TObject);
    procedure StkPositionPropertiesButtonClick(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure ToolButton7Click(Sender: TObject);
    procedure cxGridDBColumn1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure ToolButton8Click(Sender: TObject);
    procedure ToolButton9Click(Sender: TObject);
    procedure cxGridDBColumn3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure Button1Click(Sender: TObject);
    procedure ToolButton10Click(Sender: TObject);
    procedure ToolButton11Click(Sender: TObject);
    procedure ToolButton12Click(Sender: TObject);
    procedure C_FromName3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure ProcessPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure Process2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure Process3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure Process4PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure Process5PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure C_FromName4PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure C_FromName5PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure CostPriceClick(Sender: TObject);
    procedure ToolButton13Click(Sender: TObject);
    procedure C_COLORPropertiesChange(Sender: TObject);
    procedure ToolButton14Click(Sender: TObject);
  private
    canshu1: string;
    Fint: Integer;
    procedure InitGrid();
    procedure InitGrid1();
//    procedure InitGrid2();
    function SaveData(): Boolean;
    procedure setName();
    procedure addColor();
    function SaveColor(): Boolean;
    { Private declarations }
  public
    FBCIID, FCTID: string;
    TypeInt: Integer; //0新增_1复制_2修改
    fbuzhongedit, canshu3, canshu4, fname: string;
    { Public declarations }
  end;

var
  frmClothInfoInput: TfrmClothInfoInput;

implementation

uses
  U_DataLink, U_RTFun, U_iniParam, U_ZDYHelp, U_AttachmentUpload, U_ClothInfoSel,
  U_CompanySel, U_Edit;

{$R *.dfm}
function TfrmClothInfoInput.SaveColor(): Boolean;
var
  maxId2: string;
begin
  try
    ADOQueryCmd.Connection.BeginTrans;

    if trim(FBCIID) = '' then
      raise Exception.Create('产品信息未保存!');

         //////////////////////////            保存子表              //////////////////////////
    with CDS_1 do
    begin
      First;
      while not Eof do
      begin
        if Trim(CDS_1.fieldbyname('BCISID').AsString) = '' then
        begin
          if GetLSNo(ADOQueryTemp, maxId2, 'YS', 'BS_Cloth_Info_Sub', 4, 1) = False then
            raise Exception.Create('取子流水号失败!');

        end
        else
        begin
          maxId2 := Trim(CDS_1.fieldbyname('BCISID').AsString);
        end;

        with ADOQueryCmd do
        begin
          Close;
          SQL.Clear;
          sql.Add(' select * from BS_Cloth_Info_Sub where ');
          sql.Add(' BCISID=''' + Trim(maxId2) + '''');
          Open;
        end;
        with ADOQueryCmd do
        begin
          if Trim(CDS_1.fieldbyname('BCISID').AsString) = '' then
          begin
            Append;
            FieldByName('FillID').Value := Trim(DCode);
            FieldByName('Filler').Value := Trim(DName);
            FieldByName('FillTime').Value := SGetServerDateTime(ADOQueryTemp);
          end
          else
          begin
            Edit;
            FieldByName('EditID').Value := Trim(DCode);
            FieldByName('Editer').Value := Trim(DName);
            FieldByName('EditTime').Value := SGetServerDateTime(ADOQueryTemp);
          end;
          FieldByName('BCIID').Value := Trim(FBCIID);
          FieldByName('BCISID').Value := Trim(maxId2);
          RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_1, 'BS_Cloth_Info_Sub', 0);
          Post;
        end;
        Next;
      end;
    end;
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select count(BCISID) as AA from BS_Cloth_Info_Sub where BCIID=''' + Trim(FBCIID) + '''');
      sql.Add(' group by C_Color,C_ColorNo  having count(BCISID)>1');
//      ShowMessage(sql.Text);
      Open;

    end;
    if StrToFloatDef(ADOQueryTemp.fieldbyname('AA').asstring, 1) > 1 then
      raise Exception.Create('颜色色号重复!');
    ADOQueryCmd.Connection.CommitTrans;
////////////////////////            保存子表              //////////////////////////
    Result := True;
  except
    Result := False;
    ADOQueryCmd.Connection.RollbackTrans;
    InitGrid1();
    application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0);
  end;
end;

procedure TfrmClothInfoInput.addColor();
begin
  with ADOQueryTemp do
  begin
    Close;
    SQL.Clear;
    sql.Add('select A.* from BS_Cloth_Info_Sub  A where A.BCIID=' + QuotedStr(Trim(C_FromName.Properties.LookupItems.Text)));
    Open;
  end;
  Tv1.BeginUpdate();
  with ADOQueryTemp do
  begin
    First;
    while not Eof do
    begin
      with CDS_1 do
      begin
        Append;
        fieldbyname('C_Color').Value := ADOQueryTemp.fieldbyname('C_Color').Value;
        fieldbyname('C_ColorNo').Value := ADOQueryTemp.fieldbyname('C_ColorNo').Value;
        fieldbyname('floatPrice').Value := 0;
        fieldbyname('referencePrice').value := StrToFloatDef(CostPrice.Text, 0);
        Post;
      end;
      Next;
    end;
  end;
  Tv1.EndUpdate();
end;

procedure TfrmClothInfoInput.setName();
begin

  if (Trim(C_FromName.Text) <> '') then
  begin
    C_Name.Text := Trim(C_FromName.Text) + Trim(Process.Text);

    if (Trim(C_FromName2.Text) <> '') then
    begin
      C_Name.Text := Trim(C_Name.Text) + Trim(C_FromName2.Text) + Trim(Process2.Text);
      if (Trim(C_FromName3.Text) <> '') then
      begin
        C_Name.Text := Trim(C_Name.Text) + Trim(C_FromName3.Text) + Trim(Process3.Text);
        if (Trim(C_FromName4.Text) <> '') then
        begin
          C_Name.Text := Trim(C_Name.Text) + Trim(C_FromName4.Text) + Trim(Process4.Text);
          if (Trim(C_FromName5.Text) <> '') then
            C_Name.Text := Trim(C_Name.Text) + Trim(C_FromName5.Text) + Trim(Process5.Text);
        end;

      end;

    end;

  end
  else
    C_Name.Text := '';

end;

procedure TfrmClothInfoInput.StkPositionPropertiesButtonClick(Sender: TObject);
var
  fsj: string;
  FWZ: Integer;
begin
  fsj := Trim(TcxmruEdit(Sender).Hint);
  FWZ := Pos('/', fsj);
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := Copy(fsj, 1, FWZ - 1);
      flagname := Copy(fsj, FWZ + 1, Length(fsj) - FWZ);
      if ShowModal = 1 then
      begin
        TcxmruEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothInfoInput.InitGrid1();
var
  SqlStr: string;
begin
//  SqlStr := 'select A.* from BS_Cloth_Info_Sub A ';
//  SqlStr := SqlStr + ' where A.BCIID=''' + Trim(FBCIID) + '''';
//  SqlStr := SqlStr + ' ORDER BY      CASE  WHEN C_COLORNO NOT LIKE ''%[^0-9]%'' THEN dbo.getNum(C_Colorno)  ELSE 9999999999   ';
//  SqlStr := SqlStr + '   END ,C_ColorNo';

  SqlStr := 'SELECT A.* FROM BS_Cloth_Info_Sub A ';
  SqlStr := SqlStr + 'WHERE A.BCIID = ''' + Trim(FBCIID) + ''' ';
  SqlStr := SqlStr + 'ORDER BY  CASE  WHEN C_COLORNO NOT LIKE ''%[^0-9]%'' THEN dbo.getNum(C_Colorno)  ELSE 9999999999  END, ';
  SqlStr := SqlStr + '    CASE ';
  SqlStr := SqlStr + '        WHEN C_ColorNo NOT LIKE ''%[^0-9]%'' THEN 0 ';
  SqlStr := SqlStr + '        ELSE 1 ';
  SqlStr := SqlStr + '    END, ';
  SqlStr := SqlStr + '    CASE ';
  SqlStr := SqlStr + '        WHEN C_ColorNo NOT LIKE ''%[^0-9]%'' THEN CAST(C_ColorNo AS decimal(18,2)) ';
  SqlStr := SqlStr + '        ELSE 999999999 ';
  SqlStr := SqlStr + '    END, ';
  SqlStr := SqlStr + '    CASE ';
  SqlStr := SqlStr + '        WHEN C_ColorNo LIKE ''[A-Za-z]%'' THEN ';
  SqlStr := SqlStr + '            LEFT(C_ColorNo, PATINDEX(''%[0-9]%'', C_ColorNo + ''0'') - 1) ';
  SqlStr := SqlStr + '        ELSE ';
  SqlStr := SqlStr + '            '''' ';
  SqlStr := SqlStr + '    END, ';
  SqlStr := SqlStr + '    CASE ';
  SqlStr := SqlStr + '        WHEN PATINDEX(''%[0-9]%'', C_ColorNo) > 0 THEN ';
  SqlStr := SqlStr + '            CASE ';
  SqlStr := SqlStr + '                WHEN ISNUMERIC(SUBSTRING(C_ColorNo, PATINDEX(''%[0-9]%'', C_ColorNo), LEN(C_ColorNo))) = 1 ';
  SqlStr := SqlStr + '                THEN CAST(SUBSTRING(C_ColorNo, PATINDEX(''%[0-9]%'', C_ColorNo), LEN(C_ColorNo)) AS decimal(18,2)) ';
  SqlStr := SqlStr + '                ELSE 0 ';
  SqlStr := SqlStr + '            END ';
  SqlStr := SqlStr + '        ELSE ';
  SqlStr := SqlStr + '            0 ';
  SqlStr := SqlStr + '    END, ';
  SqlStr := SqlStr + '    C_ColorNo';

  InitCDSData(ADO_1, CDS_1, Tv1, SqlStr, '', '');

  SqlStr := 'select A.* from BS_Cloth_Info_GYSCP A ';
  SqlStr := SqlStr + ' where A.BCIID=''' + Trim(FBCIID) + '''';

  InitCDSData(ADO_2, CDS_2, Tv2, SqlStr, '', '');

  SqlStr := 'select A.* from Bs_Cloth_Info_Coefficient A ';
  SqlStr := SqlStr + ' where A.BCIID=''' + Trim(FBCIID) + '''';

  InitCDSData(ADO_3, CDS_3, Tv3, SqlStr, '', '');
end;

procedure TfrmClothInfoInput.Process2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
var
  fsj: string;
  FWZ: Integer;
begin
  fsj := Trim(TcxButtonEdit(Sender).Hint);
  FWZ := Pos('/', fsj);
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := Copy(fsj, 1, FWZ - 1);
      flagname := Copy(fsj, FWZ + 1, Length(fsj) - FWZ);
      if ShowModal = 1 then
      begin
        TcxButtonEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
        setName();

      end;

    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothInfoInput.Process3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
var
  fsj: string;
  FWZ: Integer;
begin
  fsj := Trim(TcxButtonEdit(Sender).Hint);
  FWZ := Pos('/', fsj);
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := Copy(fsj, 1, FWZ - 1);
      flagname := Copy(fsj, FWZ + 1, Length(fsj) - FWZ);
      if ShowModal = 1 then
      begin
        TcxButtonEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
        setName();

      end;

    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothInfoInput.Process4PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
var
  fsj: string;
  FWZ: Integer;
begin
  fsj := Trim(TcxButtonEdit(Sender).Hint);
  FWZ := Pos('/', fsj);
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := Copy(fsj, 1, FWZ - 1);
      flagname := Copy(fsj, FWZ + 1, Length(fsj) - FWZ);
      if ShowModal = 1 then
      begin
        TcxButtonEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
        setName();
      end;

    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothInfoInput.Process5PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
var
  fsj: string;
  FWZ: Integer;
begin
  fsj := Trim(TcxButtonEdit(Sender).Hint);
  FWZ := Pos('/', fsj);
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := Copy(fsj, 1, FWZ - 1);
      flagname := Copy(fsj, FWZ + 1, Length(fsj) - FWZ);
      if ShowModal = 1 then
      begin
        TcxButtonEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
        setName();
      end;

    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothInfoInput.ProcessPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
var
  fsj: string;
  FWZ: Integer;
begin
  fsj := Trim(TcxButtonEdit(Sender).Hint);
  FWZ := Pos('/', fsj);
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := Copy(fsj, 1, FWZ - 1);
      flagname := Copy(fsj, FWZ + 1, Length(fsj) - FWZ);
      if ShowModal = 1 then
      begin
        TcxButtonEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
        setName();

      end;

    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothInfoInput.InitGrid();
begin

  with ADOQueryTemp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select *,CJDATE=DATEDIFF(dd,FILLTIME,GETDATE())  from V_BS_Cloth_Info where BCIID=''' + Trim(FBCIID) + '''');
    Open;
  end;

//  SCSHData(ADOQueryTemp, panel2, 2);
//  SCSHData(ADOQueryTemp, panel6, 2);
  if FCTID = 'CT2412300005' then
  begin
    SCSHData(ADOQueryTemp, panel2, 2);
    SCSHData(ADOQueryTemp, panel6, 2);
  end
  else
  begin
    SCSHData(ADOQueryTemp, panel2, 2);
  end;
  StkPosition.Text := ADOQueryTemp.FieldByName('StkPosition').AsString;
  qtyunit.Text := ADOQueryTemp.FieldByName('qtyunit').AsString;
//  SCSHData(ADOQueryTemp, ScrollBox1, 0);
  C_FromName.Properties.LookupItems.Text := Trim(ADOQueryTemp.fieldbyname('FromBCIID').AsString); //坯布编号
  C_FromName.Text := Trim(ADOQueryTemp.fieldbyname('C_FromName').AsString);    //坯布名称
  Process.Text := Trim(ADOQueryTemp.fieldbyname('Process').AsString);    //加工方式

  C_FromName2.Properties.LookupItems.Text := Trim(ADOQueryTemp.fieldbyname('C_FromName2').AsString); //坯布编号
  C_FromName2.Text := Trim(ADOQueryTemp.fieldbyname('C_FromName2').AsString);    //坯布名称
  Process2.Text := Trim(ADOQueryTemp.fieldbyname('Process2').AsString);    //加工方式

  C_FromName3.Properties.LookupItems.Text := Trim(ADOQueryTemp.fieldbyname('C_FromName3').AsString); //坯布编号
  C_FromName3.Text := Trim(ADOQueryTemp.fieldbyname('C_FromName3').AsString);    //坯布名称
  Process3.Text := Trim(ADOQueryTemp.fieldbyname('Process3').AsString);    //加工方式

  C_FromName4.Properties.LookupItems.Text := Trim(ADOQueryTemp.fieldbyname('C_FromName4').AsString); //坯布编号
  C_FromName4.Text := Trim(ADOQueryTemp.fieldbyname('C_FromName4').AsString);    //坯布名称
  Process4.Text := Trim(ADOQueryTemp.fieldbyname('Process4').AsString);    //加工方式

  C_FromName5.Properties.LookupItems.Text := Trim(ADOQueryTemp.fieldbyname('C_FromName5').AsString); //坯布编号
  C_FromName5.Text := Trim(ADOQueryTemp.fieldbyname('C_FromName5').AsString);    //坯布名称
  Process5.Text := Trim(ADOQueryTemp.fieldbyname('Process5').AsString);    //加工方式

  if ADOQueryTemp.fieldbyname('CJDATE').AsInteger <= 7 then
  begin
    if TypeInt = 2 then
    begin
      if fbuzhongedit = '编辑' then
      begin
        C_Spec.Enabled := True;
        C_Composition.Enabled := True;
        GC_Name.Enabled := True;
        C_EComposition.Enabled := True;
      end
      else
      begin
        C_Spec.Enabled := False;
        C_Composition.Enabled := False;
        GC_Name.Enabled := False;
        C_EComposition.Enabled := False;
      end;
    end;

  end;

end;

procedure TfrmClothInfoInput.C_COLORPropertiesChange(Sender: TObject);
begin
  if ado_1.Active = False then
    Exit;
  SDofilter(ado_1, SGetFilters(Panel7, 1, 2));
  SCreateCDS(ado_1, CDS_1);
  SInitCDSData(ado_1, CDS_1);
end;

procedure TfrmClothInfoInput.C_FromName2PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  if C_fromName.text = '' then
  begin
    Application.MessageBox('请先选择主布及其加工方式！', '提示', 0);
    Exit;
  end;

  try
    frmClothInfoSel := TfrmClothInfoSel.Create(Application);
    with frmClothInfoSel do
    begin
//      FCTType := '坯布';
      if ShowModal = 1 then
      begin
        C_FromName2.Properties.LookupItems.Text := Trim(CDS_1.fieldbyname('BCIID').AsString);
        C_FromName2.Text := Trim(CDS_1.fieldbyname('C_Name').AsString);

        setName();
      end;
    end;
  finally
    frmClothInfoSel.Free;
  end;
end;

procedure TfrmClothInfoInput.C_FromName3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  if C_fromName2.text = '' then
  begin
    Application.MessageBox('请先选择次布1及其加工方式！', '提示', 0);
    Exit;
  end;
  try
    frmClothInfoSel := TfrmClothInfoSel.Create(Application);
    with frmClothInfoSel do
    begin
//      FCTType := '坯布';
      if ShowModal = 1 then
      begin
        C_FromName3.Properties.LookupItems.Text := Trim(CDS_1.fieldbyname('BCIID').AsString);
        C_FromName3.Text := Trim(CDS_1.fieldbyname('C_Name').AsString);

        setName();
      end;
    end;
  finally
    frmClothInfoSel.Free;
  end;
end;

procedure TfrmClothInfoInput.C_FromName4PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  if C_fromName3.text = '' then
  begin
    Application.MessageBox('请先选择次布2及其加工方式！', '提示', 0);
    Exit;
  end;
  try
    frmClothInfoSel := TfrmClothInfoSel.Create(Application);
    with frmClothInfoSel do
    begin
//      FCTType := '坯布';
      if ShowModal = 1 then
      begin
        C_FromName4.Properties.LookupItems.Text := Trim(CDS_1.fieldbyname('BCIID').AsString);
        C_FromName4.Text := Trim(CDS_1.fieldbyname('C_Name').AsString);

        setName();
      end;
    end;
  finally
    frmClothInfoSel.Free;
  end;
end;

procedure TfrmClothInfoInput.C_FromName5PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  if C_fromName4.text = '' then
  begin
    Application.MessageBox('请先选择次布3及其加工方式！', '提示', 0);
    Exit;
  end;
  try
    frmClothInfoSel := TfrmClothInfoSel.Create(Application);
    with frmClothInfoSel do
    begin
//      FCTType := '坯布';
      if ShowModal = 1 then
      begin
        C_FromName5.Properties.LookupItems.Text := Trim(CDS_1.fieldbyname('BCIID').AsString);
        C_FromName5.Text := Trim(CDS_1.fieldbyname('C_Name').AsString);

        setName();
      end;
    end;
  finally
    frmClothInfoSel.Free;
  end;
end;

procedure TfrmClothInfoInput.C_FromNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmClothInfoSel := TfrmClothInfoSel.Create(Application);
    with frmClothInfoSel do
    begin
//      FCTType := '坯布';
      if ShowModal = 1 then
      begin
        C_FromName.Properties.LookupItems.Text := Trim(CDS_1.fieldbyname('BCIID').AsString);
        C_FromName.Text := Trim(CDS_1.fieldbyname('C_Name').AsString);
        setName();

        addColor();

      end;
    end;
  finally
    frmClothInfoSel.Free;
  end;
end;

procedure TfrmClothInfoInput.C_GramWeightDblClick(Sender: TObject);
begin
  TcxButtonEdit(Sender).Text := '';
  TcxButtonEdit(Sender).Properties.LookupItems.Text := '';
end;

procedure TfrmClothInfoInput.C_WidthPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
var
  fsj: string;
  FWZ: Integer;
begin
  fsj := Trim(TcxButtonEdit(Sender).Hint);
  FWZ := Pos('/', fsj);
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := Copy(fsj, 1, FWZ - 1);
      flagname := Copy(fsj, FWZ + 1, Length(fsj) - FWZ);
      if ShowModal = 1 then
      begin
        TcxButtonEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);

      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothInfoInput.FormShow(Sender: TObject);
begin
  readCxGrid(self.Caption + 'TV1', Tv1, '样品管理');

//  if FCTID = 'CT2412300005' then
  if canshu4 = '二次加工' then
  begin
    C_Name.Enabled := False;
    C_FromName.Enabled := True;
    C_FromName2.Enabled := True;
  end
  else
  begin
    C_Name.Enabled := True;
    C_FromName.Enabled := False;
    C_FromName2.Enabled := False;
    Panel6.Visible := False;
  end;
  with ADOQueryTemp do
  begin
    close;
    sql.Clear;
    sql.Add('select * from KH_ZDY where type=''StkPosition''');
    Open;
    if isEmpty then
    begin
      exit;
    end;
    StkPosition.Properties.LookupItems.Clear;
    while not Eof do
    begin
      StkPosition.Properties.LookupItems.Add(Trim(fieldByName('zdyName').AsString));
      Next;
    end;

    StkPosition.ItemIndex := -1;
  end;

  with ADOQueryTemp do
  begin
    close;
    sql.Clear;
    sql.Add('select * from KH_ZDY where type=''qtyunit''');

    Open;
    if isEmpty then
    begin
      exit;
    end;
    qtyunit.Properties.LookupItems.Clear;
    while not Eof do
    begin

      qtyunit.Properties.LookupItems.Add(Trim(fieldByName('zdyName').AsString));
      Next;
    end;

    qtyunit.ItemIndex := -1;
  end;

  with CDS_LM do
  begin
    FieldDefs.Clear;
    FieldDefs.Add('LXH', ftInteger, 0);
    FieldDefs.Add('lCode', ftString, 40);
    FieldDefs.Add('LName', ftString, 40);
    close;
    CreateDataSet;
  end;

//  InitGrid2();
  InitGrid1();
  InitGrid();

  if TypeInt = 1 then
  begin
    FBCIID := '';
    BCIID.text := '';
    C_Code.text := '';

    ClearCDSColumn(CDS_1, ['BCISID', 'BCIID']);

    ClearCDSColumn(CDS_3, ['CICID', 'BCIID']);

    ClearCDSColumn(CDS_2, ['BCIGID', 'BCIID']);
  end;
  if canshu3 = '低权限' then
  begin
    HiddenTVColumn(TV1, 'floatPrice');
    HiddenTVColumn(TV1, 'referencePrice');
    CostPrice.Properties.ReadOnly := True;
    CostPrice.Properties.EchoMode := eemPassword;
  end;
end;

procedure TfrmClothInfoInput.TBCloseClick(Sender: TObject);
begin
  Close;
end;

function TfrmClothInfoInput.SaveData(): Boolean;
var
  MaxBCIID, MaxBCPID, maxId2, MAXID3, MAXID4, MAXID5: string;
begin
  try
    ADOQueryCmd.Connection.BeginTrans;
////////////////       保存主表          //////////////////////
    if Trim(FBCIID) = '' then
    begin
      if GetLSNo(ADOQueryCmd, MaxBCIID, 'Y', 'BS_Cloth_Info', 4, 1) = False then
        raise Exception.Create('取最大号失败!');

      BCIID.Text := trim(MaxBCIID);
    end
    else
    begin
      MaxBCIID := Trim(FBCIID);
      with ADOQueryCmd do
      begin
        Close;
        SQL.Clear;
        sql.Add('update BS_Cloth_Info set DelId=' + quotedstr(DCode) + ',Deler=' + quotedstr(DName) + ',Deltime=GETDATE() where BCIID=''' + Trim(MaxBCIID) + '''');
        sql.Add('insert into Bs_Cloth_Info_Log select * from BS_Cloth_Info where BCIID=''' + Trim(MaxBCIID) + '''');
        sql.Add('update BS_Cloth_Info set DelId=null,Deler=null,Deltime=null where BCIID=''' + Trim(MaxBCIID) + '''');
        ExecSQL;
      end;
    end;
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('select * from BS_Cloth_Info where BCIID=''' + Trim(FBCIID) + '''');
      Open;
    end;
    with ADOQueryCmd do
    begin
      if Trim(FBCIID) = '' then
      begin
        Append;
        FieldByName('CTID').Value := Trim(FCTID);
        FieldByName('FILLID').Value := Trim(DCode);
        FieldByName('FILLER').Value := Trim(DName);
        FieldByName('FILLTIME').Value := SGetServerDateTime(ADOQueryTemp);
      end
      else
      begin
        Edit;
        FieldByName('EDITER').Value := Trim(DName);
        FieldByName('EDITTIME').Value := SGetServerDateTime(ADOQueryTemp);
      end;
      FieldByName('BCIID').Value := Trim(MaxBCIID);

      FieldByName('StkPosition').Value := Trim(StkPosition.text);
      FieldByName('QTYUNIT').Value := Trim(QTYUNIT.text);

      if trim(C_Code.Text) = '' then
        C_Code.Text := Trim(MaxBCIID);

      if FCTID = 'CT2412300005' then
      begin
        RTSetsavedata(ADOQueryCmd, 'BS_Cloth_Info', panel2, 2);
        RTSetsavedata(ADOQueryCmd, 'BS_Cloth_Info', panel6, 2);
      end
      else
      begin
        RTSetsavedata(ADOQueryCmd, 'BS_Cloth_Info', panel2, 2);
      end;
      Post;
    end;
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select count(*) as AA from BS_Cloth_Info where C_Code=''' + Trim(C_Code.Text) + '''');
      Open;
      if FieldByName('AA').AsInteger > 1 then
        raise Exception.Create('编号重复!');

    end;
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select count(*) as AA from BS_Cloth_Info where C_name=''' + Trim(C_name.Text) + '''');
      Open;
      if FieldByName('AA').AsInteger > 1 then
        raise Exception.Create('名称重复!');

    end;
////////////////       保存主表          //////////////////////
///
////////////////       保存子布          //////////////////////
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('delete BS_Cloth_Info_Link where ToID=''' + Trim(MaxBCIID) + '''');
      ExecSQL;
    end;
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add('select * from BS_Cloth_Info_Link  where 1=2');
      Open;
    end;
    if Trim(C_FromName.Properties.LookupItems.Text) <> '' then
    begin
      with ADOQueryCmd do
      begin
        Append;
        FieldByName('ToID').Value := Trim(MaxBCIID);
        FieldByName('SerialNo').Value := 1;
        FieldByName('FromID').Value := Trim(C_FromName.Properties.LookupItems.Text);   // 坯布编号
        FieldByName('Process').Value := Trim(Process.Text);   // 工艺
        Post;
      end;
    end;

    if Trim(C_FromName2.Properties.LookupItems.Text) <> '' then
    begin
      with ADOQueryCmd do
      begin
        Append;
        FieldByName('ToID').Value := Trim(MaxBCIID);
        FieldByName('SerialNo').Value := 2;
        FieldByName('FromID').Value := Trim(C_FromName2.Properties.LookupItems.Text);   // 坯布编号
        FieldByName('Process').Value := Trim(Process2.Text);   // 工艺
        Post;
      end;
    end;

    if Trim(C_FromName3.Properties.LookupItems.Text) <> '' then
    begin
      with ADOQueryCmd do
      begin
        Append;
        FieldByName('ToID').Value := Trim(MaxBCIID);
        FieldByName('SerialNo').Value := 3;
        FieldByName('FromID').Value := Trim(C_FromName3.Properties.LookupItems.Text);   // 坯布编号
        FieldByName('Process').Value := Trim(Process3.Text);   // 工艺
        Post;
      end;
    end;

    if Trim(C_FromName4.Properties.LookupItems.Text) <> '' then
    begin
      with ADOQueryCmd do
      begin
        Append;
        FieldByName('ToID').Value := Trim(MaxBCIID);
        FieldByName('SerialNo').Value := 4;
        FieldByName('FromID').Value := Trim(C_FromName4.Properties.LookupItems.Text);   // 坯布编号
        FieldByName('Process').Value := Trim(Process4.Text);   // 工艺
        Post;
      end;
    end;

    if Trim(C_FromName5.Properties.LookupItems.Text) <> '' then
    begin
      with ADOQueryCmd do
      begin
        Append;
        FieldByName('ToID').Value := Trim(MaxBCIID);
        FieldByName('SerialNo').Value := 5;
        FieldByName('FromID').Value := Trim(C_FromName5.Properties.LookupItems.Text);   // 坯布编号
        FieldByName('Process').Value := Trim(Process5.Text);   // 工艺
        Post;
      end;
    end;
////////////////       保存子布          //////////////////////
///
////////////////       保存供应商名称          //////////////////////
    with CDS_2 do
    begin
      First;
      while not Eof do
      begin
        if Trim(CDS_2.fieldbyname('BCIGID').AsString) = '' then
        begin
          if GetLSNo(ADOQueryTemp, MAXID3, 'GS', 'BS_Cloth_Info_GYSCP', 4, 1) = False then
            raise Exception.Create('取最大号失败!');

        end
        else
        begin
          MAXID3 := Trim(CDS_2.fieldbyname('BCIGID').AsString);
        end;

        with ADOQueryCmd do
        begin
          Close;
          SQL.Clear;
          sql.Add(' select * from BS_Cloth_Info_GYSCP where ');
          sql.Add(' BCIGID=''' + Trim(MAXID3) + '''');
          Open;
        end;
        with ADOQueryCmd do
        begin
          if Trim(CDS_2.fieldbyname('BCIGID').AsString) = '' then
          begin
            Append;
            FieldByName('FillID').Value := Trim(DCode);
            FieldByName('Filler').Value := Trim(DName);
            FieldByName('FillTime').Value := SGetServerDateTime(ADOQueryTemp);
          end
          else
          begin
            Edit;

          end;
          FieldByName('BCIID').Value := Trim(MaxBCIID);
          FieldByName('BCIGID').Value := Trim(MAXID3);
          RTSetSaveDataCDS(ADOQueryCmd, Tv2, CDS_2, 'BS_Cloth_Info_GYSCP', 0);
          Post;
        end;
        Next;
      end;
    end;

    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      sql.Add(' update BS_Cloth_Info_Sub set referencePrice= ISNULL(floatPrice, 0) + ISNULL(CostPrice, 0) ');
      sql.Add(' from BS_Cloth_Info X ');
      sql.Add(' where X.BCIID=BS_Cloth_Info_Sub.BCIID AND  BS_Cloth_Info_Sub.BCIID =' + quotedstr(MaxBCIID));
      ExecSQL;
    end;



////////////////       保存供应商名称          //////////////////////
///
//////////////////////////            保存单位系数子表              //////////////////////////
    with CDS_3 do
    begin
      First;
      while not Eof do
      begin
        if Trim(CDS_3.fieldbyname('CICID').AsString) = '' then
        begin
          if GetLSNo(ADOQueryTemp, MAXID4, 'CIC', 'Bs_Cloth_Info_Coefficient', 4, 1) = False then
            raise Exception.Create('取最大号失败!');

        end
        else
        begin
          MAXID4 := Trim(CDS_3.fieldbyname('CICID').AsString);
        end;

        with ADOQueryCmd do
        begin
          Close;
          SQL.Clear;
          sql.Add(' select * from Bs_Cloth_Info_Coefficient where ');
          sql.Add(' CICID=''' + Trim(MAXID4) + '''');
          Open;
        end;
        with ADOQueryCmd do
        begin
          if Trim(CDS_3.fieldbyname('CICID').AsString) = '' then
          begin
            Append;
//            FieldByName('FillID').Value := Trim(DCode);
//            FieldByName('Filler').Value := Trim(DName);
//            FieldByName('FillTime').Value := SGetServerDateTime(ADOQueryTemp);
          end
          else
          begin
            Edit;

          end;
          FieldByName('BCIID').Value := Trim(MaxBCIID);
          FieldByName('CICID').Value := Trim(MAXID4);
          RTSetSaveDataCDS(ADOQueryCmd, Tv3, CDS_3, 'Bs_Cloth_Info_Coefficient', 0);
          Post;
        end;
        Next;
      end;
    end;
//////////////////////////            保存单位系数子表              //////////////////////////
///
///
///
///
///  //////////////////////////            保存子表颜色（复制时）            //////////////////////////

    if TypeInt = 1 then
    begin
      with CDS_1 do
      begin
        First;
        while not Eof do
        begin
          if Trim(CDS_1.fieldbyname('BCISID').AsString) = '' then
          begin
            if GetLSNo(ADOQueryTemp, MAXID5, 'YS', 'BS_Cloth_Info_Sub', 4, 1) = False then
              raise Exception.Create('取子流水号失败!');
          end
          else
          begin
            MAXID5 := Trim(CDS_1.fieldbyname('BCISID').AsString);
          end;

          with ADOQueryCmd do
          begin
            Close;
            SQL.Clear;
            sql.Add(' select * from BS_Cloth_Info_Sub where ');
            sql.Add(' BCISID=''' + Trim(MAXID5) + '''');
            Open;
          end;
          with ADOQueryCmd do
          begin
            if Trim(CDS_1.fieldbyname('BCISID').AsString) = '' then
            begin
              Append;
              FieldByName('FillID').Value := Trim(DCode);
              FieldByName('Filler').Value := Trim(DName);
              FieldByName('FillTime').Value := SGetServerDateTime(ADOQueryTemp);
            end
            else
            begin
              Edit;
              FieldByName('EditID').Value := Trim(DCode);
              FieldByName('Editer').Value := Trim(DName);
              FieldByName('EditTime').Value := SGetServerDateTime(ADOQueryTemp);
            end;
            FieldByName('BCIID').Value := Trim(MaxBCIID);
            FieldByName('BCISID').Value := Trim(MAXID5);
            RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_1, 'BS_Cloth_Info_Sub', 0);
            Post;
          end;
          Next;
        end;
      end;

    end;


//////////////////////////            保存子表颜色              //////////////////////////
    ADOQueryCmd.Connection.CommitTrans;
    if (fname <> '') and (fname <> (C_Name.Text)) then
    begin
      with ADOQueryCmd do
      begin
        Close;
        SQL.Clear;
        sql.Add(' exec P_BS_CloInfo_UpAlLNAME @BCIID=' + QuotedStr(trim(MaxBCIID)));
        Sql.Add(',@UpId=' + quotedstr(Trim(DCode)));
        Sql.Add(',@Uper=' + quotedstr(Trim(DName)));
        ExecSQL;
      end;

    end;

    FBCIID := MaxBCIID;

    Result := True;
  except
    Result := False;
    ADOQueryCmd.Connection.RollbackTrans;

    application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0);
  end;
end;

procedure TfrmClothInfoInput.CYJGGYBtnDnClick(Sender: TObject);
begin
  TBtnEditC(Sender).Text := '';
end;

procedure TfrmClothInfoInput.ToolButton10Click(Sender: TObject);
var
//  maxno: string;
  SqlStr: string;
begin
  if FBCIID = '' then
  begin
    Application.MessageBox('请先保存产品信息!', '提示', 0);
    Exit;
  end;

  try
    frmEdit := TfrmEdit.Create(Application);
    with frmEdit do
    begin
      FBCIID := Self.FBCIID;
      FBCISID := CDS_1.FieldByName('BCISID').Value;
      FPrice := StrToFloatDef(CostPrice.Text, 0);
      if ShowModal = 1 then
      begin
        InitGrid1();
      end;
    end;
  finally
    frmEdit.Free;
  end;
//  if GetLSNo(ADOQueryCmd, maxno, 'YS', 'BS_Cloth_Info_Sub', 4, 1) = False then
//  begin
//    Application.MessageBox('取号失败!', '提示', 0);
//    Exit;
//  end;
//  SqlStr := 'select A.* from BS_Cloth_Info_Sub A ';
//  SqlStr := SqlStr + ' where A.BCIID=''' + Trim(FBCIID) + '''';
//  SqlStr := SqlStr + ' ORDER BY      CASE  WHEN C_COLORNO NOT LIKE ''%[^0-9]%'' THEN dbo.getNum(C_Colorno)  ELSE 9999999999   ';
//  SqlStr := SqlStr + '   END ,C_ColorNo';
//
//  InitCDSData(ADO_4, CDS_4, Tv4, SqlStr, '', '');
//
//  Panel6.Visible := True;
//  CopyAddRow(Tv4, CDS_4);
//  with CDS_4 do
//  begin
//    append;
//    fieldbyname('BCIID').Value := FBCIID;
//    fieldbyname('BCISID').Value := maxno;
//    fieldbyname('floatPrice').Value := 0;
//    fieldbyname('referencePrice').value := StrToFloatDef(CostPrice.Text, 0);
//    Post;
//  end;
//  TV1Column5PropertiesEditValueChanged(Sender);

end;

procedure TfrmClothInfoInput.ToolButton11Click(Sender: TObject);
var
  excelApp, WorkBook: Variant;
  i, j, k, LX, ExcelRowCount: integer;
  maxId, FCPID, FCPName, t1, t2, t3, FFID: string;
begin
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('insert into BS_Cloth_Info_Sub_Del select * from BS_Cloth_Info_Sub where BCIID=''' + Trim(FBCIID) + '''');
    sql.Add('delete from BS_Cloth_Info_Sub where BCIID=''' + Trim(FBCIID) + '''');
    ExecSQL;
  end;

  CDS_1.EmptyDataSet;
  try
    excelApp := CreateOleObject('Excel.Application');
    openDialog1.Filter := '*.CSV;*.xls';
    if opendialog1.Execute then
    begin
      WorkBook := excelApp.WorkBooks.Open(OpenDialog1.FileName);
    end
    else
      exit;
    excelApp.Visible := false;
    ExcelRowCount := WorkBook.WorkSheets[1].UsedRange.Rows.Count;
  except
    application.MessageBox('加载EXCEL错误！', '错误信息', MB_ICONERROR);
    exit;
  end;

  CDS_LM.EmptyDataSet;

  for j := 0 to Tv1.ColumnCount - 1 do
  begin
    with CDS_LM do
    begin
      Append;
      FieldByName('LCode').Value := trim(Tv1.Columns[j].DataBinding.FieldName);
      FieldByName('LName').Value := trim(Tv1.Columns[j].Caption);
      Post;
    end;
  end;

  try
    for i := 1 to 50 do
    begin
      if trim(WorkBook.WorkSheets[1].Cells[1, i].value) = '' then
        continue;
      if CDS_LM.Locate('LName', trim(WorkBook.WorkSheets[1].Cells[1, i].value), []) then
      begin
        with CDS_LM do
        begin
          Edit;
          FieldByName('LXH').Value := i;
          Post;
        end;
      end;
    end;
  except
    application.MessageBox('加载数组错误！', '错误信息', MB_ICONERROR);
    exit;
  end;

  try
    for i := 2 to ExcelRowCount do
    begin
      with CDS_1 do
      begin
        Append;
        CDS_LM.First;
        while not CDS_LM.Eof do
        begin
          if CDS_LM.FieldByName('LXH').AsInteger > 0 then
            CDS_1.fieldbyname(CDS_LM.FieldByName('LCode').AsString).Value := WorkBook.WorkSheets[1].Cells[i, CDS_LM.FieldByName('LXH').AsInteger].Value;
          CDS_LM.Next;
        end;
        Post;
      end;
    end;
    WorkBook.Close;
    excelApp.Quit;
    excelApp := Unassigned;
    WorkBook := Unassigned;
  except
    WorkBook.Close;
    excelApp.Quit;
    excelApp := Unassigned;
    WorkBook := Unassigned;
    exit;
  end;

end;

procedure TfrmClothInfoInput.ToolButton12Click(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    Exit;

  if Application.MessageBox('确定要全部删除吗？', '提示', 32 + 4) <> IDYES then
    Exit;

  if Application.MessageBox('确认后即将全部删除是否确定操作', '提示', 32 + 4) <> IDYES then
    Exit;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('insert into BS_Cloth_Info_Sub_Del select * from BS_Cloth_Info_Sub where BCIID=''' + Trim(FBCIID) + '''');
    sql.Add('delete from BS_Cloth_Info_Sub where BCIID=''' + Trim(FBCIID) + '''');
    ExecSQL;
  end;

  CDS_1.EmptyDataSet;
end;

procedure TfrmClothInfoInput.ToolButton13Click(Sender: TObject);
var
  DwFlag: string;
begin
  DwFlag := trim(CDS_3.FieldByName('CICID').AsString);
  if CDS_3.Locate('IsDefault', true, []) then
  begin
    CDS_3.edit;
    CDS_3.FieldByName('IsDefault').value := false;
  end;
  if CDS_3.Locate('CICID', DwFlag, []) then
  begin
    CDS_3.edit;
    CDS_3.FieldByName('IsDefault').value := true;
  end;
end;

procedure TfrmClothInfoInput.ToolButton14Click(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    Exit;
  TcxGridToExcel(C_CODE.TEXT + '色号明细', cxGrid1);
end;

procedure TfrmClothInfoInput.ToolButton1Click(Sender: TObject);
var
  MC_Code: string;
begin
  ToolBar1.SetFocus;
  if trim(C_Code.Text) = '' then
  begin
    if GetLSNo(ADOQueryCmd, MC_Code, 'C', 'BS_Cloth_Info', 4, 0) = False then
    begin
      Application.MessageBox('取最大成品编号失败!', '提示', 0);
      Exit;
    end;
    C_Code.Text := MC_Code;
  end;

//  if CDS_1.IsEmpty then
//  begin
//    Application.MessageBox('请输入产品颜色明细!', '提示', 0);
//    Exit;
//  end;

  if FCTID = 'CT2412300005' then
  begin
    if Trim(C_FromName.Text) = '' then
    begin
      Application.MessageBox('请输入色布名称!', '提示', 0);
      Exit;
    end;

    setName();

  end
  else
  begin
    if Trim(C_Name.Text) = '' then
    begin
      Application.MessageBox('请输入色布名称!', '提示', 0);
      Exit;
    end;
  end;

  if Trim(StkPosition.Text) = '' then
  begin
    Application.MessageBox('请输入库位!', '提示', 0);
    Exit;
  end;
  if Trim(qtyunit.Text) = '' then
  begin
    Application.MessageBox('请输入计价单位!', '提示', 0);
    Exit;
  end;
  if cds_3.IsEmpty then
  begin
    Application.MessageBox('请输入单位!', '提示', 0);
    Exit;
  end
  else
  begin
    if CDS_3.Locate('CICUnit', null, []) = True then
    begin
      Application.MessageBox('请输入单位!', '提示', 0);
      Exit;
    end;
  end;



//  if CDS_1.Locate('C_Color', null, []) = True then
//  begin
//    Application.MessageBox('请输入颜色!', '提示', 0);
//    Exit;
//  end;
//  if CDS_1.Locate('C_ColorNo', null, []) = True then
//  begin
//    Application.MessageBox('请输入色号!', '提示', 0);
//    Exit;
//  end;

  if SaveData() then
  begin

    if (FCTID = 'CT2412300005') or (canshu4 = '二次加工') then
    begin
      if CDS_1.Locate('BCISID', null, []) then
        SaveColor();
    end;

    Application.MessageBox('保存成功！', '提示', 0);

    if not CDS_1.IsEmpty then
      ModalResult := 1;

    InitGrid1();
  end;
end;

procedure TfrmClothInfoInput.ToolButton2Click(Sender: TObject);
begin
  WriteCxGrid(self.Caption + 'TV1', Tv1, '样品管理');
end;

procedure TfrmClothInfoInput.ToolButton3Click(Sender: TObject);
var
  SqlStr: string;
begin
  if FBCIID = '' then
  begin
    Application.MessageBox('请先保存产品信息!', '提示', 0);
    Exit;
  end;

  try
    frmEdit := TfrmEdit.Create(Application);
    with frmEdit do
    begin
      FBCIID := Self.FBCIID;
      FBCISID := '';
      FPrice := StrToFloatDef(CostPrice.Text, 0);
      if ShowModal = 1 then
      begin
        InitGrid1();
      end;
    end;
  finally
    frmEdit.Free;
  end;

//  SqlStr := 'select A.* from BS_Cloth_Info_Sub A ';
//  SqlStr := SqlStr + ' where 1<>1 ';
//
//  InitCDSData(ADO_4, CDS_4, Tv4, SqlStr, '', '');
//  Panel6.Visible := True;
//  CopyAddRow(Tv4, CDS_4);
//  with CDS_4 do
//  begin
//    append;
//    fieldbyname('BCIID').Value := FBCIID;
////    fieldbyname('BCISID').Value := maxno;
//    fieldbyname('floatPrice').Value := 0;
//    fieldbyname('referencePrice').value := StrToFloatDef(CostPrice.Text, 0);
//    Post;
//  end;
//  TV1Column5PropertiesEditValueChanged(Sender);

end;

procedure TfrmClothInfoInput.ToolButton4Click(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    Exit;

  if Trim(CDS_1.fieldbyname('BCISID').AsString) <> '' then
  begin
    if Application.MessageBox('确定要删除数据吗？', '提示', 32 + 4) <> IDYES then
      Exit;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('insert into BS_Cloth_Info_Sub_Del select * from BS_Cloth_Info_Sub where BCISID=''' + Trim(CDS_1.fieldbyname('BCISID').AsString) + '''');
      sql.Add('delete from BS_Cloth_Info_Sub where BCISID=''' + Trim(CDS_1.fieldbyname('BCISID').AsString) + '''');
      ExecSQL;
    end;
  end;

  CDS_1.Delete;

end;

procedure TfrmClothInfoInput.ToolButton5Click(Sender: TObject);
var
  maxno: string;
begin

//  if GetLSNo(ADOQueryCmd, maxno, 'YS', 'BS_Cloth_Info_Sub', 4, 1) = False then
//  begin
//    Application.MessageBox('取号失败!', '提示', 0);
//    Exit;
//  end;


  with CDS_2 do
  begin
    APPEND;
    fieldbyname('BCIGID').Value := NULL;

    Post;
  end;
end;

procedure TfrmClothInfoInput.Button1Click(Sender: TObject);
begin
  CDS_4.EmptyDataSet;
//  Panel6.Visible := False;
end;

procedure TfrmClothInfoInput.CostPriceClick(Sender: TObject);
begin
  CostPrice.text := '';
end;

procedure TfrmClothInfoInput.CostPricePropertiesEditValueChanged(Sender: TObject);
var
  mvalue, FFieldName: string;
  MCostPrice, MfloatPrice: Double;
begin
  with CDS_1 do
  begin

    First;
    while not eof do
    begin

      with CDS_1 do
      begin
        MCostPrice := StrToFloatDef(CostPrice.Text, 0);
        MfloatPrice := Fieldbyname('floatPrice').AsFloat;
      end;

      with CDS_1 do
      begin
        Edit;
        FieldByName('referencePrice').Value := MfloatPrice + MCostPrice;
        Post;
      end;
      tv1.Controller.EditingController.ShowEdit();
      next;
    end;

  end;
end;

procedure TfrmClothInfoInput.cxGridDBColumn1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmCompanySel := TfrmCompanySel.Create(Application);
    with frmCompanySel do
    begin
      FCoType := '供应商';
      if ShowModal = 1 then
      begin
        with CDS_2 do
        begin
          edit;
          FieldByName('FACTORYNAME').AsString := Trim(CDS_1.fieldbyname('CoName').AsString);
        end;

      end;
    end;
  finally
    frmCompanySel.Free;
  end;
end;

procedure TfrmClothInfoInput.cxGridDBColumn3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'CICUnit';
      flagname := '单位';
      MainType := '单位系数';
      if ShowModal = 1 then
      begin
        with Self.CDS_3 do
        begin
          Edit;
          FieldByName('CICUnit').Value := Trim(frmZDYHelp.ClientDataSet1.fieldbyname('ZdyName').AsString);
        end;
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

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

procedure TfrmClothInfoInput.ToolButton6Click(Sender: TObject);
begin
  if trim(C_Code.Text) = '' then
    Exit;
  try
    frmAttachmentUpload := TfrmAttachmentUpload.Create(Application);
    with frmAttachmentUpload do
    begin
      FEditAuthority := True;
      fkeyNO := trim(C_Code.Text);
      fType := '产品品档案';
      if ShowModal = 1 then
      begin

      end;
    end;
  finally
    frmAttachmentUpload.Free;
  end;
end;

procedure TfrmClothInfoInput.ToolButton7Click(Sender: TObject);
begin
  if CDS_2.IsEmpty then
    Exit;

  if Trim(CDS_2.fieldbyname('BCIGID').AsString) <> '' then
  begin
    if Application.MessageBox('确定要删除数据吗？', '提示', 32 + 4) <> IDYES then
      Exit;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('delete from BS_Cloth_Info_GYSCP where BCIGID=''' + Trim(CDS_1.fieldbyname('BCIGID').AsString) + '''');
      ExecSQL;
    end;
  end;

  CDS_2.Delete;
end;

procedure TfrmClothInfoInput.ToolButton8Click(Sender: TObject);
var
  maxno: string;
begin

//  if GetLSNo(ADOQueryCmd, maxno, 'YS', 'BS_Cloth_Info_Sub', 4, 1) = False then
//  begin
//    Application.MessageBox('取号失败!', '提示', 0);
//    Exit;
//  end;


  with CDS_3 do
  begin
    APPEND;
    fieldbyname('CICID').Value := NULL;

    Post;
  end;
end;

procedure TfrmClothInfoInput.ToolButton9Click(Sender: TObject);
begin
  if CDS_3.IsEmpty then
    Exit;

  if Trim(CDS_3.fieldbyname('CICID').AsString) <> '' then
  begin
    if Application.MessageBox('确定要删除数据吗？', '提示', 32 + 4) <> IDYES then
      Exit;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('delete from Bs_Cloth_Info_Coefficient where CICID=''' + Trim(CDS_3.fieldbyname('CICID').AsString) + '''');
      ExecSQL;
    end;
  end;

  CDS_3.Delete;
end;

procedure TfrmClothInfoInput.TV1Column5PropertiesEditValueChanged(Sender: TObject);
var
  mvalue, FFieldName: string;
  MCostPrice, MfloatPrice: Double;        //个数，单价，金额
begin
  mvalue := TcxTextEdit(Sender).EditingText;
  if Trim(mvalue) = '' then
  begin
    mvalue := '0';
  end;
  FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
  MCostPrice := StrToFloatDef(CostPrice.Text, 0);
  with CDS_1 do
  begin
    Edit;
    FieldByName(FFieldName).Value := Trim(mvalue);
    Post;
    MfloatPrice := Fieldbyname('floatPrice').AsFloat;
  end;

  with CDS_1 do
  begin
    Edit;
    FieldByName('referencePrice').Value := MfloatPrice + MCostPrice;
    Post;
  end;
  tv1.Controller.EditingController.ShowEdit();
end;

end.

