unit U_DxZDYHelp;

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, cxCheckBox, cxDropDownEdit, cxLookAndFeels,
  cxLookAndFeelPainters, dxSkinsCore, dxSkinsDefaultPainters, cxNavigator,
  dxDateRanges, System.ImageList;

type
  TfrmDxZDYHelp = 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;
    V1Sel: 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);
  private
    procedure InitGrid();
    { Private declarations }
  public
    flag,flagname,snote:string;
    fnote,forderno:Boolean;
    Mresult:string;
    { Public declarations }
  end;

var
  frmDxZDYHelp: TfrmDxZDYHelp;

implementation
uses
  U_DataLink,U_Fun10, U_ZDYHelp;
{$R *.dfm}

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

procedure TfrmDxZDYHelp.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action:=cahide;
end;

procedure TfrmDxZDYHelp.InitGrid();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from KH_ZDY where Type='''+flag+'''');
      Open;
    end;
    SCreateCDS20(ADOQueryMain,ClientDataSet1);
    SInitCDSData20(ADOQueryMain,ClientDataSet1);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmDxZDYHelp.TBAddClick(Sender: TObject);
begin
  v1name.Options.Editing:=true;
  //TV1.OptionsData.Editing:=True;
  with ClientDataSet1 do
  begin
    Append;
    Post;
  end;
end;

procedure TfrmDxZDYHelp.TBSaveClick(Sender: TObject);
var
  maxno:string;
begin
  if ClientDataSet1.IsEmpty then Exit;
  try
    ADOQueryCmd.Connection.BeginTrans;
    {with ADOQueryCmd do
    begin
      close;
      sql.Clear;
      sql.Add('delete KH_ZDY where Type='''+Trim(Flag)+'''');
      SQL.Add('delete KH_ZDY where ZDYNo='''+Trim(Flag)+'''');
      sql.Add('insert into KH_ZDY(ZDYNo,ZDYName,Type) select :ZDYNo,:ZDYName,:Type ');
      Parameters.ParamByName('ZDYNo').Value:=Trim(flag);
      Parameters.ParamByName('ZDYName').Value:=Trim(flagname);
      Parameters.ParamByName('Type').Value:='Main';
      ExecSQL;
    end;}

    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(ClientDataSet1.fieldbyname('note').AsString);
          //ADOQueryCmd.FieldByName('orderno').Value:=ClientDataSet1.fieldbyname('Name').AsString;
          ADOQueryCmd.FieldByName('Type').Value:=flag;
          ADOQueryCmd.FieldByName('valid').Value:='Y';
          //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;
  V1Name.Options.Editing:=false;
end;

procedure TfrmDxZDYHelp.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(flag)+'''');
      ExecSQL;
    end;
  end;
  ClientDataSet1.Delete;
end;

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

procedure TfrmDxZDYHelp.FormShow(Sender: TObject);
var
  fsj,fsj1:string;
begin
  InitGrid();
  fsj:=Trim(flag)+'01';
  fsj1:=Trim(flagname)+'01';
  {if ClientDataSet1.IsEmpty then
  begin
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('insert into KH_ZDY(ZDYNo,ZDYname,Type,note)');
      sql.Add('select '''+Trim(fsj)+'''');
      sql.Add(','''+Trim(fsj1)+'''');
      SQL.Add(','''+Trim(flag)+'''');
      sql.Add(','''+Trim(snote)+'''');
      ExecSQL;
    end;
    InitGrid();
  end;}
  frmDxZDYHelp.Caption:=Trim(flagname)+'<'+Trim(flag)+'>';
end;

procedure TfrmDxZDYHelp.ToolButton1Click(Sender: TObject);
var
  ftype:string;
  i:integer;
begin
  i:=0;
  with ClientDataSet1  do
  begin
    Mresult:='';
    First;
    DisableControls;
    while not eof do
    begin
      if fieldbyname('Ssel').AsBoolean then
      begin
        if (i=1) and (ftype<>trim(fieldbyname('note').AsString)) then
        begin
          application.MessageBox('备注信息不同，不能选择！','提示信息',0);
          EnableControls;
          exit;
        end;
        Mresult:=Mresult+trim(fieldbyname('zdyname').AsString)+';';
        ftype:=trim(fieldbyname('note').AsString);
        i:=1;
      end;
      next;
    end;
    First;
    EnableControls;
  end;
  ModalResult:=1;
end;

procedure TfrmDxZDYHelp.TBEditClick(Sender: TObject);
begin
  v1name.Options.Editing:=true;
 // TV1.OptionsData.Editing:=True;
end;

procedure TfrmDxZDYHelp.TV1CellDblClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  if v1name.Options.Editing=False then
  begin
    ToolButton1.Click;
  end;
end;

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

end.
