⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logunit.pas

📁 东华休闲山庄洗浴、餐饮、客房管理系统
💻 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 + -