📄 udatecontrol.pas
字号:
unit Udatecontrol;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Buttons,IniFiles,ADODB;
type
TfrmDatacontrol = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
bbtnView1: TBitBtn;
Edit2: TEdit;
bbtnView2: TBitBtn;
bbtnBakup: TBitBtn;
bbtnRestore: TBitBtn;
ProgressBar1: TProgressBar;
GroupBox2: TGroupBox;
RichEdit1: TRichEdit;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
procedure bbtnView1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure bbtnBakupClick(Sender: TObject);
procedure bbtnRestoreClick(Sender: TObject);
procedure bbtnView2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TbackupThread=class(TThread)
sender:Tobject;
command:TADOCOmmand;
parent:Tform;
folder:string;
procedure Backup;
private
protected
procedure Execute;override;
end;
type
TrestoreThread=class(TThread)
sender:Tobject;
parent:Tform;
command:TADOCOmmand;
folder:string;
procedure restore;
private
protected
procedure Execute;override;
end;
var
frmDatacontrol: TfrmDatacontrol;
SetIni:TIniFile;
implementation
uses Umain, MyData;
{$R *.dfm}
//备份
procedure Tbackupthread.backup;
begin
try
command.CommandText:='backup database NYOA to disk='+''''+folder+'''';
command.Execute;
except
exit;
end;
self.Terminate;
end;
procedure TbackupThread.Execute;
var
i:integer;
begin
i:=0;
synchronize(backup);
while i< Tprogressbar(sender).Max do
begin
inc(i);
Tprogressbar(sender).Position:=i;
end;
Application.MessageBox('备份成功.','提示',64);
parent.Close;
end;
//还原
procedure Trestorethread.restore;
begin
try
command.CommandText:='use master restore database NYOA from disk='+''''+folder+'''';
command.Execute;
Command.CommandText:='use NYOA';
Command.Execute;
Application.MessageBox('还原结束.','提示',64);
except
Application.MessageBox('系统出错.','提示',64);
end;
self.Terminate;
end;
procedure TrestoreThread.Execute;
var
i:integer;
begin
i:=0;
while i< Tprogressbar(sender).Max do
begin
inc(i);
Tprogressbar(sender).Position:=i;
end;
parent.Close;
end;
procedure TfrmDatacontrol.bbtnView1Click(Sender: TObject);
var
Path:string;
begin
if SaveDialog1.Execute then
begin
Path:=SaveDialog1.FileName;
SetIni.WriteString('BakupPath','Path',ExtractFilePath(Application.ExeName)+'NYOA.bak');
Edit1.Text:=Path;
end;
end;
procedure TfrmDatacontrol.FormCreate(Sender: TObject);
begin
SetIni:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Bakup.ini');
Edit1.Text:=SetIni.ReadString('BakupPath','Path',ExtractFilePath(Application.ExeName)+'NYOA.bak');
ProgressBar1.Position:=ProgressBar1.Width;
end;
procedure TfrmDatacontrol.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TfrmDatacontrol.bbtnBakupClick(Sender: TObject);
var
Bakup:TbackupThread;
begin
Bakup:=TbackupThread.Create(True);
Bakup.sender:=ProgressBar1;
Bakup.command:=dm.ADOCMD;
Bakup.parent:=Self;
Bakup.folder:=Edit1.Text;
Bakup.Resume;
end;
procedure TfrmDatacontrol.bbtnRestoreClick(Sender: TObject);
var
restore:Trestorethread;
begin
restore:=Trestorethread.Create(true);
restore.sender:=progressbar1;
//restore.Position:=IntToStr(position);
restore.folder:=Edit2.Text;
restore.command:=dm.ADOCMD;
restore.parent:=self;
restore.Resume;
restore.StaticSynchronize(restore,restore.restore);
end;
procedure TfrmDatacontrol.bbtnView2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Edit2.Text:=OpenDialog1.FileName;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -