📄 uredata.pas
字号:
unit uredata;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TfrmReData = class(TForm)
lvReData: TListView;
Label1: TLabel;
btnReStore: TButton;
btnDel: TButton;
btnTrans: TButton;
btnClose: TButton;
procedure FormShow(Sender: TObject);
procedure btnReStoreClick(Sender: TObject);
procedure btnDelClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure btnTransClick(Sender: TObject);
procedure lvReDataDblClick(Sender: TObject);
private
{ Private declarations }
procedure FillListBox;
public
{ Public declarations }
end;
var
frmReData: TfrmReData;
implementation
uses uglobal, udata;
{$R *.dfm}
procedure TfrmReData.FillListBox;
function GetFileCreationTime(const FileName: String): string;
var
FileTime: TFileTime;
LocalFileTime: TFileTime;
hFile: THandle;
SystemTime: TSystemTime;
begin
Result := '';
FileTime.dwLowDateTime := 0;
FileTime.dwHighDateTime := 0;
hFile := FileOpen(FileName, fmShareDenyNone);
try
if hFile <> 0 then
begin
//参数,文件的时间: 创 末访 末改
Windows.GetFileTime(hFile, @FileTime, nil, nil);
FileTimeToLocalFileTime(FileTime, LocalFileTime);
FileTime := LocalFileTime;
end;
finally
FileClose(hFile);
end;
if FileTimeToSystemTime(FileTime, SystemTime) then
Result := DateTimeToStr(SystemTimeToDateTime(SystemTime));
end;
var
srData: TSearchRec;
begin
lvReData.Items.Clear;
if FindFirst(sPath + '*.bak', faAnyFile, srData) = 0 then
begin
repeat
with lvReData.Items.Add do
begin
Caption := srData.Name;
subitems.Add(GetFileCreationTime(sPath + srData.Name));
end;
until FindNext(srData) <> 0;
FindClose(srData);
end;
if lvReData.Items.Count = 1 then
if lvReData.Items[0].Caption = '' then
lvReData.Items.Clear;
btnReStore.Enabled := lvReData.Items.Count > 0;
btnDel.Enabled := lvReData.Items.Count > 0;
end;
procedure TfrmReData.FormShow(Sender: TObject);
begin
FillListBox;
lvReData.SetFocus;
if lvReData.Items.Count > 0 then
lvReData.ItemIndex := 0;
end;
procedure TfrmReData.lvReDataDblClick(Sender: TObject);
begin
if btnReStore.Enabled and (lvReData.Selected <> nil) then
btnReStoreClick(Sender);
end;
procedure TfrmReData.btnReStoreClick(Sender: TObject);
var
sdbName, sbakName: string;
begin
if MessageBox(self.Handle, '确定要还原所选数据文件吗?', '提示', mb_IconQuestion + mb_YesNO) = idYes then
begin
if dmPer.acPer.Connected = true then dmPer.acPer.Close;
sdbName := sPath + 'permis.mdb';
sbakName := sPath + lvReData.Selected.Caption;
DeleteFile(sdbName);
CopyFile(Pchar(sbakName), Pchar(sdbName), true);
MessageBox(self.Handle, '数据库还原成功!', '提示', mb_IconInformation + mb_Ok);
dmPer.acPer.Open;
end;
end;
procedure TfrmReData.btnDelClick(Sender: TObject);
begin
if MessageBox(self.Handle, '确定删除所选备份文件吗?', '提示', mb_IconQuestion + mb_YesNO) = idYes then
begin
DeleteFile(sPath + lvReData.Selected.Caption);
FillListBox;
end;
end;
procedure TfrmReData.btnTransClick(Sender: TObject);
begin
if btnTrans.Caption = '半透明' then
begin
self.AlphaBlend := true;
self.AlphaBlendValue := 125;
btnTrans.Caption := '还 原';
end
else
begin
self.AlphaBlend := false;
btnTrans.Caption := '半透明';
end;
end;
procedure TfrmReData.btnCloseClick(Sender: TObject);
begin
Close();
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -