?? mainunit.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 + -