unit U_WorkDeptList_DKCX;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ToolWin, cxStyles, cxCustomData, cxGraphics, cxFilter,
  cxData, cxDataStorage, cxEdit, DB, cxDBData, cxTextEdit, cxCalendar,
  cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
  cxClasses, cxControls, cxGridCustomView, cxGrid, ADODB, DBClient, cxButtonEdit,
  cxPC, StdCtrls, ExtCtrls, ExtDlgs, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdFTP, jpeg, IniFiles, DelphiTwain, Buttons,
  cxContainer, cxImage, cxDBEdit, strutils, ShellAPI, RM_Dataset, RM_System,
  RM_Common, RM_Class, RM_GridReport, cxLookAndFeels, cxLookAndFeelPainters,
  dxSkinsCore, dxSkinDarkRoom, dxSkinOffice2013White, dxSkinSharpPlus,
  dxSkinSpringTime, dxSkinsDefaultPainters, dxSkinscxPCPainter, cxNavigator,
  dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel, dxSkinCoffee,
  dxSkinDarkSide, dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle,
  dxSkinFoggy, dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary,
  dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin,
  dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins,
  dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green,
  dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black,
  dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinOffice2013DarkGray,
  dxSkinOffice2013LightGray, dxSkinPumpkin, dxSkinSeven,
  dxSkinSevenClassic, dxSkinSharp, dxSkinSilver, dxSkinStardust,
  dxSkinSummer2008, dxSkinTheAsphaltWorld, dxSkinValentine, dxSkinVS2010,
  dxSkinWhiteprint, dxSkinXmas2008Blue;

type
  TFrmWorkDeptList_DKCX = class(TForm)
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1DKDate: TcxGridDBColumn;
    v1YGName: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    Order_Main: TClientDataSet;
    ADOQueryMain: TADOQuery;
    DataSource1: TDataSource;
    ADOQueryDel: TADOQuery;
    Panel1: TPanel;
    OpenPictureDialog1: TOpenPictureDialog;
    IdFTP1: TIdFTP;
    adoqueryImage: TADOQuery;
    ADOQuery1: TADOQuery;
    SaveDialog1: TSavePictureDialog;
    ScrollBox1: TScrollBox;
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBClose: TToolButton;
    TBExport: TToolButton;
    Label3: TLabel;
    BegDate: TDateTimePicker;
    Label1: TLabel;
    YGName: TEdit;
    Picture4: TcxDBImage;
    DataSource2: TDataSource;
    Panel2: TPanel;
    v1SXBStatus: TcxGridDBColumn;
    Label4: TLabel;
    SXBStatus: TEdit;
    TSBKQB: TToolButton;
    TXBKQB: TToolButton;
    Order_KQB: TClientDataSet;
    Label2: TLabel;
    EndDate: TDateTimePicker;
    RM1: TRMGridReport;
    RMDBMain: TRMDBDataSet;
    procedure v1Column1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure YGNameChange(Sender: TObject);
    procedure Picture4DblClick(Sender: TObject);
    procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
    procedure TSBKQBClick(Sender: TObject);
  private
    hWndC: THandle;
    CapturingAVI: bool;
    { Private declarations }
    ClickPos: TPoint;
    SelectedSource, PicLeft, PicTop, PicWidth, PicHeight: Integer;
    procedure initGrid();
    procedure SetStatus();
    procedure LookImage(FileName: string);
    { Private declarations }
  public
    FilePath: string;
    FileName: string;
    FTFType: string;
    pat1: string;
    pic1: string;
    fkeyNo: string;
    fFlileFlag: string;
    { Public declarations }
    MyJpeg: TJPEGImage;
    { Public declarations }
  end;

var
  FrmWorkDeptList_DKCX: TFrmWorkDeptList_DKCX;

implementation

uses
  U_ZDYHelp, U_RTfun, U_DataLink;

const
  WM_CAP_START = WM_USER;

const
  WM_CAP_STOP = WM_CAP_START + 68;

const
  WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10;

const
  WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11;

const
  WM_CAP_SAVEDIB = WM_CAP_START + 25;

const
  WM_CAP_GRAB_FRAME = WM_CAP_START + 60;

const
  WM_CAP_SEQUENCE = WM_CAP_START + 62;

const
  WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20;

const
  WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63;

const
  WM_CAP_SET_OVERLAY = WM_CAP_START + 51;

const
  WM_CAP_SET_PREVIEW = WM_CAP_START + 50;

const
  WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6;

const
  WM_CAP_SET_CALLBACK_ERROR = WM_CAP_START + 2;

const
  WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3;

const
  WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5;

const
  WM_CAP_SET_SCALE = WM_CAP_START + 53;

const
  WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52;

function capCreateCaptureWindowA(lpszWindowName: PCHAR; dwStyle: longint; x: integer; y: integer; nWidth: integer; nHeight: integer; ParentWin: HWND; nId: integer): HWND; stdcall external 'AVICAP32.DLL';

{$R *.dfm}
procedure TFrmWorkDeptList_DKCX.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

    Panel2.Caption := '正在下载数据，请稍等...';
    Panel2.Visible := true;
    application.ProcessMessages;
    try
      IdFTP1.Get(fFlileFlag + '\' + Trim(FileName), sFieldName, true, false);
    except
      Panel2.Visible := false;
      Application.MessageBox('客户图样文件不存在', '提示', MB_ICONWARNING);
      IdFTP1.Quit;
      Exit;
    end;
  end
  else
  begin
    Panel2.Visible := false;
    Application.MessageBox('无法连接文件服务器', '提示', MB_ICONWARNING);
    IdFTP1.Quit;
    Exit;
  end;
  Panel2.Visible := false;
  if IdFTP1.Connected then
    IdFTP1.Quit;
  ShellExecute(Handle, 'open', PChar(sFieldName), '', '', SW_SHOWNORMAL);
end;

procedure TFrmWorkDeptList_DKCX.SetStatus();
begin

end;

procedure TFrmWorkDeptList_DKCX.initGrid();
begin
  with ADOQueryMain do
  begin
    close;
    sql.Clear;
    sql.Add('select * from OA_YG_KQ ');
    sql.add('where filltime>=''' + trim(FormatDateTime('yyyy-MM-dd', BegDate.Date)) + '''');
    sql.add(' and filltime<''' + trim(FormatDateTime('yyyy-MM-dd', endDate.Date + 1)) + '''');
    open;
  end;
  SCreateCDS20(ADOQueryMain, Order_Main);
  SInitCDSData20(ADOQueryMain, Order_Main);
  SCreateCDS20(ADOQueryMain, Order_KQB);
end;

procedure TFrmWorkDeptList_DKCX.v1Column1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmZDYHelp := TfrmZDYHelp.Create(Application);
    with frmZDYHelp do
    begin
      flag := 'PriceUnit';
      flagname := '币种';
      if ShowModal = 1 then
      begin
        with Order_Main do
        begin
          edit;
          fieldbyname('PriceUnit').AsString := trim(ClientDataSet1.fieldbyname('ZDYName').AsString);
        end;
      end;
    end;
  finally
    frmZDYHelp.Free;
  end;
end;

procedure TFrmWorkDeptList_DKCX.FormShow(Sender: TObject);
begin
  ReadCxGrid('打卡', Tv1, '费用报销管理');
  with ADOQueryMain do
  begin
    close;
    sql.Clear;
    sql.Add('select * from OA_YG_KQ ');
    sql.Add('where convert(varchar(10),DKDate,120)=convert(varchar(10),getdate(),120)');
    open;
  end;
  SCreateCDS20(ADOQueryMain, Order_Main);
  SInitCDSData20(ADOQueryMain, Order_Main);
  fFlileFlag := '123YP';
end;

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

procedure TFrmWorkDeptList_DKCX.FormDestroy(Sender: TObject);
begin
  MyJpeg.Free;
  FrmWorkDeptList_DKCX := nil;
end;

procedure TFrmWorkDeptList_DKCX.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ClickPos.x := X;
  ClickPos.y := Y;
end;

procedure TFrmWorkDeptList_DKCX.FormCreate(Sender: TObject);
begin
  MyJpeg := TJpegImage.Create;
  EndDate.Date := SGetServerDate(ADOQueryDel);
  begdate.Date := EndDate.Date;
end;

procedure TFrmWorkDeptList_DKCX.TBCloseClick(Sender: TObject);
begin
  WriteCxGrid('打卡', Tv1, '费用报销管理');
  close;
end;

procedure TFrmWorkDeptList_DKCX.TBExportClick(Sender: TObject);
begin
  if ADOQueryMain.IsEmpty then
    Exit;
  TcxGridToExcel('员工考勤', cxGrid1);
end;

procedure TFrmWorkDeptList_DKCX.TBRafreshClick(Sender: TObject);
begin
  initgrid();
end;

procedure TFrmWorkDeptList_DKCX.YGNameChange(Sender: TObject);
begin
  SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
  SCreateCDS20(ADOQueryMain, Order_Main);
  SInitCDSData20(ADOQueryMain, Order_Main);
end;

procedure TFrmWorkDeptList_DKCX.Picture4DblClick(Sender: TObject);
var
  sFieldName: string;
  fileName: string;
begin
  if TcxDBImage(Sender).Picture.Height = 0 then
    exit;
  LookImage(ADOQueryImage.fieldbyname(TcxDBImage(Sender).Hint).asstring);
end;

procedure TFrmWorkDeptList_DKCX.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
  if Order_Main.IsEmpty then
    exit;
  with ADOQueryImage do
  begin
    close;
    sql.Clear;
    sql.Add('select * from TP_File A');
    sql.Add('where WBID=' + quotedstr(trim(Order_Main.fieldbyname('KQID').AsString)));
    sql.Add('and TFType=' + quotedstr(trim('员工')));
    open;
  end;
end;

procedure TFrmWorkDeptList_DKCX.TSBKQBClick(Sender: TObject);
var
  fPrintFile: string;
  Txt, fImagePath: string;
  Moudle: THandle;
  Makebar: TMakebar;
  Mixtext: TMixtext;
begin
  if Order_Main.IsEmpty then
    Exit;
  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\上班考勤表.rmf';
  with ADOQuery1 do
  begin
    close;
    sql.Clear;
    sql.Add('select YGName');
    sql.Add(' ,one=(select cast(''是'' as varchar(10)) from OA_YG_KQ B where B.YGName=A.YGName and B.DKDate=''' + trim(FormatDateTime('yyyy-MM', BegDate.Date)) + '-01' + ''')');
    sql.Add(' ,TWO=(select cast(''是'' as varchar(10)) from OA_YG_KQ B where B.YGName=A.YGName and B.DKDate=''' + trim(FormatDateTime('yyyy-MM', BegDate.Date)) + '-01' + ''')');
    sql.Add(' from OA_YG_DangAn A ');
//    ShowMessage(sql.text);
    open;
  end;
  if FileExists(fPrintFile) then
  begin
    RM1.LoadFromFile(fPrintFile);
    RM1.PrintReport;
  end
  else
  begin
    Application.MessageBox(PChar('没有找' + ExtractFilePath(Application.ExeName) + 'Report\员工卡.rmf'), '提示', 0);
    Exit;
  end;
end;

end.

