unit U_DyeTechnicsinput;

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, cxCalendar, cxButtonEdit,
  cxTextEdit, cxPC, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator,
  dxBarBuiltInMenu, Menus, U_BaseList, dxSkinsCore, dxSkinsDefaultPainters,
  U_BaseInput, dxDateRanges;

type
  TfrmDyeTechnicsinput = class(TfrmBaseinput)
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    GPM_2: TcxGridPopupMenu;
    DS_2: TDataSource;
    CDS_2: TClientDataSet;
    DS_1: TDataSource;
    CDS_1: TClientDataSet;
    ADOQuery1: TADOQuery;
    GPM_1: TcxGridPopupMenu;
    PM_1: TPopupMenu;
    N2: TMenuItem;
    cxSplitter1: TcxSplitter;
    Panel2: TPanel;
    cxGrid2: TcxGrid;
    Tv2: TcxGridDBTableView;
    v2PSName: TcxGridDBColumn;
    v2PSNote: TcxGridDBColumn;
    v2Column1: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    Panel1: TPanel;
    Panel3: TPanel;
    cxGrid1: TcxGrid;
    TV1: TcxGridDBTableView;
    VC_PSNO: TcxGridDBColumn;
    cxGridDBColumn1: TcxGridDBColumn;
    cxGridLevel2: TcxGridLevel;
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBClose: TToolButton;
    Label5: TLabel;
    Label1: TLabel;
    SYRName: TEdit;
    PSName: TEdit;
    ToolButton2: TToolButton;
    btnSave: TToolButton;
    Panel4: TPanel;
    Label2: TLabel;
    Label3: TLabel;
    DTMName: TEdit;
    DTMNo: TEdit;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure cxTabControl1Change(Sender: TObject);
    procedure v2Column4PropertiesEditValueChanged(Sender: TObject);
    procedure v2Column2PropertiesEditValueChanged(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure Tv2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
    procedure PSNameChange(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure Tv2DblClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
  private
    { Private declarations }

    procedure InitGrid();
    procedure InitGlide();
    procedure SetXH();
    function SaveData(): boolean;
  public
    FDTMID, PState: string;
    { Public declarations }
    RKFlag, FCYID, fmanage: string;
  end;

var
  frmDyeTechnicsinput: TfrmDyeTechnicsinput;

implementation

uses
  U_DataLink, U_RTFun, U_ZDYHelp, U_DyeProcessSel;

{$R *.dfm}

procedure TfrmDyeTechnicsinput.SetXH();
var
  i: Integer;
begin
  with CDS_1 do
  begin
    First;
    i := 1;
    while not Eof do
    begin
      with CDS_1 do
      begin
        Edit;
        FieldByName('XHNoTemp').Value := i;
        Post;
      end;
      i := i + 1;
      Next;
    end;
  end;

  with CDS_1 do
  begin
    CDS_1.IndexFieldNames := '';
    First;
    i := 1;
    while not Eof do
    begin
      with CDS_1 do
      begin
        Edit;
        FieldByName('PSNO').Value := FieldByName('XHNoTemp').AsInteger;
        Post;
      end;
      i := i + 1;
      Next;
    end;
    CDS_1.IndexFieldNames := 'PSNO';
  end;
end;

procedure TfrmDyeTechnicsinput.InitGlide();
begin
  with ADOQueryTemp do
  begin
    Close;
    SQL.Clear;
    sql.Add(' select * FROM Dye_Technics_Main where  DTMID=' + quotedstr(FDTMID));
    Open;
  end;
  SCSHData(ADOQueryTemp, Panel4, 2);

  with ADOQueryTemp do
  begin
    Close;
    SQL.Clear;
    sql.Add(' select A.*,B.* FROM Dye_Technics_Sub A inner join Dye_Process B on A.PSId=B.PSId ');
    sql.Add(' Where A.DTMID=''' + FDTMID + '''');
    SQL.Add(' ORDER BY A.PSNO');
    Open;
  end;
  SCreateCDS(ADOQueryTemp, CDS_1);
  SInitCDSData(ADOQueryTemp, CDS_1);

end;

function TfrmDyeTechnicsinput.SaveData(): boolean;
var
  DTMPSlist, maxno: string;
begin
  result := false;
  ADOQueryCmd.Connection.BeginTrans;
  try

    if Trim(FDTMID) = '' then
    begin
      if GetLSNo(ADOQueryCmd, maxno, 'GY', 'Dye_Technics_Main', 3, 1) = False then
        raise Exception.Create('ȡ����ʧ�ܣ�');
    end
    else
    begin
      maxno := FDTMID;
    end;

    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('delete Dye_Technics_Sub where DTMID=' + quotedstr(trim(maxno)));
      execsql;
    end;

    DTMPSlist := '';
    with CDS_1 do
    begin
      First;
      while not Eof do
      begin
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('SELECT * FROM Dye_Technics_Sub WHERE 1=2');
          Open;
        end;
        with ADOQueryCmd do
        begin
          Append;
          FieldByName('PSNO').Value := Trim(CDS_1.fieldbyname('PSNO').AsString);
          FieldByName('DTMID').Value := Trim(maxno);
          FieldByName('PSId').Value := Trim(CDS_1.fieldbyname('PSId').AsString);
          Post;
        end;
        if DTMPSlist = '' then
        begin
          DTMPSlist := Trim(CDS_1.fieldbyname('PSNO').AsString) + '.' + Trim(CDS_1.fieldbyname('PSName').AsString);
        end
        else
        begin
          DTMPSlist := DTMPSlist + '��' + Trim(CDS_1.fieldbyname('PSNO').AsString) + '.' + Trim(CDS_1.fieldbyname('PSName').AsString);
        end;
        Next;
      end;
    end;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from Dye_Technics_Main where DTMID =' + quotedstr(Trim(maxno)));
      Open;
    end;
    with ADOQueryCmd do
    begin
      if ADOQueryCmd.IsEmpty then
      begin
        Append;
        FieldByName('Filler').Value := Trim(DName);
        FieldByName('DTMID').Value := Trim(maxno);
      end
      else
      begin
        Edit;
        FieldByName('Editer').Value := Trim(DName);
        FieldByName('Edittime').Value := SGetServerDateTime(ADOQueryTemp);
      end;
      RTSetsavedata(ADOQueryCmd, 'Dye_Technics_Main', Panel4, 2);
      FieldByName('DTMPSlist').Value := Trim(DTMPSlist);

      Post;
    end;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from Dye_Technics_Main where DTMNo=''' + Trim(DTMNo.Text) + '''');
      Open;
    end;
    if ADOQueryCmd.RecordCount > 1 then
      raise Exception.Create('���ձ���ظ�!');

    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from Dye_Technics_Main where DTMName=''' + Trim(DTMName.Text) + '''');
      Open;
    end;
    if ADOQueryCmd.RecordCount > 1 then
      raise Exception.Create('���������ظ�!');

    ADOQueryCmd.Connection.CommitTrans;
    result := true;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    application.MessageBox(PChar(Exception(ExceptObject).Message), '��ʾ��Ϣ', 0);
    result := false;
  end;
end;

procedure TfrmDyeTechnicsinput.InitGrid();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      SQL.Clear;
      sql.Add(' select *,PSXH=0 from Dye_Process ');
      Open;
    end;
    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
    SCreateCDS(ADOQueryMain, CDS_2);
    SInitCDSData(ADOQueryMain, CDS_2);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmDyeTechnicsinput.FormDestroy(Sender: TObject);
begin
  inherited;
  frmDyeTechnicsinput := nil;
end;

procedure TfrmDyeTechnicsinput.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  Action := caFree;
end;

procedure TfrmDyeTechnicsinput.TBCloseClick(Sender: TObject);
begin

  Close;
end;

procedure TfrmDyeTechnicsinput.FormShow(Sender: TObject);
begin
  inherited;
  ReadCxGrid(trim(self.Caption) + 'Tv1', Tv1, '���չ���');
  ReadCxGrid(trim(self.Caption) + 'Tv2', Tv2, '���չ���');
  InitGrid();
  InitGlide();
end;

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

procedure TfrmDyeTechnicsinput.ToolButton2Click(Sender: TObject);
begin
  ReadCxGrid(trim(self.Caption) + 'Tv1', Tv1, '���չ���');
  ReadCxGrid(trim(self.Caption) + 'Tv2', Tv2, '���չ���');

end;

procedure TfrmDyeTechnicsinput.cxTabControl1Change(Sender: TObject);
begin
  InitGrid();
end;

procedure TfrmDyeTechnicsinput.v2Column4PropertiesEditValueChanged(Sender: TObject);
var
  mvalue: string;
begin
  mvalue := TcxTextEdit(Sender).EditingText;
  if Trim(mvalue) = '' then
    mvalue := '';
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from Dye_Technics_Main where DTMNo =' + quotedstr(Trim(mvalue)));
    Open;
  end;
  if ADOQueryCmd.IsEmpty = false then
  begin
    application.MessageBox('�Ѵ��ڹ��ձ��', '��ʾ');
    CDS_2.Edit;
    CDS_2.FieldByName('DTMNo').AsString := '';
    exit;
  end;
  with CDS_2 do
  begin
    Edit;
    FieldByName('DTMNo').Value := Trim(mvalue);
    //Post;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('update Dye_Technics_Main set DTMNo=''' + trim(mvalue) + ''' ');
    sql.Add(',Editer=''' + trim(DName) + '''');
    sql.Add(',Edittime=getdate()');
    sql.add(' where DTMID=''' + trim(CDS_2.fieldbyname('DTMID').AsString) + '''');
    ExecSQL;
  end;
end;

procedure TfrmDyeTechnicsinput.btnSaveClick(Sender: TObject);
begin
  if trim(DTMNo.Text) = '' then
  begin
    application.MessageBox('���ձ�Ų���Ϊ��', '��ʾ');
    Exit;
  end;
  if trim(DTMName.Text) = '' then
  begin
    application.MessageBox('�������Ʋ���Ϊ��', '��ʾ');
    Exit;
  end;
  if SaveData() then
  begin
    Application.MessageBox('����ɹ���', '��ʾ', 0);
  end;
end;

procedure TfrmDyeTechnicsinput.v2Column2PropertiesEditValueChanged(Sender: TObject);
var
  mvalue: string;
begin
  mvalue := TcxTextEdit(Sender).EditingText;
  if Trim(mvalue) = '' then
    mvalue := '';
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('select * from Dye_Technics_Main where DTMName =' + quotedstr(Trim(mvalue)));
    Open;
  end;
  if ADOQueryCmd.IsEmpty = false then
  begin
    application.MessageBox('�Ѵ��ڹ�������', '��ʾ');
    CDS_2.Edit;
    CDS_2.FieldByName('DTMName').AsString := '';
    exit;
  end;
  with CDS_2 do
  begin
    Edit;
    FieldByName('DTMName').Value := Trim(mvalue);
    //Post;
  end;
  with ADOQueryCmd do
  begin
    Close;
    sql.Clear;
    sql.Add('update Dye_Technics_Main set DTMName=''' + trim(mvalue) + ''' ');
    sql.Add(',Editer=''' + trim(DName) + '''');
    sql.Add(',Edittime=getdate()');
    sql.add(' where DTMID=''' + trim(CDS_2.fieldbyname('DTMID').AsString) + '''');
    ExecSQL;
  end;
end;

procedure TfrmDyeTechnicsinput.Tv2DblClick(Sender: TObject);
begin
  with CDS_1 do
  begin
    Append;
    FieldByName('PSNO').Value := CDS_1.RecordCount + 1;
    FieldByName('PSName').Value := CDS_2.fieldbyname('PSName').AsString;
    FieldByName('PSId').Value := CDS_2.fieldbyname('PSId').AsString;
    post;
  end;

end;

procedure TfrmDyeTechnicsinput.Tv2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
  InitGlide();
end;

procedure TfrmDyeTechnicsinput.FormCreate(Sender: TObject);
begin
  inherited;
  fmanage := Trim(DParameters1);
end;

procedure TfrmDyeTechnicsinput.N2Click(Sender: TObject);
var
  i: Integer;
  DTMPSlist: string;
begin
  if Application.MessageBox('ȷ��Ҫɾ��������', '��ʾ', 32 + 4) <> IDYES then
    Exit;

  CDS_1.Delete;
  SetXH();
end;

procedure TfrmDyeTechnicsinput.PSNameChange(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
    SCreateCDS(ADOQueryMain, CDS_2);
    SInitCDSData(ADOQueryMain, CDS_2);
  end;
end;

end.