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.
|