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

📄 mainunit.pas

📁 软件可自动完成SQL Server数据库和文档的数据定时自动备份
💻 PAS
字号:
//*-----------------------------------------------------------------------------
//*  系统名称:数据自动备份系统
//*  作    者:陈春华
//*  开发时间:2005
//*  Windows2000 Server + SQL Server2000 + Delphi7
//*  功能简介:
//*              软件可自动完成SQL Server数据库和文档的数据定时自动备份,
//*          由用户选择对哪些数据库或文档进行数据备份,提供对备份、还原
//*          数据作业的管理、分析、日志跟踪等功能,备份频率不受限制。
//*-----------------------------------------------------------------------------

unit MainUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, IniFiles, ComCtrls, ImgList, ToolWin, jpeg,
  ExtCtrls, ShellApi, DateUtils, AppEvnts, WinSkinData;

const
  ICON_ID=1;
  MI_ICONEVENT=WM_USER+1;  

type
  TMainForm = class(TForm)
    MainMenu1: TMainMenu;
    F1: TMenuItem;
    N1: TMenuItem;
    D1: TMenuItem;
    F2: TMenuItem;
    I1: TMenuItem;
    N2: TMenuItem;
    F3: TMenuItem;
    D2: TMenuItem;
    N3: TMenuItem;
    X1: TMenuItem;
    O1: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    R1: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    H1: TMenuItem;
    A1: TMenuItem;
    Q1: TMenuItem;
    OpenDialog: TOpenDialog;
    ToolBar1: TToolBar;
    ImageList1: TImageList;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    ToolButton8: TToolButton;
    ToolButton9: TToolButton;
    ToolButton10: TToolButton;
    ToolButton11: TToolButton;
    ToolButton12: TToolButton;
    StatusBar1: TStatusBar;
    B1: TMenuItem;
    L1: TMenuItem;
    ToolButton13: TToolButton;
    Image1: TImage;
    ApplicationEvents1: TApplicationEvents;
    PopupMenu: TPopupMenu;
    A2: TMenuItem;
    S1: TMenuItem;
    X2: TMenuItem;
    SkinData1: TSkinData;
    procedure D1Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure F2Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure Q1Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure F3Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure ToolButton7Click(Sender: TObject);
    procedure ToolButton8Click(Sender: TObject);
    procedure X1Click(Sender: TObject);
    procedure ToolButton9Click(Sender: TObject);
    procedure A1Click(Sender: TObject);
    procedure B1Click(Sender: TObject);
    procedure L1Click(Sender: TObject);
    procedure ToolButton13Click(Sender: TObject);
    procedure R1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ApplicationEvents1Minimize(Sender: TObject);
    procedure ApplicationEvents1Restore(Sender: TObject);
    procedure S1Click(Sender: TObject);
    procedure A2Click(Sender: TObject);
    procedure X2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    NotifyIcon:TNotifyIconData;
    procedure IconOnClick(var message:TMessage); message MI_ICONEVENT;
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;

implementation

uses NewDBBackupItem, BackupThreadUnit, SqlFunctionUnit,
     VariableUnit, DataModuleUnit, FileBackupThreadUnit,
     FileBackupDesignUnit, LogShowUnit, AboutUnit, DBRestoreUnit;

{$R *.dfm}

procedure TMainForm.D1Click(Sender: TObject);
begin
  DBHaveFinishedSet:=False;
  NewDBBackupForm.ShowModal;
end;

procedure TMainForm.N5Click(Sender: TObject);
var
  backupThread: TBackupThread;
begin
  if DBHaveFinishedSet then
    begin
      MainForm.StatusBar1.Panels[0].Text:='数据库'+DBName+'备份中,请稍后...';
      backupThread:=TBackupThread.Create(serverName,userName,pwsd,DBName,path);
      backupThread.Resume;
    end
  else
    showMessage('请先进行数据库备份设置或导入备份配置文件!');
end;

procedure TMainForm.N4Click(Sender: TObject);
begin
  if DBHaveFinishedSet then
    begin
      DM.DBTimer1.Enabled:=True;
      MainForm.StatusBar1.Panels[0].Text:='数据库自动备份已启动!';
      N4.Enabled:=False;
      N6.Enabled:=True;
    end
  else
    showMessage('请先进行数据库备份设置或导入备份配置文件!');
end;

procedure TMainForm.N6Click(Sender: TObject);
begin
  DM.DBTimer2.Enabled:=False;
  MainForm.StatusBar1.Panels[0].Text:='数据库自动备份已停止!';
  N6.Enabled:=False;
  N4.Enabled:=True;
  DBHaveFinishedSet:=False;
end;

procedure TMainForm.F2Click(Sender: TObject);
begin
  FileBackupDesignForm.ShowModal;
end;

procedure TMainForm.N8Click(Sender: TObject);
begin
  if fileHaveFinishedSet then
    begin
      DM.FileTimer1.Enabled:=True;
      MainForm.StatusBar1.Panels[1].Text:='文件项目自动备份已启动!';
      N8.Enabled:=False;
      N9.Enabled:=True;
    end
  else
    showMessage('请先进行文件备份设置或导入备份配置文件!');
end;

procedure TMainForm.Q1Click(Sender: TObject);
var
  fileBackupThread: TFileBackupThread;
  iniFile: TIniFile;
begin
  if fileHaveFinishedSet then
    begin
      if FileExists(ExtractFilePath(ParamStr(0))+'\'+fileItemName+'.ini') then
        begin
          try
            inifile:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'\'+fileItemName+'.ini');
            fileFreeSize:=inifile.ReadFloat('备份设置','目的地址空间',fileFreeSize);
            lastBackupTime:=inifile.ReadDateTime('备份设置','最近一次备份时刻',lastBackupTime);
          finally
            inifile.Free;
          end;
        end;
      MainForm.StatusBar1.Panels[1].Text:='文件项目'+fileItemName+'备份中,请稍后...';
      fileBackupThread:=TFileBackupThread.Create(fileSourceAdd,fileAmiAdd,fileItemName,lastBackupTime,fileFreeSize);
      fileBackupThread.Resume;
    end
  else
    showMessage('请先进行文件备份设置或导入备份配置文件!');
end;

procedure TMainForm.N9Click(Sender: TObject);
begin
  DM.FileTimer2.Enabled:=False;
  MainForm.StatusBar1.Panels[1].Text:='文件项目自动备份已停止!';
  N9.Enabled:=False;
  N8.Enabled:=True;
  fileHaveFinishedSet:=False;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  if not DirectoryExists(ExtractFilePath(ParamStr(0))+'\Log') then
    begin
      ForceDirectories(ExtractFilePath(ParamStr(0))+'\Log');
    end;
  if not DirectoryExists(ExtractFilePath(ParamStr(0))+'\TempBackupFile') then
    begin
      ForceDirectories(ExtractFilePath(ParamStr(0))+'\TempBackupFile');
    end;
  with NotifyIcon do
    begin
      cbSize:=SizeOf(TNotifyIconData);
      Wnd:=Handle;   //指向当前窗体Form1的句柄
      uID:=ICON_ID;
      uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
      uCallBackMessage:=MI_ICONEVENT;
      hIcon:=Application.Icon.Handle;
      szTip:='Backup System'
    end;
    //把设置好的变量NotifyIcon加入到系统中以便处理
  Shell_NotifyIcon(NIM_ADD,@NotifyIcon);

  N6.Enabled:=False;
  N9.Enabled:=False;
  StatusBar1.Panels[0].Width:=StatusBar1.Width div 2;
end;

procedure TMainForm.N2Click(Sender: TObject);
var
  inifile: TIniFile;
begin
  OpenDialog.InitialDir:= ExtractFilePath(ParamStr(0));
  if OpenDialog.Execute then
    begin
      try
        inifile:=TIniFile.Create(OpenDialog.FileName);
        try
          with iniFile do
            begin
              userName:=ReadString('备份设置','服务器用户',userName);
              pwsd:=ReadString('备份设置','服务器密码',pwsd);
              serverName:= ReadString('备份设置','服务器',serverName);
              DBName := ReadString('备份设置','数据库',DBName);
              path:= ReadString('备份设置','备份路径',path);
              backupTime:= ReadTime('备份设置','定时时刻',backupTime);
              frequency:= ReadFloat('备份设置','备份频率',frequency);
            end;
          showMessage('读取备份设置文件成功!');
          DBHaveFinishedSet:=True;
        except
          showMessage('读取备份设置文件失败!');
        end;
      finally
        inifile.Free;
      end;
    end;
end;

procedure TMainForm.F3Click(Sender: TObject);
var
  inifile: TIniFile;
begin
  OpenDialog.InitialDir:= ExtractFilePath(ParamStr(0));
  if OpenDialog.Execute then
    begin
      try
        inifile:=TIniFile.Create(OpenDialog.FileName);
        try
          with iniFile do
            begin
              fileItemName:=readString('备份设置','备份项目名称',fileItemName);
              fileSourceAdd:=readString('备份设置','备份文件源地址',fileSourceAdd);
              fileAmiAdd:=readString('备份设置','备份文件目的地址',fileAmiAdd);
              fileFreeSize:=ReadFloat('备份设置','目的地址空间',fileFreeSize);
              fileBackupTime:=readTime('备份设置','定时时刻',fileBackupTime);
              fileFrequency:=readFloat('备份设置','备份频率',fileFrequency);
              lastBackupTime:=readDateTime('备份设置','最近一次备份时刻',lastBackupTime);
            end;
          showMessage('读取备份设置文件成功!');
          fileHaveFinishedSet:=True;
        except
          showMessage('读取备份设置文件失败!');
        end;
      finally
        inifile.Free;
      end;
    end;
end;

procedure TMainForm.ToolButton1Click(Sender: TObject);
begin
  D1.Click;
end;

procedure TMainForm.ToolButton2Click(Sender: TObject);
begin
  F2.Click;
end;

procedure TMainForm.ToolButton3Click(Sender: TObject);
begin
  N2.Click;
end;

procedure TMainForm.ToolButton4Click(Sender: TObject);
begin
  F3.Click;
end;

procedure TMainForm.ToolButton5Click(Sender: TObject);
begin
  B1.Click;
end;

procedure TMainForm.ToolButton6Click(Sender: TObject);
begin
  L1.Click;
end;

procedure TMainForm.ToolButton7Click(Sender: TObject);
begin
  N5.Click;
end;

procedure TMainForm.ToolButton8Click(Sender: TObject);
begin
  Q1.Click;
end;

procedure TMainForm.X1Click(Sender: TObject);
begin
  Close;
  {if MessageDlg('您确定要退出该系统吗?',mtConfirmation, [mbYes, mbNo], 0)= mrYes then
    begin
      Application.Terminate;
    end;}
end;

procedure TMainForm.ToolButton9Click(Sender: TObject);
begin
  R1.Click;
end;

procedure TMainForm.A1Click(Sender: TObject);
begin
  about.ShowModal;
end;

procedure TMainForm.B1Click(Sender: TObject);
var
  TF:TLogShowForm;
begin
  if not fileExists(ExtractFilePath(ParamStr(0))+'\Log\DBBackupLog.log') then
    showMessage('还没有任何数据库备份项目进行过,数据库备份日志文件不存在!')
  else
    begin
      TF:=TLogShowForm(Application.FindComponent('LogShowForm'));
      if not(Assigned(TF)) then
        begin
         TF:=TLogShowForm.create(Application);
         TF.name:='LogShowForm';
        end;
      TF.show;
      TF.Memo1.Lines.Clear;
      TF.Memo1.Lines.LoadFromFile(ExtractFilePath(ParamStr(0))+'\Log\DBBackupLog.log');
      DBOrFileLog:=True;
    end;
end;

procedure TMainForm.L1Click(Sender: TObject);
var
  TF:TLogShowForm;
begin
  if not fileExists(ExtractFilePath(ParamStr(0))+'\Log\FileBackupLog.log') then
    showMessage('还没有任何文件备份项目进行过,文件备份日志文件不存在!')
  else
    begin
      TF:=TLogShowForm(Application.FindComponent('LogShowForm'));
      if not(Assigned(TF)) then
        begin
         TF:=TLogShowForm.create(Application);
         TF.name:='LogShowForm';
        end;
      TF.show;
      TF.Memo1.Lines.Clear;
      TF.Memo1.Lines.LoadFromFile(ExtractFilePath(ParamStr(0))+'\Log\FileBackupLog.log');
      DBOrFileLog:=False;
    end;
end;

procedure TMainForm.ToolButton13Click(Sender: TObject);
begin
  X1.Click;
end;

procedure TMainForm.R1Click(Sender: TObject);
begin
  if not DBHaveFinishedSet then
    RestoreForm.ShowModal
  else
    showMessage('请停止正在进行数据库自动备份项目!');
end;

procedure TMainForm.FormDestroy(Sender: TObject);
begin
  Shell_NotifyIcon(NIM_DELETE,@NotifyIcon);
end;

procedure TMainForm.ApplicationEvents1Minimize(Sender: TObject);
begin
  ShowWindow(Application.Handle,SW_HIDE);
end;

procedure TMainForm.ApplicationEvents1Restore(Sender: TObject);
begin
  ShowWindow(Application.Handle,SW_SHOW);
end;

procedure TMainForm.IconOnClick(var message:TMessage);
var
  p:TPoint;
begin
  if (message.LParam=WM_LBUTTONDOWN) then
    begin
      Application.Restore;
      Application.BringToFront;
    end;
  if (message.LParam=WM_RBUTTONDOWN) then
    begin
      GetCursorPos(p);
      PopupMenu.Popup(p.X,p.Y);
    end;
end;

procedure TMainForm.S1Click(Sender: TObject);
begin
  Application.Restore;
  Application.BringToFront;
end;

procedure TMainForm.A2Click(Sender: TObject);
begin
  about.ShowModal;
end;

procedure TMainForm.X2Click(Sender: TObject);
begin
  close;
  {if MessageDlg('您确定要退出该系统吗?',mtConfirmation, [mbYes, mbNo], 0)= mrYes then
    begin
      Application.Terminate;
    end; }
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if MessageDlg('您确定要退出该系统吗?',mtConfirmation, [mbYes, mbNo], 0)= mrYes then
    begin
      Application.Terminate;
    end
  else
    Abort;
end;

end.


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -