unit U_KHGetCPManage;

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, RM_e_Xls,jpeg;

type
  TfrmKHGetCPManage = class(TForm)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBAdd: TToolButton;
    TBDel: TToolButton;
    TBClose: TToolButton;
    DataSource1: TDataSource;
    ADOQueryPrint: TADOQuery;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    cxGridPopupMenu1: TcxGridPopupMenu;
    Tv1: TcxGridDBTableView;
    cxGrid1Level1: TcxGridLevel;
    cxGrid1: TcxGrid;
    Panel1: TPanel;
    Label2: TLabel;
    CYNo: TEdit;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    Label1: TLabel;
    CYName: TEdit;
    Label4: TLabel;
    CYEName: TEdit;
    Label5: TLabel;
    CYSpec: TEdit;
    v1Column1: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    v1Column3: TcxGridDBColumn;
    v1Column4: TcxGridDBColumn;
    v1Column5: TcxGridDBColumn;
    v1Column6: TcxGridDBColumn;
    v1Column7: TcxGridDBColumn;
    v1Column8: TcxGridDBColumn;
    v1Column9: TcxGridDBColumn;
    v1Column10: TcxGridDBColumn;
    v1Column11: TcxGridDBColumn;
    DataSource2: TDataSource;
    ADOQueryMain: TADOQuery;
    CDS_Main: TClientDataSet;
    v1Column12: TcxGridDBColumn;
    v1Column13: TcxGridDBColumn;
    ToolButton1: TToolButton;
    ToolButton4: TToolButton;
    RM1: TRMGridReport;
    RMDB_Main: TRMDBDataSet;
    ODPat: TOpenDialog;
    IdFTP1: TIdFTP;
    SaveDialog1: TSaveDialog;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    v1Column18: TcxGridDBColumn;
    v1Column19: TcxGridDBColumn;
    Label3: TLabel;
    KHName: TEdit;
    Label6: TLabel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    v1Column14: TcxGridDBColumn;
    v1Column15: TcxGridDBColumn;
    v1Column16: TcxGridDBColumn;
    v1Column17: TcxGridDBColumn;
    v1Column20: TcxGridDBColumn;
    Label7: TLabel;
    CKNO: TEdit;
    ToolButton7: TToolButton;
    RM2: TRMGridReport;
    RMDBDataSet1: TRMDBDataSet;
    RMXLSExport1: TRMXLSExport;
    ToolButton8: TToolButton;
    Image2: TImage;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    v1Column21: TcxGridDBColumn;
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBCloseClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure cxDBTreeList1DblClick(Sender: TObject);
    procedure TBAddClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure CYNoKeyPress(Sender: TObject; var Key: Char);
    procedure CYNoChange(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure Tv1CellDblClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure CKNOKeyPress(Sender: TObject; var Key: Char);
    procedure ToolButton7Click(Sender: TObject);
    procedure ToolButton8Click(Sender: TObject);
    procedure Tv1CellClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    procedure ToolButton9Click(Sender: TObject);
    procedure ToolButton10Click(Sender: TObject);
  private
    { Private declarations }
    PState:Integer;
    FCPID,FTopID:String;
    procedure InitTree();
    procedure InitGrid();
    procedure ReadINIFile();

  public
    { Public declarations }
  end;

var
  frmKHGetCPManage: TfrmKHGetCPManage;

implementation
uses
  U_DataLink,U_Fun,U_CPAdd,U_FileUp,U_KHGetCPAdd;

{$R *.dfm}

procedure TfrmKHGetCPManage.InitTree();
var
  i:Integer;
begin
  {with ADOQueryTree do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from CP_Type order by CPlevel,CPName');
    Open;
  end;
  cxDBTreeList1.Items[0].Expand(false);  }
  //cxDBTreeList1.Items[1].Expand(False);
end;

procedure TfrmKHGetCPManage.InitGrid();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Close;
      SQL.Clear;
      SQL.Add('exec P_Select_Get_CP_YDang :CKID,:Begdate,:EndDate,:PState');
      Parameters.ParamByName('CKID').Value:='';
      Parameters.ParamByName('Begdate').Value:=Trim(FormatDateTime('yyyy-MM-dd',BegDate.DateTime));
      Parameters.ParamByName('EndDate').Value:=Trim(FormatDateTime('yyyy-MM-dd',EndDate.DateTime+1));
      Parameters.ParamByName('PState').Value:=0;
      Open;
    end;
    SCreateCDS20(ADOQueryMain,CDS_Main);
    SInitCDSData20(ADOQueryMain,CDS_Main);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmKHGetCPManage.FormDestroy(Sender: TObject);
begin
  frmKHGetCPManage:=nil;
end;

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

procedure TfrmKHGetCPManage.TBCloseClick(Sender: TObject);
begin
  WriteCxGrid('�ͻ�����',Tv1,'��Ʒ����');
  if  DirectoryExists(ExtractFileDir('E:\Right1209')) then
    winexec('cmd /c rd /s /q D:\Right1209',sw_hide);
  Close;
end;
procedure TfrmKHGetCPManage.TBDelClick(Sender: TObject);
begin
  if CDS_Main.IsEmpty then Exit;
  if Application.MessageBox('ȷ��Ҫɾ��������','��ʾ',32+4)<>IDYES then Exit;
  with ADOQueryCmd do
  begin
    Close;
    SQL.Clear;
    sql.Add('delete CP_YDang_KHGet where CKID='''+Trim(CDS_Main.fieldbyname('CKID').AsString)+'''');
    ExecSQL;
  end;
  CDS_Main.Delete;
end;

procedure TfrmKHGetCPManage.FormShow(Sender: TObject);
begin
  //InitTree();
  ReadCxGrid('��Ʒ�б�',Tv1,'��Ʒ����');

  EndDate.DateTime:=SGetServerDate(ADOQueryTemp);
  BegDate.DateTime:=EndDate.DateTime-7;
end;

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

procedure TfrmKHGetCPManage.TBAddClick(Sender: TObject);
begin
  try
    frmKHGetCPAdd:=TfrmKHGetCPAdd.Create(Application);
    with frmKHGetCPAdd do
    begin
      FCYID:='';
      //FCPID:=Trim(Self.ADOQueryTree.fieldbyname('CPID').AsString);
      //FCPNo:=Trim(Self.ADOQueryTree.fieldbyname('CPNo').AsString);
      if ShowModal=1 then
      begin
        Self.InitGrid();
      end;
    end;
  finally
    frmKHGetCPAdd.Free;
  end;
end;

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

procedure TfrmKHGetCPManage.ToolButton3Click(Sender: TObject);
begin
  if CDS_Main.IsEmpty then Exit;
  try
    frmKHGetCPAdd:=TfrmKHGetCPAdd.Create(Application);
    with frmKHGetCPAdd do
    begin
      FCYID:=Trim(Self.CDS_Main.fieldbyname('CKNO').AsString);
      //FCPID:=Trim(Self.ADOQueryTree.fieldbyname('CPID').AsString);
      //FCPNo:=Trim(Self.ADOQueryTree.fieldbyname('CPNo').AsString);
      if ShowModal=1 then
      begin
        Self.InitGrid();
      end;
    end;
  finally
    frmKHGetCPAdd.Free;
  end;
end;

procedure TfrmKHGetCPManage.ToolButton2Click(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2));
    SCreateCDS20(ADOQueryMain,CDS_Main);
    SInitCDSData20(ADOQueryMain,CDS_Main);
  end;
end;

procedure TfrmKHGetCPManage.CYNoKeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
  begin
    with ADOQueryTemp do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from CP_YDang where CYID='''+Trim(CYNo.Text)+'''');
      Open;
      CYNo.Text:=Trim(fieldbyname('CYNo').AsString);
    end;
  end;
end;

procedure TfrmKHGetCPManage.CYNoChange(Sender: TObject);
begin
  ToolButton2.Click;
end;

procedure TfrmKHGetCPManage.ToolButton1Click(Sender: TObject);
begin
  if CDS_Main.IsEmpty then Exit;
  TcxGridToExcel('�ͻ�����',cxGrid1);
end;

procedure TfrmKHGetCPManage.ToolButton4Click(Sender: TObject);
var
   fPrintFile:string;
   Txt,fImagePath:string;
   Moudle: THandle;
   Makebar:TMakebar;
   Mixtext:TMixtext;
begin
  if CDS_Main.IsEmpty then Exit;
  fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\��Ʒ��ǩ.rmf' ;
  if FileExists(fPrintFile) then
  begin
        try
          Moudle:=LoadLibrary('MakeQRBarcode.dll');
          @Makebar:=GetProcAddress(Moudle,'Make');
          @Mixtext:=GetProcAddress(Moudle,'MixText');
          Txt:=Trim(CDS_Main.fieldbyname('CYID').AsString);
          fImagePath:=ExtractFilePath(Application.ExeName)+'image\temp.bmp';
          if not DirectoryExists(pchar(ExtractFilePath(Application.ExeName)+'image')) then
          CreateDirectory(pchar(ExtractFilePath(Application.ExeName)+'image'),nil);
          if FileExists(fImagePath) then DeleteFile(fImagePath);
          Makebar(pchar(Txt),Length(Txt),3,3,0,PChar(fImagePath),3);
        except
          application.MessageBox('����������ʧ�ܣ�','��ʾ��Ϣ',MB_ICONERROR);
          exit;
        end;
        RMVariables['QRBARCODE']:=fImagePath;
    RM1.LoadFromFile(fPrintFile);
    RM1.ShowReport;
  end else
  begin
    Application.MessageBox(PChar('û����'+ExtractFilePath(Application.ExeName)+'Report\��Ʒ��ǩ.rmf'),'��ʾ',0);
  end;
end;

procedure TfrmKHGetCPManage.ToolButton5Click(Sender: TObject);
begin
  try
    frmFileUp:=TfrmFileUp.Create(Application);
    with frmFileUp do
    begin
      Code.Text:=Trim(Self.CDS_Main.fieldbyname('CYNO').AsString);
      CYID:=Trim(Self.CDS_Main.fieldbyname('CYID').AsString);
      if ShowModal=1 then
      begin
        Self.InitGrid();
        Self.CDS_Main.Locate('CYID',CYID,[]);
      end;
    end;
  finally
    frmFileUp.Free;
  end;
end;

procedure TfrmKHGetCPManage.ToolButton6Click(Sender: TObject);
var
  fHandle:THandle;
  FInt:Integer;
  FFName,FPath:String;
begin
  {FPath:='C:\HTTP1209\';
  if  DirectoryExists(ExtractFileDir(FPath)) then
    winexec('cmd /c rd /s /q C:\HTTP1209',sw_hide);}
  with ADOQueryTemp do
  begin
    close;
    sql.Clear;
    sql.Add('select * from XD_File where CYNO='''+Trim(CDS_Main.fieldbyname('CYNO').AsString)+'''');
    Open;
    if IsEmpty then
    begin
      Application.MessageBox('��ƷͼƬδ�ϴ���','��ʾ',0);
      Exit;
    end;
  end;
  try
    ReadINIFile();
    server:=ReadINIFileStr('SYSTEMSET.INI','SERVER','��������ַ','127.0.0.1');
    if Length(server)<6 then
    begin
      server:='127.0.0.1';
    end;
    IdFTP1.Host :=server;//PicSvr;
    IdFTP1.Username := 'three';
    IdFTP1.Password := '641010';
    IdFTP1.Connect();
  except
    IdFTP1.Quit;
    Application.MessageBox('�޷����ӵ��ļ������������飡', '��ʾ', MB_ICONWARNING);
    Exit;
  end;
  FPath:='D:\Right1209\';
  if not DirectoryExists(ExtractFileDir(FPath)) then
    CreateDir(ExtractFileDir(FPath));
  FFName:=Trim(ADOQueryTemp.fieldbyname('FileName').AsString);
  FFName:=FPath+FFName;
  if FileExists(FFName) then
  begin
    FInt:=1;
  end;
  if FInt<>1 then
    IdFTP1.Get('YP\'+Trim(ADOQueryTemp.fieldbyname('FileName').AsString),
                   FPath+Trim(ADOQueryTemp.fieldbyname('FileName').AsString)
                    );
  if IdFTP1.Connected then IdFTP1.Quit;
  ShellExecute(Handle, 'open',PChar(FPath+Trim(ADOQueryTemp.fieldbyname('FileName').AsString)),'', '', SW_SHOWNORMAL);

end;
procedure TfrmKHGetCPManage.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 TfrmKHGetCPManage.Tv1CellDblClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
 // ToolButton6.Click;
end;

procedure TfrmKHGetCPManage.CKNOKeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then
  begin
    if Trim(CKNO.Text)='' then Exit;
    try
      ADOQueryMain.DisableControls;
      with ADOQueryMain do
      begin
        Close;
        SQL.Clear;
        SQL.Add('exec P_Select_Get_CP_YDang :CKID,:Begdate,:EndDate,:PState');
        Parameters.ParamByName('CKID').Value:=Trim(CKNO.Text);
        Parameters.ParamByName('Begdate').Value:='';
        Parameters.ParamByName('EndDate').Value:='';
        Parameters.ParamByName('PState').Value:=3;
        Open;
      end;
      SCreateCDS20(ADOQueryMain,CDS_Main);
      SInitCDSData20(ADOQueryMain,CDS_Main);
      CKNO.Text:='';
    finally
      ADOQueryMain.EnableControls;
    end;
  end;

end;

procedure TfrmKHGetCPManage.ToolButton7Click(Sender: TObject);
var
   fPrintFile:string;
begin
  if CDS_Main.IsEmpty then Exit;
  with ADOQueryPrint do
  begin
    Close;
    sql.Clear;
    SQL.Add('exec P_Select_Get_CP_YDang :CKID,:Begdate,:EndDate,:PState');
    Parameters.ParamByName('CKID').Value:=Trim(CDS_Main.fieldbyname('CKNO').AsString);
    Parameters.ParamByName('Begdate').Value:='';
    Parameters.ParamByName('EndDate').Value:='';
    Parameters.ParamByName('PState').Value:=3;
    Open;
  end;
  fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\�����嵥.rmf' ;
  if FileExists(fPrintFile) then
  begin
    RM2.LoadFromFile(fPrintFile);
    RMVariables['printer']:=Trim(DName);
    RM2.ShowReport;
  end else
  begin
    Application.MessageBox(PChar('û����'+ExtractFilePath(Application.ExeName)+'Report\�����嵥.rmf'),'��ʾ',0);
  end;
end;

procedure TfrmKHGetCPManage.ToolButton8Click(Sender: TObject);
var
   fPrintFile:string;
begin
  fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\�հ��ż�ֽ.rmf' ;
  if FileExists(fPrintFile) then
  begin
    RM2.LoadFromFile(fPrintFile);
    RM2.ShowReport;
  end else
  begin
    Application.MessageBox(PChar('û����'+ExtractFilePath(Application.ExeName)+'Report\�հ��ż�ֽ.rmf'),'��ʾ',0);
  end;
end;

procedure TfrmKHGetCPManage.Tv1CellClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
var
  jpg:TJpegImage;
  myStream:TADOBlobStream;
begin
  if CDS_Main.IsEmpty then Exit;
  if Trim(CDS_Main.fieldbyname('CYID').AsString)='' then Exit;
 // if cxPageControl1.ActivePageIndex=6 then
  begin
    Image2.Picture.Assign(nil);
    try
      with ADOQueryTemp do
      begin
        close;
        sql.Clear;
        sql.Add(' select * from TP_File A where A.WBID='''+Trim(CDS_Main.fieldbyname('CYID').AsString)+'''');
        sql.Add(' and TFType=''��Ʒ'' ');
        open;
        if RecordCount>0 then
        begin
          if trim(ADOQueryTemp.fieldbyname('FilesOther').AsString)<>'' then
          begin
            myStream:=tadoblobstream.Create(tblobfield(ADOQueryTemp.fieldbyname('FilesOther')),bmread);
            if myStream=nil then exit;
            jpg:=TJPEGImage.Create;
            jpg.LoadFromStream(myStream);
            Image2.Picture.Assign(jpg);
          end;
        end;
      end;
    finally
      jpg.Free;
      myStream.Free;
    end;
  end;
end;

procedure TfrmKHGetCPManage.ToolButton9Click(Sender: TObject);
begin
  if CDS_Main.IsEmpty then Exit;
  try
    frmKHGetCPAdd:=TfrmKHGetCPAdd.Create(Application);
    with frmKHGetCPAdd do
    begin
      FCYID:=Trim(Self.CDS_Main.fieldbyname('CKNO').AsString);
      CopyInt:=99;
      //FCPID:=Trim(Self.ADOQueryTree.fieldbyname('CPID').AsString);
      //FCPNo:=Trim(Self.ADOQueryTree.fieldbyname('CPNo').AsString);
      if ShowModal=1 then
      begin
        Self.InitGrid();
      end;
    end;
  finally
    frmKHGetCPAdd.Free;
  end;
end;

procedure TfrmKHGetCPManage.ToolButton10Click(Sender: TObject);
var
   fPrintFile:string;
begin
  if CDS_Main.IsEmpty then Exit;
  with ADOQueryPrint do
  begin
    Close;
    sql.Clear;
    SQL.Add('exec P_Select_Get_CP_YDang :CKID,:Begdate,:EndDate,:PState');
    Parameters.ParamByName('CKID').Value:=Trim(CDS_Main.fieldbyname('CKNO').AsString);
    Parameters.ParamByName('Begdate').Value:='';
    Parameters.ParamByName('EndDate').Value:='';
    Parameters.ParamByName('PState').Value:=3;
    Open;
  end;
  fPrintFile:= ExtractFilePath(Application.ExeName) + 'Report\�����嵥(�޵���).rmf' ;
  if FileExists(fPrintFile) then
  begin
    RM2.LoadFromFile(fPrintFile);
    RMVariables['printer']:=Trim(DName);
    RM2.ShowReport;
  end else
  begin
    Application.MessageBox(PChar('û����'+ExtractFilePath(Application.ExeName)+'Report\�����嵥(�޵���).rmf'),'��ʾ',0);
  end;
end;

end.