📄 logunit.pas
字号:
unit LogUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBClient, ExtCtrls, StdCtrls, Mask,
ComCtrls, SUIImagePanel, Excel2000, ComObj;
type
TLogForm = class(TForm)
suiPanel1: TsuiPanel;
lbl1: TLabel;
lbl2: TLabel;
dtp1: TDateTimePicker;
dtp2: TDateTimePicker;
medt1: TMaskEdit;
MaskEdit1: TMaskEdit;
lbl3: TLabel;
edt1: TEdit;
img1: TImage;
img2: TImage;
img3: TImage;
img4: TImage;
ds1: TClientDataSet;
ds2: TDataSource;
dbgrd1: TDBGrid;
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure img4Click(Sender: TObject);
procedure img1Click(Sender: TObject);
procedure img2Click(Sender: TObject);
procedure img3Click(Sender: TObject);
procedure dbgrd1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
sql:string;
end;
var
LogForm: TLogForm;
implementation
uses LoginUnit, MainUnit;
{$R *.dfm}
procedure TLogForm.FormActivate(Sender: TObject);
begin
self.dtp1.DateTime:=Now;
self.dtp2.DateTime:=Now;
Self.edt1.Clear;
self.edt1.SetFocus;
end;
procedure TLogForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
self.ds1.Close;
mainform.Enabled:=true;
end;
procedure TLogForm.img4Click(Sender: TObject);
begin
close;
end;
procedure TLogForm.img1Click(Sender: TObject);
var
startime,endtime:string;
begin
startime:=formatdatetime('yyyy-mm-dd',self.dtp1.Date)+' '+self.medt1.Text;
endtime:=formatdatetime('yyyy-mm-dd',self.dtp2.Date)+' '+self.MaskEdit1.Text;
sql:='((log_date>='''+startime+''') and (log_date<='''+endtime+'''))';
if self.edt1.Text<>'' then
sql:=sql+' and ((log_id='''+self.edt1.Text+''') or (log_name='''+self.edt1.Text+'''))';
self.ds1.Close;
Self.ds1.Open;
self.ds1.Filter:=sql;
Self.ds1.Filtered:=True;
end;
procedure TLogForm.img2Click(Sender: TObject);
begin
if MessageDlg('指定时间段的系统日志将被删除!确认删除吗?',mtConfirmation, [mbYes ,mbNo], 0) = mrYes then
begin
LoginForm.ExecuteSQL('delete from log where '+sql);
self.ds1.Close;
Self.ds1.Open;
self.ds1.Filter:=sql;
Self.ds1.Filtered:=True;
end;
end;
procedure TLogForm.img3Click(Sender: TObject);
var
NewFileName:string;
txt:TextFile;
info:string;
index:Integer;
excelapp:variant;
row,col:integer;
begin
if MessageDlg('指定时间段的系统日志导出吗?',mtConfirmation, [mbYes ,mbNo], 0) = mrYes then
begin
if not self.ds1.Active then
begin
MessageDlg('尚无指定时间段的系统日志,不需执行导出操作!',mtConfirmation, [mbYes], 0);
exit;
end;
NewFileName:=ExtractFilePath(Application.ExeName)+'Log';
if not DirectoryExists(NewFileName) then
MkDir(NewFileName);
if MessageDlg('请指定导出系统日志的格式!Yes为Excel文件,No为文本文件',
mtConfirmation, [mbYes ,mbNo], 0) = mrYes then
begin
excelapp:=createoleobject('excel.application');
excelapp.caption:='SystemLog';
excelapp.WorkBooks.add;
excelApp.WorkSheets[1].Activate;
row:=1;
excelapp.cells[row,1].value:='发生时间';
excelapp.cells[row,1].borders.linestyle:=xlcontinuous;
excelapp.cells[row,1].HorizontalAlignment := xlCenter;
excelapp.cells[row,1].VerticalAlignment := xlCenter;
excelapp.cells[row,1].Columns.EntireColumn.AutoFit;
excelapp.cells[row,2].value:='操作员ID';
excelapp.cells[row,2].borders.linestyle:=xlcontinuous;
excelapp.cells[row,2].HorizontalAlignment := xlCenter;
excelapp.cells[row,2].VerticalAlignment := xlCenter;
excelapp.cells[row,2].Columns.EntireColumn.AutoFit;
excelapp.cells[row,3].value:='操作员姓名';
excelapp.cells[row,3].borders.linestyle:=xlcontinuous;
excelapp.cells[row,3].HorizontalAlignment := xlCenter;
excelapp.cells[row,3].VerticalAlignment := xlCenter;
excelapp.cells[row,3].Columns.EntireColumn.AutoFit;
excelapp.cells[row,4].value:='操作内容';
excelapp.cells[row,4].borders.linestyle:=xlcontinuous;
excelapp.cells[row,4].HorizontalAlignment := xlCenter;
excelapp.cells[row,4].VerticalAlignment := xlCenter;
excelapp.cells[row,4].Columns.EntireColumn.AutoFit;
Inc(row);
col:=1;
self.ds1.First;
while not self.ds1.Eof do
begin
for index:=0 to self.ds1.FieldCount-1 do
begin
excelapp.cells[row,index+col].value:=self.ds1.Fields[index].AsString;
excelapp.cells[row,index+col].borders.linestyle:=xlcontinuous;
excelapp.cells[row,index+col].HorizontalAlignment := xlCenter;
excelapp.cells[row,index+col].VerticalAlignment := xlCenter;
excelapp.cells[row,index+col].Columns.EntireColumn.AutoFit;
end;
self.ds1.Next;
inc(row);
end;
excelapp.activeworkbook.saveas(NewFileName+'\系统日志'+formatdatetime('yyyymmddhhnnss',now)+'.xls');
excelapp.quit;
end
else
begin
NewFileName:=NewFileName+'\系统日志'+formatdatetime('yyyymmddhhnnss',now)+'.txt';
assignfile(txt,NewFileName);
if not FileExists(NewFileName) then
rewrite(txt)
else
append(txt);
writeln(txt,'发生时间 操作员ID 操作员姓名 操作内容');
Self.ds1.First;
while not self.ds1.Eof do
begin
info:='';
for index:=0 to self.ds1.FieldCount-1 do
info:=info+self.ds1.Fields[index].AsString+' ';
writeln(txt,info);
Self.ds1.Next;
end;
closefile(txt);
end;
end;
end;
procedure TLogForm.dbgrd1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if dbgrd1.DataSource.DataSet.RecNo mod 2 = 0 theN
dbgrd1.Canvas.Brush.Color:=clSilver
else
dbgrd1.Canvas.Brush.Color:=clYellow;
dbgrd1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -