D7myYunxiang/云翔OA(WTOA.dll)/U_WorkDeptList_DKPZ.pas
DESKTOP-E401PHE\Administrator 1011cb7292 1
2025-01-20 13:04:03 +08:00

436 lines
12 KiB
ObjectPascal
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.