unit U_ZDYHelpDL;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxDataStorage, cxEdit, DB, cxDBData, ToolWin, ComCtrls,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel,
  cxClasses, cxControls, cxGridCustomView, cxGrid, DBClient, ADODB, ImgList,
  StdCtrls, ExtCtrls, cxTL, cxMaskEdit, cxInplaceContainer, cxDBTL,
  cxTLData, cxDropDownEdit;

type
  TfrmZDYDLHelp = class(TForm)
    TV1: TcxGridDBTableView;
    cxGrid1Level1: TcxGridLevel;
    cxGrid1: TcxGrid;
    V1Code: TcxGridDBColumn;
    V1Name: TcxGridDBColumn;
    ToolBar1: TToolBar;
    ADOQueryMain: TADOQuery;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    DataSource1: TDataSource;
    ClientDataSet1: TClientDataSet;
    TBAdd: TToolButton;
    TBSave: TToolButton;
    TBDel: TToolButton;
    TBClose: TToolButton;
    ToolButton1: TToolButton;
    TBEdit: TToolButton;
    V1Note: TcxGridDBColumn;
    V1OrderNo: TcxGridDBColumn;
    ADOConnection1: TADOConnection;
    Panel1: TPanel;
    Label1: TLabel;
    ZDYName: TEdit;
    ThreeImgList: TImageList;
    ADOQueryChild: TADOQuery;
    DataSource2: TDataSource;
    cxDBTreeList1: TcxDBTreeList;
    cxColumn2: TcxDBTreeListColumn;
    V1Column1: TcxGridDBColumn;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBAddClick(Sender: TObject);
    procedure TBSaveClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure TBEditClick(Sender: TObject);
    procedure TV1CellDblClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure ZDYNameChange(Sender: TObject);
    procedure cxDBTreeList1Click(Sender: TObject);
  private
    procedure InitGrid();
    { Private declarations }
  public
    MainType,MainTypeName,flag,flagname,snote:string;
    fnote,forderno:Boolean;
    { Public declarations }
  end;

var
  frmZDYDLHelp: TfrmZDYDLHelp;

implementation
uses
  U_DataLink,U_Fun;

{$R *.dfm}

procedure TfrmZDYDLHelp.FormCreate(Sender: TObject);
begin
  cxGrid1.Align:=alClient;
  with ADOConnection1 do
  begin
    Connected:=false;
    ConnectionString:=DConString;
    Connected:=true;
  end;
end;

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

procedure TfrmZDYDLHelp.InitGrid();
begin
  try
    with ADOQueryMain do
    begin
      Close;
      sql.Clear;
      sql.Add('select A.*,TypeName=(select ZdyName from KH_Zdy B where B.ZdyNO=A.Type) from KH_Zdy A');
      if Trim(ADOQueryChild.fieldbyname('frameNo').AsString)<>'QB' then
        sql.Add('where  Type='''+Trim(ADOQueryChild.fieldbyname('frameNo').AsString)+'''')
      else
        sql.Add('where  MainType='''+Trim(MainType)+''' and Type<>''Main'' ');
      Open;
    end;
    SCreateCDS20(ADOQueryMain,ClientDataSet1);
    SInitCDSData20(ADOQueryMain,ClientDataSet1);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmZDYDLHelp.TBAddClick(Sender: TObject);
begin
  TV1.OptionsData.Editing:=True;
  with ClientDataSet1 do
  begin
    Append;
    Post;
  end;
end;

procedure TfrmZDYDLHelp.TBSaveClick(Sender: TObject);
var
  maxno,fsj:string;
  i:Integer;
begin
  if ClientDataSet1.IsEmpty then Exit;
  if Trim(ClientDataSet1.fieldbyname('ZdyName').AsString)='' then
  begin
    Application.MessageBox('���Ʋ���Ϊ�գ�','��ʾ',0);
    Exit;
  end;
  if Trim(ClientDataSet1.fieldbyname('TypeName').AsString)='' then
  begin
    Application.MessageBox('�����Ϊ�գ�','��ʾ',0);
    Exit;
  end;
  try
    ADOQueryCmd.Connection.BeginTrans;
    with ADOQueryCmd do
    begin
      with ClientDataSet1 do
      begin
        First;
        while not eof do
        begin
          if Trim(ClientDataSet1.FieldByName('ZDYNO').AsString)='' then
          begin
            if GetLSNo(ADOQueryTemp,maxno,'SY','KH_ZDY',3,1)=False then
            begin
              ADOQueryCmd.Connection.RollbackTrans;
              Application.MessageBox('ȡ�����ʧ�ܣ�','��ʾ',0);
              Exit;
            end;
          end else
          begin
            maxno:=Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString);
          end;
          with ADOQueryCmd do
          begin
            Close;
            sql.Clear;
            SQL.Add('delete KH_ZDY where ZDYNO='''+Trim(ClientDataSet1.fieldbyname('ZDYNO').AsString)+'''');
            ExecSQL;
          end;
          with ADOQueryCmd do
          begin
            Close;
            sql.Clear;
            sql.Add('select * from KH_ZDY where 1<>1');
            Open;
          end;
          if Trim(ClientDataSet1.FieldByName('ZDYName').AsString)='' then
          begin
            ADOQueryCmd.Connection.RollbackTrans;
            Application.MessageBox('���Ʋ���Ϊ�գ�','��ʾ',0);
            Exit;
          end;
          ADOQueryCmd.Append;
          ADOQueryCmd.FieldByName('ZDYNo').Value:=Trim(maxno);
          ADOQueryCmd.FieldByName('ZDYName').Value:=ClientDataSet1.fieldbyname('ZDYName').AsString;
          ADOQueryCmd.FieldByName('note').Value:=Trim(snote);
          //ADOQueryCmd.FieldByName('orderno').Value:=ClientDataSet1.fieldbyname('Name').AsString;
         // ADOQueryCmd.FieldByName('Type').Value:=TcxComboBox(V1Column1).Properties.Items.Strings[1];
          i:=(V1Column1.Properties as TcxComboBoxProperties).Items.IndexOf(ClientDataSet1.fieldbyname('TypeName').AsString);
          fsj:=TA((V1Column1.Properties as TcxComboBoxProperties).Items.Objects[i]).S;
          ADOQueryCmd.FieldByName('Type').Value:=Trim(fsj);
          ADOQueryCmd.FieldByName('valid').Value:='Y';
          ADOQueryCmd.FieldByName('Maintype').Value:=Trim(MainType);
          //ADOQueryCmd.FieldByName('sel').Value:=0;
          ADOQueryCmd.Post;
          ClientDataSet1.Edit;
          ClientDataSet1.FieldByName('ZDYNo').Value:=Trim(maxno);
          ClientDataSet1.Post;
          Next;
        end;
      end;
    end;
    ADOQueryCmd.Connection.CommitTrans;
    Application.MessageBox('����ɹ���','��ʾ',0);
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Application.MessageBox('����ʧ�ܣ�','��ʾ',0);
  end;
  TV1.OptionsData.Editing:=False;
end;

procedure TfrmZDYDLHelp.TBDelClick(Sender: TObject);
begin
  if ClientDataSet1.IsEmpty then Exit;
  if (Trim(ClientDataSet1.FieldByName('ZDYNo').AsString)<>'') or
     (Trim(ClientDataSet1.FieldByName('ZDYname').AsString)<>'') then
  begin
    if application.MessageBox('ȷ��Ҫɾ����?','��ʾ��Ϣ',1)=2 then exit;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('delete KH_ZDY where ZDYNo='''+Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString)+'''');
      SQL.Add(' and Type='''+Trim(ADOQueryChild.fieldbyname('frameNO').AsString)+'''');
      ExecSQL;
    end;
  end;
  ClientDataSet1.Delete;
end;

procedure TfrmZDYDLHelp.TBCloseClick(Sender: TObject);
begin
  ModalResult:=2;
  Close;
end;

procedure TfrmZDYDLHelp.FormShow(Sender: TObject);
var
  fsj,fsj1:string;
begin
  fsj:='select ZdyNo code,ZdyName name from KH_Zdy where  MainType='''+MainType+''' and Type=''Main''';
  SInitCxGridComboBoxBySql(ADOQueryTemp,V1Column1,fsj,1,True,'');
  fsj:= ' select frameNo=''QB'',frameName=''ȫ��'',TopFrameNo='''+Trim(MainType)+''''+
       '  union all select frameNo=ZdyNo,frameName=ZdyName,TopFrameNo=MainType '+
       ' from KH_Zdy A '+
       ' where A.MainType='''+MainType+''' and Type=''Main''';
  with ADOQueryChild do
  begin
    Close;
    sql.Clear;
    sql.Add(fsj);
    Open;
  end;
  cxDBTreeList1.FullExpand;
  InitGrid();
  
  frmZDYDLHelp.Caption:=Trim(MainTypename)+'<'+Trim(MainType)+'>';
end;

procedure TfrmZDYDLHelp.ToolButton1Click(Sender: TObject);
begin
  ModalResult:=1;
end;

procedure TfrmZDYDLHelp.TBEditClick(Sender: TObject);
begin
  TV1.OptionsData.Editing:=True;
end;

procedure TfrmZDYDLHelp.TV1CellDblClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  if TV1.OptionsData.Editing=False then
  begin
    ModalResult:=1;
  end;
end;

procedure TfrmZDYDLHelp.ZDYNameChange(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2));
    SCreateCDS20(ADOQueryMain,ClientDataSet1);
    SInitCDSData20(ADOQueryMain,ClientDataSet1);
  end;
end;

procedure TfrmZDYDLHelp.cxDBTreeList1Click(Sender: TObject);
begin
  InitGrid();
end;

end.