unit U_ClothInfo;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB,
  cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin, StdCtrls,
  cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls,
  cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid,
  cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common,
  RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdFTP, ShellAPI, IniFiles, cxCheckBox, jpeg, U_SLT, ComObj, Menus,
  cxLookAndFeels, cxLookAndFeelPainters, cxTLdxBarBuiltInMenu, cxNavigator,
  dxBarBuiltInMenu, cxPC, Math, RM_BarCode, dxSkinsCore, dxSkinsDefaultPainters,
  dxDateRanges, IdExplicitTLSClientServerBase, U_BaseList, cxContainer,
  dxDBBarCode, dxBarCode, Vcl.Clipbrd, cxTextEdit, BtnEdit, StrUtils,
  cxButtonEdit;

type
  FdDy = record
    inc: integer; //客户端套接字句柄
    FDdys: string[32]; //客户端套接字
    FdDysName: string[32]; //客户端套接字
  end;

  TfrmClothInfo = class(TfrmBaseList)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBDel: TToolButton;
    TBClose: TToolButton;
    DS_Tree: TDataSource;
    ADOQueryTree: TADOQuery;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    GPM_1: TcxGridPopupMenu;
    Tv1: TcxGridDBTableView;
    cxGrid1Level1: TcxGridLevel;
    cxGrid1: TcxGrid;
    cxSplitter1: TcxSplitter;
    Panel1: TPanel;
    TBFilter: TToolButton;
    v1CYNo: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    DS_1: TDataSource;
    ADOQueryMain: TADOQuery;
    CDS_1: TClientDataSet;
    v1Column12: TcxGridDBColumn;
    TBExport: TToolButton;
    RM1: TRMGridReport;
    RMDB_Main: TRMDBDataSet;
    ODPat: TOpenDialog;
    IdFTP1: TIdFTP;
    SaveDialog1: TSaveDialog;
    TBUP: TToolButton;
    Label3: TLabel;
    C_Code: TEdit;
    TBCopy: TToolButton;
    Panel2: TPanel;
    v1SSel: TcxGridDBColumn;
    DSCYNO: TDataSource;
    CDS_CYNO: TClientDataSet;
    Panel5: TPanel;
    cxDBTreeList1: TcxDBTreeList;
    cxDBTreeList1cxDBTreeListColumn2: TcxDBTreeListColumn;
    Label11: TLabel;
    Label12: TLabel;
    Panel3: TPanel;
    adoqueryPicture: TADOQuery;
    v1Column1: TcxGridDBColumn;
    v1Column9: TcxGridDBColumn;
    Label4: TLabel;
    C_Name: TEdit;
    TBAdd: TToolButton;
    TBEdit: TToolButton;
    TBMLEdit: TToolButton;
    OpenDialog1: TOpenDialog;
    Label9: TLabel;
    C_GramWeight: TEdit;
    Label8: TLabel;
    C_Width: TEdit;
    PM_1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    v1Column11: TcxGridDBColumn;
    Panel7: TPanel;
    Panel4: TPanel;
    Label14: TLabel;
    LBCPAP1: TLabel;
    Button1: TButton;
    Button2: TButton;
    TCBNOR1: TComboBox;
    RMBarCodeObject1: TRMBarCodeObject;
    Tv1Column5: TcxGridDBColumn;
    Tv1Column6: TcxGridDBColumn;
    Tv1Column7: TcxGridDBColumn;
    ToolButton1: TToolButton;
    DataSource3: TDataSource;
    CDS_Sub: TClientDataSet;
    Tv1Column2: TcxGridDBColumn;
    Tv1Column9: TcxGridDBColumn;
    Tv1Column11: TcxGridDBColumn;
    cxGridPopupMenu2: TcxGridPopupMenu;
    ToolButton2: TToolButton;
    N3: TMenuItem;
    Panel9: TPanel;
    Panel10: TPanel;
    GroupBox1: TGroupBox;
    ScrollBox1: TScrollBox;
    CDS_Tree: TClientDataSet;
    ADOQueryPrint: TADOQuery;
    CDS_Label: TClientDataSet;
    Tv1Column1: TcxGridDBColumn;
    ToolButton3: TToolButton;
    Tv1Column3: TcxGridDBColumn;
    Tv1Column8: TcxGridDBColumn;
    Panel6: TPanel;
    cxGrid2: TcxGrid;
    TV2: TcxGridDBTableView;
    Tv1Column4: TcxGridDBColumn;
    cxGridDBColumn1: TcxGridDBColumn;
    cxGridDBColumn2: TcxGridDBColumn;
    cxGridDBColumn3: TcxGridDBColumn;
    cxGridDBColumn4: TcxGridDBColumn;
    cxGridDBColumn5: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    ToolBar3: TToolBar;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    CDS_GX: TClientDataSet;
    DataSource2: TDataSource;
    ADOQuery1: TADOQuery;
    ToolButton6: TToolButton;
    Panel8: TPanel;
    CTName: TEdit;
    Label1: TLabel;
    ToolButton9: TToolButton;
    RMDB_1: TRMDBDataSet;
    Tv1Column10: TcxGridDBColumn;
    TV2Column1: TcxGridDBColumn;
    TV2Column2: TcxGridDBColumn;
    Label2: TLabel;
    BCIID: TEdit;
    RMDB_Main1: TRMDBDataSet;
    ADOQueryPrint1: TADOQuery;
    TV2Column3: TcxGridDBColumn;
    TV2Column4: TcxGridDBColumn;
    Tv1Column12: TcxGridDBColumn;
    Tv1Column13: TcxGridDBColumn;
    Tv1Column14: TcxGridDBColumn;
    TV2Column5: TcxGridDBColumn;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure cxDBTreeList1DblClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure TBFilterClick(Sender: TObject);
    procedure CYNoChange(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure TBUPClick(Sender: TObject);
    procedure TBCopyClick(Sender: TObject);
    procedure C_CodeKeyPress(Sender: TObject; var Key: Char);
    procedure TBAddClick(Sender: TObject);
    procedure TBEditClick(Sender: TObject);
    procedure TBMLEditClick(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure TCBNOR1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
    procedure ToolButton2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure TextEdit(Sender: TObject);
    procedure HXNameBtnUpClick(Sender: TObject);
    procedure HXNameBtnDnClick(Sender: TObject);
    procedure cbbHXChange(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure ToolButton7Click(Sender: TObject);
    procedure ToolButton8Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure cxGridDBColumn5PropertiesEditValueChanged(Sender: TObject);
    procedure cxGridDBColumn1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure cxGridDBColumn3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure CTNameChange(Sender: TObject);
    procedure ToolButton9Click(Sender: TObject);
    procedure BCIIDKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
    CurrentPage, RecordsNumber: Integer;
    CTID: string;
    PState: Integer;
    FCTID, FTopID, FJurisdiction, FCTType: string;

    procedure SetStatus();
    procedure InitTree();
    procedure InitGrid();
    procedure InitSub();
    procedure ReadINIFile();
    procedure InitImage();
    procedure LookImage(FileName: string);

  public
    dFdDy: array[0..20] of FdDy; //客户端连接数组
    { Public declarations }
  end;

var
  Mach: array of TfrmSlt;

implementation

uses
  U_DataLink, U_RTFun, U_ClothInfoInput, U_CloInfoFileUp, U_ClothTypeSel,
  U_ZDYHelp, U_LabelPrint, U_PatternSel;

{$R *.dfm}

procedure TfrmClothInfo.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
    application.ProcessMessages;
    try
//      ShowMessage(PChar(Trim('D:\' + Trim(FileName))));
      IdFTP1.Get(Trim(UserDataFlag + 'YP\' + 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 TfrmClothInfo.SetStatus();
begin
  TBAdd.Enabled := False;
  TBCopy.Enabled := False;
  TBEdit.Enabled := False;
  TBMLEdit.Enabled := False;
  TBDel.Enabled := False;
  TBUP.Enabled := False;
  if FJurisdiction <> '查询' then
  begin
    TBAdd.Enabled := true;
    TBCopy.Enabled := true;
    TBEdit.Enabled := true;
    TBMLEdit.Enabled := true;
    TBDel.Enabled := true;
    TBUP.Enabled := true;
  end;
end;

procedure TfrmClothInfo.InitTree();
begin
  with ADOQueryTree do
  begin
    Close;
    SQL.Clear;
    sql.add('update Bs_Cloth_Type set ctcount= (select count(*) from V_BS_Cloth_Info A inner join (select *  from [dbo].[F_BS_CloType](Bs_Cloth_Type.CTID ) ) B on A.CTID=B.CTID)');
    SQL.Add('select CTName=CTName+''(''+cast(CTCount as varchar(10))+'')'',* from BS_Cloth_Type A where CTType=' + quotedstr(FCTType));
    sql.Add(' order by A.CTName');
    Open;
  end;
  SCreateCDS(ADOQueryTree, CDS_Tree);
  SInitCDSData(ADOQueryTree, CDS_Tree);
  cxDBTreeList1.Items[0].Expand(false);
end;

procedure TfrmClothInfo.InitGrid();
var
  fwhere, MBCIID, Pwhere: string;
begin
  Panel2.Visible := True;
  Panel2.Refresh;
  if not CDS_1.IsEmpty then
    MBCIID := Trim(CDS_1.FieldByName('BCIID').AsString)
  else
    MBCIID := '';

  Pwhere := SGetFilters(Panel1, 1, 2);

  if trim(Pwhere) <> '' then
  begin
    if fwhere <> '' then
      fwhere := fwhere + ' and ' + trim(Pwhere)
    else
      fwhere := ' where ' + trim(Pwhere);
  end;
  try
    ADOQueryMain.DisableControls;

    with ADOQueryMain do
    begin
      Close;
      Filtered := False;
      sql.Clear;
      sql.Add(' exec P_BS_CloInfo_Get  ');
      sql.Add(' @CTID=' + quotedstr(Trim(CDS_Tree.fieldbyname('CTID').AsString)));
      sql.Add(',@pageIndex=' + inttostr(CurrentPage));
      sql.Add(',@pageSize=' + inttostr(RecordsNumber));
      sql.Add(',@criteria= ' + quotedstr(fwhere));
//      ShowMessage(sql.Text);
      Open;
    end;
//    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
    SCreateCDS(ADOQueryMain, CDS_1);
    SInitCDSData(ADOQueryMain, CDS_1);
    TV1.DataController.Filter.Clear;
    LBCPAP1.Caption := inttostr(CurrentPage) + '/' + inttostr(ceil(CDS_1.FieldByName('TotalCount').AsInteger / RecordsNumber));

  finally
    ADOQueryMain.EnableControls;
    TV1.DataController.Filter.Clear;
  end;
  Panel2.Visible := False;

  if MBCIID <> '' then
    CDS_1.Locate('BCIID', MBCIID, []);

end;

procedure TfrmClothInfo.InitSub();
begin
  if cds_1.IsEmpty then
    exit;

  with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from BS_Cloth_Glide where BCIID=''' + Trim(cds_1.FieldByName('BCIID').AsString) + '''');
    Open;
  end;
  SCreateCDS(ADOQuery1, CDS_GX);
  SInitCDSData(ADOQuery1, CDS_GX);
end;

procedure TfrmClothInfo.FormClose(Sender: TObject; var Action: TCloseAction);
var
  i, j: integer;
begin
  inherited;
  j := length(Mach);
  if j > 0 then
  begin
    for i := 0 to j - 1 do
    begin
      Mach[i].free;
    end;
  end;
  SetLength(Mach, 0);
  Action := cafree;
end;

procedure TfrmClothInfo.FormCreate(Sender: TObject);
begin
  inherited;
  FJurisdiction := Trim(Self.fParameters1);
  FCTType := Trim(self.fParameters2);
end;

procedure TfrmClothInfo.TBCloseClick(Sender: TObject);
begin

  if DirectoryExists(ExtractFileDir('D:\Right1209')) then
    winexec('cmd /c rd /s /q D:\Right1209', sw_hide);
  Close;
end;

procedure TfrmClothInfo.TBDelClick(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    Exit;
  if CDS_1.Locate('ssel', true, []) = false then
  begin
    Application.MessageBox('没有选择数据!', '提示', 0);
    Exit;
  end;
  if Application.MessageBox('确定要删除数据吗？', '提示', 32 + 4) <> IDYES then
    Exit;

  while CDS_1.Locate('SSel', true, []) do
  begin
    if Trim(CDS_1.fieldbyname('BCIID').AsString) <> '' then
    begin
      with ADOQueryCmd do
      begin
        Close;
        SQL.Clear;
        sql.Add('delete BS_Cloth_Info where BCIID=''' + Trim(CDS_1.fieldbyname('BCIID').AsString) + '''');
        sql.Add('delete BS_Cloth_Glide where BCIID=''' + Trim(CDS_1.fieldbyname('BCIID').AsString) + '''');
        ExecSQL;
      end;
    end;
    CDS_1.Delete;
  end;

end;

procedure TfrmClothInfo.FormShow(Sender: TObject);
begin
  inherited;

  ReadCxGrid(self.Caption + 'TV1', Tv1, '样品管理');

//  pnlreport.Top := FTop + 110;
  application.ProcessMessages;

  RecordsNumber := 500;
  CurrentPage := 1;
  InitTree();
  SetStatus();
  InitGrid();

  C_Name.SetFocus;
end;

procedure TfrmClothInfo.cbbHXChange(Sender: TObject);
begin
  InitImage();

end;

procedure TfrmClothInfo.CTNameChange(Sender: TObject);
var
  Fctname: string;
begin
  inherited;

  with ADOQueryTemp do
  begin
    close;
    sql.Clear;
    sql.Add('select * from BS_Cloth_Type where CTName like ''%' + trim(ctname.Text) + '%'' ');
    open;
  end;

  if ADOQueryTemp.IsEmpty then
    Fctname := ''
  else
    Fctname := ctname.Text;

  with ADOQueryTree do
  begin
    close;
    sql.Clear;
    sql.add('exec P_BS_CloInfo_Tree ''%' + trim(Fctname) + '%'' ');
    open;
  end;
  SCreateCDS(ADOQueryTree, CDS_Tree);
  SInitCDSData(ADOQueryTree, CDS_Tree);
  cxDBTreeList1.Items[0].Expand(false);
  cxDBTreeList1.fullexpand;

  CDS_Tree.Locate('CTName', ADOQueryTree.FieldByName('FirstName').AsString, [])
end;

procedure TfrmClothInfo.cxDBTreeList1DblClick(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmClothInfo.cxGridDBColumn1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  inherited;
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'GYName';
      flagname := '工序名称';
      fnote := true;
      V1Note.Caption := '工序编号';
      if ShowModal = 1 then
      begin
        with CDS_GX do
        begin
          edit;
          FieldByName('ProcessName').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
          FieldByName('ProcessNO').Value := Trim(ClientDataSet1.fieldbyname('Note').AsString);
          post;
        end;
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;

  toolbutton6.Click;
end;

procedure TfrmClothInfo.cxGridDBColumn3PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  inherited;
  try
    frmPatternSel := TfrmPatternSel.Create(Application);
    with frmPatternSel do
    begin
      if ShowModal = 1 then
      begin
        with CDS_GX do
        begin
          edit;
          FieldByName('PatternName').Value := Trim(Cds_1.fieldbyname('C_Name').AsString);
          FieldByName('PatternNO').Value := Trim(Cds_1.fieldbyname('C_Code').AsString);
          post;
        end;
      end;
    end;
  finally
    frmPatternSel.Free;
  end;

  toolbutton6.Click;
end;

procedure TfrmClothInfo.cxGridDBColumn5PropertiesEditValueChanged(Sender: TObject);
var
  mvalue, FFieldName: string;
begin
  mvalue := TcxTextEdit(Sender).EditingText;
  if Trim(mvalue) = '' then
  begin
    mvalue := '0';
  end;
  FFieldName := Trim(Tv2.Controller.FocusedColumn.DataBinding.FilterFieldName);
  with cds_gx do
  begin
    Edit;
    FieldByName(FFieldName).Value := Trim(mvalue);
    Post;
  end;

  tv2.Controller.EditingController.ShowEdit();

  ToolButton6.Click;
end;

procedure TfrmClothInfo.TBRafreshClick(Sender: TObject);
begin
  InitTree();
  InitGrid();
end;

procedure TfrmClothInfo.TBFilterClick(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
    SCreateCDS(ADOQueryMain, CDS_1);
    SInitCDSData(ADOQueryMain, CDS_1);
  end;

end;

procedure TfrmClothInfo.CYNoChange(Sender: TObject);
begin
  //if Length(Trim(TEdit(Sender).Text))<4 then Exit;
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
    SCreateCDS(ADOQueryMain, CDS_1);
    SInitCDSData(ADOQueryMain, CDS_1);
  end;

end;

procedure TfrmClothInfo.TBExportClick(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    Exit;
  TcxGridToExcel(self.Caption, cxGrid1);
end;

procedure TfrmClothInfo.TBUPClick(Sender: TObject);
var
  ffbciid: string;
begin
  ffbciid := Trim(Self.CDS_1.fieldbyname('BCIID').AsString);
  try
    frmCloInfoFileUp := TfrmCloInfoFileUp.Create(Application);
    with frmCloInfoFileUp do
    begin
      Code.Text := Trim(Self.CDS_1.fieldbyname('C_Code').AsString);
      FBCIID := Trim(Self.CDS_1.fieldbyname('BCIID').AsString);
      if ShowModal = 1 then
      begin

      end;
    end;
  finally
    frmCloInfoFileUp.Free;
  end;
  Self.InitGrid();
  Self.CDS_1.Locate('BCIID', ffbciid, []);
  InitImage();
end;

procedure TfrmClothInfo.ReadINIFile();
var
  programIni: Tinifile;  //配置文件名
  FileName: string;
begin
  FileName := ExtractFilePath(Paramstr(0)) + 'SYSTEMSET.INI';
  programIni := Tinifile.create(FileName);
  server := programIni.ReadString('SERVER', '服务器地址', '127.0.0.1');
  programIni.Free;
end;

procedure TfrmClothInfo.InitImage();
var
  i, j: integer;
  jpg: TJpegImage;
  myStream: TADOBlobStream;
begin

  j := length(Mach);
  if j > 0 then
  begin
    for i := 0 to j - 1 do
    begin
      Mach[i].free;
    end;
  end;
  SetLength(Mach, 0);
  if CDS_1.IsEmpty then
    exit;
  try
    with adoqueryPicture do
    begin
      close;
      sql.Clear;
      sql.Add(' select A.TFID,A.WBID,A.FilesOther,A.FileName from TP_File A  ');
      sql.add('where  A.WBID=' + quotedstr(trim(CDS_1.fieldbyname('BCIID').AsString)));
//      if Trim(cbbHX.Text) <> '' then
//        sql.add(' and A.HXName=' + quotedstr(trim(cbbHX.Text)));

      open;
    end;
    j := adoqueryPicture.RecordCount;
    if j < 1 then
      exit;
    adoqueryPicture.DisableControls;
    adoqueryPicture.First;
    SetLength(Mach, j);
    jpg := TJpegImage.Create();
    for i := 0 to j - 1 do
    begin
      if triM(adoqueryPicture.fieldbyname('FilesOther').AsString) <> '' then
      begin
        myStream := tadoblobstream.Create(tblobfield(adoqueryPicture.fieldbyname('FilesOther')), bmread);
        jpg.LoadFromStream(myStream);
        Mach[i] := TfrmSlt.Create(Self);
        Mach[i].Name := trim(adoqueryPicture.fieldbyname('TFID').AsString);
        Mach[i].Parent := ScrollBox1;
        Mach[i].Left := 0 + i * 165;
        Mach[i].Init(adoqueryPicture.fieldbyname('TFID').AsString, adoqueryPicture.fieldbyname('FileName').AsString, jpg);
      end;
      adoqueryPicture.Next;
    end;
    adoqueryPicture.EnableControls;
  finally
    jpg.free;
    application.ProcessMessages;
  end;
end;

procedure TfrmClothInfo.TBCopyClick(Sender: TObject);
begin
  try
    frmClothInfoInput := TfrmClothInfoInput.Create(Application);
    with frmClothInfoInput do
    begin
      CopyInt := 1;
      FBCIID := Trim(Self.CDS_1.fieldbyname('BCIID').AsString);
      with Self.ADOQueryTemp do
      begin
        Close;
        sql.Clear;
        sql.Add('select * from BS_Cloth_Type where CTID = ''' + Trim(Self.CDS_1.fieldbyname('CTID').AsString) + ''' ');
        open;
      end;
      FCTID := Trim(Self.CDS_1.fieldbyname('CTID').AsString);
      FCTNO := Trim(Self.ADOQueryTemp.fieldbyname('CTNO').AsString);
      Fctname := Trim(Self.ADOQueryTemp.fieldbyname('CTName').AsString);

      if ShowModal = 1 then
      begin
        Self.InitGrid();
      end;
    end;
  finally
    frmClothInfoInput.Free;
  end;
end;

procedure TfrmClothInfo.C_CodeKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    CurrentPage := 1;
    InitGrid();
  end;
end;

procedure TfrmClothInfo.TBAddClick(Sender: TObject);
var
  i: Integer;
  FieldName: string;
begin
  try
    frmClothInfoInput := TfrmClothInfoInput.Create(Application);
    with frmClothInfoInput do
    begin
      CopyInt := 0;
      FBCIID := '';
      FCTID := Trim(Self.CDS_Tree.fieldbyname('CTID').AsString);
      FCTNO := Trim(Self.CDS_Tree.fieldbyname('CTNO').AsString);
      Fctname := Trim(Self.CDS_Tree.fieldbyname('CTName').AsString);

      if ShowModal = 1 then
      begin
        Self.InitGrid();
      end;
    end;
  finally
    frmClothInfoInput.Free;
  end;
end;

procedure TfrmClothInfo.TBEditClick(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    Exit;
  try
    frmClothInfoInput := TfrmClothInfoInput.Create(Application);
    with frmClothInfoInput do
    begin
      CopyInt := 0;
      FBCIID := Trim(Self.CDS_1.fieldbyname('BCIID').AsString);
      with Self.ADOQueryTemp do
      begin
        Close;
        sql.Clear;
        sql.Add('select * from BS_Cloth_Type where CTID = ''' + Trim(Self.CDS_1.fieldbyname('CTID').AsString) + ''' ');
        open;
      end;
      FCTID := Trim(Self.CDS_1.fieldbyname('CTID').AsString);
      FCTNO := Trim(Self.ADOQueryTemp.fieldbyname('CTNO').AsString);
      Fctname := Trim(Self.ADOQueryTemp.fieldbyname('CTName').AsString);
      if ShowModal = 1 then
      begin
        Self.InitGrid();
      end;
    end;
  finally
    frmClothInfoInput.Free;
  end;
end;

procedure TfrmClothInfo.TextEdit(Sender: TObject);
var
  mvalue, FFieldName: string;
begin

  mvalue := TcxTextEdit(Sender).EditingText;
  FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName);
  with CDS_1 do
  begin
    Edit;
    FieldByName(FFieldName).Value := mvalue;
    Post;

  end;
  if mvalue = '' then
    mvalue := '0';

  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('update BS_Cloth_Info set  ' + FFieldName + '=' + (Trim(mvalue)));
    sql.Add('where   BCIID=' + quotedstr(Trim(CDS_1.fieldbyname('BCIID').AsString)));
    ExecSQL;
  end;
  Tv1.Controller.EditingController.ShowEdit();
end;

procedure TfrmClothInfo.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
var
  fsj: string;
begin
//  fsj := 'select DISTINCT HXNAME name from TP_File where  ISNULL(HXNAME,'''')<>'''' AND  WBID=' + quotedstr(trim(CDS_1.fieldbyname('BCIID').AsString));
//
//  SInitComBoxBySql(ADOQueryTemp, cbbHX, True, fsj);
  initsub();
  InitImage();
end;

procedure TfrmClothInfo.TBMLEditClick(Sender: TObject);
var
  MCTID: string;
begin
  if CDS_1.IsEmpty then
    exit;
  if CDS_1.Locate('ssel', true, []) = false then
  begin
    Application.MessageBox('没有选择数据!', '提示', 0);
    Exit;
  end;
  MCTID := '';
  try
    frmClothTypeSel := TfrmClothTypeSel.create(self);
    with frmClothTypeSel do
    begin
      FCTType := Self.FCTType;
      if showmodal = 1 then
      begin
        MCTID := trim(frmClothTypeSel.cds_tree.fieldbyname('CTID').asstring);
      end;
    end;
  finally
    frmClothTypeSel.free;
  end;

  if trim(MCTID) <> '' then
  begin
    try
      with CDS_1 do
      begin
        DisableControls;
        First;
        while not eof do
        begin
          if fieldbyname('ssel').AsBoolean then
          begin
            with ADOQueryCmd do
            begin
              close;
              sql.Clear;
              sql.Add('update  BS_Cloth_Info SET CTID=''' + trim(MCTID) + ''' ');
              sql.Add('where BCIID=' + quotedstr(trim(CDS_1.fieldbyname('BCIID').AsString)));
              execsql;
            end;

            with ADOQueryCmd do
            begin
              close;
              sql.Clear;
              SQL.Add('exec P_BS_CloInfo_Code @BCIID=' + quotedstr(trim(CDS_1.fieldbyname('BCIID').AsString)));
              Open;
            end;
          end;
          next;
        end;
        First;
        EnableControls;
      end;
      application.MessageBox('操作成功！', '提示信息');
      initGrid();
    except
      CDS_1.EnableControls;
      application.MessageBox('操作失败！', '提示信息', 0);
    end;
  end;

end;

procedure TfrmClothInfo.N1Click(Sender: TObject);
begin
  SelOKNoFiler(Tv1, True);
end;

procedure TfrmClothInfo.N2Click(Sender: TObject);
begin
  SelOKNoFiler(Tv1, False);
end;

procedure TfrmClothInfo.N3Click(Sender: TObject);
begin
  Clipboard.SetTextBuf(PChar(Trim(CDS_1.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));
end;

procedure TfrmClothInfo.TCBNOR1Change(Sender: TObject);
begin
  RecordsNumber := StrToInt(TCBNOR1.Text);
  CurrentPage := 1;
  C_Code.SetFocus;
  InitGrid();
end;

procedure TfrmClothInfo.HXNameBtnDnClick(Sender: TObject);
begin
  TBtnEditC(Sender).Text := '';
  TBtnEditC(Sender).TxtCode := '';

end;

procedure TfrmClothInfo.HXNameBtnUpClick(Sender: TObject);
begin
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'HX' + Trim(Self.CDS_1.fieldbyname('CYNO').AsString);
      flagname := '花型';
      if ShowModal = 1 then
      begin
        TEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TfrmClothInfo.BCIIDKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if Key = #13 then
  begin
    try
      CurrentPage := 1;
      CDS_Tree.Locate('CTName', '产品列表', []);
      bciid.OnKeyPress := nil;
      InitGrid();
      BCIID.Text := '';
    finally
      bciid.OnKeyPress := BCIIDKeyPress;
    end;
  end;
end;

procedure TfrmClothInfo.Button1Click(Sender: TObject);
begin
  if CurrentPage > 1 then
    CurrentPage := CurrentPage - 1;
  InitGrid();
end;

procedure TfrmClothInfo.Button2Click(Sender: TObject);
begin
  if CurrentPage < CDS_1.FieldByName('TotalCount').AsInteger / RecordsNumber then
    CurrentPage := CurrentPage + 1;
  InitGrid();
end;

procedure TfrmClothInfo.ToolButton1Click(Sender: TObject);
begin
  try
    frmClothInfoInput := TfrmClothInfoInput.Create(Application);
    with frmClothInfoInput do
    begin
      CopyInt := 0;
      ToolButton1.Visible := False;
      FBCIID := Trim(Self.CDS_1.fieldbyname('BCIID').AsString);
      with Self.ADOQueryTemp do
      begin
        Close;
        sql.Clear;
        sql.Add('select * from BS_Cloth_Type where CTID = ''' + Trim(Self.CDS_1.fieldbyname('CTID').AsString) + ''' ');
//       showmessage(sql.Text);
        open;
      end;
      FCTID := Trim(Self.CDS_1.fieldbyname('CTID').AsString);
      FCTNO := Trim(Self.ADOQueryTemp.fieldbyname('CTNO').AsString);
      Fctname := Trim(Self.ADOQueryTemp.fieldbyname('CTName').AsString);
      if ShowModal = 1 then
      begin
        Self.InitGrid();
      end;
    end;
  finally
    frmClothInfoInput.Free;
  end;
end;

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

procedure TfrmClothInfo.ToolButton3Click(Sender: TObject);
var
  WSql: string;
begin
  if CDS_1.IsEmpty then
    Exit;
  Tv1.OnFocusedRecordChanged := nil;
  if CDS_1.Locate('SSel', True, []) = False then
  begin
    Tv1.OnFocusedRecordChanged := Tv1FocusedRecordChanged;
    Application.MessageBox('没有选择数据!', '提示', 0);
    Exit;
  end;

  WSql := '';
  CDS_1.DisableControls;

  with CDS_1 do
  begin
    First;
    while not Eof do
    begin
      if CDS_1.fieldbyname('SSel').AsBoolean then
      begin
        if WSql <> '' then
        begin
          WSql := WSql + ',' + quotedstr(Trim(CDS_1.fieldbyname('BCIID').AsString));
        end
        else
        begin
          WSql := quotedstr(Trim(CDS_1.fieldbyname('BCIID').AsString));
        end;
      end;
      Next;
    end;
  end;

  CDS_1.Locate('SSel', True, []);
  Tv1.OnFocusedRecordChanged := Tv1FocusedRecordChanged;
  CDS_1.EnableControls;

  try
    frmLabelPrint := TfrmLabelPrint.Create(Application);
    with frmLabelPrint do
    begin
      FLMType := 'ClothInfoPrint';
      FFiltration1 := WSql;

      label3.Visible := true;
      label4.Visible := true;

      inputcode.visible := True;
      inputnote.visible := true;
      if ShowModal = 1 then
      begin
//        Self.InitGrid();
      end;
    end;
  finally
    frmLabelPrint.Free;
  end;

end;

procedure TfrmClothInfo.ToolButton4Click(Sender: TObject);
begin
  inherited;
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'GYName';
      flagname := '工序名称';
      fnote := true;
      V1Note.Caption := '工序编号';
      if ShowModal = 1 then
      begin
        with CDS_GX do
        begin
          Append;
          FieldByName('Glideidx').Value := cds_gx.RecordCount + 1;
          FieldByName('ProcessName').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
          FieldByName('ProcessNO').Value := Trim(ClientDataSet1.fieldbyname('Note').AsString);
          post;
        end;

      end;
    end;
  finally
    frmZDYHelp.Free;
  end;

  ToolButton6.Click;
end;

procedure TfrmClothInfo.ToolButton5Click(Sender: TObject);
begin
  inherited;
  with CDS_GX do
  begin
    if IsEmpty then
      Exit;
    if RecNo >= 1 then
    begin
      //Prior;
      Edit;
      fieldByName('GlideIdx').Value := fieldByName('GlideIdx').Value - 1;
      Post;
      Prior;
      Edit;
      fieldByName('GlideIdx').Value := fieldByName('GlideIdx').Value + 1;
      Post;
    end;
    Prior;
  end;
  ToolButton6.Click;
end;

procedure TfrmClothInfo.ToolButton6Click(Sender: TObject);
var
  maxId, GlideNo: string;
begin
  inherited;
  maxId := cds_1.FieldByName('BCIID').asstring;
  with CDS_GX do
  begin
    First;
    while not eof do
    begin
      if CDS_GX.FieldByName('GlideNo').AsString = '' then
      begin
        if GetLSNo(ADOQueryCmd, GlideNo, 'G', 'BS_Cloth_Glide', 4, 1) = False then
        begin
          ADOQueryCmd.Connection.RollbackTrans;
          Application.MessageBox('取最大号失败！', '提示', 0);
          Exit;
        end;
      end
      else
      begin
        GlideNo := CDS_GX.FieldByName('GlideNo').AsString;
      end;

      with ADOQueryCmd do
      begin
        close;
        sql.Clear;
        sql.Add('select * from BS_Cloth_Glide where GlideNo=''' + trim(GlideNo) + ''' ');
        Open;
      end;

      with ADOQueryCmd do
      begin
        if ADOQueryCmd.IsEmpty then
        begin
          append;
          FieldByName('BCIID').value := maxId;
          FieldByName('GlideNo').value := GlideNo;
          FieldByName('Filler').value := Trim(DName);
        end
        else
        begin
          edit;
          FieldByName('Editer').value := Trim(DName);
          FieldByName('EDITTIME').Value := SGetServerDateTime(ADOQueryTemp);
        end;

        RTSetSaveDataCDS(ADOQueryCmd, Tv2, CDS_GX, 'BS_Cloth_Glide', 0);
        FieldByName('Price').Value := cds_gx.FieldByName('Price').Value;
        post;
      end;

      with CDS_GX do
      begin
        edit;
        FieldByName('GlideNo').Value := GlideNo;
        FieldByName('BCIID').value := maxId;
        post;
      end;

      Next;
    end;

  end;

  with ADOQueryCmd do
  begin
    close;
    sql.Clear;
    SQL.Add('exec P_BS_CloInfo_Code @BCIID=''' + maxId + ''' ');
    Open;
  end;

  with cds_1 do
  begin
    edit;
    FieldByName('C_Code').value := ADOQueryCmd.FieldByName('C_Code').AsString;
    post;
  end;

end;

procedure TfrmClothInfo.ToolButton7Click(Sender: TObject);
begin
  inherited;
  CDS_GX.IndexFieldNames := 'GlideIdx';
  with CDS_GX do
  begin
    if IsEmpty then
      Exit;
    Next;
    if not Eof then
      Prior
    else
    begin
      exit;
    end;
    if not Eof then
    begin
      Edit;
      fieldByName('GlideIdx').Value := fieldByName('GlideIdx').Value + 1;
      Post;
      Prior;
      Edit;
      fieldByName('GlideIdx').Value := fieldByName('GlideIdx').Value - 1;
      Post;
    end;
    Next;
  end;
  ToolButton6.Click;
end;

procedure TfrmClothInfo.ToolButton8Click(Sender: TObject);
var
  k: integer;
begin
  if CDS_GX.IsEmpty then
    exit;
  if CDS_GX.fieldbyname('GlideNo').AsString <> '' then
  begin
    with ADOQueryCmd do
    begin
      close;
      SQL.Clear;
      sql.Add('delete BS_Cloth_Glide where GlideNo=''' + CDS_GX.fieldbyname('GlideNo').AsString + ''' ');
      ExecSQL;
    end;
  end;

  CDS_GX.Delete;
  CDS_GX.IndexFieldNames := 'GlideIdx';
  CDS_GX.DisableControls;
  CDS_GX.First;
  k := 1;
  while not CDS_GX.Eof do
  begin
    CDS_GX.Edit;
    CDS_GX.FieldByName('GlideIdx').Value := k;
    CDS_GX.Post;
    inc(k);
    CDS_GX.Next;
  end;
  CDS_GX.First;
  CDS_GX.EnableControls;

  ToolButton6.Click;
end;

procedure TfrmClothInfo.ToolButton9Click(Sender: TObject);
var
  WSql: string;
  fPrintFile, fPrintFile10, FMainID, LBName: string;
begin
  if CDS_1.IsEmpty then
    Exit;

  LBName := '样品详情';
  ExportFtErpFile(LBName + '.rmf', ADOQueryTemp);

  Tv1.OnFocusedRecordChanged := nil;
  if CDS_1.Locate('SSel', True, []) = False then
  begin
    Tv1.OnFocusedRecordChanged := Tv1FocusedRecordChanged;
    Application.MessageBox('没有选择数据!', '提示', 0);
    Exit;
  end;

  WSql := '';
  CDS_1.DisableControls;

  with CDS_1 do
  begin
    First;
    while not Eof do
    begin
      if CDS_1.fieldbyname('SSel').AsBoolean then
      begin
        if WSql <> '' then
        begin
          WSql := WSql + ',' + quotedstr(Trim(CDS_1.fieldbyname('BCIID').AsString));
        end
        else
        begin
          WSql := quotedstr(Trim(CDS_1.fieldbyname('BCIID').AsString));
        end;
      end;
      Next;
    end;
  end;

  CDS_1.Locate('SSel', True, []);
  Tv1.OnFocusedRecordChanged := Tv1FocusedRecordChanged;
  CDS_1.EnableControls;

  with ADOQueryPrint do
  begin
    Close;
    sql.Clear;
    sql.add('exec P_BS_CloInfo_PrtImg @Filtration=' + quotedstr(Trim(WSql)));
//    showmessage(sql.Text);
    Open;
  end;

  with ADOQueryPrint1 do
  begin
    Close;
    sql.Clear;
    sql.add('exec P_BS_CloPatInfo_Prt @Filtration=' + quotedstr(Trim(WSql)));
//    showmessage(sql.Text);
    Open;
  end;

  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + LBName + '.rmf';
  if FileExists(fPrintFile) then
  begin

    RM1.LoadFromFile(fPrintFile);
    RM1.DefaultCopies := 1;

    RM1.ShowReport
  end
  else
  begin
    Application.MessageBox(PChar('没有找' + fPrintFile), '提示', 0);
  end;

end;

end.

