378 lines
9.9 KiB
ObjectPascal
378 lines
9.9 KiB
ObjectPascal
unit U_DeviceJkTest;
|
||
|
||
interface
|
||
|
||
uses
|
||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
||
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, cxGraphics, cxControls, cxLookAndFeels,
|
||
cxContainer, cxEdit, Vcl.Menus,
|
||
Vcl.StdCtrls, cxButtons, cxTextEdit, cxGroupBox, cxStyles, cxCustomData,
|
||
cxFilter, cxData, cxDataStorage, cxNavigator, dxDateRanges, ShellAPI,
|
||
dxScrollbarAnnotations, Data.DB, cxDBData, Data.Win.ADODB, cxGridLevel,
|
||
cxClasses, cxGridCustomView, cxGridCustomTableView, cxGridTableView,
|
||
cxGridDBTableView, cxGrid, cxDropDownEdit, Vcl.ComCtrls, Vcl.ToolWin,
|
||
Datasnap.DBClient, cxMaskEdit, Vcl.Buttons, U_BaseList, cxProgressBar,
|
||
cxLookAndFeelPainters;
|
||
|
||
type
|
||
TfrmDeviceJkTest = class(TfrmBaseList)
|
||
cxGroupBox1: TcxGroupBox;
|
||
InputLen: TcxTextEdit;
|
||
cxButton1: TcxButton;
|
||
DataSource1: TDataSource;
|
||
ADOQueryList: TADOQuery;
|
||
cxGrid1: TcxGrid;
|
||
tv1: TcxGridDBTableView;
|
||
tv1FtFileName: TcxGridDBColumn;
|
||
tv1FileType: TcxGridDBColumn;
|
||
tv1factory: TcxGridDBColumn;
|
||
tv1remark: TcxGridDBColumn;
|
||
tv1fileCreatedate: TcxGridDBColumn;
|
||
tv1FileEditDate: TcxGridDBColumn;
|
||
tv1fillTime: TcxGridDBColumn;
|
||
tv1FileSize: TcxGridDBColumn;
|
||
cxGrid1Level1: TcxGridLevel;
|
||
ToolBar1: TToolBar;
|
||
TBRafresh: TToolButton;
|
||
ToolButton2: TToolButton;
|
||
TBClose: TToolButton;
|
||
edt_dllName: TcxTextEdit;
|
||
cds_list: TClientDataSet;
|
||
cxButton2: TcxButton;
|
||
ADOQueryTmp: TADOQuery;
|
||
fileType: TcxComboBox;
|
||
ToolButton1: TToolButton;
|
||
SpeedButton1: TSpeedButton;
|
||
procedure FormShow(Sender: TObject);
|
||
procedure TBRafreshClick(Sender: TObject);
|
||
procedure TBCloseClick(Sender: TObject);
|
||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||
procedure FormDestroy(Sender: TObject);
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure cxButton1Click(Sender: TObject);
|
||
procedure cxComboBox1PropertiesChange(Sender: TObject);
|
||
procedure cxButton2Click(Sender: TObject);
|
||
procedure ToolButton1Click(Sender: TObject);
|
||
private
|
||
fIsCommopen: Boolean;
|
||
fDllName:string;
|
||
procedure InitGrid();
|
||
procedure testCom();
|
||
function ExportFtErpFile(recid,mFileName:string;ADORead:TADOQuery):boolean;
|
||
procedure On1201(var Message: Tmessage); message 1201; // <20><><EFBFBD>ӳ<EFBFBD>
|
||
procedure On1301(var Message: Tmessage); message 1301; // <20><><EFBFBD><EFBFBD>
|
||
public
|
||
fFormID:Integer;
|
||
|
||
end;
|
||
|
||
var
|
||
frmDeviceJkTest: TfrmDeviceJkTest;
|
||
|
||
implementation
|
||
uses
|
||
U_DataLink,U_globalVar,U_DeviceJkDll,U_RTFun;
|
||
|
||
{$R *.dfm}
|
||
|
||
procedure TfrmDeviceJkTest.cxButton1Click(Sender: TObject);
|
||
begin
|
||
if cds_list.IsEmpty then
|
||
begin
|
||
exit;
|
||
end;
|
||
|
||
|
||
testCom();
|
||
end;
|
||
|
||
procedure TfrmDeviceJkTest.FormClose(Sender: TObject; var Action: TCloseAction);
|
||
begin
|
||
inherited;
|
||
if fIsCommopen then
|
||
begin
|
||
CloseCom(fDllName);
|
||
end;
|
||
Action:=caFree;
|
||
end;
|
||
|
||
procedure TfrmDeviceJkTest.FormCreate(Sender: TObject);
|
||
begin
|
||
inherited;
|
||
cxGrid1.Align:=alClient;
|
||
end;
|
||
|
||
procedure TfrmDeviceJkTest.FormDestroy(Sender: TObject);
|
||
begin
|
||
inherited;
|
||
frmDeviceJkTest:=nil;
|
||
end;
|
||
|
||
procedure TfrmDeviceJkTest.FormShow(Sender: TObject);
|
||
begin
|
||
// inherited;
|
||
InitGrid();
|
||
end;
|
||
|
||
procedure TfrmDeviceJkTest.InitGrid();
|
||
begin
|
||
try
|
||
ADOQueryList.DisableControls ;
|
||
with ADOQueryList do
|
||
begin
|
||
close;
|
||
sql.clear;
|
||
sql.Add('select recid, FileName,FileType,FileEditDate,fileCreateDate,FileSize,filltime,');
|
||
sql.Add('FilePath,remark,factory');
|
||
sql.Add('from RT_deviceDllFile');
|
||
if Trim(fileType.Text)<>'' then
|
||
sql.Add('where filetype='+QuotedStr(Trim(fileType.Text)));
|
||
sql.Add('order by fillTime desc');
|
||
Open;
|
||
|
||
SCreateCDS(ADOQueryList, cds_list);
|
||
SInitCDSData(ADOQueryList, cds_list);
|
||
end;
|
||
finally
|
||
ADOQueryList.EnableControls ;
|
||
tv1.ApplyBestFit() ;
|
||
end;
|
||
end;
|
||
|
||
procedure TfrmDeviceJkTest.TBCloseClick(Sender: TObject);
|
||
begin
|
||
inherited;
|
||
close;
|
||
end;
|
||
|
||
procedure TfrmDeviceJkTest.TBRafreshClick(Sender: TObject);
|
||
begin
|
||
InitGrid();
|
||
end;
|
||
|
||
procedure TfrmDeviceJkTest.testCom();
|
||
var
|
||
iniFileName:string;
|
||
filePath:string;
|
||
begin
|
||
try
|
||
// while True do
|
||
// begin
|
||
fDllName:=Trim(cds_list.FieldByName('FileName').AsString) ;
|
||
edt_dllName.Text:=fDllName ;
|
||
if Trim(cds_list.FieldByName('FileType').AsString)<>'' then
|
||
ExportFtErpFile(Trim(cds_list.FieldByName('recid').AsString),fDllName,ADOQueryTmp);
|
||
iniFileName:= StringReplace(fDllName,'.dll','.ini',[rfIgnoreCase]);
|
||
filePath:= ExtractFilePath(Paramstr(0))+iniFileName ;
|
||
if not FileExists(filePath) then
|
||
begin
|
||
ExportFtErpFile('',iniFileName,ADOQueryTmp);
|
||
end;
|
||
|
||
|
||
|
||
if not FileExists(ExtractFilePath(Paramstr(0))+iniFileName) then
|
||
begin
|
||
application.MessageBox(PChar(iniFileName+'<27>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!'),'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ',0);
|
||
Exit;
|
||
end;
|
||
OpenCom(self.handle,fDllName,fIsCommopen);
|
||
// Close;
|
||
// end;
|
||
finally
|
||
|
||
end;
|
||
end;
|
||
|
||
procedure TfrmDeviceJkTest.ToolButton1Click(Sender: TObject);
|
||
var
|
||
iniFileName:String;
|
||
filePath:string;
|
||
begin
|
||
if cds_list.IsEmpty then exit;
|
||
iniFileName :=Trim( cds_list.FieldByName('fileName').AsString );
|
||
iniFileName:= StringReplace(iniFileName,'.dll','.ini',[rfIgnoreCase]);
|
||
filePath:= ExtractFilePath(Paramstr(0))+iniFileName ;
|
||
if not FileExists(filePath) then
|
||
begin
|
||
ExportFtErpFile('',iniFileName,ADOQueryTmp);
|
||
end;
|
||
|
||
if not FileExists(filePath) then
|
||
begin
|
||
application.MessageBox(PChar(iniFileName+'<27>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!'),'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ',0);
|
||
Exit;
|
||
end;
|
||
//
|
||
ShellExecute(0, 'open', PChar('notepad.exe'), PChar(filePath), nil, SW_SHOWNORMAL);
|
||
end;
|
||
|
||
///////////////////////////////////////////////////////
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><DCA3>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||
///////////////////////////////////////////////////////
|
||
procedure TfrmDeviceJkTest.cxButton2Click(Sender: TObject);
|
||
begin
|
||
if fDllName<>'' then
|
||
CloseCom(fDllName);
|
||
end;
|
||
|
||
procedure TfrmDeviceJkTest.cxComboBox1PropertiesChange(Sender: TObject);
|
||
begin
|
||
TBRafresh.Click;
|
||
end;
|
||
|
||
function TfrmDeviceJkTest.ExportFtErpFile(recid,mFileName:string;ADORead:TADOQuery):boolean;
|
||
var
|
||
Stream : TMemoryStream;
|
||
ff:TADOBlobstream;
|
||
mfileSize:integer;
|
||
mCreationTime:TdateTime;
|
||
mWriteTime:TdateTime;
|
||
IsFileHas:boolean;
|
||
mChildPath:string;
|
||
mFilePath:string;
|
||
begin
|
||
try
|
||
result:=false;
|
||
mChildPath:=''; //test\
|
||
///////////////////////////////////////////////
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>
|
||
mFilePath:= ExtractFilePath(Paramstr(0))+mChildPath;
|
||
IsFileHas:= FileExists(mFilePath+fDllName);
|
||
if IsFileHas then
|
||
begin
|
||
//////////////////////////
|
||
//<2F><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
|
||
GetFileInfo(mFilePath+mFileName,mfileSize,mCreationTime,mWriteTime);
|
||
//eleteFile(mFilePath+fDllName);
|
||
end;
|
||
//////////////////////////////////////////
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||
if IsFileHas then
|
||
begin
|
||
with ADORead do
|
||
begin
|
||
close;
|
||
sql.Clear ;
|
||
sql.Add('select count(FileName) as cnt ');
|
||
sql.Add('from RT_deviceDllFile');
|
||
if recid<>'' then
|
||
sql.Add('where recid='+quotedStr(recid))
|
||
else
|
||
sql.Add('where FileName='+quotedStr(mFileName));
|
||
sql.Add(' and DATEDIFF(minute,'+ quotedStr(formatDateTime('yyyy-MM-dd hh:mm',mWriteTime))+',fileEditDate)>0');
|
||
Open;
|
||
|
||
|
||
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>ļ<EFBFBD>
|
||
if fieldByName('cnt').AsInteger>0 then
|
||
begin
|
||
close;
|
||
sql.Clear ;
|
||
sql.Add('select * ');
|
||
sql.Add('from RT_deviceDllFile');
|
||
if recid<>'' then
|
||
sql.Add('where recid='+quotedStr(recid))
|
||
else
|
||
sql.Add('where FileName='+quotedStr(mFileName));
|
||
|
||
Open;
|
||
|
||
ff := TADOBlobstream.Create(fieldByName('Files') as TblobField, bmRead);
|
||
end
|
||
else
|
||
begin
|
||
exit;
|
||
end;
|
||
|
||
if trim(fieldByName('FilePath').AsString)<>'' then
|
||
mChildPath:=trim(fieldByName('FilePath').AsString)+'\';
|
||
end;
|
||
end
|
||
//////////////////////////////////////
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
else
|
||
begin
|
||
with ADORead do
|
||
begin
|
||
close;
|
||
sql.Clear ;
|
||
sql.Add('select * ');
|
||
sql.Add('from RT_deviceDllFile');
|
||
if recid<>'' then
|
||
sql.Add('where recid='+quotedStr(recid))
|
||
else
|
||
sql.Add('where FileName='+quotedStr(mFileName));
|
||
Open;
|
||
|
||
if recordCount>0 then
|
||
begin
|
||
ff := TADOBlobstream.Create(fieldByName('Files') as TblobField, bmRead);
|
||
end
|
||
else
|
||
begin
|
||
application.MessageBox(pchar('δ<>ҵ<EFBFBD><D2B5>ļ<EFBFBD>'+mfileName+'!'),'<27><>ʾ<EFBFBD><CABE>Ϣ',0);
|
||
exit;
|
||
end;
|
||
|
||
if trim(fieldByName('FilePath').AsString)<>'' then
|
||
mChildPath:=trim(fieldByName('FilePath').AsString)+'\';
|
||
end;
|
||
|
||
end;
|
||
|
||
if ff<>nil then
|
||
begin
|
||
try
|
||
mfileName:=trim(ADORead.fieldByName('FileName').asString);
|
||
if not DirectoryExists(ExtractFileDir(mFilePath+mfileName)) then
|
||
ForceDirectories(ExtractFileDir(mFilePath+mfileName));
|
||
Stream:= TMemoryStream.Create ;
|
||
ff.SaveToStream(Stream);
|
||
Stream.SaveToFile(mFilePath+mfileName); //+'\tmpFile\'
|
||
finally
|
||
Stream.Free ;
|
||
ff.free;
|
||
end;
|
||
end;
|
||
UpdateFileTime(mFilePath+mfileName,ADORead.fieldByName('FileCreateDate').AsDateTime,ADORead.fieldByName('FileEditDate').AsDateTime,ADORead.fieldByName('FileEditDate').AsDateTime);
|
||
Result:=true;
|
||
except
|
||
application.MessageBox(pchar('<27><>ȡ<EFBFBD>ļ<EFBFBD>'+mfileName+'ʧ<><CAA7>!'),'<27><>ʾ<EFBFBD><CABE>Ϣ',0);
|
||
end;
|
||
end;
|
||
|
||
|
||
procedure TfrmDeviceJkTest.On1301(var Message: Tmessage);
|
||
var
|
||
i1, i2: Integer;
|
||
unitname: string;
|
||
fdata: double;
|
||
begin
|
||
i1 := Message.WParam;
|
||
i2 := Message.LParam;
|
||
|
||
// if trim(cds_list.fieldbyName('filetype').AsString) = '<27><><EFBFBD><EFBFBD>' then
|
||
// begin
|
||
InputLen.Text := format('%.2f', [i1 / 100000]);
|
||
|
||
//end;
|
||
end;
|
||
|
||
procedure TfrmDeviceJkTest.On1201(var Message: Tmessage);
|
||
var
|
||
i1, i2: Integer;
|
||
unitname: string;
|
||
fdata: double;
|
||
begin
|
||
i1 := Message.WParam;
|
||
i2 := Message.LParam;
|
||
|
||
// if trim(cds_list.fieldbyName('filetype').AsString) = '<27><><EFBFBD>ӳ<EFBFBD>' then
|
||
// begin
|
||
InputLen.Text := format('%.2f', [i1 / 100000]);
|
||
// end;
|
||
|
||
end;
|
||
end.
|