436 lines
12 KiB
ObjectPascal
436 lines
12 KiB
ObjectPascal
unit U_WorkDeptList_DKPZ;
|
||
|
||
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,
|
||
MMSystem;
|
||
|
||
type
|
||
TFrmWorkDeptList_DKPZ = class(TForm)
|
||
Order_Main: TClientDataSet;
|
||
ADOQueryMain: TADOQuery;
|
||
DataSource1: TDataSource;
|
||
ADOQueryDel: TADOQuery;
|
||
Panel1: TPanel;
|
||
OpenPictureDialog1: TOpenPictureDialog;
|
||
IdFTP1: TIdFTP;
|
||
adoqueryImage: TADOQuery;
|
||
ADOQuery1: TADOQuery;
|
||
SaveDialog1: TSavePictureDialog;
|
||
ScrollBox1: TScrollBox;
|
||
Button2: TButton;
|
||
Button3: TButton;
|
||
Image1: TImage;
|
||
Panel3: TPanel;
|
||
Image2: TImage;
|
||
Timer1: TTimer;
|
||
Panel2: TPanel;
|
||
Label2: TLabel;
|
||
Label4: TLabel;
|
||
Label5: TLabel;
|
||
Label6: TLabel;
|
||
Label7: TLabel;
|
||
ADOQuery2: TADOQuery;
|
||
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 Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure Button2Click(Sender: TObject);
|
||
procedure Button3Click(Sender: TObject);
|
||
procedure Timer1Timer(Sender: TObject);
|
||
private
|
||
hWndC: THandle;
|
||
CapturingAVI: bool;
|
||
{ Private declarations }
|
||
ClickPos: TPoint;
|
||
SelectedSource, PicLeft, PicTop, PicWidth, PicHeight: Integer;
|
||
procedure initGrid();
|
||
procedure SetStatus();
|
||
procedure CreThumb(Width, Height: Integer);
|
||
{ Private declarations }
|
||
public
|
||
FilePath: string;
|
||
FileName: string;
|
||
FTFType: string;
|
||
pat1: string;
|
||
pic1: string;
|
||
fkeyNo: string;
|
||
fFlileFlag, FYGID, IFZT, IFSXB: string;
|
||
{ Public declarations }
|
||
MyJpeg: TJPEGImage;
|
||
{ Public declarations }
|
||
end;
|
||
|
||
var
|
||
FrmWorkDeptList_DKPZ: TFrmWorkDeptList_DKPZ;
|
||
|
||
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_DKPZ.CreThumb(Width, Height: Integer);
|
||
var
|
||
Bitmap: TBitmap;
|
||
Ratio: Double;
|
||
ARect: TRect;
|
||
AHeight, AHeightOffset: Integer;
|
||
AWidth, AWidthOffset: Integer;
|
||
begin
|
||
Bitmap := TBitmap.Create;
|
||
try
|
||
Ratio := Image1.Picture.Graphic.Width / Image1.Picture.Graphic.Height;
|
||
if Ratio > 1.333 then
|
||
begin
|
||
AHeight := Round(Width / Ratio);
|
||
AHeightOffset := (Height - AHeight) div 2;
|
||
AWidth := Width;
|
||
AWidthOffset := 0;
|
||
end
|
||
else
|
||
begin
|
||
AWidth := Round(Height * Ratio);
|
||
AWidthOffset := (Width - AWidth) div 2;
|
||
AHeight := Height;
|
||
AHeightOffset := 0;
|
||
end;
|
||
Bitmap.Width := Width;
|
||
Bitmap.Height := Height;
|
||
Bitmap.Canvas.Brush.Color := clBtnFace;
|
||
Bitmap.Canvas.FillRect(Rect(0, 0, Width, Height));
|
||
ARect := Rect(AWidthOffset, AHeightOffset, AWidth + AWidthOffset, AHeight + AHeightOffset);
|
||
Bitmap.Canvas.StretchDraw(ARect, Image1.Picture.Graphic);
|
||
Image2.Picture.Assign(Bitmap);
|
||
finally
|
||
Bitmap.Free;
|
||
end;
|
||
end;
|
||
|
||
procedure TFrmWorkDeptList_DKPZ.SetStatus();
|
||
begin
|
||
|
||
end;
|
||
|
||
procedure TFrmWorkDeptList_DKPZ.initGrid();
|
||
begin
|
||
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);
|
||
end;
|
||
|
||
procedure TFrmWorkDeptList_DKPZ.FormShow(Sender: TObject);
|
||
var
|
||
maxno: string;
|
||
begin
|
||
{with ADOQueryMain do
|
||
begin
|
||
close;
|
||
sql.Clear;
|
||
sql.Add('select * from OA_YG_KQ ');
|
||
sql.Add('where YGID='''+trim(YGID.Text)+'''');
|
||
sql.Add(' and convert(varchar(10),DKDate,120)=convert(varchar(10),getdate(),120)');
|
||
open;
|
||
end;
|
||
if ADOQueryMain.IsEmpty=false then
|
||
begin
|
||
Application.MessageBox('Ա<><D4B1><EFBFBD>Ѵ<EFBFBD><D1B4><EFBFBD>','<27><>ʾ');
|
||
YGID.Text:='';
|
||
Exit;
|
||
end
|
||
else }
|
||
if GetLSNo(ADOQueryDel, maxno, 'KQ', 'OA_YG_KQ', 3, 1) = False then
|
||
begin
|
||
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD>,<2C><><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', 0);
|
||
Exit;
|
||
end;
|
||
fkeyNo := Trim(maxno);
|
||
with ADOQueryDel do
|
||
begin
|
||
Close;
|
||
sql.Clear;
|
||
sql.Add('select * from OA_YG_DangAn ');
|
||
sql.Add('where YGID=''' + Trim(FYGID) + '''');
|
||
open;
|
||
end;
|
||
with ADOQueryMain do
|
||
begin
|
||
close;
|
||
sql.Clear;
|
||
sql.Add('select * from OA_YG_KQ ');
|
||
sql.Add('where 1=2');
|
||
open;
|
||
end;
|
||
with ADOQueryMain do
|
||
begin
|
||
Append;
|
||
FieldByName('KQID').Value := Trim(maxno);
|
||
FieldByName('YGName').Value := Trim(ADOQueryDel.fieldbyname('YGName').AsString);
|
||
FieldByName('YGID').Value := Trim(FYGID);
|
||
FieldByName('YGEName').Value := Trim(ADOQueryDel.fieldbyname('YGEName').AsString);
|
||
FieldByName('DKDate').Value := SGetServerDateTime(ADOQuery2); //now;
|
||
FieldByName('KQDay').Value := 1;
|
||
FieldByName('SXBstatus').Value := Trim(IFSXB);
|
||
post;
|
||
end;
|
||
if IFZT = '1' then
|
||
Button2.Click
|
||
else
|
||
begin
|
||
ModalResult := 1;
|
||
end;
|
||
end;
|
||
|
||
procedure TFrmWorkDeptList_DKPZ.FormClose(Sender: TObject; var Action: TCloseAction);
|
||
begin
|
||
//Action:=caFree;
|
||
end;
|
||
|
||
procedure TFrmWorkDeptList_DKPZ.FormDestroy(Sender: TObject);
|
||
begin
|
||
MyJpeg.Free;
|
||
//FrmWorkDeptList_DKPZ:=nil;
|
||
end;
|
||
|
||
procedure TFrmWorkDeptList_DKPZ.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||
begin
|
||
ClickPos.x := X;
|
||
ClickPos.y := Y;
|
||
end;
|
||
|
||
procedure TFrmWorkDeptList_DKPZ.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||
var
|
||
NewPos: TPoint;
|
||
begin
|
||
{The left button was pressed}
|
||
if ssLeft in Shift then
|
||
begin
|
||
{Calculate new position}
|
||
NewPos.X := Image1.Left + X - ClickPos.x;
|
||
NewPos.Y := Image1.Top + Y - ClickPos.y;
|
||
if NewPos.x + Image1.Width < ScrollBox1.Width then
|
||
NewPos.x := ScrollBox1.Width - Image1.Width;
|
||
if NewPos.y + Image1.Height < ScrollBox1.Height then
|
||
NewPos.y := ScrollBox1.Height - Image1.Height;
|
||
if NewPos.X > 0 then
|
||
NewPos.X := 0;
|
||
if NewPos.Y > 0 then
|
||
NewPos.Y := 0;
|
||
|
||
Image1.Top := NewPos.Y;
|
||
Image1.Left := NewPos.X;
|
||
end {if ssLeft in Shift}
|
||
end;
|
||
|
||
procedure TFrmWorkDeptList_DKPZ.FormCreate(Sender: TObject);
|
||
begin
|
||
MyJpeg := TJpegImage.Create;
|
||
end;
|
||
|
||
procedure TFrmWorkDeptList_DKPZ.Button2Click(Sender: TObject);
|
||
begin
|
||
hWndC := 0;
|
||
try
|
||
hWndC := capCreateCaptureWindowA('My Own Capture Window', WS_CHILD or WS_VISIBLE, ScrollBox1.Left, ScrollBox1.Top, ScrollBox1.Width, ScrollBox1.Height, FrmWorkDeptList_DKPZ.Handle, 0);
|
||
if hWndC <> 0 then
|
||
begin
|
||
SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0);
|
||
SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0);
|
||
SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0);
|
||
SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
|
||
SendMessage(hWndC, WM_CAP_SET_SCALE, 1, 0);
|
||
SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0);
|
||
//SendMessage(hWndC, WM_CAP_SEQUENCE_NOFILE, 1, 0);
|
||
SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0);
|
||
SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0);
|
||
end
|
||
else
|
||
begin
|
||
application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷʧ<CDB7>ܣ<EFBFBD>', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ', MB_ICONERROR);
|
||
end;
|
||
except
|
||
end;
|
||
application.ProcessMessages;
|
||
//YGID.SetFocus;
|
||
end;
|
||
|
||
procedure TFrmWorkDeptList_DKPZ.Button3Click(Sender: TObject);
|
||
var
|
||
sFieldName: string;
|
||
MBMP: TBitmap;
|
||
MJPG: TJpegImage;
|
||
myStream: TADOBlobStream;
|
||
maxNo: string;
|
||
fNewFileName: string;
|
||
begin
|
||
sFieldName := 'D:\ץͼ';
|
||
if not DirectoryExists(pchar(sFieldName)) then
|
||
CreateDirectory(pchar(sFieldName), nil);
|
||
sFieldName := sFieldName + '\' + formatdateTime('yyyyMMddhhnnss', SGetServerDateTime(ADOQuery1));
|
||
FileName := ExtractFileName(sFieldName);
|
||
if hWndC <> 0 then
|
||
begin
|
||
SendMessage(hWndC, WM_CAP_SAVEDIB, 0, longint(pchar(sFieldName + '.BMP')));
|
||
SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
|
||
hWndC := 0;
|
||
application.ProcessMessages;
|
||
try
|
||
MBMP := TBitmap.Create;
|
||
MJPG := TJpegImage.Create;
|
||
MBMP.LoadFromFile(pchar(sFieldName + '.BMP'));
|
||
MJPG.assign(MBMP);
|
||
Image1.Picture.Bitmap.Assign(MJPG);
|
||
application.ProcessMessages;
|
||
MJPG.SaveToFile(pchar(sFieldName + '.JPG'));
|
||
CreThumb(240, 180);
|
||
finally
|
||
MBMP.Free;
|
||
MJPG.Free;
|
||
if Fileexists(pchar(sFieldName + '.BMP')) then
|
||
DeleteFile(pchar(sFieldName + '.BMP'));
|
||
FilePath := sFieldName + '.JPG';
|
||
FileName := ExtractFileName(FilePath);
|
||
end;
|
||
end;
|
||
pat1 := 'FileName';
|
||
pic1 := 'Filesother';
|
||
FTFType := 'Ա<><D4B1>';
|
||
fFlileFlag := self.fFlileFlag;
|
||
fNewFileName := formatdatetime('yyyyMMddhhnnsszzz', now()) + ExtractFileExt(FilePath);
|
||
try
|
||
with adoqueryImage do
|
||
begin
|
||
close;
|
||
sql.Clear;
|
||
sql.Add('select * from TP_File where WBID=' + quotedstr(trim(fkeyNo)));
|
||
sql.Add(' and TFType=''Ա<><D4B1>''');
|
||
open;
|
||
if RecordCount <= 0 then
|
||
begin
|
||
Append;
|
||
if GetLSNo(ADOQuery1, maxNo, 'FJ', 'TP_File', 4, 1) = False then
|
||
begin
|
||
Application.MessageBox('ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ', 0);
|
||
Exit;
|
||
end;
|
||
fieldByName('TFID').AsString := maxNo;
|
||
fieldByName('WBID').AsString := fkeyNO;
|
||
end
|
||
else
|
||
begin
|
||
edit;
|
||
end;
|
||
fieldByName(pat1).AsString := trim(fNewFileName);
|
||
fieldByName('TFType').AsString := 'Ա<><D4B1>';
|
||
myStream := TADOBlobStream.Create(TBlobField(FieldByName(pic1)), bmWrite);
|
||
MyJpeg.Assign(Image1.Picture.Graphic);
|
||
MyJpeg.SaveToStream(myStream);
|
||
myStream.Free;
|
||
Post;
|
||
end;
|
||
if FilePath <> '' then
|
||
begin
|
||
try
|
||
IdFTP1.Host := ReadINIFileStr('SYSTEMSET.INI', 'SERVER', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ', '127.0.0.1');
|
||
IdFTP1.Username := 'three';
|
||
IdFTP1.Password := '641010';
|
||
IdFTP1.Connect();
|
||
IdFTP1.Put(FilePath, fFlileFlag + '\' + Trim(fNewFileName));
|
||
IdFTP1.Quit;
|
||
except
|
||
IdFTP1.Quit;
|
||
Application.MessageBox('<27>ϴ<EFBFBD><CFB4>ͻ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', MB_ICONWARNING);
|
||
end;
|
||
end;
|
||
IdFTP1.Quit;
|
||
except
|
||
;
|
||
myStream.Free;
|
||
end;
|
||
//Button2.Click;
|
||
end;
|
||
|
||
procedure TFrmWorkDeptList_DKPZ.Timer1Timer(Sender: TObject);
|
||
begin
|
||
if IFZT = '1' then
|
||
Button3.Click;
|
||
Panel2.Visible := true;
|
||
label5.Caption := Trim(ADOQueryDel.fieldbyname('YGName').AsString);
|
||
label6.Caption := Trim(FormatDateTime('yyyy-MM-dd HH:MM:SS', now));
|
||
PlaySound('DKCG.wav', 0, SND_FILENAME or SND_ASYNC);
|
||
Sleep(1000);
|
||
ModalResult := 1;
|
||
end;
|
||
|
||
end.
|
||
|