📄 restore.pas
字号:
unit restore;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ToolWin,ExtCtrls,buttons, ADODB, ImgList,
Mask, Grids, IniFiles,DBGrids,myclass, DB;
type
TRestoreForm = class(TForm)
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
ComboBox1: TComboBox;
MaskEdit1: TMaskEdit;
GroupBox2: TGroupBox;
DBGrid1: TDBGrid;
Panel1: TPanel;
Label1: TLabel;
Edit1: TEdit;
StaticText1: TStaticText;
OpenDialog1: TOpenDialog;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
ProgressBar1: TProgressBar;
procedure CreateParams(var Params: TCreateParams); override;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure StaticText1Click(Sender: TObject);
procedure StaticText1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure StaticText1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure RadioButton2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
procedure RadioButton3Click(Sender: TObject);
procedure MaskEdit1KeyPress(Sender: TObject; var Key: Char);
procedure DBGrid1CellClick(Column: TColumn);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
private
procedure WMPAINT1(var msg:TMESSAGE);message WM_PAINT;
procedure WMNCPAINT1(var msg:TWMNCPAINT);message WM_NCPAINT;
procedure Active(var msg:Tmessage);message WM_ACTIVATE;
procedure WMNCLBUTTONDBLCLK1(var msg:Tmessage);message WM_NCLBUTTONDBLCLK;
{ Private declarations }
public
titleBmp:Tbitmap;
path:string;
Position:integer;
setini:TINIFILe;
{ Public declarations }
end;
implementation
uses UDM1,uconst,ufunction;
{$R *.dfm}
function MyShowmessage(text:Pchar):boolean; external 'resource.dll';
procedure TRestoreForm.WMNCLBUTTONDBLCLK1(var msg:Tmessage);
begin
//
end;
procedure TRestoreForm.Active(var msg:Tmessage);
begin
self.WMPAINT1(msg);
end;
procedure TRestoreForm.CreateParams(var Params: TCreateParams);
begin
inherited;
params.Style:=params.Style-WS_SYSMENU;
end;
procedure TRestoreForm.WMPAINT1(var msg:TMESSAGE);
begin
sendmessage(self.Handle,WM_NCPAINT,0,0);
inherited;
end;
procedure TRestoreForm.WMNCPAINT1(var msg:TWMNCPAINT);
begin
end;
procedure TRestoreForm.FormCreate(Sender: TObject);
begin
setini:=Tinifile.Create(strpath+'\system.ini');
edit1.Text:=setini.ReadString('BackupPath','path',strpath+'\backup.dat');
end;
procedure TRestoreForm.FormDestroy(Sender: TObject);
begin
setini.Free;
end;
procedure TRestoreForm.StaticText1Click(Sender: TObject);
begin
if opendialog1.execute then
begin
edit1.Text:=opendialog1.FileName;
formshow(self);
end;
end;
procedure TRestoreForm.StaticText1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
statictext1.BevelKind:=BKsoft;
end;
procedure TRestoreForm.StaticText1MouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
statictext1.BevelKind:=bkflat;
end;
procedure TRestoreForm.RadioButton2Click(Sender: TObject);
begin
with dm1.PublicQuery do
begin
close;
sql.Clear;
try
sql.Add('RESTORE HEADERONLY from disk='''+edit1.Text+'''');
open;
except
myshowmessage('备份数据打开时发生错误!!');
exit;
end;
try
dm1.PublicQuery.Filter:='[backupfinishdate]>'+''''+maskedit1.Text+''''+'and [backupfinishdate]<'+''''+datetimetostr(strtodatetime(maskedit1.Text)+1)+'''';
dm1.PublicQuery.Filtered:=true;
except
showmessage('请给出正确的时间!');
dm1.PublicQuery.filtered:=false;
exit;
end;
if recordcount<1 then
begin
showmessage('对不起! 没有你所需要的备份资料');
speedbutton1.Enabled:=false;
exit;
end
else
if recordcount>1 then
begin
showmessage('在您输入的日期中有多个备份纪录,请在下面的表格中选择一个适当的纪录!');
speedbutton1.Enabled:=true;
self.Height:=340;
end
else
begin
position:=fieldbyname('position').AsInteger;
speedbutton1.Enabled:=true;
end;
end;
end;
procedure TRestoreForm.FormShow(Sender: TObject);
var
i:integer;
begin
combobox1.clear;
self.Height:=220;
with dm1.PublicQuery do
begin
close;
sql.Clear;
try
sql.Add('RESTORE HEADERONLY from disk='''+edit1.Text+'''');
open;
except
myshowmessage('打开数据备份时发生错误!');
exit;
end;
while not eof do
begin
if not fieldbyname('backupname').IsNull then
begin
for i:=0 to combobox1.Items.Count do
begin
if combobox1.Items.Strings[i] <> fieldbyname('backupname').AsString then
Continue
else
break;
end;
if (i = Combobox1.Items.Count+1) or (i=1) then
combobox1.items.add(fieldbyname('backupname').AsString);
end;
next;
end;
last;
position:=fieldbyname('position').AsInteger;
end;
combobox1.ItemIndex:=0;
end;
procedure TRestoreForm.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
key:=#0;
end;
procedure TRestoreForm.RadioButton3Click(Sender: TObject);
begin
if (trim(combobox1.Text) <> '') then
begin
with dm1.PublicQuery do
begin
close;
sql.Clear;
sql.Add('RESTORE HEADERONLY from disk='''+edit1.Text+'''');
open;
try
dm1.PublicQuery.Filter:='[backupname]='+''''+combobox1.Text+'''';
dm1.PublicQuery.Filtered:=true;
except
showmessage('数据出错!!');
dm1.PublicQuery.Filtered:=false;
exit;
end;
if recordcount<1 then
begin
myshowmessage('对不起! 没有您所需要的备份资料');
exit;
end
else if recordcount>1 then
begin
showmessage('在您输入的条件中有多个备份记录,请在下面的表格中选择一个适当的记录!');
self.Height:=340;
end
else
position:=fieldbyname('position').AsInteger;
speedbutton1.Enabled:=true;
end;
end;
end;
procedure TRestoreForm.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if (key=#13) and radiobutton2.Checked then
begin
try
strtodate(maskedit1.Text);
except
showmessage('请输入正确的时间!!');
exit;
end;
RadioButton2Click(radiobutton2);
end;
end;
procedure TRestoreForm.DBGrid1CellClick(Column: TColumn);
begin
if dm1.PublicQuery.Active then
begin
with dm1.PublicQuery do
begin
position:=fieldbyname('Position').AsInteger;
speedbutton1.Enabled:=True;
end;
end;
end;
procedure TRestoreForm.SpeedButton2Click(Sender: TObject);
begin
dm1.PublicQuery.Close;
close;
end;
procedure TRestoreForm.SpeedButton1Click(Sender: TObject);
var
restore:Trestorethread;
begin
restore:=Trestorethread.Create(true);
restore.sender:=progressbar1;
restore.Position:=inttostr(position);
restore.folder:=edit1.Text;
restore.command:=dm1.ADOCommand1;
restore.parent:=self;
progressbar1.Visible:=true;
restore.Resume;
restore.StaticSynchronize(restore,restore.restore);
end;
procedure TRestoreForm.RadioButton1Click(Sender: TObject);
begin
speedbutton1.Enabled:=True;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -